订单结算价刷新

This commit is contained in:
苏尹岚
2019-11-06 09:19:33 +08:00
parent 5c94299f6c
commit 42db76c4ea
3 changed files with 45 additions and 56 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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
})
}