智盟项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

169 lines
4.2 KiB

  1. package svc
  2. import (
  3. "applet/app/cfg"
  4. "applet/app/db"
  5. "applet/app/db/model"
  6. offical "applet/app/db/official"
  7. "applet/app/task/md"
  8. "applet/app/utils"
  9. "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/xiaoju"
  10. "encoding/json"
  11. "fmt"
  12. "github.com/tidwall/gjson"
  13. "strings"
  14. "time"
  15. )
  16. func OilOrder() {
  17. pvdTimeKey := "oil_time"
  18. // 获得最后时间
  19. timeStrData := offical.SysCfgByKey(pvdTimeKey)
  20. timeStr := ""
  21. if timeStrData == nil {
  22. offical.DbsSysCfgInserts(pvdTimeKey, time.Now().Format("2006-01-02"))
  23. timeStr = offical.SysCfgByKeyStr(pvdTimeKey)
  24. } else {
  25. timeStr = timeStrData.V
  26. }
  27. // 所有时间都是在操作秒数
  28. now := time.Now().Unix()
  29. strs := strings.Split(timeStr, ":")
  30. if len(strs) == 3 {
  31. timeStr = strs[0] + ":" + strs[1] + ":00"
  32. }
  33. fmt.Println(timeStr)
  34. past := utils.TimeParseStd(timeStr).Unix()
  35. // 如果上次记录超过30天或者 过去时间大于当前时间戳, 把时间设置为此前20分钟
  36. if past < now-180*86400 || past > now {
  37. past = now
  38. }
  39. var (
  40. beginTime int64 = 0
  41. endTime int64 = 0
  42. pageNo int = 1
  43. pageSize int = 50
  44. )
  45. //怕时间不是走最新的
  46. leave := now - past
  47. if leave > 500 {
  48. leave = 0
  49. }
  50. past = past + leave
  51. beginTime = past - 85000
  52. endTime = past
  53. if endTime > now {
  54. endTime = now
  55. }
  56. for {
  57. count := 0
  58. count, _ = OrdersOilGet(pageNo, pageSize, beginTime, endTime)
  59. if count == 0 {
  60. goto ChkArg
  61. }
  62. // 判断是否分页已经全部取完了
  63. if count <= pageSize {
  64. pageNo++
  65. fmt.Println("========下一页========" + utils.IntToStr(pageNo))
  66. count = 0
  67. continue
  68. }
  69. ChkArg:
  70. // 查询完后重置时间, 最后查询时间
  71. if endTime < now {
  72. pageNo = 1
  73. offical.DbsSysCfgUpdate(pvdTimeKey, utils.TimeToStr(endTime))
  74. beginTime = endTime
  75. endTime = endTime + 300
  76. if endTime > now {
  77. endTime = now
  78. }
  79. count = 0
  80. continue
  81. }
  82. count = 0
  83. break
  84. }
  85. offical.DbsSysCfgUpdate(pvdTimeKey, utils.TimeToStr(endTime))
  86. }
  87. func OrdersOilGet(p int, pageSize int, sTime, eTime int64) (int, string) {
  88. platformKey := XiaojuKey()
  89. args := map[string]interface{}{
  90. "queryEndTime": time.Unix(eTime, 0).Format("2006-01-02 15:04:05"),
  91. "queryStartTime": time.Unix(sTime, 0).Format("2006-01-02 15:04:05"),
  92. "pageIndex": p,
  93. "pageSize": pageSize,
  94. }
  95. token := GetXiaojuToken(platformKey)
  96. datas, err := xiaoju.XiaojuStationOrder(platformKey, token, args)
  97. if err != nil {
  98. return 0, ""
  99. }
  100. var order = make([]md.OilData, 0)
  101. json.Unmarshal([]byte(gjson.Get(datas, "orderInfoList").String()), &order)
  102. if len(order) == 0 {
  103. return 0, ""
  104. }
  105. count := len(order)
  106. for _, v := range order {
  107. commXiaoju(v)
  108. }
  109. return count, ""
  110. }
  111. func commXiaoju(data md.OilData) error {
  112. if data.PayStatus == 0 {
  113. return nil
  114. }
  115. state := "订单付款"
  116. if data.RefundStatus == 1 {
  117. state = "订单退款"
  118. }
  119. ex := strings.Split(data.OutUserId, "_")
  120. if strings.Contains(utils.AnyToString(data.OutUserId), "zhiying") == false {
  121. return nil
  122. }
  123. if strings.Contains(utils.AnyToString(data.OutUserId), "dev") && cfg.Prd {
  124. return nil
  125. }
  126. if strings.Contains(utils.AnyToString(data.OutUserId), "prd") && cfg.Prd == false {
  127. return nil
  128. }
  129. var res = model.LifeOrder{
  130. PvdParentOid: data.OrderId,
  131. Pvd: "xiaoju",
  132. Status: state,
  133. CreateTime: int(utils.TimeStdParseUnix(data.PayTime)),
  134. }
  135. res.Uid = utils.StrToInt(ex[3])
  136. res.StationUid = utils.StrToInt(ex[2])
  137. res.Oid = utils.StrToInt64(utils.OrderUUID(utils.StrToInt(ex[2])))
  138. res.PvdOid = data.OrderId
  139. res.UpdateTime = int(time.Now().Unix())
  140. res.Title = data.StoreName
  141. res.Gid = res.PvdOid
  142. res.Payment = utils.Float64ToStr(float64(data.RealMoney) / 100)
  143. var commission = float64(data.RealMoney) / 100 * (0.2 / 100)
  144. res.Commission = utils.Float64ToStr(commission)
  145. res.RealCommission = utils.Float64ToStr(commission)
  146. one := db.GetLifeOrderByOne(res.PvdOid, utils.IntToStr(res.Uid), res.Pvd)
  147. if one == nil {
  148. insertOne, err := db.ZhimengDb.InsertOne(&res)
  149. fmt.Println(insertOne)
  150. fmt.Println(err)
  151. } else {
  152. res.SettleTime = one.SettleTime
  153. res.CreateTime = one.CreateTime
  154. if one.PlatformSettleTime > 0 {
  155. res.PlatformSettleTime = one.PlatformSettleTime
  156. }
  157. db.ZhimengDb.Where("id=?", one.Id).AllCols().Update(&res)
  158. }
  159. return nil
  160. }