刷新订单历史结算价修改
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -611,32 +612,43 @@ func (c *OrderManager) UpdateOrderFields(order *model.GoodsOrder, fieldList []st
|
||||
return err
|
||||
}
|
||||
|
||||
func RefreshHistoryOrdersEarningPrice(ctx *jxcontext.Context, fromDate string, toDate string, isAsync, isContinueWhenError bool) (err error) {
|
||||
func RefreshHistoryOrdersEarningPrice(ctx *jxcontext.Context, fromDate string, toDate string, isAsync, isContinueWhenError bool, vendorOrderId string) (err error) {
|
||||
db := dao.GetDB()
|
||||
fromDateParm := utils.Str2Time(fromDate)
|
||||
toDateParm := utils.Str2Time(toDate)
|
||||
//若时间间隔大于10天则不允许查询
|
||||
if math.Ceil(toDateParm.Sub(fromDateParm).Hours()/24) > 10 {
|
||||
return errors.New(fmt.Sprintf("查询间隔时间不允许大于10天!: 时间范围:[%v] 至 [%v]", fromDate, toDate))
|
||||
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))
|
||||
}
|
||||
actStoreSkuList, err := dao.GetEffectiveActStoreSkuInfo(db, 0, []int{}, []int{}, []int{}, 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 {
|
||||
v := batchItemList[0].(*model.ActStoreSku2)
|
||||
num, err := dao.UpdateOrderSkuEariningPrice(db, v, 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, v.StoreID, v.SkuID, v.VendorID, v.EarningPrice, v.ActID))
|
||||
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
|
||||
}, actStoreSkuList)
|
||||
}, orderSkus)
|
||||
tasksch.HandleTask(task1, task, true).Run()
|
||||
case 1:
|
||||
num2, err2 := dao.UpdateGoodOrderEaringPrice(db, fromDateParm, toDateParm)
|
||||
|
||||
@@ -590,6 +590,26 @@ 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 ?
|
||||
AND b.earning_price <> 0
|
||||
AND b.store_sub_id = 0
|
||||
`
|
||||
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
|
||||
|
||||
@@ -748,12 +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 "订单号(测试用)"
|
||||
// @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)
|
||||
err = orderman.RefreshHistoryOrdersEarningPrice(params.Ctx, params.FromDate, params.ToDate, params.IsAsync, params.IsContinueWhenError, params.VendorOrderId)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user