package contact import ( "context" "wechat-api/ent/wx" "wechat-api/hook" "wechat-api/internal/svc" "wechat-api/internal/types" "github.com/suyuan32/simple-admin-common/msg/errormsg" "github.com/zeromicro/go-zero/core/logx" ) type AddNewFriendLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewAddNewFriendLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AddNewFriendLogic { return &AddNewFriendLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx} } func (l *AddNewFriendLogic) AddNewFriend(req *types.AddNewFriendReq) (resp *types.BaseMsgResp, err error) { organizationId := l.ctx.Value("organizationId").(uint64) wxInfo, err := l.svcCtx.DB.Wx.Query().Where(wx.Wxid(req.OwnerWxid), wx.OrganizationIDEQ(organizationId)).First(l.ctx) if err != nil { l.Error("查询微信信息失败", err) return } serverInfo, err := l.svcCtx.DB.Server.Get(l.ctx, wxInfo.ServerID) if err != nil { l.Error("查询服务器信息失败", err) return } hookClient := hook.NewHook(serverInfo.PrivateIP, serverInfo.AdminPort, wxInfo.Port) //通过群id获取群成员详细信息 ChatroomMemberDetailInfo, err := hookClient.GetChatroomMemberDetailInfo(req.Gid, req.Wxid) if err != nil { l.Error("获取群成员详细信息失败", err) return } v3 := req.Wxid v4 := "" if ChatroomMemberDetailInfo.V3 != "" { v3 = ChatroomMemberDetailInfo.V3 } if ChatroomMemberDetailInfo.V4 != "" { v4 = ChatroomMemberDetailInfo.V4 } AddNewFriendResult, err := hookClient.AddNewFriend(v3, v4, req.Desc, req.AddType, "0") if err != nil { l.Error("添加好友失败", err) return } if AddNewFriendResult.Status != "0" { l.Error("添加好友失败", err) return } return &types.BaseMsgResp{Msg: errormsg.Success}, nil }