Files
2026-02-17 13:06:23 +08:00

52 lines
1.3 KiB
Go

package wxrouter
import (
"strings"
"time"
"xiawan/wx/clientsdk"
"xiawan/wx/protobuf/wechat"
"xiawan/wx/srv/wxcore"
"xiawan/wx/srv/wxface"
)
// WXGetQrcodeRouter 获取个人/群二维码响应
type WXGetQrcodeRouter struct {
wxcore.WXBaseRouter
}
// Handle 处理conn业务的方法
func (hbr *WXGetQrcodeRouter) Handle(wxResp wxface.IWXResponse) error {
defer wxcore.TryE("WXGetQrcodeRouter Handle")
currentWXConn := wxResp.GetWXConncet()
currentWXAccount := currentWXConn.GetWXAccount()
currentUserInfo := currentWXAccount.GetUserInfo()
// 解析获取二维码响应包
var getQrcodeResp wechat.GetQRCodeResponse
err := clientsdk.ParseResponseData(currentUserInfo, wxResp.GetPackHeader(), &getQrcodeResp)
if err != nil {
// 请求出问题了,判断是否掉线,并重连
time.Sleep(1 * time.Second)
go currentWXConn.CheckOnLineStatusLogin()
return err
}
// 如果获取失败
if getQrcodeResp.GetBaseResponse().GetRet() != 0 {
return nil
}
// 判断是否是群聊
tmpUserName := string(wxResp.GetPackHeader().ReqData)
if !strings.HasSuffix(tmpUserName, "@chatroom") {
return nil
}
// 保存群二维码
retList := strings.Split(tmpUserName, "@")
qrcodeFileName := retList[0] + ".png"
currentWXConn.AddGroupQrcodeData(getQrcodeResp.Qrcode.GetBuffer(), qrcodeFileName)
return nil
}