- 导出订单时(ExportOrders),将售后单的商品去除
This commit is contained in:
@@ -260,7 +260,7 @@ func (c *OrderManager) getOrders(ctx *jxcontext.Context, isIncludeSku bool, from
|
||||
t2.actual_fee, t2.desired_fee, t2.waybill_created_at, t2.waybill_finished_at`, model.DefaultEarningPricePercentage)
|
||||
if isIncludeSku {
|
||||
sql += `,
|
||||
t3.sku_id,
|
||||
IF(t3.jx_sku_id > 0, t3.jx_sku_id, t3.sku_id) sku_id,
|
||||
t3.count sku_count2,
|
||||
t3.shop_price sku_shop_price,
|
||||
t3.earning_price sku_earning_price,
|
||||
@@ -299,6 +299,9 @@ func (c *OrderManager) getOrders(ctx *jxcontext.Context, isIncludeSku bool, from
|
||||
if err = err2; err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
if utils.IsTimeZero(fromDate) {
|
||||
return nil, 0, fmt.Errorf("在没有指定订单号时,必须指定查询日期范围")
|
||||
}
|
||||
if toDateStr == "" {
|
||||
toDateStr = fromDateStr
|
||||
}
|
||||
@@ -437,6 +440,7 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS
|
||||
var (
|
||||
orders, orders2 []*model.GoodsOrderExt
|
||||
order *model.GoodsOrderExt
|
||||
afsSkuMap map[string]map[int]*model.OrderSkuFinancial
|
||||
excelBin []byte
|
||||
)
|
||||
task := tasksch.NewSeqTask("导出订单SKU信息", ctx,
|
||||
@@ -445,25 +449,39 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS
|
||||
case 0:
|
||||
orders, _, err = c.getOrders(ctx, true, fromDateStr, toDateStr, mapParams, 0, -1)
|
||||
case 1:
|
||||
afsSkuMap, err = c.getAfsOrderSkuInfo4ExportOrders(ctx, fromDateStr, toDateStr)
|
||||
case 2:
|
||||
for _, v := range orders {
|
||||
skuStr := strings.Join([]string{
|
||||
utils.Int2Str(v.SkuID),
|
||||
utils.Int2Str(v.SkuCount2),
|
||||
utils.Int2Str(v.SkuShopPrice),
|
||||
utils.Int2Str(v.SkuSalePrice),
|
||||
utils.Int2Str(v.SkuEarningPrice),
|
||||
}, ",")
|
||||
if order == nil || v.ID != order.ID {
|
||||
order = v
|
||||
v.CourierVendorName = model.VendorChineseNames[v.WaybillVendorID]
|
||||
v.Status2 = model.OrderStatusName[v.Status]
|
||||
v.SkuInfo = skuStr
|
||||
orders2 = append(orders2, v)
|
||||
} else {
|
||||
order.SkuInfo += ";" + skuStr
|
||||
if afsInfo := afsSkuMap[jxutils.ComposeUniversalOrderID(v.VendorOrderID, v.VendorID)]; afsInfo != nil {
|
||||
if afsInfo[v.SkuID] != nil && afsInfo[v.SkuID].Count > 0 {
|
||||
minus := afsInfo[v.SkuID].Count
|
||||
if minus > v.SkuCount2 {
|
||||
minus = v.SkuCount2
|
||||
}
|
||||
v.SkuCount2 -= minus
|
||||
afsInfo[v.SkuID].Count -= minus
|
||||
}
|
||||
}
|
||||
if v.SkuCount2 > 0 {
|
||||
skuStr := strings.Join([]string{
|
||||
utils.Int2Str(v.SkuID),
|
||||
utils.Int2Str(v.SkuCount2),
|
||||
utils.Int2Str(v.SkuShopPrice),
|
||||
utils.Int2Str(v.SkuSalePrice),
|
||||
utils.Int2Str(v.SkuEarningPrice),
|
||||
}, ",")
|
||||
if order == nil || v.ID != order.ID {
|
||||
order = v
|
||||
v.CourierVendorName = model.VendorChineseNames[v.WaybillVendorID]
|
||||
v.Status2 = model.OrderStatusName[v.Status]
|
||||
v.SkuInfo = skuStr
|
||||
orders2 = append(orders2, v)
|
||||
} else {
|
||||
order.SkuInfo += ";" + skuStr
|
||||
}
|
||||
}
|
||||
}
|
||||
case 2:
|
||||
case 3:
|
||||
excelConf := &excel.Obj2ExcelSheetConfig{
|
||||
Title: "订单导出",
|
||||
Data: orders2,
|
||||
@@ -503,7 +521,7 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS
|
||||
},
|
||||
}
|
||||
excelBin = excel.Obj2Excel([]*excel.Obj2ExcelSheetConfig{excelConf})
|
||||
case 3:
|
||||
case 4:
|
||||
keyPart := []string{
|
||||
ctx.GetUserName(),
|
||||
}
|
||||
@@ -522,7 +540,7 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS
|
||||
globals.SugarLogger.Debugf("导出订单SKU信息excelURL:%s, err:%v", excelURL, err)
|
||||
}
|
||||
return nil, err
|
||||
}, 4)
|
||||
}, 5)
|
||||
tasksch.ManageTask(task).Run()
|
||||
hint = task.GetID()
|
||||
return hint, err
|
||||
@@ -881,6 +899,53 @@ func (c *OrderManager) GetAfsOrderSkuInfo(ctx *jxcontext.Context, afsOrderID str
|
||||
return skus, err
|
||||
}
|
||||
|
||||
func (c *OrderManager) getAfsOrderSkuInfo4ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateStr string) (skuMap map[string]map[int]*model.OrderSkuFinancial, err error) {
|
||||
fromDate, err2 := utils.TryStr2Time(fromDateStr)
|
||||
if err = err2; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if utils.IsTimeZero(fromDate) {
|
||||
return nil, fmt.Errorf("在没有指定订单号时,必须指定查询日期范围")
|
||||
}
|
||||
if toDateStr == "" {
|
||||
toDateStr = fromDateStr
|
||||
}
|
||||
toDate, err2 := utils.TryStr2Time(toDateStr)
|
||||
if err = err2; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
toDate = toDate.Add(7 * 24 * time.Hour) // todo 售后单最多只可能延后7天吧
|
||||
sql := `
|
||||
SELECT t2.*
|
||||
FROM afs_order t1
|
||||
JOIN order_sku_financial t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id AND t2.is_afs_order = 1
|
||||
WHERE t1.afs_created_at >= ? AND t1.afs_created_at <= ? AND t1.status = ?
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
fromDate,
|
||||
toDate,
|
||||
model.AfsOrderStatusFinished,
|
||||
}
|
||||
var skus []*model.OrderSkuFinancial
|
||||
if err = dao.GetRows(dao.GetDB(), &skus, sql, sqlParams...); err == nil {
|
||||
skuMap = make(map[string]map[int]*model.OrderSkuFinancial)
|
||||
for _, v := range skus {
|
||||
key := jxutils.ComposeUniversalOrderID(v.VendorOrderID, v.VendorID)
|
||||
if skuMap[key] == nil {
|
||||
skuMap[key] = make(map[int]*model.OrderSkuFinancial)
|
||||
}
|
||||
if skuID := jxutils.GetSkuIDFromOrderSkuFinancial(v); skuID > 0 {
|
||||
if skuMap[key][skuID] == nil {
|
||||
skuMap[key][skuID] = v
|
||||
} else {
|
||||
skuMap[key][skuID].Count += v.Count
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return skuMap, err
|
||||
}
|
||||
|
||||
func (c *OrderManager) GetStoreAfsOrderCountInfo(ctx *jxcontext.Context, storeID, lastHours int) (countInfo []*model.GoodsOrderCountInfo, err error) {
|
||||
globals.SugarLogger.Debugf("GetStoreAfsOrderCountInfo storeID:%d", storeID)
|
||||
if lastHours > maxLastHours {
|
||||
|
||||
@@ -113,6 +113,13 @@ func GetSaleStoreIDFromAfsOrder(order *model.AfsOrder) (retVal int) {
|
||||
return order.StoreID
|
||||
}
|
||||
|
||||
func GetSkuIDFromOrderSkuFinancial(sku *model.OrderSkuFinancial) (skuID int) {
|
||||
if sku.JxSkuID > 0 {
|
||||
return sku.JxSkuID
|
||||
}
|
||||
return sku.SkuID
|
||||
}
|
||||
|
||||
func SplitUniversalOrderID(universalOrderID string) (orderID string, vendorID int) {
|
||||
index := strings.Index(universalOrderID, "|")
|
||||
if index != -1 {
|
||||
|
||||
Reference in New Issue
Block a user