智盟项目
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

167 行
4.6 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. zhios_third_party_utils "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/utils"
  8. "encoding/json"
  9. "fmt"
  10. "github.com/tidwall/gjson"
  11. "strings"
  12. "time"
  13. )
  14. func MovieOrder() {
  15. pvdTimeKey := "movie_time"
  16. // 获得最后时间
  17. timeStrData := offical.SysCfgByKey(pvdTimeKey)
  18. timeStr := ""
  19. if timeStrData == nil {
  20. offical.DbsSysCfgInserts(pvdTimeKey, time.Now().Format("2006-01-02"))
  21. timeStr = offical.SysCfgByKeyStr(pvdTimeKey)
  22. } else {
  23. timeStr = timeStrData.V
  24. }
  25. // 所有时间都是在操作秒数
  26. now := time.Now().Unix()
  27. strs := strings.Split(timeStr, ":")
  28. if len(strs) == 3 {
  29. timeStr = strs[0] + ":" + strs[1] + ":00"
  30. }
  31. fmt.Println(timeStr)
  32. past := utils.TimeParseStd(timeStr).Unix()
  33. // 如果上次记录超过30天或者 过去时间大于当前时间戳, 把时间设置为此前20分钟
  34. if past < now-180*86400 || past > now {
  35. past = now
  36. }
  37. var (
  38. beginTime int64 = 0
  39. endTime int64 = 0
  40. pageNo int = 1
  41. pageSize int = 50
  42. )
  43. //怕时间不是走最新的
  44. leave := now - past
  45. if leave > 500 {
  46. leave = 0
  47. }
  48. past = past + leave
  49. beginTime = past - 85000
  50. endTime = past
  51. if endTime > now {
  52. endTime = now
  53. }
  54. for {
  55. count := 0
  56. count, _ = OrdersMovieGet(pageNo, pageSize, beginTime, endTime)
  57. if count == 0 {
  58. goto ChkArg
  59. }
  60. // 判断是否分页已经全部取完了
  61. if count <= pageSize {
  62. pageNo++
  63. fmt.Println("========下一页========" + utils.IntToStr(pageNo))
  64. count = 0
  65. continue
  66. }
  67. ChkArg:
  68. // 查询完后重置时间, 最后查询时间
  69. if endTime < now {
  70. pageNo = 1
  71. offical.DbsSysCfgUpdate(pvdTimeKey, utils.TimeToStr(endTime))
  72. beginTime = endTime
  73. endTime = endTime + 300
  74. if endTime > now {
  75. endTime = now
  76. }
  77. count = 0
  78. continue
  79. }
  80. count = 0
  81. break
  82. }
  83. offical.DbsSysCfgUpdate(pvdTimeKey, utils.TimeToStr(endTime))
  84. }
  85. func OrdersMovieGet(p int, pageSize int, sTime, eTime int64) (int, string) {
  86. param := map[string]string{
  87. "updateTimeEndTime": time.Unix(eTime, 0).Format("2006-01-02 15:04:05"),
  88. "updateTimeBeginTime": time.Unix(sTime, 0).Format("2006-01-02 15:04:05"),
  89. "pageIndex": utils.IntToStr(p),
  90. "pageSize": utils.IntToStr(pageSize),
  91. "platformId": "10200",
  92. "timestamp": utils.Int64ToStr(time.Now().Unix()),
  93. }
  94. secret := "V4FNgCUoL2nWnyFS"
  95. str := ""
  96. strMap := zhios_third_party_utils.KsortToStr(param)
  97. for _, v := range strMap {
  98. if str == "" {
  99. str += v + "=" + param[v]
  100. } else {
  101. str += "&" + v + "=" + param[v]
  102. }
  103. }
  104. str += secret
  105. param["sign"] = zhios_third_party_utils.Md5(str)
  106. post, _ := utils.CurlPost("https://live.qianzhu8.com/api/v1/platform/movieOrder/pagedQuery", utils.SerializeStr(param), nil)
  107. var order = make([]map[string]interface{}, 0)
  108. json.Unmarshal([]byte(gjson.Get(string(post), "data").String()), &order)
  109. if len(order) == 0 {
  110. return 0, ""
  111. }
  112. count := len(order)
  113. for _, v := range order {
  114. commMovie(v)
  115. }
  116. return count, ""
  117. }
  118. func commMovie(data map[string]interface{}) error {
  119. if data["status"] == "0" {
  120. return nil
  121. }
  122. status_arr := map[string]string{"0": "创建订单", "5": "订单付款", "10": "订单完成", "15": "订单结算", "-5": "订单失效"}
  123. state := status_arr[utils.Int64ToStr(utils.AnyToInt64(data["status"]))]
  124. ex := strings.Split(utils.AnyToString(data["platformUniqueId"]), "_")
  125. if strings.Contains(utils.AnyToString(data["platformUniqueId"]), "zhiying") == false {
  126. return nil
  127. }
  128. var res = model.LifeOrder{
  129. PvdParentOid: utils.AnyToString(data["orderNo"]),
  130. Pvd: "cinema",
  131. Status: state,
  132. CreateTime: int(utils.TimeStdParseUnix(utils.AnyToString(data["createTime"]))),
  133. }
  134. res.Uid = utils.StrToInt(ex[3])
  135. res.StationUid = utils.StrToInt(ex[2])
  136. res.Oid = utils.StrToInt64(utils.OrderUUID(utils.StrToInt(ex[2])))
  137. res.PvdOid = utils.AnyToString(data["orderNo"])
  138. res.UpdateTime = int(time.Now().Unix())
  139. res.Title = utils.AnyToString(data["filmName"]) + "(" + utils.AnyToString(data["seatsDesc"]) + ")"
  140. res.Gid = res.PvdOid
  141. res.Payment = utils.AnyToString(data["amount"])
  142. var commission = utils.AnyToString(data["commissionPrice"])
  143. res.Commission = commission
  144. res.RealCommission = commission
  145. one := db.GetLifeOrderByOne(res.PvdOid, utils.IntToStr(res.Uid), res.Pvd)
  146. if one == nil {
  147. insertOne, err := db.ZhimengDb.InsertOne(&res)
  148. fmt.Println(insertOne)
  149. fmt.Println(err)
  150. } else {
  151. res.SettleTime = one.SettleTime
  152. res.CreateTime = one.CreateTime
  153. if one.PlatformSettleTime > 0 {
  154. res.PlatformSettleTime = one.PlatformSettleTime
  155. }
  156. db.ZhimengDb.Where("id=?", one.Id).AllCols().Update(&res)
  157. }
  158. return nil
  159. }