刷新历史订单结算价
This commit is contained in:
@@ -622,15 +622,14 @@ func (c *OrderManager) RefreshHistoryOrdersEarningPrice(ctx *jxcontext.Context,
|
|||||||
return "", errors.New(fmt.Sprintf("查询间隔时间不允许大于10天!时间范围:[%v] 至 [%v]", fromDate, toDate))
|
return "", errors.New(fmt.Sprintf("查询间隔时间不允许大于10天!时间范围:[%v] 至 [%v]", fromDate, toDate))
|
||||||
}
|
}
|
||||||
// orderList, _ := dao.QueryOrders(db, vendorOrderID, vendorIDs, storeID, fromDateParam, toDateParam)
|
// orderList, _ := dao.QueryOrders(db, vendorOrderID, vendorIDs, storeID, fromDateParam, toDateParam)
|
||||||
orderList, _ := dao.QueryOrdersFilterByAct(db, vendorOrderID, actIDs, vendorIDs, storeID, fromDateParam, toDateParam)
|
orderList, _ := dao.QueryOrders(db, vendorOrderID, actIDs, vendorIDs, storeID, fromDateParam, toDateParam)
|
||||||
if len(orderList) <= 0 {
|
if len(orderList) <= 0 {
|
||||||
return "", errors.New(fmt.Sprintf("未查询到订单!,vendorOrderID : %s, 时间范围:[%v] 至 [%v]", vendorOrderID, fromDate, toDate))
|
return "", errors.New(fmt.Sprintf("未查询到订单!,vendorOrderID : %s, 时间范围:[%v] 至 [%v]", vendorOrderID, fromDate, toDate))
|
||||||
}
|
}
|
||||||
task := tasksch.NewParallelTask("刷新历史订单结算价", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
task := tasksch.NewParallelTask("刷新历史订单结算价", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
v := batchItemList[0].(*model.GoodsOrder)
|
order := batchItemList[0].(*model.GoodsOrder)
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
order, _ := c.loadOrder(v.VendorOrderID, "", v.VendorID)
|
|
||||||
updateSingleOrderEarningPrice(order, db)
|
updateSingleOrderEarningPrice(order, db)
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
|
|||||||
@@ -1169,7 +1169,7 @@ func (c *OrderManager) AmendMissingOrders(ctx *jxcontext.Context, vendorIDs []in
|
|||||||
if err = err2; err != nil && !isContinueWhenError {
|
if err = err2; err != nil && !isContinueWhenError {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
localOrders, err2 := dao.QueryOrders(db, "", vendorIDs, storeID, fromDate, toDate.Add(24*time.Hour-time.Second))
|
localOrders, err2 := dao.QueryOrders(db, "", []int{}, vendorIDs, storeID, fromDate, toDate.Add(24*time.Hour-time.Second))
|
||||||
if err = err2; err != nil {
|
if err = err2; err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,34 +36,132 @@ type OrderSkuWithActualPayPrice struct {
|
|||||||
PayPercentage int `json:"payPercentage"`
|
PayPercentage int `json:"payPercentage"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func QueryOrders(db *DaoDB, vendorOrderID string, vendorIDs []int, storeID int, orderCreatedAtBegin, orderCreatedAtEnd time.Time) (orderList []*model.GoodsOrder, err error) {
|
type tGoodsAndOrder struct {
|
||||||
|
model.GoodsOrder
|
||||||
|
OrderSkuID int64 `orm:"column(order_sku_id)" json:"id"`
|
||||||
|
StoreSubID int `orm:"column(store_sub_id)" json:"storeSubID"` // 当前这个字段被当成结算活动ID用
|
||||||
|
StoreSubName string `orm:"size(64)" json:"storeSubName"` // 当前这个字段被用作vendorActType
|
||||||
|
Count int `json:"count"`
|
||||||
|
VendorSkuID string `orm:"column(vendor_sku_id);size(48)" json:"vendorSkuID"`
|
||||||
|
SkuID int `orm:"column(sku_id)" json:"skuID"` // 外部系统里记录的 jxskuid
|
||||||
|
JxSkuID int `orm:"column(jx_sku_id)" json:"jxSkuID"` // 根据VendorSkuID在本地系统里查询出来的 jxskuid
|
||||||
|
SkuName string `orm:"size(255)" json:"skuName"`
|
||||||
|
SkuShopPrice int64 `json:"shopPrice"` // 京西价
|
||||||
|
SkuVendorPrice int64 `json:"vendorPrice"` // 平台价
|
||||||
|
SkuSalePrice int64 `json:"salePrice"` // 售卖价
|
||||||
|
SkuEarningPrice int64 `json:"earningPrice"` // 活动商品设置,结算给门店老板的钱,如果结算活动ID为0,是按结算比例算的,否则就是结算表中的值
|
||||||
|
Weight int `json:"weight"` // 单位为克
|
||||||
|
SkuType int `json:"skuType"` // 当前如果为gift就为1,否则缺省为0
|
||||||
|
PromotionType int `json:"promotionType"` // todo 当前是用于记录京东的PromotionType(生成jxorder用),没有做转换
|
||||||
|
}
|
||||||
|
|
||||||
|
func QueryOrders(db *DaoDB, vendorOrderID string, actIDs, vendorIDs []int, storeID int, fromDate, toDate time.Time) (orderList []*model.GoodsOrder, err error) {
|
||||||
|
sqlParams := []interface{}{}
|
||||||
|
var (
|
||||||
|
orderNewList []*tGoodsAndOrder
|
||||||
|
orderNewMap map[string][]*model.OrderSku
|
||||||
|
)
|
||||||
sql := `
|
sql := `
|
||||||
SELECT t1.*
|
SELECT a.*,b.id order_sku_id, b.store_sub_id, b.store_sub_name, b.count, b.vendor_sku_id, b.sku_id, b.jx_sku_id, b.sku_name, b.shop_price sku_shop_price, b.vendor_price sku_vendor_price, b.sale_price sku_sale_price, b.earning_price sku_earning_price, b.weight, b.sku_type, b.promotion_type
|
||||||
FROM goods_order t1
|
FROM goods_order a
|
||||||
WHERE t1.order_created_at >= ?`
|
JOIN order_sku b ON a.vendor_order_id = b.vendor_order_id
|
||||||
sqlParams := []interface{}{
|
`
|
||||||
orderCreatedAtBegin,
|
if len(actIDs) > 0 {
|
||||||
|
sql += `
|
||||||
|
JOIN (SELECT t1.begin_at,t1.end_at, t2.act_id,t2.store_id, t2.sku_id
|
||||||
|
FROM act t1
|
||||||
|
JOIN act_store_sku t2 ON t2.act_id = t1.id
|
||||||
|
WHERE t1.status = 1
|
||||||
|
AND t1.id IN (` + GenQuestionMarks(len(actIDs)) + `)
|
||||||
|
)s
|
||||||
|
ON s.store_id = a.store_id
|
||||||
|
AND s.sku_id = b.sku_id
|
||||||
|
AND a.order_created_at BETWEEN s.begin_at AND s.end_at
|
||||||
|
`
|
||||||
|
sqlParams = append(sqlParams, actIDs)
|
||||||
}
|
}
|
||||||
|
sql += `
|
||||||
|
WHERE 1=1
|
||||||
|
`
|
||||||
if vendorOrderID != "" {
|
if vendorOrderID != "" {
|
||||||
sql += " AND t1.vendor_order_id = ?"
|
sql += " AND a.vendor_order_id = ?"
|
||||||
sqlParams = append(sqlParams, vendorOrderID)
|
sqlParams = append(sqlParams, vendorOrderID)
|
||||||
}
|
}
|
||||||
if len(vendorIDs) > 0 {
|
if len(vendorIDs) > 0 {
|
||||||
sql += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
sql += " AND a.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
||||||
sqlParams = append(sqlParams, vendorIDs)
|
sqlParams = append(sqlParams, vendorIDs)
|
||||||
}
|
}
|
||||||
if storeID > 0 {
|
if storeID > 0 {
|
||||||
sql += " AND IF(t1.jx_store_id <> 0, t1.jx_store_id, t1.store_id) = ?"
|
sql += " AND IF(a.jx_store_id <> 0, a.jx_store_id, a.store_id) = ?"
|
||||||
sqlParams = append(sqlParams, storeID)
|
sqlParams = append(sqlParams, storeID)
|
||||||
}
|
}
|
||||||
if !utils.IsTimeZero(orderCreatedAtEnd) {
|
if !utils.IsTimeZero(fromDate) && !utils.IsTimeZero(toDate) {
|
||||||
sql += " AND t1.order_created_at <= ?"
|
sql += " AND a.order_created_at BETWEEN ? and ?"
|
||||||
sqlParams = append(sqlParams, orderCreatedAtEnd)
|
sqlParams = append(sqlParams, fromDate, toDate)
|
||||||
}
|
}
|
||||||
// sql += " ORDER BY t1.order_created_at DESC, t1.id DESC;"
|
err = GetRows(db, &orderNewList, sql, sqlParams...)
|
||||||
return orderList, GetRows(db, &orderList, sql, sqlParams...)
|
if len(orderNewList) > 0 {
|
||||||
|
orderNewMap = make(map[string][]*model.OrderSku)
|
||||||
|
for _, v := range orderNewList {
|
||||||
|
if orderNewMap[v.VendorOrderID] == nil {
|
||||||
|
orderList = append(orderList, &v.GoodsOrder)
|
||||||
|
}
|
||||||
|
orderNewMap[v.VendorOrderID] = append(orderNewMap[v.VendorOrderID], &model.OrderSku{
|
||||||
|
ID: v.OrderSkuID,
|
||||||
|
VendorOrderID: v.VendorOrderID,
|
||||||
|
VendorID: v.VendorID,
|
||||||
|
StoreSubID: v.StoreSubID,
|
||||||
|
StoreSubName: v.StoreSubName,
|
||||||
|
Count: v.Count,
|
||||||
|
VendorSkuID: v.VendorSkuID,
|
||||||
|
SkuID: v.SkuID,
|
||||||
|
JxSkuID: v.JxSkuID,
|
||||||
|
SkuName: v.SkuName,
|
||||||
|
ShopPrice: v.SkuShopPrice,
|
||||||
|
VendorPrice: v.SkuVendorPrice,
|
||||||
|
SalePrice: v.SkuSalePrice,
|
||||||
|
EarningPrice: v.SkuEarningPrice,
|
||||||
|
Weight: v.Weight,
|
||||||
|
SkuType: v.SkuType,
|
||||||
|
PromotionType: v.PromotionType,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
for _, v := range orderList {
|
||||||
|
v.Skus = orderNewMap[v.VendorOrderID]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return orderList, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// func QueryOrders(db *DaoDB, vendorOrderID string, vendorIDs []int, storeID int, orderCreatedAtBegin, orderCreatedAtEnd time.Time) (orderList []*model.GoodsOrder, err error) {
|
||||||
|
// sql := `
|
||||||
|
// SELECT t1.*
|
||||||
|
// FROM goods_order t1
|
||||||
|
// WHERE t1.order_created_at >= ?`
|
||||||
|
// sqlParams := []interface{}{
|
||||||
|
// orderCreatedAtBegin,
|
||||||
|
// }
|
||||||
|
// if vendorOrderID != "" {
|
||||||
|
// sql += " AND t1.vendor_order_id = ?"
|
||||||
|
// sqlParams = append(sqlParams, vendorOrderID)
|
||||||
|
// }
|
||||||
|
// if len(vendorIDs) > 0 {
|
||||||
|
// sql += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
||||||
|
// sqlParams = append(sqlParams, vendorIDs)
|
||||||
|
// }
|
||||||
|
// if storeID > 0 {
|
||||||
|
// sql += " AND IF(t1.jx_store_id <> 0, t1.jx_store_id, t1.store_id) = ?"
|
||||||
|
// sqlParams = append(sqlParams, storeID)
|
||||||
|
// }
|
||||||
|
// if !utils.IsTimeZero(orderCreatedAtEnd) {
|
||||||
|
// sql += " AND t1.order_created_at <= ?"
|
||||||
|
// sqlParams = append(sqlParams, orderCreatedAtEnd)
|
||||||
|
// }
|
||||||
|
// // sql += " ORDER BY t1.order_created_at DESC, t1.id DESC;"
|
||||||
|
// return orderList, GetRows(db, &orderList, sql, sqlParams...)
|
||||||
|
// }
|
||||||
|
|
||||||
func GetStoreOrderAfterTime(db *DaoDB, storeID int, orderTime time.Time, lastOrderSeqID int64) (orderList []*model.GoodsOrderExt, err error) {
|
func GetStoreOrderAfterTime(db *DaoDB, storeID int, orderTime time.Time, lastOrderSeqID int64) (orderList []*model.GoodsOrderExt, err error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT t1.*,
|
SELECT t1.*,
|
||||||
@@ -593,47 +691,3 @@ func GetRiskOrderCount(db *DaoDB, dayNum int, includeToday bool) (storeOrderList
|
|||||||
|
|
||||||
return storeOrderList, GetRows(db, &storeOrderList, sql, sqlParams)
|
return storeOrderList, GetRows(db, &storeOrderList, sql, sqlParams)
|
||||||
}
|
}
|
||||||
|
|
||||||
func QueryOrdersFilterByAct(db *DaoDB, vendorOrderID string, actIDs, vendorIDs []int, storeID int, fromDate, toDate time.Time) (orderList []*model.GoodsOrder, err error) {
|
|
||||||
sql := `
|
|
||||||
SELECT a.vendor_order_id, a.vendor_id
|
|
||||||
FROM goods_order a
|
|
||||||
JOIN order_sku b ON a.vendor_order_id = b.vendor_order_id
|
|
||||||
JOIN (SELECT t1.begin_at,t1.end_at, t2.act_id,t2.store_id, t2.sku_id
|
|
||||||
FROM act t1
|
|
||||||
JOIN act_store_sku t2 ON t2.act_id = t1.id
|
|
||||||
WHERE t1.status = 1
|
|
||||||
`
|
|
||||||
sqlParams := []interface{}{}
|
|
||||||
if len(actIDs) > 0 {
|
|
||||||
sql += " AND t1.id IN (" + GenQuestionMarks(len(actIDs)) + ")"
|
|
||||||
sqlParams = append(sqlParams, actIDs)
|
|
||||||
}
|
|
||||||
sql += `
|
|
||||||
)s
|
|
||||||
ON s.store_id = a.store_id
|
|
||||||
AND s.sku_id = b.sku_id
|
|
||||||
AND a.order_created_at BETWEEN s.begin_at AND s.end_at
|
|
||||||
WHERE 1=1
|
|
||||||
`
|
|
||||||
if vendorOrderID != "" {
|
|
||||||
sql += " AND a.vendor_order_id = ?"
|
|
||||||
sqlParams = append(sqlParams, vendorOrderID)
|
|
||||||
}
|
|
||||||
if len(vendorIDs) > 0 {
|
|
||||||
sql += " AND a.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
|
|
||||||
sqlParams = append(sqlParams, vendorIDs)
|
|
||||||
}
|
|
||||||
if storeID > 0 {
|
|
||||||
sql += " AND IF(a.jx_store_id <> 0, a.jx_store_id, a.store_id) = ?"
|
|
||||||
sqlParams = append(sqlParams, storeID)
|
|
||||||
}
|
|
||||||
if !utils.IsTimeZero(fromDate) && !utils.IsTimeZero(toDate) {
|
|
||||||
sql += " AND a.order_created_at BETWEEN ? and ?"
|
|
||||||
sqlParams = append(sqlParams, fromDate, toDate)
|
|
||||||
}
|
|
||||||
sql += `
|
|
||||||
GROUP BY 1,2
|
|
||||||
`
|
|
||||||
return orderList, GetRows(db, &orderList, sql, sqlParams...)
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user