package MessageHandlers import ( "context" "encoding/json" "fmt" "wechat-api/ent/contact" "wechat-api/internal/pkg/wechat_ws" "wechat-api/internal/svc" "wechat-api/workphone" ) type TalkToFriendTaskResultNoticeHandler struct { svcCtx *svc.ServiceContext } func NewTalkToFriendTaskResultNoticeHandler(svcCtx *svc.ServiceContext) *TalkToFriendTaskResultNoticeHandler { return &TalkToFriendTaskResultNoticeHandler{ svcCtx: svcCtx, } } func (f *TalkToFriendTaskResultNoticeHandler) Handler(msg *wechat_ws.MsgJsonObject) error { if msg.MsgType == "TalkToFriendTaskResultNotice" { message := workphone.TalkToFriendTaskResultNoticeMessage{} err := json.Unmarshal([]byte(msg.Message), &message) if err != nil { return err } friendId, _ := f.svcCtx.Rds.Get(context.TODO(), fmt.Sprintf("MsgId_FriendId:%d", message.MsgId)).Result() if friendId == "" { return nil } if message.Code == workphone.EnumErrorCode_InternalError { err = f.svcCtx.DB.Contact. Update(). Where(contact.WxWxidEQ(message.WeChatId), contact.WxidEQ(friendId)). SetStatus(2). Exec(context.TODO()) if err != nil { return err } } } return nil }