main.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package main
  2. import (
  3. "context"
  4. _ "github.com/gogf/gf/contrib/drivers/mysql/v2"
  5. "github.com/gogf/gf/v2/frame/g"
  6. "github.com/gogf/gf/v2/os/gfile"
  7. "github.com/gogf/gf/v2/util/gconv"
  8. "time"
  9. "workTasks/saleFlush/util"
  10. )
  11. const orderUpdateTime = "2024-10-10 00:00:00"
  12. func main() {
  13. flushOrderSaleTime(true)
  14. //supplementFlush(true)
  15. }
  16. // flushOrderSaleTime 订单表销售业绩同步
  17. func flushOrderSaleTime(flush bool) {
  18. var (
  19. ctx = context.TODO()
  20. updateMapping = map[string]string{}
  21. start = time.Now()
  22. )
  23. res, err := g.DB().Query(ctx, `SELECT ordercode,st,sale_time FROM
  24. (SELECT ordercode,MIN(statistics_time)st FROM jianyu.order_sale_record
  25. WHERE state IN (1,-1)
  26. GROUP BY ordercode) ors
  27. LEFT JOIN
  28. (SELECT order_code,sale_time FROM jianyu.dataexport_order) dco
  29. ON ors.ordercode=dco.order_code
  30. WHERE IF(LEFT(ors.st,10)=LEFT(sale_time,10),1,0)=0`)
  31. if err != nil {
  32. panic(err)
  33. }
  34. for i, m := range res.List() {
  35. if i%1000 == 0 {
  36. g.Log().Infof(ctx, "progress %d/%d", i, res.Len())
  37. }
  38. var (
  39. orderCode = gconv.String(m["ordercode"])
  40. st = gconv.String(m["st"])
  41. )
  42. if orderCode == "" || st == "" {
  43. continue
  44. }
  45. updateMapping[orderCode] = st
  46. }
  47. g.Log().Infof(ctx, "加载完成 耗时%v秒", time.Now().Sub(start).Seconds())
  48. _ = gfile.PutContents("./update.json", gconv.String(updateMapping))
  49. if !flush {
  50. return
  51. }
  52. //更新销售时间
  53. var (
  54. total = len(updateMapping)
  55. index = 0
  56. updateTime = time.Now()
  57. )
  58. for orderCode, newTime := range updateMapping {
  59. if index%1000 == 0 {
  60. g.Log().Infof(ctx, "progress %d/%d", index, total)
  61. }
  62. _, err := g.DB().Update(ctx, "dataexport_order", map[string]interface{}{
  63. "sale_time": newTime,
  64. "autoUpdate": orderUpdateTime,
  65. }, map[string]interface{}{
  66. "order_code": orderCode,
  67. })
  68. if err != nil {
  69. g.Log().Errorf(ctx, "%s err %v", orderCode, err)
  70. }
  71. index++
  72. }
  73. g.Log().Infof(ctx, "更新完成 耗时%v秒", time.Now().Sub(updateTime).Seconds())
  74. }
  75. // supplementFlush 销售业绩补录表部门
  76. func supplementFlush(flush bool) {
  77. var (
  78. ctx = context.TODO()
  79. updateMapping = map[string]int{}
  80. start = time.Now()
  81. )
  82. res, err := g.DB().Query(ctx, "SELECT id,salesperson_id FROM supplement_sale_person")
  83. if err != nil {
  84. panic(err)
  85. }
  86. for i, m := range res.List() {
  87. if i%1000 == 0 {
  88. g.Log().Infof(ctx, "progress %d/%d", i, res.Len())
  89. }
  90. var (
  91. orderId = gconv.String(m["id"])
  92. salesperson_id = gconv.Int64(m["salesperson_id"])
  93. )
  94. if orderId == "" || salesperson_id == 0 {
  95. continue
  96. }
  97. deptId, _, _, _ := util.GetDeptInfoByAdminId(salesperson_id)
  98. if deptId > 0 {
  99. updateMapping[orderId] = deptId
  100. }
  101. }
  102. g.Log().Infof(ctx, "supplementFlush 加载完成 耗时%v秒", time.Now().Sub(start).Seconds())
  103. if !flush {
  104. return
  105. }
  106. var (
  107. total = len(updateMapping)
  108. index = 0
  109. updateTime = time.Now()
  110. )
  111. for orderId, deptId := range updateMapping {
  112. if index%1000 == 0 {
  113. g.Log().Infof(ctx, "progress %d/%d", index, total)
  114. }
  115. _, err := g.DB().Update(ctx, "supplement_sale_person", map[string]interface{}{
  116. "saleDep": deptId,
  117. }, map[string]interface{}{
  118. "id": orderId,
  119. })
  120. if err != nil {
  121. g.Log().Errorf(ctx, "%s err %v", orderId, err)
  122. }
  123. index++
  124. }
  125. g.Log().Infof(ctx, "supplementFlush 更新完成 耗时%v秒", time.Now().Sub(updateTime).Seconds())
  126. }