first commit
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"xiawan/wx/api/req"
|
||||
"xiawan/wx/api/vo"
|
||||
"xiawan/wx/clientsdk/baseinfo"
|
||||
"xiawan/wx/srv/wxface"
|
||||
|
||||
"github.com/lunny/log"
|
||||
)
|
||||
|
||||
// GetContactLabelListRequestService 获取标签列表
|
||||
func GetContactLabelListRequestService(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.SendGetContactLabelListRequest(true)
|
||||
if err != nil {
|
||||
return vo.NewFail("GetContactLabelListRequestService!" + err.Error())
|
||||
}
|
||||
return vo.NewSuccessObj(resp, "")
|
||||
})
|
||||
}
|
||||
|
||||
// AddContactLabelRequestService 添加标签
|
||||
func AddContactLabelRequestService(queryKey string, m req.LabelModel) 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.LabelNameList) == 0 {
|
||||
return vo.NewFail("没有要添加的标签")
|
||||
}
|
||||
resp, err := reqInvoker.SendAddContactLabelRequest(m.LabelNameList, true)
|
||||
if err != nil {
|
||||
return vo.NewFail("AddContactLabelRequestService!" + err.Error())
|
||||
}
|
||||
return vo.NewSuccessObj(resp, "")
|
||||
})
|
||||
}
|
||||
|
||||
// DelContactLabelRequestService 删除标签
|
||||
func DelContactLabelRequestService(queryKey string, m req.LabelModel) 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.SendDelContactLabelRequest(m.LabelId)
|
||||
if err != nil {
|
||||
return vo.NewFail("SendDelContactLabelRequestService!" + err.Error())
|
||||
}
|
||||
return vo.NewSuccessObj(resp, "")
|
||||
})
|
||||
}
|
||||
|
||||
// ModifyLabelRequestService 修改标签
|
||||
func ModifyLabelRequestService(queryKey string, m req.LabelModel) 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.SendModifyLabelRequest(m.UserLabelList)
|
||||
if err != nil {
|
||||
return vo.NewFail("SendDelContactLabelRequestService!" + err.Error())
|
||||
}
|
||||
return vo.NewSuccessObj(resp, "")
|
||||
})
|
||||
}
|
||||
|
||||
// 获取标签下好友
|
||||
func GetWXFriendListByLabelIDService(queryKey string, req req.LabelModel) 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())))
|
||||
}
|
||||
//获取请求管理器
|
||||
retList := make([]string, 0)
|
||||
// 遍历好友 获取对应标签的好友列表
|
||||
i, _ := strconv.Atoi(req.LabelId)
|
||||
//重新拉取好友列表
|
||||
if len(wxAccount.FriendMap) <= 0 {
|
||||
//获取请求管理器
|
||||
reqInvoker := iwxConnect.GetWXReqInvoker()
|
||||
var CurrentWxcontactSeq = uint32(0)
|
||||
var CurrentChatRoomContactSeq = uint32(0)
|
||||
for true {
|
||||
resp, err := reqInvoker.SendGetContactListPageRequest(CurrentWxcontactSeq, CurrentChatRoomContactSeq)
|
||||
if err != nil {
|
||||
log.Error("分页请求获取联系人出现error")
|
||||
break
|
||||
}
|
||||
if resp.BaseResponse.GetRet() != 0 {
|
||||
log.Error("分页请求获取联系人出现error=0")
|
||||
break
|
||||
}
|
||||
CurrentWxcontactSeq = resp.GetCurrentWxcontactSeq()
|
||||
CurrentChatRoomContactSeq = resp.GetCurrentChatRoomContactSeq()
|
||||
if len(resp.GetContactUsernameList()) <= 0 {
|
||||
break
|
||||
}
|
||||
//批量获取联系人
|
||||
response, error := reqInvoker.SendGetContactRequestForList(resp.GetContactUsernameList(), nil)
|
||||
if error != nil {
|
||||
log.Error("获取详情出现error")
|
||||
}
|
||||
if response.BaseResponse.GetRet() != 0 {
|
||||
log.Error("获取详情出现error=0")
|
||||
break
|
||||
}
|
||||
for _, v := range response.GetContactList() {
|
||||
wxAccount.AddWXFriendContact(v)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
for userName, modContact := range wxAccount.FriendMap {
|
||||
if wxAccount.ContainsLabel(modContact.GetLabelIdlist(), uint32(i)) {
|
||||
retList = append(retList, userName)
|
||||
}
|
||||
}
|
||||
return vo.NewSuccessObj(retList, "")
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user