add_wechat_friend_log.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package addfriend
  2. import (
  3. "context"
  4. "github.com/bwmarrin/snowflake"
  5. "github.com/zeromicro/go-zero/core/logx"
  6. "log"
  7. "time"
  8. "wechat-api/ent/addwechatfriendlog"
  9. "wechat-api/hook"
  10. "wechat-api/internal/svc"
  11. )
  12. type AddWechatFriendService struct {
  13. logx.Logger
  14. ctx context.Context
  15. svcCtx *svc.ServiceContext
  16. }
  17. func NewAddWechatFriendService(ctx context.Context, svcCtx *svc.ServiceContext) *AddWechatFriendService {
  18. return &AddWechatFriendService{
  19. Logger: logx.WithContext(ctx),
  20. ctx: ctx,
  21. svcCtx: svcCtx}
  22. }
  23. // FindFriendByContent 查找好友的服务
  24. // 参数 wechatId 微信ID
  25. // content 手机号 或者其他
  26. func (l *AddWechatFriendService) FindFriendByContent(wechatId, content string) bool {
  27. //先记录数据 --- 避免 发送出请求,立马返回 导致 数据 还没入库
  28. hookClient := hook.NewHook("", "", "")
  29. result, err := hookClient.FindContactByContent(wechatId, content)
  30. if err != nil {
  31. result["sendResult"] = "success"
  32. } else {
  33. result["sendResult"] = err
  34. }
  35. //发送第三方查找
  36. update := l.svcCtx.DB.AddWechatFriendLog.Update().
  37. Where(addwechatfriendlog.OwnerWxIDEQ(wechatId)).
  38. Where(addwechatfriendlog.FindContentEQ(content)).
  39. SetFindRequest(result).
  40. SetUpdatedAt(time.Now().Unix())
  41. _, err = update.Save(l.ctx)
  42. if err != nil || result["sendResult"] != "success" {
  43. logx.Errorf("更新 AddWechatFriendLog 失败 或者: %v", err)
  44. return false
  45. }
  46. return true
  47. }
  48. // AddNewFriend 添加好友的服务
  49. // 参数 wechatId 微信ID
  50. // content 手机号 或者其他
  51. // message 备注
  52. func (l *AddWechatFriendService) AddNewFriend(wechatId, content, message string) bool {
  53. //先记录请求
  54. hookClient := hook.NewHook("", "", "")
  55. node, err := snowflake.NewNode(1) // 1 是节点 ID,根据需要设置
  56. if err != nil {
  57. log.Fatal(err)
  58. }
  59. taskId := node.Generate()
  60. result, err := hookClient.AddFriendTask(wechatId, content, message, taskId.Int64())
  61. if err == nil {
  62. result["sendResult"] = "success"
  63. } else {
  64. result["sendResult"] = err
  65. }
  66. update := l.svcCtx.DB.AddWechatFriendLog.Update().
  67. Where(addwechatfriendlog.OwnerWxIDEQ(wechatId)).
  68. Where(addwechatfriendlog.FindContentEQ(content)).
  69. SetAddRequest(result).
  70. SetTaskID(taskId.Int64()).
  71. AddTaskCount(1).
  72. SetUpdatedAt(time.Now().Unix())
  73. _, err = update.Save(l.ctx)
  74. logx.Infof("更新 AddWechatFriendLog-field-add-result成功: %v", result)
  75. if err != nil || result["sendResult"] != "success" {
  76. logx.Errorf("更新 AddWechatFriendLog 失败 或者: %v", err)
  77. return false
  78. }
  79. return true //获取好友列表
  80. }
  81. func (l *AddWechatFriendService) WecomAddNewFriend(wechatId, content, message string) bool {
  82. //先记录请求
  83. hookWecomClient := hook.NewWecomHook("", "", "")
  84. node, err := snowflake.NewNode(1)
  85. // 1 是节点 ID,根据需要设置
  86. if err != nil {
  87. log.Fatal(err)
  88. }
  89. taskId := node.Generate()
  90. result, err := hookWecomClient.AddWecomCustomerFromSearchTask(wechatId, content, message, taskId.Int64())
  91. if err == nil {
  92. result["sendResult"] = "success"
  93. } else {
  94. result["sendResult"] = err
  95. }
  96. update := l.svcCtx.DB.AddWechatFriendLog.Update().
  97. Where(addwechatfriendlog.OwnerWxIDEQ(wechatId)).
  98. Where(addwechatfriendlog.FindContentEQ(content)).
  99. SetAddRequest(result).
  100. SetTaskID(taskId.Int64()).
  101. AddTaskCount(1).
  102. SetUpdatedAt(time.Now().Unix())
  103. _, err = update.Save(l.ctx)
  104. if err != nil || result["sendResult"] != "success" {
  105. logx.Errorf("更新 AddWechatFriendLog 失败 或者: %v", err)
  106. return false
  107. }
  108. return true //获取好友列表
  109. }