123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- package main
- import (
- "context"
- _ "github.com/gogf/gf/contrib/drivers/mysql/v2"
- "github.com/gogf/gf/v2/frame/g"
- "github.com/gogf/gf/v2/os/gfile"
- "github.com/gogf/gf/v2/util/gconv"
- "time"
- "workTasks/saleFlush/util"
- )
- const orderUpdateTime = "2024-10-10 00:00:00"
- func main() {
- flushOrderSaleTime(true)
- //supplementFlush(true)
- }
- // flushOrderSaleTime 订单表销售业绩同步
- func flushOrderSaleTime(flush bool) {
- var (
- ctx = context.TODO()
- updateMapping = map[string]string{}
- start = time.Now()
- )
- res, err := g.DB().Query(ctx, `SELECT ordercode,st,sale_time FROM
- (SELECT ordercode,MIN(statistics_time)st FROM jianyu.order_sale_record
- WHERE state IN (1,-1)
- GROUP BY ordercode) ors
- LEFT JOIN
- (SELECT order_code,sale_time FROM jianyu.dataexport_order) dco
- ON ors.ordercode=dco.order_code
- WHERE IF(LEFT(ors.st,10)=LEFT(sale_time,10),1,0)=0`)
- if err != nil {
- panic(err)
- }
- for i, m := range res.List() {
- if i%1000 == 0 {
- g.Log().Infof(ctx, "progress %d/%d", i, res.Len())
- }
- var (
- orderCode = gconv.String(m["ordercode"])
- st = gconv.String(m["st"])
- )
- if orderCode == "" || st == "" {
- continue
- }
- updateMapping[orderCode] = st
- }
- g.Log().Infof(ctx, "加载完成 耗时%v秒", time.Now().Sub(start).Seconds())
- _ = gfile.PutContents("./update.json", gconv.String(updateMapping))
- if !flush {
- return
- }
- //更新销售时间
- var (
- total = len(updateMapping)
- index = 0
- updateTime = time.Now()
- )
- for orderCode, newTime := range updateMapping {
- if index%1000 == 0 {
- g.Log().Infof(ctx, "progress %d/%d", index, total)
- }
- _, err := g.DB().Update(ctx, "dataexport_order", map[string]interface{}{
- "sale_time": newTime,
- "autoUpdate": orderUpdateTime,
- }, map[string]interface{}{
- "order_code": orderCode,
- })
- if err != nil {
- g.Log().Errorf(ctx, "%s err %v", orderCode, err)
- }
- index++
- }
- g.Log().Infof(ctx, "更新完成 耗时%v秒", time.Now().Sub(updateTime).Seconds())
- }
- // supplementFlush 销售业绩补录表部门
- func supplementFlush(flush bool) {
- var (
- ctx = context.TODO()
- updateMapping = map[string]int{}
- start = time.Now()
- )
- res, err := g.DB().Query(ctx, "SELECT id,salesperson_id FROM supplement_sale_person")
- if err != nil {
- panic(err)
- }
- for i, m := range res.List() {
- if i%1000 == 0 {
- g.Log().Infof(ctx, "progress %d/%d", i, res.Len())
- }
- var (
- orderId = gconv.String(m["id"])
- salesperson_id = gconv.Int64(m["salesperson_id"])
- )
- if orderId == "" || salesperson_id == 0 {
- continue
- }
- deptId, _, _, _ := util.GetDeptInfoByAdminId(salesperson_id)
- if deptId > 0 {
- updateMapping[orderId] = deptId
- }
- }
- g.Log().Infof(ctx, "supplementFlush 加载完成 耗时%v秒", time.Now().Sub(start).Seconds())
- if !flush {
- return
- }
- var (
- total = len(updateMapping)
- index = 0
- updateTime = time.Now()
- )
- for orderId, deptId := range updateMapping {
- if index%1000 == 0 {
- g.Log().Infof(ctx, "progress %d/%d", index, total)
- }
- _, err := g.DB().Update(ctx, "supplement_sale_person", map[string]interface{}{
- "saleDep": deptId,
- }, map[string]interface{}{
- "id": orderId,
- })
- if err != nil {
- g.Log().Errorf(ctx, "%s err %v", orderId, err)
- }
- index++
- }
- g.Log().Infof(ctx, "supplementFlush 更新完成 耗时%v秒", time.Now().Sub(updateTime).Seconds())
- }
|