package addfriend import ( "context" "github.com/bwmarrin/snowflake" "github.com/zeromicro/go-zero/core/logx" "log" "time" "wechat-api/ent/addwechatfriendlog" "wechat-api/hook" "wechat-api/internal/svc" ) type AddWechatFriendService struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewAddWechatFriendService(ctx context.Context, svcCtx *svc.ServiceContext) *AddWechatFriendService { return &AddWechatFriendService{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx} } // FindFriendByContent 查找好友的服务 // 参数 wechatId 微信ID // content 手机号 或者其他 func (l *AddWechatFriendService) FindFriendByContent(wechatId, content string) bool { //先记录数据 --- 避免 发送出请求,立马返回 导致 数据 还没入库 hookClient := hook.NewHook("", "", "") result, err := hookClient.FindContactByContent(wechatId, content) if err != nil { result["sendResult"] = "success" } else { result["sendResult"] = err } //发送第三方查找 update := l.svcCtx.DB.AddWechatFriendLog.Update(). Where(addwechatfriendlog.OwnerWxIDEQ(wechatId)). Where(addwechatfriendlog.FindContentEQ(content)). SetFindRequest(result). SetUpdatedAt(time.Now().Unix()) _, err = update.Save(l.ctx) if err != nil || result["sendResult"] != "success" { logx.Errorf("更新 AddWechatFriendLog 失败 或者: %v", err) return false } return true } // AddNewFriend 添加好友的服务 // 参数 wechatId 微信ID // content 手机号 或者其他 // message 备注 func (l *AddWechatFriendService) AddNewFriend(wechatId, content, message string) bool { //先记录请求 hookClient := hook.NewHook("", "", "") node, err := snowflake.NewNode(1) // 1 是节点 ID,根据需要设置 if err != nil { log.Fatal(err) } taskId := node.Generate() result, err := hookClient.AddFriendTask(wechatId, content, message, taskId.Int64()) if err != nil { result["sendResult"] = "success" } else { result["sendResult"] = err } update := l.svcCtx.DB.AddWechatFriendLog.Update(). Where(addwechatfriendlog.OwnerWxIDEQ(wechatId)). Where(addwechatfriendlog.FindContentEQ(content)). SetAddRequest(result). SetTaskID(taskId.Int64()). AddTaskCount(1). SetUpdatedAt(time.Now().Unix()) _, err = update.Save(l.ctx) if err != nil || result["sendResult"] != "success" { logx.Errorf("更新 AddWechatFriendLog 失败 或者: %v", err) return false } return true //获取好友列表 }