package svc import ( "applet/app/db" "applet/app/db/model" offical "applet/app/db/official" "applet/app/task/md" "applet/app/utils" "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/cinema_5bms" "encoding/json" "github.com/tidwall/gjson" "strings" "time" ) func Cinema5bmsOrder() { cinema5bmsAppid := offical.SysCfgByKeyStr("cinema5bms_appid") cinema5bmsAppsecret := offical.SysCfgByKeyStr("cinema5bms_appSecret") uid := "0" // 获取上次获取订单时候的时间戳 pvdTimeKey := "cinema5bms_order_time" now := time.Now().Unix() past := GetRunTime(uid, pvdTimeKey, "短剧获取订单时间") var ( beginTime int64 = 0 endTime int64 = 0 pageNo int = 1 pageSize int = 50 ) //怕时间不是走最新的 leave := now - past if leave > 500 { leave = 0 } var eveTime int64 = 3600 past = past + leave beginTime = past - eveTime endTime = past if endTime > now { endTime = now } for { // 分配堆内存 time.Sleep(time.Microsecond * 500) // 等待500毫秒 //获取订单 arg := map[string]string{ "app_id": cinema5bmsAppid, "pay_start_date": time.Unix(beginTime, 0).Format("2006-01-02 15:04:05"), "pay_end_date": time.Unix(endTime, 0).Format("2006-01-02 15:04:05"), "limit": utils.IntToStr(pageSize), "p": utils.IntToStr(pageNo), } count := GetNewVideoOrder(uid, cinema5bmsAppsecret, arg) if count == 0 { goto ChkArg } if count <= pageSize { pageNo++ continue } ChkArg: // 查询完后重置时间, 最后查询时间 if endTime < now { pageNo = 1 SetRunTime(uid, pvdTimeKey, utils.TimeToStr(endTime)) beginTime = endTime endTime = endTime + eveTime if endTime > now { endTime = now } continue } break } // 更新最后供应商执行订单时间 SetRunTime(uid, pvdTimeKey, utils.TimeToStr(now)) } func Cinema5bmsOrderDate() { cinema5bmsAppid := offical.SysCfgByKeyStr("cinema5bms_appid") cinema5bmsAppsecret := offical.SysCfgByKeyStr("cinema5bms_appSecret") yesterday := utils.GetTimeRange("yesterday") var ( pageNo int = 1 pageSize int = 50 ) uid := "0" for { // 分配堆内存 time.Sleep(time.Microsecond * 500) // 等待500毫秒 //获取订单 arg := map[string]string{ "app_id": cinema5bmsAppid, "show_time": time.Unix(yesterday["start"], 0).Format("2006-01-02"), "limit": utils.IntToStr(pageSize), "p": utils.IntToStr(pageNo), } count := GetNewVideoOrder(uid, cinema5bmsAppsecret, arg) if count == 0 { break } if count <= pageSize { pageNo++ continue } } } func GetNewVideoOrder(uids string, cinema5bmsAppsecret string, arg map[string]string) int { cinema, _ := cinema_5bms.GetCinema("open/getOrderList", cinema5bmsAppsecret, arg) data := make([]md.Cinema5bmsOrder, 0) json.Unmarshal([]byte(gjson.Get(cinema, "data.list").String()), &data) statusMap := map[string]string{ "等待核销": "订单付款", "核销成功": "订单完成", "核销失败": "订单失败", } for _, v := range data { sourceIdArr := strings.Split(v.CustomParams, "_") mid := "" uid := "" if len(sourceIdArr) == 2 { mid = sourceIdArr[0] uid = sourceIdArr[1] } if mid == "" || uid == "" { continue } Channel := "douyin" if v.Nsource == "2" { Channel = "kuaishou" } money := v.OrderAmount commission := utils.StrToFloat64(v.OrderAmount) * (10.0 / 100) var tmp = model.PlayletSaleOrder{ Uid: mid, SubUid: utils.StrToInt(uid), Data: utils.SerializeStr(v), Oid: v.OrderSn, Amount: money, Commission: utils.Float64ToStr(commission), CreateTime: utils.TimeParseStd(v.PayTime), UpdateTime: time.Now(), Title: v.CinemaName + "-" + v.FilmName, VideoType: Channel, PlatformType: "5bms", GoodsType: "playlet", OrdType: "cinema", ExtendUid: uids, } playletSaleOrderDb := db.PlayletSaleOrderDb{} playletSaleOrderDb.Set() ord := playletSaleOrderDb.GetPlayletVideoOrderByOid(v.OrderSn, tmp.OrdType) tmp.Status = statusMap[v.OrderStatus] if v.RefundTime != "" { tmp.RefundTime = utils.TimeParseStd(v.RefundTime) } if ord != nil { playletSaleOrderDb.PlayletVideoOrderUpdate(ord.Id, &tmp) } else { tmp.CustomOid = utils.OrderUUID(tmp.SubUid) playletSaleOrderDb.PlayletVideoOrderInsert(&tmp) } } return len(data) }