package wxrouter import ( "time" "xiawan/wx/clientsdk" "xiawan/wx/protobuf/wechat" "xiawan/wx/srv/wxcore" "xiawan/wx/srv/wxface" "github.com/gogo/protobuf/proto" ) // WXSnsUserPageRouter 获取好友朋友圈路由 type WXSnsUserPageRouter struct { wxcore.WXBaseRouter } // Handle 处理conn业务的方法 func (hbr *WXSnsUserPageRouter) Handle(wxResp wxface.IWXResponse) error { currentWXConn := wxResp.GetWXConncet() currentTaskMgr := currentWXConn.GetWXTaskMgr() currentWXAccount := currentWXConn.GetWXAccount() currentUserInfo := currentWXAccount.GetUserInfo() taskMgr, _ := currentTaskMgr.(*wxcore.WXTaskMgr) currentSnsTransTask := taskMgr.GetSnsTransTask() // 解析 获取好友朋友圈响应 var userPageResponse wechat.SnsUserPageResponse err := clientsdk.ParseResponseData(currentUserInfo, wxResp.GetPackHeader(), &userPageResponse) if err != nil { // 请求出问题了,判断是否掉线,并重连 time.Sleep(1 * time.Second) go currentWXConn.CheckOnLineStatusLogin() return err } // 关联 tmpRequest := &wechat.SnsUserPageRequest{} proto.Unmarshal(wxResp.GetPackHeader().ReqData, tmpRequest) transItem := currentSnsTransTask.GetTransFriendItem(tmpRequest.GetUsername()) if transItem == nil { return nil } // 初始化 if !transItem.IsInited { // 初始化ID transItem.FirstPageMd5 = userPageResponse.GetFirstPageMd5() objectCount := userPageResponse.GetObjectCount() if objectCount > 0 { objectList := userPageResponse.GetObjectList() transItem.CreateTime = objectList[0].GetCreateTime() } transItem.IsInited = true return nil } // 转发新的朋友圈 objectCount := userPageResponse.GetObjectCount() objectList := userPageResponse.GetObjectList() for index := uint32(0); index < objectCount; index++ { tmpObject := objectList[index] if tmpObject.GetCreateTime() > transItem.CreateTime { // 转发 currentSnsTransTask.AddSyncItem(tmpObject) continue } break } // 跟新设置 if objectCount > 0 { transItem.FirstPageMd5 = userPageResponse.GetFirstPageMd5() transItem.CreateTime = objectList[0].GetCreateTime() } return nil }