diff --git a/business/partner/im/im.go b/business/partner/im/im.go index 14aa84e56..ab1aa94f9 100644 --- a/business/partner/im/im.go +++ b/business/partner/im/im.go @@ -851,6 +851,7 @@ func CheckAndReply(req *JXMsg, elmAppID string) (err error) { //} // GetIfReply 检查是否已回复 +// 美团只需要第一条消息在一分钟之内回复就达标了,后面不需要自动回复了 func GetIfReply(key string, keyDetail UserRelInfo) (flag bool) { flag = false if n, err := rdb.Exists(key); n > 0 && err == nil { @@ -877,26 +878,48 @@ func GetIfReply(key string, keyDetail UserRelInfo) (flag bool) { if err == nil && detail != nil { tKey := keyDetail.AppID + ":" + keyDetail.VendorStoreID + ":" + keyDetail.VendorID + ":" + keyDetail.UserID if detail[tKey] != nil { - tDetail := detail[tKey][len(detail[tKey])-1] - b := tDetail.(string) - lastMsg := &JXMsg{} - err = json.Unmarshal([]byte(b), lastMsg) - if err != nil || lastMsg.SendType == SendTypeJx { - return false - } - switch keyDetail.VendorID { - case VendorIDMTStr: - mt := lastMsg.MsgContent.(map[string]interface{}) - if mt["msg_source"].(float64) != mtwmapi.MsgSourceUser { + for _, v := range detail[tKey] { + b := v.(string) + lastMsg := &JXMsg{} + err = json.Unmarshal([]byte(b), lastMsg) + if err != nil { return false } - case VendorIDELMStr: - elm := lastMsg.MsgContent.(map[string]interface{}) - s := elm["payLoad"].(map[string]interface{})["senderId"].(string) - if s == "" || s[:2] != ebaiapi.SenderTypeUser { - return false + switch keyDetail.VendorID { + case VendorIDMTStr: + mt := lastMsg.MsgContent.(map[string]interface{}) + if mt["msg_source"].(float64) == mtwmapi.MsgSourceStore { + return true + } + case VendorIDELMStr: + elm := lastMsg.MsgContent.(map[string]interface{}) + s := elm["payLoad"].(map[string]interface{})["senderId"].(string) + if s == "" || s[:2] == ebaiapi.SenderTypeBusiness || s[:2] == ebaiapi.SenderTypeChainedAccountLogin || s[:2] == ebaiapi.SenderTypeSystem { + return true + } } } + + //tDetail := detail[tKey][len(detail[tKey])-1] + //b := tDetail.(string) + //lastMsg := &JXMsg{} + //err = json.Unmarshal([]byte(b), lastMsg) + //if err != nil || lastMsg.SendType == SendTypeJx { + // return false + //} + //switch keyDetail.VendorID { + //case VendorIDMTStr: + // mt := lastMsg.MsgContent.(map[string]interface{}) + // if mt["msg_source"].(float64) != mtwmapi.MsgSourceUser { + // return false + // } + //case VendorIDELMStr: + // elm := lastMsg.MsgContent.(map[string]interface{}) + // s := elm["payLoad"].(map[string]interface{})["senderId"].(string) + // if s == "" || s[:2] != ebaiapi.SenderTypeUser { + // return false + // } + //} } } return flag