package svc import ( "applet/app/db" "applet/app/db/model" offical "applet/app/db/official" "applet/app/utils" "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/thirdParty/wph" "fmt" "github.com/syyongx/php2go" "github.com/tidwall/gjson" "strings" "time" ) func WphComm() map[string]string { wphData := offical.SysCfgByKeyStr("wph_data") serviceParam := map[string]string{ "token": "", "uuid": "353543142", "key": "8f8c427e", "secret": "DB9C5A92480618101A15835DD9E8AF69", "pid": "", } serviceParam["token"] = gjson.Get(wphData, "token").String() serviceParam["pid"] = gjson.Get(wphData, "pid").String() return serviceParam } func WphOrder() { pvdTimeKey := "wph_time" // 获得最后时间 latest := offical.SysCfgByKey(pvdTimeKey) if latest == nil { offical.DbsSysCfgInserts(pvdTimeKey, time.Now().String()) latest = offical.SysCfgByKey(pvdTimeKey) } // 所有时间都是在操作秒数 now := time.Now().Unix() strs := strings.Split(latest.V, ":") timeStr := latest.V if len(strs) == 3 { timeStr = strs[0] + ":" + strs[1] + ":00" } fmt.Println(timeStr) past := utils.TimeParseStd(timeStr).Unix() // 如果上次记录超过30天或者 过去时间大于当前时间戳, 把时间设置为此前20分钟 if past < now-180*86400 || past > now { past = now } var ( beginTime int64 = 0 endTime int64 = 0 pageNo int = 1 pageSize int = 50 nextPositionIndex string = "" ) //怕时间不是走最新的 leave := now - past if leave > 500 { leave = 0 } past = past + leave beginTime = past - 300 endTime = past if endTime > now { endTime = now } wphData := WphComm() for { count := 0 var positionIndex = "" if pageNo == 1 { nextPositionIndex = "0" } if nextPositionIndex != "" { positionIndex, count, _ = OrdersWphGet(pageNo, pageSize, beginTime, endTime, "update", 1, nextPositionIndex, wphData) } if count == 0 { nextPositionIndex = "" goto ChkArg } // 判断是否分页已经全部取完了 if count <= pageSize { nextPositionIndex = positionIndex pageNo++ fmt.Println("========下一页========" + utils.IntToStr(pageNo)) count = 0 continue } ChkArg: nextPositionIndex = "" // 查询完后重置时间, 最后查询时间 if endTime < now { pageNo = 1 offical.DbsSysCfgUpdate(pvdTimeKey, utils.TimeToStr(endTime)) beginTime = endTime endTime = endTime + 300 if endTime > now { endTime = now } count = 0 continue } count = 0 break } } func OrdersWphGet(p int, pageSize int, sTime, eTime int64, timeType string, pvd int, nextPositionIndex string, wphData map[string]string) (string, int, string) { queryModel := map[string]string{ "pageSize": utils.IntToStr(pageSize), "page": utils.IntToStr(p), "updateTimeStart": utils.Int64ToStr(sTime * 1000), "updateTimeEnd": utils.Int64ToStr(eTime * 1000), "requestId": wphData["uuid"] + utils.Int64ToStr(time.Now().Unix()) + utils.IntToStr(php2go.Rand(1000, 9999)), } paramData := map[string]interface{}{ "queryModel": queryModel, } param := utils.SerializeStr(paramData) order := wph.GetOrder(wphData, param) if order == nil { return "", 0, "" } orderCount := len(order) var kuaishouState = map[string]string{ "已下单": "创建订单", "已付款": "订单付款", "已签收": "订单完成", "待结算": "订单完成", "已结算": "订单结算", "已失效": "订单失效", } for _, v := range order { if v["status"] == "已下单" { continue } if v["channelTag"] != wphData["pid"] { continue } userId := v["open_id"] ex := strings.Split(userId, "_") if strings.Contains(utils.AnyToString(userId), "off") == false { continue } buyType := ex[1] if v["statParam"] != "" { buyType = v["statParam"] } if buyType == "" { buyType = "self" } var orderType int if buyType == "share" { orderType = 1 } if buyType == "cloud" { orderType = 10 } if buyType == "free" { orderType = 2 } taskType := "" if utils.InArr(buyType, []string{"happy_orchard"}) { orderType = 1 taskType = buyType } var resNew = model.GuideOrder{ PvdParentOid: v["oid"], Pvd: "vip", Status: kuaishouState[v["status"]], CreateTime: utils.StrToInt(v["create_time"]), } resNew.TaskType = taskType resNew.IsShare = orderType resNew.Oid = utils.StrToInt64(utils.OrderUUID(utils.StrToInt(ex[1]))) resNew.PvdOid = v["oid"] resNew.Uid = utils.StrToInt(ex[2]) resNew.StationUid = utils.StrToInt(ex[3]) resNew.UpdateTime = int(time.Now().Unix()) resNew.Commission = v["commission"] resNew.RealCommission = v["commission"] resNew.Title = v["title"] resNew.Img = v["img"] resNew.Gid = v["gid"] resNew.IsShare = orderType resNew.Payment = v["payment"] if utils.StrToInt64(v["js_time"]) > 0 { resNew.PlatformSettleTime = utils.StrToInt(v["js_time"]) } one := db.GetGuideOrderByOne(resNew.PvdOid, utils.IntToStr(resNew.Uid), resNew.Pvd) if one == nil { insertOne, err := db.ZhimengDb.InsertOne(&resNew) fmt.Println(insertOne) fmt.Println(err) } else { resNew.SettleTime = one.SettleTime if one.PlatformSettleTime > 0 { resNew.PlatformSettleTime = one.PlatformSettleTime } db.ZhimengDb.Where("id=?", one.Id).AllCols().Update(&resNew) } } return "", orderCount, "" }