package service import ( "strconv" "strings" "xiawan/wx/api/req" "xiawan/wx/api/utils" "xiawan/wx/api/vo" "xiawan/wx/clientsdk" "xiawan/wx/clientsdk/baseinfo" "xiawan/wx/protobuf/wechat" pb "xiawan/wx/protobuf/wechat" "xiawan/wx/srv" "xiawan/wx/srv/wxface" "github.com/gin-gonic/gin" "github.com/gogo/protobuf/proto" ) // GetChatroomQrCodeService 获取群二维码 func GetChatroomQrCodeService(queryKey string, m req.GetChatroomQrCodeModel) 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.SendGetQrCodeRequest(m.ChatRoomName, uint32(0)) if err != nil { return vo.NewFail("GetQrCode!err :" + err.Error()) } return vo.NewSuccessObj(resp, "") }) } // SetChatroomAnnouncementService 设置群公告 func SetChatroomAnnouncementService(queryKey string, m req.UpdateChatroomAnnouncementModel) 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.SetChatRoomAnnouncementRequest(m.ChatRoomName, m.Content) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccess(gin.H{ "baseResp": resp.GetBaseResponse(), }, "") }) } // ConsentToJoinGroupService 同意进入群聊 func ConsentToJoinGroupService(queryKey string, m req.ConsentToJoinGroupModel) 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.ConsentToJoinGroupRequest(m.Url) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(resp, "") }) } // GetChatroomMemberDetailService 获取群成员详细 func GetChatroomMemberDetailService(queryKey string, m req.GetChatroomMemberDetailModel) 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.GetChatroomMemberDetailRequest(m.ChatRoomName) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(resp, "") }) } // 获取群公告 func SetGetChatRoomInfoDetailService(queryKey string, m req.GetChatroomMemberDetailModel) 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.SetGetChatRoomInfoDetailRequest(m.ChatRoomName) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(resp, "") }) } // 获取群详情 func GetChatRoomInfoService(queryKey string, m req.ChatRoomWxIdListModel) 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.SendGetContactRequest(m.ChatRoomWxIdList, nil, m.ChatRoomWxIdList, true) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(resp, "") }) } // 设置群昵称 func SetChatroomNameService(queryKey string, m req.ChatroomNameModel) 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()))) } chatRoomNames := strings.Split(m.ChatRoomName, ",") // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() getContactResp, err := reqInvoker.SendGetContactRequest(chatRoomNames, nil, chatRoomNames, true) if err != nil { return vo.NewFail(err.Error()) } modContact := getContactResp.ContactList[0] modContact.NickName = &pb.SKBuiltinString{ Str: proto.String(m.Nickname), } buffer, err := proto.Marshal(modContact) cmdItem := baseinfo.ModifyItem{ CmdID: uint32(27), Len: uint32(len(buffer)), Data: buffer, } var cmdItems []*baseinfo.ModifyItem cmdItems = append(cmdItems, &cmdItem) error := reqInvoker.SendOplogRequest(cmdItems) if error != nil { return vo.NewFail(error.Error()) } return vo.NewSuccessObj(nil, "成功") }) } // SetGroupNicknameService 设置我在本群的昵称 func SetGroupNicknameService(queryKey string, m req.ChatroomNameModel) 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() // 构建请求 opLogItem := clientsdk.CreateModifyGroupNickNameField(m.ChatRoomName, wxAccount.GetUserInfo().WxId, m.Nickname) var cmdItems []*baseinfo.ModifyItem cmdItems = append(cmdItems, opLogItem) err := reqInvoker.SendOplogRequest(cmdItems) if err != nil { return vo.NewFail(err.Error()) } return vo.NewSuccessObj(nil, "成功") }) } // 保存群聊 func MoveToContractService(queryKey string, m req.MoveContractModel) 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()))) } chatRoomNames := strings.Split(m.ChatRoomName, ",") // 获取请求管理器 reqInvoker := connect.GetWXReqInvoker() getContactResp, err := reqInvoker.SendGetContactRequest(chatRoomNames, nil, chatRoomNames, true) if err != nil { return vo.NewFail(err.Error()) } modContact := getContactResp.ContactList[0] bit := uint32(0) if m.Val == 1 { bit = *(modContact.BitVal) | uint32(1<<0) } else { bit = *(modContact.BitVal) &^ uint32(1<<0) } ModContactData := &pb.ModContact{ UserName: &pb.SKBuiltinString{ Str: &m.ChatRoomName, }, NickName: &pb.SKBuiltinString{}, Pyinitial: &pb.SKBuiltinString{}, QuanPin: &pb.SKBuiltinString{}, Sex: proto.Int32(0), ImgBuf: &pb.SKBuiltinString_{ Len: proto.Uint32(0), }, BitMask: modContact.BitMask, BitVal: proto.Uint32(bit), ImgFlag: proto.Uint32(0), Remark: &pb.SKBuiltinString{ Str: modContact.Remark.Str, }, RemarkPyinitial: &pb.SKBuiltinString{ Str: modContact.RemarkPyinitial.Str, }, RemarkQuanPin: &pb.SKBuiltinString{ Str: modContact.RemarkQuanPin.Str, }, ContactType: proto.Uint32(0), ChatRoomNotify: proto.Uint32(1), AddContactScene: proto.Uint32(0), ExtFlag: proto.Uint32(0), } buffer, err := proto.Marshal(ModContactData) cmdItem := baseinfo.ModifyItem{ CmdID: uint32(2), Len: uint32(len(buffer)), Data: buffer, } var cmdItems []*baseinfo.ModifyItem cmdItems = append(cmdItems, &cmdItem) error := reqInvoker.SendOplogRequest(cmdItems) if error != nil { return vo.NewFail(error.Error()) } return vo.NewSuccessObj(nil, "成功") }) } // QuitChatroomService 退出群聊 func QuitChatroomService(queryKey string, m req.GetChatroomMemberDetailModel) 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.GetQuitChatroomRequest(m.ChatRoomName) if err != nil { return vo.NewFail(err.Error()) } //删除缓存中群 wxAccount.RemoveWXGroup(m.ChatRoomName) return vo.NewSuccessObj(nil, "发送退群请求成功") }) } // CreateChatRoomService 创建群 func CreateChatRoomService(queryKey string, m req.CreateChatRoomModel) 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.SendCreateChatRoomRequest(m.TopIc, m.UserList) if err != nil { return vo.NewFail("创建群失败!err :" + err.Error()) } go addGroupCache(wxAccount, resp) return vo.NewSuccessObj(resp, "") }) } // 添加到缓存 func addGroupCache(wx *srv.WXAccount, chatRoom *wechat.CreateChatRoomResponse) { if chatRoom == nil || chatRoom.ChatRoomName.GetStr() == "{}" || chatRoom.ChatRoomName.GetStr() == "" { return } v := make([]*wechat.ChatRoomMemberInfo, 0) for _, val := range chatRoom.MemberList { v = append(v, &wechat.ChatRoomMemberInfo{ UserName: proto.String(val.MemberName.GetStr()), ChatroomMemberFlag: proto.Uint32(0), }) } modContact := &wechat.ModContact{ UserName: chatRoom.ChatRoomName, NickName: chatRoom.Topic, Pyinitial: chatRoom.Pyinitial, QuanPin: chatRoom.QuanPin, ChatRoomOwner: &wx.GetUserInfo().WxId, SmallHeadImgUrl: chatRoom.SmallHeadImgUrl, ChatroomMaxCount: proto.Uint32(uint32(50000)), NewChatroomData: &wechat.ChatRoomMemberData{ MemberCount: chatRoom.MemberCount, ChatroomMemberList: v, }, } wx.AddWXGroup(modContact) } // InviteChatroomMembersService 邀请群成员 func InviteChatroomMembersService(queryKey string, m req.InviteChatroomMembersModel) 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.SendInviteChatroomMembersRequest(m.ChatRoomName, m.UserList) if err != nil { return vo.NewFail("InviteChatroomMembersService!err :" + err.Error()) } return vo.NewSuccessObj(resp, "") }) } // AddChatRoomMemberService 添加群成员 func AddChatRoomMemberService(queryKey string, m req.InviteChatroomMembersModel) 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.SendAddChatRoomMemberRequest(m.ChatRoomName, m.UserList) if err != nil { return vo.NewFail("InviteChatroomMembersService!err :" + err.Error()) } return vo.NewSuccessObj(resp, "") }) } // 删除群成员 func SendDelDelChatRoomMemberService(queryKey string, m req.InviteChatroomMembersModel) 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.SendDelDelChatRoomMemberRequest(m.ChatRoomName, m.UserList) if err != nil { return vo.NewFail("InviteChatroomMembersService!err :" + err.Error()) } return vo.NewSuccessObj(resp, "") }) } // 转让群 func SendTransferGroupOwnerService(queryKey string, m req.TransferGroupOwnerModel) 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.SendTransferGroupOwnerRequest(m.ChatRoomName, m.NewOwnerUserName) if err != nil { return vo.NewFail("InviteChatroomMembersService!err :" + err.Error()) } return vo.NewSuccessObj(resp, "") }) } // 扫码入群 func ScanIntoUrlGroupService(queryKey string, m req.ScanIntoUrlGroupModel) 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() if len(m.Url) == 0 { return vo.NewFail("ScanIntoUrlGroupService url == empty") } resp, err := reqInvoker.GetA8KeyRequest(2, 4, m.Url, baseinfo.GetA8Key) if err != nil { return vo.NewFail("ScanIntoUrlGroupService err:" + err.Error()) } if resp.GetBaseResponse().GetRet() != 0 { return vo.NewSuccess(gin.H{ "isJoinSuccess": false, "resp": resp, }, "进群失败") } body, err := utils.ScanIntoGrouppost(resp.GetFullURL()) if err != nil && strings.Index(err.Error(), "@chatroom") != -1 { return vo.NewSuccess(gin.H{ "isJoinSuccess": true, "body": body, "chatroomUrl": err.Error(), "fullUrl": resp.GetFullURL(), "resp": resp, }, "进群成功") } msg := "" if strings.Index(body, "频繁") != -1 { msg = ",操作太频繁,请稍后再试!" } if strings.Index(body, "二维码已过期") != -1 { msg = ",二维码已过期!" } if strings.Index(body, "该群聊邀请已过期") != -1 { msg = ",该群聊邀请已过期!" } return vo.NewSuccess(gin.H{ "isJoinSuccess": true, "body": body, "fullUrl": resp.GetFullURL(), "resp": resp, }, "进群失败"+msg) }) } // 设置群聊邀请开关 func SetChatroomAccessVerifyService(queryKey string, m req.SetChatroomAccessVerifyModel) 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() v := uint32(0) if m.Enable { v = uint32(2) } req := &wechat.ModChatRoomAccessVerifyRequest{ ChatRoomName: proto.String(m.ChatRoomName), Status: proto.Uint32(v), } buffer, err := proto.Marshal(req) cmdItem := baseinfo.ModifyItem{ CmdID: 66, Len: uint32(len(buffer)), Data: buffer, } var cmdItems []*baseinfo.ModifyItem cmdItems = append(cmdItems, &cmdItem) err = reqInvoker.SendOplogRequest(cmdItems) if err != nil { return vo.NewFail("SetFunctionSwitchService err:" + err.Error()) } return vo.NewSuccessObj("ok", "成功") }) } // 添加群管理员 func AddChatroomAdminService(queryKey string, m req.ChatroomMemberModel) 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.SendAddChatroomAdminRequest(m.ChatRoomName, m.UserList) if err != nil { return vo.NewFail("SendAddChatroomAdminRequest!err :" + err.Error()) } return vo.NewSuccessObj(resp, "") }) } // 删除群管理 func DelChatroomAdminService(queryKey string, m req.ChatroomMemberModel) 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.SendDelChatroomAdminRequest(m.ChatRoomName, m.UserList) if err != nil { return vo.NewFail("SendDelChatroomAdminRequest!err :" + err.Error()) } return vo.NewSuccessObj(resp, "") }) }