main.go 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. package main
  2. import (
  3. "app.yhyue.com/moapp/jybase/common"
  4. "context"
  5. _ "github.com/gogf/gf/contrib/drivers/mysql/v2"
  6. "github.com/gogf/gf/v2/frame/g"
  7. "github.com/gogf/gf/v2/util/gconv"
  8. "strings"
  9. "workScript/run/orderFlush/product"
  10. )
  11. func main() {
  12. //FlushReturnPlan(context.Background())
  13. //FlushReturnTransfer(context.Background())
  14. //FlushSale(context.Background())
  15. FlushOrder(context.Background())
  16. }
  17. func FlushOrder(ctx context.Context) error {
  18. res, err := g.DB().Query(ctx, "SELECT * FROM dataexport_order WHERE product_type=? order by id asc ", "VIP订阅")
  19. if err != nil {
  20. return err
  21. }
  22. var arr []g.Map
  23. for i, m := range res.List() {
  24. if i%1000 == 0 {
  25. g.Log().Info(ctx, "FlushOrder 进度 %d/%d", i, res.Len())
  26. }
  27. var (
  28. productType = gconv.String(m["product_type"])
  29. orderCode = gconv.String(m["order_code"])
  30. user_phone = gconv.String(m["user_phone"])
  31. user_id = gconv.String(m["user_id"])
  32. order_status = gconv.Int(m["order_status"])
  33. buy_subject = gconv.Int(m["buy_subject"])
  34. vip_type = gconv.Int(m["vip_type"])
  35. original_price = gconv.Int(m["original_price"])
  36. order_money = gconv.Int(m["order_money"])
  37. pay_money = gconv.Int(m["pay_money"])
  38. vip_starttime = gconv.String(m["vip_starttime"])
  39. vip_endtime = gconv.String(m["vip_endtime"])
  40. is_backstage_order = gconv.Int(m["is_backstage_order"])
  41. filter = gconv.String(m["filter"])
  42. buy_count = gconv.Int(m["buy_count"])
  43. )
  44. var (
  45. newData = g.Map{
  46. "order_code": orderCode,
  47. "product_type": productType,
  48. "phone": user_phone,
  49. "filter": filter,
  50. "user_id": user_id,
  51. "service_type": vip_type,
  52. "is_master": 1,
  53. }
  54. product_code string
  55. newFilterMap g.Map
  56. is_service_open int
  57. service_type int
  58. )
  59. if vip_starttime != "" {
  60. newData["service_starttime"] = vip_starttime
  61. }
  62. if vip_endtime != "" {
  63. newData["service_endtime"] = vip_endtime
  64. }
  65. if is_backstage_order == 1 {
  66. newData["original_price"] = order_money
  67. newData["final_price"] = pay_money
  68. } else {
  69. newData["original_price"] = original_price
  70. newData["final_price"] = order_money
  71. }
  72. if order_status == 1 {
  73. is_service_open = 1
  74. if vip_starttime != "" {
  75. if strings.Index(vip_starttime, "2099") > -1 {
  76. is_service_open = 0
  77. }
  78. }
  79. }
  80. switch productType {
  81. case "VIP订阅":
  82. newFilterMap, product_code, err = product.GetVipFilter(filter, buy_count, buy_subject)
  83. if err != nil {
  84. g.Log().Error(ctx, "格式化超级订阅订单%s 异常%v", orderCode, err.Error())
  85. }
  86. service_type = vip_type + 1
  87. case "大会员", "大会员-子账号", "大会员-AI中标预测包", "大会员-招标文件解读", "大会员-补充包":
  88. newFilterMap, product_code, service_type, err = product.GetBigFilter(m)
  89. case "历史数据", "结构化数据":
  90. var (
  91. data_spec = gconv.String(m["data_spec"])
  92. download_url = gconv.String(m["download_url"])
  93. filter_id = gconv.String(m["filter_id"])
  94. data_count = gconv.Int(m["data_count"])
  95. )
  96. if productType == "历史数据" {
  97. product_code = "lssj001"
  98. } else {
  99. product_code = "jghsj001"
  100. }
  101. newFilterMap, product_code, err = product.GetDataExportFilter(data_spec, filter_id, download_url, data_count, is_backstage_order)
  102. if err != nil {
  103. g.Log().Error(ctx, "格式化历史数据订单%s 异常%v", orderCode, err.Error())
  104. }
  105. case "剑鱼币":
  106. product_code = "jyb001"
  107. if filterMap := gconv.Map(filter); filterMap != nil && len(filterMap) > 0 {
  108. newFilterMap = g.Map{
  109. "num": filterMap["score"],
  110. "source": "pc",
  111. }
  112. }
  113. case "数据流量包":
  114. if filterMap := gconv.Map(filter); filterMap != nil && len(filterMap) > 0 {
  115. pType := gconv.Int(filterMap["pType"])
  116. product_code = common.If(pType == 1, "sjllb002", "sjllb001").(string)
  117. newFilterMap = g.Map{
  118. "num": filterMap["pNum"],
  119. "pType": pType,
  120. }
  121. }
  122. case "省份订阅包":
  123. service_type = vip_type + 1
  124. product_code = "sfdyb001"
  125. if filterMap := gconv.Map(filter); filterMap != nil && len(filterMap) > 0 {
  126. var (
  127. unit = gconv.Int(filterMap["cycleunit"])
  128. num = gconv.Int(filterMap["num"])
  129. OldNum = gconv.Int(filterMap["OldNum"])
  130. )
  131. newFilterMap = g.Map{
  132. "buy_cycle": 1,
  133. "buyerAreaCount": num - OldNum,
  134. "finalAreaCount": num,
  135. "buy_type": func() int {
  136. switch unit { //1月 2季 3年
  137. case 1:
  138. return 2
  139. case 2:
  140. return 4
  141. default:
  142. return unit
  143. }
  144. }(), //购买周期 类型 1天 2月 3年 4季度
  145. }
  146. }
  147. case "附件下载包":
  148. product_code = "fjxzb001"
  149. if filterMap := gconv.Map(filter); filterMap != nil && len(filterMap) > 0 {
  150. num := gconv.Int(filterMap["num"])
  151. newFilterMap = g.Map{
  152. "num": num,
  153. }
  154. }
  155. case "采购单位画像包":
  156. product_code = "cgdwhxb001"
  157. if filterMap := gconv.Map(filter); filterMap != nil && len(filterMap) > 0 {
  158. num := gconv.Int(filterMap["num"])
  159. newFilterMap = g.Map{
  160. "num": num,
  161. }
  162. }
  163. case "剑鱼文库会员":
  164. service_type = vip_type + 1
  165. product_code = "jywkhy001"
  166. if filterMap := gconv.Map(filter); filterMap != nil && len(filterMap) > 0 {
  167. cycleunit := gconv.Int(filterMap["cycleunit"])
  168. cyclecount := gconv.Int(filterMap["cyclecount"])
  169. newFilterMap = g.Map{
  170. "buy_cycle": cyclecount,
  171. "buy_type": func() int {
  172. switch cycleunit { //(1:年 2:月 3:天 4:季)
  173. case 1:
  174. return 3
  175. case 3:
  176. return 1
  177. default:
  178. return cycleunit
  179. }
  180. }(),
  181. }
  182. }
  183. case "企业中标分析报告下载包", "业主采购分析报告下载包", "市场分析定制报告下载包":
  184. if filterMap := gconv.Map(filter); filterMap != nil && len(filterMap) > 0 {
  185. switch gconv.Int(filterMap["pType"]) {
  186. case 1:
  187. product_code = "zbqyxzb001"
  188. case 2:
  189. product_code = "yzcgxzb001"
  190. case 3:
  191. product_code = "scfxxzb001"
  192. }
  193. newFilterMap = g.Map{
  194. "num": filterMap["pNum"],
  195. }
  196. }
  197. case "中标必听课", "数据报告", "招投标课程":
  198. newFilterMap = gconv.Map(filter)
  199. case "企业商机管理", "打赏", "数据文件", "3A信用认证", "ISO体系认证", "权益码", "课程分销", "标书制作", "线下课程培训":
  200. if filterMap := gconv.Map(filter); filterMap != nil && len(filterMap) > 0 {
  201. if productType == "企业商机管理" && is_backstage_order == 0 {
  202. newFilterMap = filterMap
  203. } else {
  204. newFilterMap = g.Map{
  205. "remark": filterMap["remark"],
  206. }
  207. }
  208. }
  209. case "广告":
  210. if filterMap := gconv.Map(filter); filterMap != nil && len(filterMap) > 0 {
  211. newFilterMap = g.Map{
  212. "remark": filterMap["remark"],
  213. "adSource": filterMap["adSource"],
  214. }
  215. }
  216. case "招标文件解读":
  217. if filterMap := gconv.Map(filter); filterMap != nil && len(filterMap) > 0 {
  218. newFilterMap = g.Map{
  219. "count": filterMap["count"],
  220. }
  221. }
  222. default:
  223. newFilterMap = gconv.Map(filter)
  224. }
  225. if product_code == "" {
  226. product_code = codeMapping[productType]
  227. }
  228. newData["filter"] = gconv.String(newFilterMap)
  229. newData["product_code"] = product_code
  230. newData["is_service_open"] = is_service_open
  231. newData["service_type"] = service_type
  232. arr = append(arr, newData)
  233. if len(arr) > 500 {
  234. SaveToDB(ctx, arr)
  235. arr = []g.Map{}
  236. }
  237. }
  238. if len(arr) > 0 {
  239. SaveToDB(ctx, arr)
  240. }
  241. g.Log().Info(ctx, "FlushOrder 已完成")
  242. return nil
  243. }
  244. var codeMapping = map[string]string{
  245. "结构化数据": "jghsj001",
  246. "3A信用认证": "3axyrz001",
  247. "人脉管理": "rmgl001",
  248. "阳光采购": "ygcg001",
  249. "企业商机管理": "qysjgl001",
  250. "医械通": "xyt001",
  251. "物业数字化营销": "wyszhyx001",
  252. "运营商专版": "yyszb001",
  253. "ISO体系认证": "iostxrz001",
  254. "广告": "gg001",
  255. "打赏": "ds001",
  256. "数据文件": "sjwn001",
  257. "权益码": "qym001",
  258. "标书制作": "bszz001",
  259. "线下课程培训": "xskcpx001",
  260. "课程分销": "kcfx001",
  261. "中标必听课": "zbbtk001",
  262. "数据报告": "sjbg001",
  263. }
  264. func SaveToDB(ctx context.Context, data []g.Map) error {
  265. _, err := g.DB("jianyu2").Save(ctx, "jy_order_detail", data, 100)
  266. if err != nil {
  267. g.Log().Error(ctx, "批量插入异常 %s", err.Error())
  268. return err
  269. }
  270. return nil
  271. }