find_contact_task_result_notice.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package MessageHandlers
  2. import (
  3. "context"
  4. "encoding/json"
  5. "errors"
  6. "github.com/zeromicro/go-zero/core/logx"
  7. "time"
  8. "wechat-api/ent/addwechatfriendlog"
  9. "wechat-api/internal/pkg/wechat_ws"
  10. "wechat-api/internal/svc"
  11. "wechat-api/workphone"
  12. )
  13. type FindContactTaskResultNoticeHandler struct {
  14. svcCtx *svc.ServiceContext
  15. }
  16. func NewFindContactTaskResultNoticeHandler(svcCtx *svc.ServiceContext) *FindContactTaskResultNoticeHandler {
  17. return &FindContactTaskResultNoticeHandler{
  18. svcCtx: svcCtx,
  19. }
  20. }
  21. func (f *FindContactTaskResultNoticeHandler) Handle(ctx context.Context, msg *wechat_ws.MsgJsonObject, svcCtx *svc.ServiceContext) error {
  22. var message workphone.FindContactTaskResultNoticeMessage
  23. logx.Infof("msg.Message 的内容是:%s", msg.Message)
  24. if err := json.Unmarshal([]byte(msg.Message), &message); err != nil {
  25. return err
  26. }
  27. //logx.Infof("msg.Message 的内容是:%s", message)
  28. //var isCanAdd int
  29. m, err := ParseJSONStringToMap(msg.Message)
  30. if err != nil {
  31. logx.Errorf("解析 JSON 失败: %v", err)
  32. return err
  33. }
  34. update := svcCtx.DB.AddWechatFriendLog.Update().
  35. Where(addwechatfriendlog.OwnerWxIDEQ(message.WeChatId)).
  36. Where(addwechatfriendlog.FindContentEQ(message.SearchText)).
  37. SetFindResult(m).
  38. SetUpdatedAt(time.Now().Unix())
  39. if message.Success {
  40. if message.IsFriend {
  41. update = update.SetIsCanAdd(0)
  42. } else {
  43. update = update.SetIsCanAdd(1)
  44. }
  45. }
  46. if _, err := update.Save(ctx); err != nil {
  47. logx.Errorf("更新 AddWechatFriendLog 失败: %v", err)
  48. return err
  49. }
  50. return nil
  51. }
  52. func ParseJSONStringToMap(jsonStr string) (map[string]interface{}, error) {
  53. if !json.Valid([]byte(jsonStr)) {
  54. return nil, errors.New("非法 JSON 字符串")
  55. }
  56. var result map[string]interface{}
  57. err := json.Unmarshal([]byte(jsonStr), &result)
  58. return result, err
  59. }