package service import ( "github.com/gogo/protobuf/proto" "strconv" "xiawan/wx/api/req" "xiawan/wx/api/vo" "xiawan/wx/clientsdk/baseinfo" "xiawan/wx/protobuf/wechat" "xiawan/wx/srv/wxface" ) func QWContactService(queryKey string, m *req.QWContactModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(iwxConnect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := iwxConnect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !iwxConnect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } reqInvoker := iwxConnect.GetWXReqInvoker() resp, err := reqInvoker.SendQWContactRequest(m.ToUserName, m.ChatRoom, m.T) if err != nil { return vo.NewFail("查询失败") } return vo.NewSuccessObj(resp, "") }) } // 提取全部的企业通寻录 func QWSyncContactService(queryKey string) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(iwxConnect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := iwxConnect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !iwxConnect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } reqInvoker := iwxConnect.GetWXReqInvoker() resp, err := reqInvoker.SendQWSyncContactRequest() if err != nil { return vo.NewFail("查询失败") } return vo.NewSuccessObj(resp, "") }) } // 备注企业 wxid func QWRemarkService(queryKey string, m *req.QWRemarkModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(iwxConnect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := iwxConnect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !iwxConnect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } reqInvoker := iwxConnect.GetWXReqInvoker() req := &wechat.QYModChatRoomTopicRequest{ G: proto.String(m.ToUserName), P: proto.String(m.Name), } buffer, err := proto.Marshal(req) err = reqInvoker.SendQWOpLogRequest(3, buffer) if err != nil { return vo.NewFail("失败") } return vo.NewSuccessObj("ok", "操作成功") }) } // 创建企业微信 func QWCreateChatRoomService(queryKey string, m *req.QWCreateModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(iwxConnect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := iwxConnect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !iwxConnect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } reqInvoker := iwxConnect.GetWXReqInvoker() resp, err := reqInvoker.SendQWCreateChatRoomRequest(m.ToUserName) if err != nil { return vo.NewFail("失败") } return vo.NewSuccessObj(resp, "操作成功") }) } // 搜手机或企业对外名片链接提取验证 func QWSearchContactService(queryKey string, m req.SearchContactModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() resp, err := reqInvoker.SendQWSearchContactRequest(m.Tg, m.FromScene, m.UserName) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(resp, "") }) } // 向企业微信打招呼 func QWApplyAddContactService(queryKey string, m req.QWApplyAddContactModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() err := reqInvoker.SendQWApplyAddContactRequest(m.UserName, m.V1, m.Content) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj("ok", "操作成功") }) } // 单向加企业微信 func QWAddContactService(queryKey string, m req.QWApplyAddContactModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() err := reqInvoker.SendQWAddContactRequest(m.UserName, m.V1, m.Content) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj("ok", "操作成功") }) } // 提取全部企业微信群 func QWSyncChatRoomService(queryKey string, m req.QWSyncChatRoomModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWSyncChatRoomRequest(m.Key) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // 转让企业群 func QWChatRoomTransferOwnerService(queryKey string, m req.QWChatRoomTransferOwnerModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWChatRoomTransferOwnerRequest(m.ChatRoomName, m.ToUserName) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // 直接拉好友进群 func QWAddChatRoomMemberService(queryKey string, m req.QWAddChatRoomMemberModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWAddChatRoomMemberRequest(m.ChatRoomName, m.ToUserName) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // 发送群邀请链接 func QWInviteChatRoomMemberService(queryKey string, m req.QWAddChatRoomMemberModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWInviteChatRoomMemberRequest(m.ChatRoomName, m.ToUserName) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // 删除企业群成员 func QWDelChatRoomMemberService(queryKey string, m req.QWAddChatRoomMemberModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWDelChatRoomMemberRequest(m.ChatRoomName, m.ToUserName) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // 提取企业群全部成员 func QWGetChatRoomMemberService(queryKey string, m req.QWAddChatRoomMemberModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWGetChatRoomMemberRequest(m.ChatRoomName) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // -提取企业群名称公告设定等信息 func QWGetChatroomInfoService(queryKey string, m req.QWAddChatRoomMemberModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWGetChatroomInfoRequest(m.ChatRoomName) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // 提取企业群二维码 func QWGetChatRoomQRService(queryKey string, m req.QWAddChatRoomMemberModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWGetChatRoomQRRequest(m.ChatRoomName) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // 增加企业管理员 func QWAppointChatRoomAdminService(queryKey string, m req.QWAddChatRoomMemberModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWAppointChatRoomAdminRequest(m.ChatRoomName, m.ToUserName) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // 移除群管理 func QWDelChatRoomAdminService(queryKey string, m req.QWAddChatRoomMemberModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWDelChatRoomAdminRequest(m.ChatRoomName, m.ToUserName) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // 同意进企业群 func QWAcceptChatRoomRequestService(queryKey string, m req.QWAcceptChatRoomModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWAcceptChatRoomRequest(m.Link, m.Opcode) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // 设定企业群 func QWAdminAcceptJoinChatRoomSetService(queryKey string, m req.QWAdminAcceptJoinChatRoomSetModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWAdminAcceptJoinChatRoomSetRequest(m.ChatRoomName, m.P) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // 修改企业群名称 func QWModChatRoomNameService(queryKey string, m req.QWModChatRoomNameModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWModChatRoomNameRequest(m.ChatRoomName, m.Name) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // 修改成员在群中呢称 func QWModChatRoomMemberNickService(queryKey string, m req.QWModChatRoomNameModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWModChatRoomMemberNickRequest(m.ChatRoomName, m.Name) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // 发布企业群公告 func QWChatRoomAnnounceService(queryKey string, m req.QWModChatRoomNameModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWChatRoomAnnounceRequest(m.ChatRoomName, m.Name) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) } // 删除企业群 func SendQWDelChatRoomService(queryKey string, m req.QWModChatRoomNameModel) vo.DTO { return checkExIdPerformNoCreateConnect(queryKey, func(connect wxface.IWXConnect, newIWXConnect bool) vo.DTO { wxAccount := connect.GetWXAccount() loginState := wxAccount.GetLoginState() //判断在线情况 if loginState == baseinfo.MMLoginStateNoLogin { return vo.NewFail("该账号需要重新登录!loginState == MMLoginStateNoLogin ") } else if !connect.CheckOnLineStatus() { return vo.NewFail("账号离线,自动上线失败!loginState == " + strconv.Itoa(int(wxAccount.GetLoginState()))) } // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() rsp, err := reqInvoker.SendQWDelChatRoomRequest(m.ChatRoomName) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(rsp, "操作成功") }) }