From 42db76c4eaf5574e2b83b057eecefcd62eaeca61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 6 Nov 2019 09:19:33 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=BB=93=E7=AE=97=E4=BB=B7?= =?UTF-8?q?=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 79 +++++++++++++++------------ business/model/dao/dao_order.go | 18 ------ controllers/jx_order.go | 4 +- 3 files changed, 45 insertions(+), 56 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 737775a91..da729ccc8 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -4,7 +4,6 @@ import ( "errors" "fmt" "math" - "strconv" "strings" "time" @@ -375,28 +374,35 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao. skuIDMap[skuID] = 1 } } + updateSingleOrderEarningPrice(order, db) + } + return nil +} - if len(skuIDMap) > 0 { - actStoreSkuList, err := dao.GetEffectiveActStoreSkuInfo(db, 0, []int{order.VendorID}, []int{jxStoreID}, jxutils.IntMap2List(skuIDMap), order.OrderCreatedAt, order.OrderCreatedAt) - if err != nil { - globals.SugarLogger.Errorf("updateOrderSkuOtherInfo can not get sku promotion info for error:%v", err) - return err - } - if actStoreSkuMap := jxutils.NewActStoreSkuMap(actStoreSkuList, false); actStoreSkuMap != nil { - for _, v := range orderSkus { - if skuID := jxutils.GetSkuIDFromOrderSku(v); skuID > 0 { - if actStoreSku := actStoreSkuMap.GetActStoreSku(jxStoreID, skuID, order.VendorID); actStoreSku != nil { - v.EarningPrice = actStoreSku.EarningPrice - if true { //v.StoreSubName != "" { // 之前这里为什么要加判断? - v.StoreSubID = actStoreSku.ActID - } +func updateSingleOrderEarningPrice(order *model.GoodsOrder, db *dao.DaoDB) { + jxStoreID := jxutils.GetShowStoreIDFromOrder(order) + skuIDMap := make(map[int]int) + for _, v := range order.Skus { + skuIDMap[v.SkuID] = 1 + } + if len(skuIDMap) > 0 { + actStoreSkuList, err := dao.GetEffectiveActStoreSkuInfo(db, 0, []int{order.VendorID}, []int{jxStoreID}, jxutils.IntMap2List(skuIDMap), order.OrderCreatedAt, order.OrderCreatedAt) + if err != nil { + globals.SugarLogger.Errorf("updateOrderSkuOtherInfo can not get sku promotion info for error:%v", err) + } + if actStoreSkuMap := jxutils.NewActStoreSkuMap(actStoreSkuList, false); actStoreSkuMap != nil { + for _, v := range order.Skus { + if skuID := jxutils.GetSkuIDFromOrderSku(v); skuID > 0 { + if actStoreSku := actStoreSkuMap.GetActStoreSku(jxStoreID, skuID, order.VendorID); actStoreSku != nil { + v.EarningPrice = actStoreSku.EarningPrice + if true { //v.StoreSubName != "" { // 之前这里为什么要加判断? + v.StoreSubID = actStoreSku.ActID } } } } } } - return nil } func (c *OrderManager) updateOrderOtherInfo(order *model.GoodsOrder, db *dao.DaoDB) (err error) { @@ -612,7 +618,7 @@ func (c *OrderManager) UpdateOrderFields(order *model.GoodsOrder, fieldList []st return err } -func RefreshHistoryOrdersEarningPrice(ctx *jxcontext.Context, fromDate string, toDate string, isAsync, isContinueWhenError bool, vendorOrderId string) (err error) { +func (c *OrderManager) RefreshHistoryOrdersEarningPrice(ctx *jxcontext.Context, fromDate string, toDate string, isAsync, isContinueWhenError bool, vendorOrderId int) (err error) { db := dao.GetDB() fromDateParm := utils.Str2Time(fromDate) toDateParm := utils.Str2Time(toDate) @@ -620,35 +626,36 @@ func RefreshHistoryOrdersEarningPrice(ctx *jxcontext.Context, fromDate string, t if math.Ceil(toDateParm.Sub(fromDateParm).Hours()/24) > 10 { return errors.New(fmt.Sprintf("查询间隔时间不允许大于10天!时间范围:[%v] 至 [%v]", fromDate, toDate)) } - orderSkus, _ := dao.GetOrdersByCreateTime(db, fromDateParm, toDateParm, vendorOrderId) - if len(orderSkus) == 0 { - return errors.New(fmt.Sprintf("未查询到订单!时间范围:[%v] 至 [%v]", fromDate, toDate)) - } + + orderList, _ := dao.QueryOrders(db, []int{vendorOrderId}, 0, fromDateParm, toDateParm) task := tasksch.NewSeqTask("按订单刷新历史订单结算价", ctx, func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { switch step { case 0: task1 := tasksch.NewParallelTask("更新order_sku", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - v := batchItemList[0].(*model.OrderSku) - storeID, _ := strconv.Atoi(utils.Int64ToStr(v.ID)) - actStoreSkuList, err := dao.GetEffectiveActStoreSkuInfo(db, 0, []int{v.VendorID}, []int{storeID}, []int{v.SkuID}, fromDateParm, toDateParm) - if err != nil { - globals.SugarLogger.Errorf("updateOrderSkuOtherInfo can not get sku promotion info for error:%v", err) - return "", err - } - if actStoreSkuMap := jxutils.NewActStoreSkuMap(actStoreSkuList, false); actStoreSkuMap != nil { - for _, value := range actStoreSkuList { - num, err := dao.UpdateOrderSkuEariningPrice(db, value, fromDateParm, toDateParm) - if err != nil && !isContinueWhenError { - return "", err - } else { - globals.SugarLogger.Debug(fmt.Sprintf("更新order_sku , 行数:%d, storeid :%d ,skuid : %d, vendoreid : %d, earningPrice : %v, store_sub_id : %d", num, value.StoreID, value.SkuID, value.VendorID, value.EarningPrice, value.ActID)) + v := batchItemList[0].(*model.GoodsOrder) + order, _ := c.loadOrder(v.VendorOrderID, "", v.VendorID) + updateSingleOrderEarningPrice(order, db) + for _, orderSku := range order.Skus { + actStoreSkuList, err := dao.GetEffectiveActStoreSkuInfo(db, 0, []int{v.VendorID}, []int{v.StoreID}, []int{orderSku.SkuID}, v.OrderCreatedAt, v.OrderCreatedAt) + if err != nil { + globals.SugarLogger.Errorf("updateOrderSkuOtherInfo can not get sku promotion info for error:%v", err) + return "", err + } + if actStoreSkuMap := jxutils.NewActStoreSkuMap(actStoreSkuList, false); actStoreSkuMap != nil { + for _, value := range actStoreSkuList { + num, err := dao.UpdateOrderSkuEariningPrice(db, value, fromDateParm, toDateParm) + if err != nil && !isContinueWhenError { + return "", err + } else { + globals.SugarLogger.Debug(fmt.Sprintf("更新order_sku , 行数:%d, storeid :%d ,skuid : %d, vendoreid : %d, earningPrice : %v, store_sub_id : %d", num, value.StoreID, value.SkuID, value.VendorID, value.EarningPrice, value.ActID)) + } } } } return retVal, err - }, orderSkus) + }, orderList) tasksch.HandleTask(task1, task, true).Run() case 1: num2, err2 := dao.UpdateGoodOrderEaringPrice(db, fromDateParm, toDateParm) diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 7ab3f68e8..f04d2ea40 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -590,24 +590,6 @@ func GetRiskOrderCount(db *DaoDB, dayNum int, includeToday bool) (storeOrderList return storeOrderList, GetRows(db, &storeOrderList, sql, sqlParams) } -func GetOrdersByCreateTime(db *DaoDB, fromDateParm, toDateParm time.Time, vendorOrderId string) (orderSkus []*model.OrderSku, err error) { - sql := ` - SELECT a.*,b.sku_id - FROM goods_order a - JOIN order_sku b ON a.vendor_order_id = b.vendor_order_id - WHERE a.order_created_at BETWEEN ? and ? - ` - sqlParams := []interface{}{ - fromDateParm, - toDateParm, - } - if vendorOrderId != "" { - sql += ` AND a.id = ?` - sqlParams = append(sqlParams, vendorOrderId) - } - return orderSkus, GetRows(db, &orderSkus, sql, sqlParams) -} - func UpdateOrderSkuEariningPrice(db *DaoDB, actStoreSku2 *model.ActStoreSku2, fromDateParm, toDateParm time.Time) (num int64, err error) { sql := ` UPDATE order_sku t1 diff --git a/controllers/jx_order.go b/controllers/jx_order.go index fcf9cf29e..5149fcc4a 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -748,13 +748,13 @@ func (c *OrderController) AmendMissingOrders() { // @Param toDate formData string true "订单结束日期" // @Param isAsync formData bool true "是否异步操作" // @Param isContinueWhenError formData bool false "单个失败是否继续,缺省true" -// @Param vendorOrderId formData string false "订单号(测试用)" +// @Param vendorOrderId formData int false "订单号(测试用)" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /RefreshHistoryOrdersEarningPrice [post] func (c *OrderController) RefreshHistoryOrdersEarningPrice() { c.callRefreshHistoryOrdersEarningPrice(func(params *tOrderRefreshHistoryOrdersEarningPriceParams) (retVal interface{}, errCode string, err error) { - err = orderman.RefreshHistoryOrdersEarningPrice(params.Ctx, params.FromDate, params.ToDate, params.IsAsync, params.IsContinueWhenError, params.VendorOrderId) + err = orderman.FixedOrderManager.RefreshHistoryOrdersEarningPrice(params.Ctx, params.FromDate, params.ToDate, params.IsAsync, params.IsContinueWhenError, params.VendorOrderId) return retVal, "", err }) }