智盟项目
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

214 lines
5.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/haodanku"
  8. "fmt"
  9. "strings"
  10. "time"
  11. )
  12. func HandankuTongcheng() {
  13. pvdTimeKey := "haodanku_tongcheng_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. timeStr := latest.V
  23. fmt.Println(timeStr)
  24. past := utils.TimeParseStd(timeStr).Unix()
  25. // 如果上次记录超过30天或者 过去时间大于当前时间戳, 把时间设置为此前20分钟
  26. if past > now {
  27. past = now
  28. }
  29. var (
  30. beginTime int64 = 0
  31. endTime int64 = 0
  32. pageNo int = 1
  33. pageSize int = 50
  34. )
  35. //怕时间不是走最新的
  36. leave := now - past
  37. if leave > 500 {
  38. leave = 0
  39. }
  40. past = past + leave
  41. beginTime = past - 20*60
  42. endTime = past
  43. if endTime > now {
  44. endTime = now
  45. }
  46. for {
  47. var err error
  48. count := OrdersHaodankuTongchengGet(pageNo, pageSize, beginTime, endTime)
  49. if err != nil || count == 0 {
  50. goto ChkArg
  51. }
  52. if count > 0 {
  53. count = pageSize
  54. }
  55. // 判断是否分页已经全部取完了
  56. if count == pageSize {
  57. pageNo++
  58. fmt.Println("========蝉选下一页========" + utils.IntToStr(pageNo))
  59. continue
  60. }
  61. ChkArg:
  62. // 查询完后重置时间, 最后查询时间
  63. if endTime < now {
  64. pageNo = 1
  65. offical.DbsSysCfgUpdate(pvdTimeKey, utils.TimeToStr(endTime))
  66. beginTime = endTime
  67. endTime = endTime + 20*60
  68. if endTime > now {
  69. endTime = now
  70. }
  71. continue
  72. }
  73. break
  74. }
  75. offical.DbsSysCfgUpdate(pvdTimeKey, time.Unix(now, 0).Format("2006-01-02 15:04:05"))
  76. }
  77. var haodankuStationState = map[string]string{
  78. "1": "订单付款",
  79. "3": "订单退款",
  80. "2": "订单成功",
  81. }
  82. func OrdersHaodankuTongchengGet(page, pageSize int, sTime, eTime int64) int {
  83. tikTokArgs := map[string]string{
  84. "date_type": "4",
  85. "back": utils.IntToStr(pageSize),
  86. "min_id": utils.IntToStr(page),
  87. "start_date": utils.Int64ToStr(time.Unix(sTime, 0).Unix()),
  88. "end_date": utils.Int64ToStr(time.Unix(eTime, 0).Unix()),
  89. }
  90. order := haodanku.HaodankuTontchengOrder(tikTokArgs)
  91. for _, v := range order {
  92. if v.ChannelCode == "" {
  93. continue
  94. }
  95. isShare := 0
  96. if strings.Contains(v.ChannelCode, "s") {
  97. isShare = 1
  98. }
  99. v.ChannelCode = strings.ReplaceAll(v.ChannelCode, "o", "")
  100. v.ChannelCode = strings.ReplaceAll(v.ChannelCode, "s", "")
  101. ex := strings.Split(v.ChannelCode, "u")
  102. if len(ex) != 2 {
  103. continue
  104. }
  105. mid := ""
  106. uid := ""
  107. one := db.GetLifeOrderByOne1(utils.AnyToString(v.TradeId), "tongcheng")
  108. if one != nil {
  109. isShare = one.IsShare
  110. mid = utils.IntToStr(one.Uid)
  111. uid = utils.IntToStr(one.StationUid)
  112. } else {
  113. mid = ex[0]
  114. uid = ex[1]
  115. }
  116. if mid == "" || uid == "" {
  117. continue
  118. }
  119. var ord = &model.LifeOrder{
  120. Oid: utils.StrToInt64(utils.OrderUUID(utils.StrToInt(uid))),
  121. Uid: utils.StrToInt(mid),
  122. StationUid: utils.StrToInt(uid),
  123. PvdOid: utils.AnyToString(v.TradeId),
  124. PvdParentOid: v.TradeParentId,
  125. Status: haodankuStationState[v.OrderStatus],
  126. UpdateTime: int(time.Now().Unix()),
  127. Commission: v.PredictMoney,
  128. Title: utils.AnyToString(v.ShopName),
  129. Payment: v.PayPrice,
  130. Pvd: "tongcheng",
  131. Img: "",
  132. IsShare: isShare,
  133. Gid: v.TradeId,
  134. }
  135. if v.CreateTime != "" {
  136. ord.CreateTime = int(utils.TimeStdParseUnix(v.CreateTime))
  137. }
  138. if v.EarningTime != "" {
  139. ord.PlatformSettleTime = int(utils.TimeStdParseUnix(utils.AnyToString(v.EarningTime)))
  140. }
  141. if utils.StrToFloat64(v.ActualMoney) > 0 {
  142. ord.RealCommission = v.ActualMoney
  143. }
  144. if v.PaidTime != "" && v.OrderStatus == "3" {
  145. ord.Status = "订单退款"
  146. }
  147. if v.SettledStatus == 1 && v.OrderStatus == "2" && v.EarningTime != "" {
  148. ord.Status = "订单结算"
  149. }
  150. if v.SettledStatus == 2 {
  151. ord.RealCommission = "0"
  152. ord.Commission = "0"
  153. }
  154. if one == nil {
  155. insertOne, err := db.ZhimengDb.InsertOne(ord)
  156. fmt.Println(insertOne)
  157. fmt.Println(err)
  158. } else {
  159. ord.SettleTime = one.SettleTime
  160. if one.PlatformSettleTime > 0 {
  161. ord.PlatformSettleTime = one.PlatformSettleTime
  162. }
  163. if one.Status == "违规订单" {
  164. ord.Status = "违规订单"
  165. }
  166. if ord.SettleTime > 0 && ord.Status == "订单退款" {
  167. ord.SettleTime = 0
  168. masterDb := db.MasterDb{}
  169. masterDb.Set()
  170. master := masterDb.GetMaster(utils.IntToStr(ord.Uid))
  171. if master != nil {
  172. masterAmountDb := db.MasterAmountDb{}
  173. masterAmountDb.Set()
  174. amount := masterAmountDb.GetMasterAmountByExtendUid(utils.IntToStr(master.Id), utils.IntToStr(ord.ExtendUid), "playlet")
  175. if amount != nil {
  176. oldAmount := amount.Amount
  177. amount.Amount = utils.Float64ToStr(utils.StrToFloat64(amount.Amount) - utils.StrToFloat64(ord.RealCommission))
  178. update := masterAmountDb.MasterAmountUpdate(amount.Id, amount)
  179. if update {
  180. var tmp = model.MasterAmountFlow{
  181. Uid: utils.IntToStr(ord.Uid),
  182. Time: time.Now(),
  183. BeforeAmount: oldAmount,
  184. Amount: ord.RealCommission,
  185. AfterAmount: amount.Amount,
  186. Platform: "playlet",
  187. Oid: utils.Int64ToStr(ord.Oid),
  188. Title: "订单退款扣除",
  189. FlowType: "order_refund_deduct",
  190. IncomeType: 0,
  191. ExtendUid: utils.IntToStr(ord.ExtendUid),
  192. }
  193. masterAmountFlowDb := db.MasterAmountFlowDb{}
  194. masterAmountFlowDb.Set()
  195. masterAmountFlowDb.MasterAmountFlowInsert(&tmp)
  196. }
  197. }
  198. }
  199. }
  200. db.ZhimengDb.Where("id=?", one.Id).AllCols().Update(ord)
  201. }
  202. }
  203. return len(order)
  204. }