|
- 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, ""
-
- }
|