Files
wechat_ipad_pro/api/service/friendService.go
2026-02-17 13:06:23 +08:00

97 lines
3.7 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package service
import (
"strconv"
"xiawan/wx/api/req"
"xiawan/wx/api/vo"
"xiawan/wx/clientsdk/baseinfo"
"xiawan/wx/srv/wxface"
"xiawan/wx/srv/wxtask"
)
// SearchContactRequestService 搜索好友
func SearchContactRequestService(queryKey string, m req.SearchContactRequestModel) 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.SendSearchContactRequest(m.OpCode, m.FromScene, m.SearchScene, m.UserName)
if err != nil {
return vo.NewFail("SearchContactRequestService err:" + err.Error())
}
return vo.NewSuccessObj(resp, "")
})
}
// 获取好友关系
func GetFriendRelationService(queryKey string, m req.GetFriendRelationModel) 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.SendGetFriendRelationRequest(m.UserName)
if err != nil {
return vo.NewFail("GetFriendRelationService err:" + err.Error())
}
return vo.NewSuccessObj(resp, "")
})
}
// 查联系人详情
func GetContactContactService(queryKey string, m req.BatchGetContactModel) 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.SendGetContactRequestForList(m.UserNames, m.RoomWxIDList)
if err != nil {
return vo.NewFail("SearchContactRequestService err:" + err.Error())
}
return vo.NewSuccessObj(resp, "")
})
}
// StartFriendTaskService 启动好友任务1:检测僵死粉 2:清理僵死粉)
func StartFriendTaskService(queryKey string, taskType int) 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())))
}
// 创建好友任务并执行
friendTask := wxtask.NewWXFriendTask(iwxConnect)
success := friendTask.StartFriendTask(taskType)
if !success {
return vo.NewFail("启动任务失败")
}
return vo.NewSuccessObj(nil, "任务启动成功")
})
}