升级至8069版本:版本号更新/代理配置系统/红包计时埋点/长连接重构/回调修复

This commit is contained in:
2026-02-26 10:44:13 +08:00
parent 7cbd3d061d
commit 40a74d2ea7
38 changed files with 3639 additions and 235 deletions
+40 -2
View File
@@ -1480,7 +1480,9 @@ func (wxqi *WXReqInvoker) SendOpenRedEnvelopesRequest(hbItem *baseinfo.HongBaoIt
hongBaoReceiverItem.InWay = baseinfo.MMHongBaoReqInAwayPersonal
}
// 发送接收红包请求
recvReqStartMs := time.Now().UnixMilli()
packHeader, err := clientsdk.SendReceiveWxHB(wxqi.wxconn.GetWXAccount().GetUserInfo(), hongBaoReceiverItem)
recvReqEndMs := time.Now().UnixMilli()
if err != nil {
if packHeader != nil && packHeader.RetCode == baseinfo.MMRequestRetSessionTimeOut {
// token登陆
@@ -1489,25 +1491,52 @@ func (wxqi *WXReqInvoker) SendOpenRedEnvelopesRequest(hbItem *baseinfo.HongBaoIt
return nil, err
}
var hongbaoResp wechat.HongBaoRes
parseRespStartMs := time.Now().UnixMilli()
errs := clientsdk.ParseResponseData(tmpUserInfo, packHeader, &hongbaoResp)
parseRespEndMs := time.Now().UnixMilli()
if errs != nil {
return nil, errs
}
// 解析
retHongBaoReceiveResp := &baseinfo.HongBaoReceiverResp{}
unmarshalRecvStartMs := time.Now().UnixMilli()
err = json.Unmarshal(hongbaoResp.GetRetText().GetBuffer(), retHongBaoReceiveResp)
unmarshalRecvEndMs := time.Now().UnixMilli()
if err != nil {
return nil, err
}
// 发送给微信消息处理器 打开红包
openReqStartMs := time.Now().UnixMilli()
rsp, er := wxqi.SendOpenWxHBNewRequest(hbItem, retHongBaoReceiveResp.TimingIdentifier)
openReqEndMs := time.Now().UnixMilli()
if er != nil {
return nil, er
}
wxqi.SendOpenHBMsgToSelf(rsp, hbItem)
wxqi.ThanksHB(rsp)
var data RedPacket
if rsp != nil {
_ = json.Unmarshal(rsp.RetText.Buffer, &data)
}
nowMs := time.Now().UnixMilli()
if hbItem != nil && hbItem.RecvAtMs > 0 && data.Retcode == 0 && data.ReceiveStatus == 2 {
detectToEnqueue := hbItem.EnqueueAtMs - hbItem.RecvAtMs
enqueueToDequeue := hbItem.DequeueAtMs - hbItem.EnqueueAtMs
dequeueToRecvStart := recvReqStartMs - hbItem.DequeueAtMs
recvNet := recvReqEndMs - recvReqStartMs
parseResp := parseRespEndMs - parseRespStartMs
unmarshalRecv := unmarshalRecvEndMs - unmarshalRecvStartMs
openNet := openReqEndMs - openReqStartMs
openDoneMs := openReqEndMs - hbItem.RecvAtMs
totalMs := nowMs - hbItem.RecvAtMs
fmt.Printf("红包耗时 total=%dms open=%dms detect->enqueue=%dms enqueue->dequeue=%dms dequeue->recvStart=%dms recvNet=%dms parse=%dms recvUnmarshal=%dms openNet=%dms sendid=%s isGroup=%d fromUser=%s\n",
totalMs, openDoneMs, detectToEnqueue, enqueueToDequeue, dequeueToRecvStart, recvNet, parseResp, unmarshalRecv, openNet, data.SendId, hbItem.IsGroup, hbItem.FromUserName)
}
// go func() {
// wxqi.SendOpenHBMsgToSelf(rsp, hbItem)
// wxqi.ThanksHB(rsp)
// }()
return rsp, nil
}
@@ -2052,12 +2081,16 @@ func (wxqi *WXReqInvoker) SendOpenWxHBNewRequest(hbItem *baseinfo.HongBaoItem, t
var packHeader *baseinfo.PackHeader
var err error
openSendStartMs := time.Now().UnixMilli()
openPath := "openwxhb"
if hongBaoOpenItem.SceneID == 1005 {
hongBaoOpenItem.CgiCmd = 5148 // 这里是pb字段的cgicmd 抓包得到
packHeader, err = clientsdk.SendOpenUninoHB(wxqi.wxconn.GetWXAccount().GetUserInfo(), hongBaoOpenItem)
openPath = "openunionhb"
} else {
packHeader, err = clientsdk.SendOpenWxHB(wxqi.wxconn.GetWXAccount().GetUserInfo(), hongBaoOpenItem)
}
openSendEndMs := time.Now().UnixMilli()
if err != nil {
if packHeader != nil && packHeader.RetCode == baseinfo.MMRequestRetSessionTimeOut {
@@ -2069,12 +2102,17 @@ func (wxqi *WXReqInvoker) SendOpenWxHBNewRequest(hbItem *baseinfo.HongBaoItem, t
//wechat.HongBaoRes{}
// 解析获取联系人响应
resp := new(wechat.HongBaoRes)
openParseStartMs := time.Now().UnixMilli()
err = clientsdk.ParseResponseData(tmpUserInfo, packHeader, resp)
openParseEndMs := time.Now().UnixMilli()
if err != nil {
// token登陆
wxqi.wxconn.SendAutoAuthWaitingMinutes(4)
return nil, err
}
if hbItem != nil && hbItem.RecvAtMs > 0 {
fmt.Printf("红包open阶段 send=%dms parse=%dms path=%s cgi=%d scene=%d\n", openSendEndMs-openSendStartMs, openParseEndMs-openParseStartMs, openPath, hongBaoOpenItem.CgiCmd, hongBaoOpenItem.SceneID)
}
return resp, nil
}