智盟项目
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

181 wiersze
4.7 KiB

  1. package svc
  2. import (
  3. "applet/app/db"
  4. "applet/app/db/model"
  5. offical "applet/app/db/official"
  6. "applet/app/utils"
  7. "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/elm"
  8. "fmt"
  9. "strings"
  10. "time"
  11. )
  12. func ElmOrder() {
  13. pvdTimeKey := "elm_time"
  14. // 获得最后时间
  15. latest := offical.SysCfgByKey(pvdTimeKey)
  16. if latest == nil {
  17. offical.DbsSysCfgInserts(pvdTimeKey, time.Now().String())
  18. latest = offical.SysCfgByKey(pvdTimeKey)
  19. }
  20. // 所有时间都是在操作秒数
  21. now := time.Now().Unix()
  22. strs := strings.Split(latest.V, ":")
  23. timeStr := latest.V
  24. if len(strs) == 3 {
  25. timeStr = strs[0] + ":" + strs[1] + ":00"
  26. }
  27. fmt.Println(timeStr)
  28. past := utils.TimeParseStd(timeStr).Unix()
  29. // 如果上次记录超过30天或者 过去时间大于当前时间戳, 把时间设置为此前20分钟
  30. if past < now-180*86400 || past > now {
  31. past = now
  32. }
  33. var (
  34. beginTime int64 = 0
  35. endTime int64 = 0
  36. pageNo int = 1
  37. pageSize int = 50
  38. )
  39. //怕时间不是走最新的
  40. leave := now - past
  41. if leave > 500 {
  42. leave = 0
  43. }
  44. past = past + leave
  45. beginTime = past - 300
  46. endTime = past
  47. if endTime > now {
  48. endTime = now
  49. }
  50. for {
  51. count := 0
  52. count, _ = OrdersElmGet(pageNo, pageSize, beginTime, endTime, "update", 1)
  53. if count == 0 {
  54. goto ChkArg
  55. }
  56. // 判断是否分页已经全部取完了
  57. if count <= pageSize {
  58. pageNo++
  59. fmt.Println("========下一页========" + utils.IntToStr(pageNo))
  60. count = 0
  61. continue
  62. }
  63. ChkArg:
  64. // 查询完后重置时间, 最后查询时间
  65. if endTime < now {
  66. pageNo = 1
  67. offical.DbsSysCfgUpdate(pvdTimeKey, utils.TimeToStr(endTime))
  68. beginTime = endTime
  69. endTime = endTime + 300
  70. if endTime > now {
  71. endTime = now
  72. }
  73. count = 0
  74. continue
  75. }
  76. count = 0
  77. break
  78. }
  79. offical.DbsSysCfgUpdate(pvdTimeKey, utils.TimeToStr(endTime))
  80. }
  81. func OrdersElmGet(p int, pageSize int, sTime, eTime int64, timeType string, pvd int) (int, string) {
  82. key := "34319215"
  83. secret := "bb07710660e60a321350a35e1e3b91e8"
  84. args := map[string]string{
  85. "end_time": time.Unix(eTime, 0).Format("2006-01-02 15:04:05"),
  86. "start_time": time.Unix(sTime, 0).Format("2006-01-02 15:04:05"),
  87. "p": utils.IntToStr(p),
  88. "size": utils.IntToStr(pageSize),
  89. }
  90. order, _ := elm.ElemePromotionOrder(key, secret, args)
  91. if order == nil {
  92. return 0, ""
  93. }
  94. var stateList = map[string]string{
  95. "2": "订单付款",
  96. "4": "订单完成",
  97. "1": "创建订单",
  98. "0": "订单失效",
  99. }
  100. for _, v := range order.Result {
  101. if v.Sid == nil {
  102. continue
  103. }
  104. if *v.OrderState == 1 {
  105. continue
  106. }
  107. createTime := utils.TimeStdParseUnix(*v.TkCreateTime)
  108. if v.PayTime != nil {
  109. createTime = utils.TimeStdParseUnix(*v.PayTime)
  110. }
  111. var res = model.LifeOrder{
  112. PvdParentOid: utils.Int64ToStr(*v.ParentOrderId),
  113. Pvd: "own_ele",
  114. Status: stateList[utils.Int64ToStr(*v.OrderState)],
  115. CreateTime: int(createTime),
  116. }
  117. if *v.SettleState == 1 && v.SettleTime != nil {
  118. res.Status = "订单结算"
  119. res.PlatformSettleTime = int(utils.TimeStdParseUnix(*v.SettleTime))
  120. }
  121. ex := strings.Split(*v.Sid, "_")
  122. if len(ex) < 4 || strings.Contains(*v.Sid, "own") == false || strings.Contains(*v.Sid, "ddstar") || strings.Contains(*v.Sid, "ygd") {
  123. continue
  124. }
  125. orderType := 0
  126. if ex[1] == "share" {
  127. orderType = 1
  128. }
  129. res.Uid = utils.StrToInt(ex[2])
  130. if res.Uid == 0 {
  131. continue
  132. }
  133. res.StationUid = utils.StrToInt(ex[3])
  134. res.Oid = utils.StrToInt64(utils.OrderUUID(utils.StrToInt(ex[2])))
  135. res.PvdOid = utils.Int64ToStr(*v.BizOrderId)
  136. res.UpdateTime = int(time.Now().Unix())
  137. if utils.StrToFloat64(*v.PlatformCommissionFee) == 0 {
  138. amount := utils.StrToFloat64(*v.Income)
  139. if utils.StrToFloat64(*v.Settle) > 0 {
  140. amount = utils.StrToFloat64(*v.Settle)
  141. }
  142. fee := float64(int(amount*0.1*100)) / 100
  143. *v.PlatformCommissionFee = utils.Float64ToStr(fee)
  144. }
  145. res.Commission = utils.Float64ToStr(utils.StrToFloat64(*v.Income) - utils.StrToFloat64(*v.PlatformCommissionFee))
  146. if v.Settle != nil && utils.StrToFloat64(*v.Settle) > 0 {
  147. res.RealCommission = utils.Float64ToStr(utils.StrToFloat64(*v.Settle) - utils.StrToFloat64(*v.PlatformCommissionFee))
  148. }
  149. res.Title = *v.Title
  150. res.Img = *v.PicUrl
  151. res.Gid = res.PvdOid
  152. res.IsShare = orderType
  153. res.Payment = *v.PayAmount
  154. one := db.GetLifeOrderByOne(res.PvdOid, utils.IntToStr(res.Uid), res.Pvd)
  155. if one == nil {
  156. insertOne, err := db.ZhimengDb.InsertOne(&res)
  157. fmt.Println(insertOne)
  158. fmt.Println(err)
  159. } else {
  160. res.SettleTime = one.SettleTime
  161. res.CreateTime = one.CreateTime
  162. if one.PlatformSettleTime > 0 {
  163. res.PlatformSettleTime = one.PlatformSettleTime
  164. }
  165. db.ZhimengDb.Where("id=?", one.Id).AllCols().Update(&res)
  166. }
  167. }
  168. return len(order.Result), ""
  169. }