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/haodanku" "fmt" "strings" "time" ) func HandankuTongcheng() { pvdTimeKey := "haodanku_tongcheng_time" // 获得最后时间 latest := offical.SysCfgByKey(pvdTimeKey) if latest == nil { offical.DbsSysCfgInserts(pvdTimeKey, time.Now().String()) latest = offical.SysCfgByKey(pvdTimeKey) } // 所有时间都是在操作秒数 now := time.Now().Unix() timeStr := latest.V fmt.Println(timeStr) past := utils.TimeParseStd(timeStr).Unix() // 如果上次记录超过30天或者 过去时间大于当前时间戳, 把时间设置为此前20分钟 if past > now { past = now } var ( beginTime int64 = 0 endTime int64 = 0 pageNo int = 1 pageSize int = 50 ) //怕时间不是走最新的 leave := now - past if leave > 500 { leave = 0 } past = past + leave beginTime = past - 20*60 endTime = past if endTime > now { endTime = now } for { var err error count := OrdersHaodankuTongchengGet(pageNo, pageSize, beginTime, endTime) if err != nil || count == 0 { goto ChkArg } if count > 0 { count = pageSize } // 判断是否分页已经全部取完了 if count == pageSize { pageNo++ fmt.Println("========蝉选下一页========" + utils.IntToStr(pageNo)) continue } ChkArg: // 查询完后重置时间, 最后查询时间 if endTime < now { pageNo = 1 offical.DbsSysCfgUpdate(pvdTimeKey, utils.TimeToStr(endTime)) beginTime = endTime endTime = endTime + 20*60 if endTime > now { endTime = now } continue } break } offical.DbsSysCfgUpdate(pvdTimeKey, time.Unix(now, 0).Format("2006-01-02 15:04:05")) } var haodankuStationState = map[string]string{ "1": "订单付款", "3": "订单退款", "2": "订单成功", } func OrdersHaodankuTongchengGet(page, pageSize int, sTime, eTime int64) int { tikTokArgs := map[string]string{ "date_type": "4", "back": utils.IntToStr(pageSize), "min_id": utils.IntToStr(page), "start_date": utils.Int64ToStr(time.Unix(sTime, 0).Unix()), "end_date": utils.Int64ToStr(time.Unix(eTime, 0).Unix()), } order := haodanku.HaodankuTontchengOrder(tikTokArgs) for _, v := range order { if v.ChannelCode == "" { continue } isShare := 0 if strings.Contains(v.ChannelCode, "s") { isShare = 1 } v.ChannelCode = strings.ReplaceAll(v.ChannelCode, "o", "") v.ChannelCode = strings.ReplaceAll(v.ChannelCode, "s", "") ex := strings.Split(v.ChannelCode, "u") if len(ex) != 2 { continue } mid := "" uid := "" one := db.GetLifeOrderByOne1(utils.AnyToString(v.TradeId), "tongcheng") if one != nil { isShare = one.IsShare mid = utils.IntToStr(one.Uid) uid = utils.IntToStr(one.StationUid) } else { mid = ex[0] uid = ex[1] } if mid == "" || uid == "" { continue } var ord = &model.LifeOrder{ Oid: utils.StrToInt64(utils.OrderUUID(utils.StrToInt(uid))), Uid: utils.StrToInt(mid), StationUid: utils.StrToInt(uid), PvdOid: utils.AnyToString(v.TradeId), PvdParentOid: v.TradeParentId, Status: haodankuStationState[v.OrderStatus], UpdateTime: int(time.Now().Unix()), Commission: v.PredictMoney, Title: utils.AnyToString(v.ShopName), Payment: v.PayPrice, Pvd: "tongcheng", Img: "", IsShare: isShare, Gid: v.TradeId, } if v.CreateTime != "" { ord.CreateTime = int(utils.TimeStdParseUnix(v.CreateTime)) } if v.EarningTime != "" { ord.PlatformSettleTime = int(utils.TimeStdParseUnix(utils.AnyToString(v.EarningTime))) } if utils.StrToFloat64(v.ActualMoney) > 0 { ord.RealCommission = v.ActualMoney } if v.PaidTime != "" && v.OrderStatus == "3" { ord.Status = "订单退款" } if v.SettledStatus == 1 && v.OrderStatus == "2" && v.EarningTime != "" { ord.Status = "订单结算" } if v.SettledStatus == 2 { ord.RealCommission = "0" ord.Commission = "0" } if one == nil { insertOne, err := db.ZhimengDb.InsertOne(ord) fmt.Println(insertOne) fmt.Println(err) } else { ord.SettleTime = one.SettleTime if one.PlatformSettleTime > 0 { ord.PlatformSettleTime = one.PlatformSettleTime } if one.Status == "违规订单" { ord.Status = "违规订单" } if ord.SettleTime > 0 && ord.Status == "订单退款" { ord.SettleTime = 0 masterDb := db.MasterDb{} masterDb.Set() master := masterDb.GetMaster(utils.IntToStr(ord.Uid)) if master != nil { masterAmountDb := db.MasterAmountDb{} masterAmountDb.Set() amount := masterAmountDb.GetMasterAmountByExtendUid(utils.IntToStr(master.Id), utils.IntToStr(ord.ExtendUid), "playlet") if amount != nil { oldAmount := amount.Amount amount.Amount = utils.Float64ToStr(utils.StrToFloat64(amount.Amount) - utils.StrToFloat64(ord.RealCommission)) update := masterAmountDb.MasterAmountUpdate(amount.Id, amount) if update { var tmp = model.MasterAmountFlow{ Uid: utils.IntToStr(ord.Uid), Time: time.Now(), BeforeAmount: oldAmount, Amount: ord.RealCommission, AfterAmount: amount.Amount, Platform: "playlet", Oid: utils.Int64ToStr(ord.Oid), Title: "订单退款扣除", FlowType: "order_refund_deduct", IncomeType: 0, ExtendUid: utils.IntToStr(ord.ExtendUid), } masterAmountFlowDb := db.MasterAmountFlowDb{} masterAmountFlowDb.Set() masterAmountFlowDb.MasterAmountFlowInsert(&tmp) } } } } db.ZhimengDb.Where("id=?", one.Id).AllCols().Update(ord) } } return len(order) }