This commit is contained in:
邹宗楠
2025-02-06 16:55:28 +08:00
parent 5f268e3746
commit 70e6ba71a0
6 changed files with 73 additions and 57 deletions

View File

@@ -144,6 +144,7 @@ func (c *OrderManager) GetOrderSkuInfo(ctx *jxcontext.Context, vendorOrderID str
t3.img4 image4,
t3.img5 image5,
t3.desc_img descImg,
t3.price price,
t3.upc
FROM order_sku t1
LEFT JOIN goods_order t6 ON t6.vendor_order_id = t1.vendor_order_id AND t6.vendor_id = t1.vendor_id
@@ -354,36 +355,71 @@ func (c *OrderManager) GetOrders(ctx *jxcontext.Context, isIncludeFake bool, fro
task := tasksch.NewParallelTask("RefreshOrderFinancial", tasksch.NewParallelConfig().SetIsContinueWhenError(true), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
order := batchItemList[0].(*model.GoodsOrderExt)
var afsOrder *AfsOrderExt
sql := `
SELECT t1.afs_total_shop_money, t2.shop_price
FROM afs_order t1
LEFT JOIN (
SELECT a.afs_order_id, SUM(a.shop_price*a.count) shop_price
FROM order_sku_financial a
LEFT JOIN (
SELECT MAX(created_at), afs_order_id
FROM afs_order
WHERE status = ?
AND vendor_order_id = ?
GROUP BY 2
) b ON a.afs_order_id = b.afs_order_id
WHERE a.afs_order_id = b.afs_order_id AND a.is_afs_order = ?
GROUP BY 1) t2 ON t1.afs_order_id = t2.afs_order_id
WHERE t1.afs_order_id = t2.afs_order_id
`
sqlParams := []interface{}{model.AfsOrderStatusFinished, order.VendorOrderID,
model.YES}
if err = dao.GetRow(db, &afsOrder, sql, sqlParams); err == nil && afsOrder != nil {
if afsOrder.AfsTotalShopMoney != 0 && afsOrder.AfsTotalShopMoney != order.TotalShopMoney {
//报价,要减去商品的京西价
if order.EarningType == model.EarningTypeQuote {
order.JxIncome = afsOrder.AfsTotalShopMoney - order.EarningPrice - order.DesiredFee + (afsOrder.ShopPrice * int64(order.OrderPayPercentage) / int64(100))
} else {
order.JxIncome = afsOrder.AfsTotalShopMoney * int64(order.OrderPayPercentage/2) / 100
switch beego.BConfig.RunMode {
case model.ServerTypeFruits, model.ServerTypeVegetable:
var afsOrder *AfsOrderExt
sql := `
SELECT t1.afs_total_shop_money, t2.shop_price
FROM afs_order t1
LEFT JOIN (
SELECT a.afs_order_id, SUM(a.shop_price*a.count) shop_price
FROM order_sku_financial a
LEFT JOIN (
SELECT MAX(created_at), afs_order_id
FROM afs_order
WHERE status = ?
AND vendor_order_id = ?
GROUP BY 2
) b ON a.afs_order_id = b.afs_order_id
WHERE a.afs_order_id = b.afs_order_id AND a.is_afs_order = ?
GROUP BY 1) t2 ON t1.afs_order_id = t2.afs_order_id
WHERE t1.afs_order_id = t2.afs_order_id
`
sqlParams := []interface{}{model.AfsOrderStatusFinished, order.VendorOrderID, model.YES}
if err = dao.GetRow(db, &afsOrder, sql, sqlParams); err == nil && afsOrder != nil {
if afsOrder.AfsTotalShopMoney != 0 && afsOrder.AfsTotalShopMoney != order.TotalShopMoney {
//报价,要减去商品的京西价
if order.EarningType == model.EarningTypeQuote {
order.JxIncome = afsOrder.AfsTotalShopMoney - order.EarningPrice - order.DesiredFee + (afsOrder.ShopPrice * int64(order.OrderPayPercentage) / int64(100))
} else {
order.JxIncome = afsOrder.AfsTotalShopMoney * int64(order.OrderPayPercentage/2) / 100
}
}
}
case model.ServerTypePet:
afsSkuIDList := make([]int, 0, 0)
skuFinancial, _ := dao.GetStoreAfsOrderSkuList(db, []int{order.JxStoreID}, []int{model.AfsOrderStatusFinished, model.AfsOrderStatusNew})
if len(skuFinancial) != model.NO {
for _, v := range skuFinancial {
afsSkuIDList = append(afsSkuIDList, v.JxSkuID)
}
}
sql := `
SELECT sum(o.sale_price*o.count) - sum(n.price*o.count ) inCome
FROM order_sku o
INNER JOIN sku s on s.id = o.sku_id
INNER JOIN sku_name n ON n.id = s.name_id
WHERE o.vendor_order_id = ? `
incomeParam := []interface{}{order.VendorOrderID}
if len(afsSkuIDList) != model.NO {
sql += `AND o.sku_id NOT IN (
SELECT t1.sku_id
FROM order_sku_financial t1
JOIN afs_order t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id AND t2.afs_order_id = t1.afs_order_id
WHERE t2.vendor_order_id = ? AND IF(t2.jx_store_id > 0, t2.jx_store_id, t2.store_id) = ? AND t1.is_afs_order = 1 AND t2.status IN (` + dao.GenQuestionMarks(2) + `)
)`
incomeParam = append(incomeParam, order.VendorOrderID, order.JxStoreID, model.AfsOrderStatusFinished, model.AfsOrderStatusNew)
}
// 百货收益算法
var baiHuo = &struct {
Income int64 `json:"income"`
}{}
if err = dao.GetRow(db, baiHuo, sql, incomeParam); err == nil {
order.JxIncome = baiHuo.Income
}
}
// 统计订单的违约金
var damages = &struct {
Damages int64 `json:"damages"`