52 lines
1.3 KiB
Go
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
|
|
}
|