Files

78 lines
2.8 KiB
Go
Raw Permalink Normal View History

2026-02-17 13:06:23 +08:00
package service
import (
"strconv"
"xiawan/wx/api/req"
"xiawan/wx/api/vo"
"xiawan/wx/clientsdk/baseinfo"
"xiawan/wx/db"
"xiawan/wx/srv/wxface"
)
// GetMyQrCodeService 获取个人二维码
func GetMyQrCodeService(queryKey string, m req.GetQrCodeModel) 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()
wxid := wxAccount.GetUserInfo().WxId
resp, err := reqInvoker.SendGetQrCodeRequest(wxid, m.Style)
if err != nil {
return vo.NewFail("GetQrCodeService err:" + err.Error())
}
return vo.NewSuccessObj(resp, "")
})
}
// 查看附近的人
func GetPeopleNearbyService(queryKey string, m req.PeopleNearbyModel) 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.SendGetPeopleNearbyResultRequest(m.Longitude, m.Latitude)
if err != nil {
return vo.NewFail("GetPeopleNearbyService" + err.Error())
}
return vo.NewSuccessObj(resp, "")
})
}
// 修改指令状态
func UpdateCmdStatusService(queryKey string, m req.ModifyCmdStatusModelNew) vo.DTO {
return checkExIdPerformNoCreateConnect(queryKey, func(wxConn wxface.IWXConnect, newIWXConnect bool) vo.DTO {
wxAccount := wxConn.GetWXAccount()
cache := wxConn.GetWXCache()
loginState := wxAccount.GetLoginState()
//判断在线情况
if !wxConn.CheckOnLineStatus() {
return vo.NewFail("你已退出登录")
} else if loginState == baseinfo.MMLoginStateNoLogin {
return vo.NewFail("该账号需要重新登录loginState == MMLoginStateNoLogin ")
}
db.UpdateCommand(queryKey, m.Key, m.Value, m.ValueStr)
query, err := db.QueryCommand(queryKey)
if err != nil {
return vo.NewFail("操作失败!")
}
cache.SendUsageByText()
return vo.NewSuccessObj(query, "操作成功!")
})
}