From 5ad08aeb2deebffcffaa875b42515bf4559ad1d3 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 18 Jan 2024 09:11:11 +0800 Subject: [PATCH] 1 --- business/partner/im/im.go | 26 ++++++++++++++++---------- business/partner/im/im_model.go | 2 +- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/business/partner/im/im.go b/business/partner/im/im.go index dbaf765da..99052b63b 100644 --- a/business/partner/im/im.go +++ b/business/partner/im/im.go @@ -222,10 +222,8 @@ func ReadMsgFromVendor(vendorID int, elmAppID string, msg []byte) error { if PushContentReq.OrderID != 0 { userList.OrderID = utils.Int2Str(PushContentReq.OrderID) } - - //todo 增加美团自动回复 - } + if vendorID == VendorIDELM { var ElmData = ebaiapi.ImMessageSend{} err = json.Unmarshal(msg, &ElmData) @@ -255,6 +253,10 @@ func ReadMsgFromVendor(vendorID int, elmAppID string, msg []byte) error { if err = PushMsgByCid(vendorStoreID, vendorID, string(msg)); err != nil { errList.AddErr(fmt.Errorf("向商家cid推送新消息错误:%v", err)) } + //4 客服自动回复 + if err = CheckAndReply(jxMsg, elmAppID); err != nil { + errList.AddErr(fmt.Errorf("客服自动回复出错:%v", err)) + } if errList.GetErrListAsOne() != nil { return fmt.Errorf("ReadMsgFromVendor:%v", errList.GetErrListAsOne()) @@ -521,17 +523,19 @@ type AutoReply struct { } // CheckAndReply 判断并回复 -func CheckAndReply(req *JXMsg, vendorOrgCode string) (err error) { +func CheckAndReply(req *JXMsg, elmAppID string) (err error) { flag := false if req.SendType == SendTypeMt { mt := req.MsgContent.(mtwmapi.PushContentReq) key := utils.Int2Str(mt.AppID) + ":" + utils.Int2Str(mt.OpenUserID) + ":autoReply" //1 检测是否已有回复消息 if n, err := rdb.Exists(key); n > 0 && err == nil { - str := rdb.Get(key).(string) - v := AutoReply{} - if err = json.Unmarshal([]byte(str), &v); err == nil { - flag = v.IsApply + str := rdb.LRange(key) + for i := 0; i < len(str); i++ { + v := AutoReply{} + if err = json.Unmarshal([]byte(str[i]), &v); err == nil { + flag = v.IsApply + } } } @@ -550,14 +554,16 @@ func CheckAndReply(req *JXMsg, vendorOrgCode string) (err error) { temp.MsgID = RandTimeNumber() dataStr, _ := json.Marshal(temp) - if _, err = partner.CurAPIManager.GetAPI(model.VendorIDMTWM, vendorOrgCode).(*mtwmapi.API).MsgSend(string(dataStr)); err != nil { + if _, err = partner.CurAPIManager.GetAPI(model.VendorIDMTWM, utils.Int2Str(mt.AppID)).(*mtwmapi.API).MsgSend(string(dataStr)); err != nil { apply.IsApply = false globals.SugarLogger.Debugf("CheckAndReply mtSend err:%v", err) } //记录自动回复状态 data, _ := json.Marshal(apply) - if err := rdb.RPush(key, string(data)); err != nil { + err := rdb.RPush(key, string(data)) + ok, err := rdb.ExpireResult(key, ExpireTimeDay) + if err != nil || !ok { globals.SugarLogger.Debugf("CheckAndReply apply err:%v", err) return err } diff --git a/business/partner/im/im_model.go b/business/partner/im/im_model.go index 7c231d4c4..576b88b36 100644 --- a/business/partner/im/im_model.go +++ b/business/partner/im/im_model.go @@ -58,5 +58,5 @@ var ( ) const ( - ExpireTimeDay = 6 * time.Hour //redis过期时间 + ExpireTimeDay = 12 * time.Hour //redis过期时间 )