- 对于美团外卖,同一订单的售后单处理都会删除之前的

This commit is contained in:
gazebo
2019-05-30 09:20:38 +08:00
parent 2874938f83
commit f06a966c7f
2 changed files with 13 additions and 15 deletions

View File

@@ -21,8 +21,6 @@ type tStoreSkuBindAndVendorSkuID struct {
SkuID int `orm:"column(sku_id)"`
Weight int
Price int
JoinID int `orm:"column(join_id)"`
}
func init() {
@@ -475,7 +473,7 @@ func (c *OrderManager) loadOrderFinancial(vendorOrderID, vendorOrderID2 string,
if err = db.Read(order, keyFields...); err == nil {
vendorOrderID = order.VendorOrderID
err = utils.CallFuncLogError(func() error {
_, err = db.QueryTable("order_sku_financial").Filter("vendor_order_id", vendorOrderID).Filter("vendor_id", vendorID).All(&order.Skus)
_, err = db.QueryTable("order_sku_financial").Filter("vendor_order_id", vendorOrderID).Filter("vendor_id", vendorID).Filter("is_afs_order", 0).All(&order.Skus)
return err
}, "LoadOrder orderID:%s", vendorOrderID)
}

View File

@@ -78,6 +78,10 @@ func (c *OrderManager) onAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *mode
return err
}
} else {
// 外退都要先全删除再建
if afsOrder.RefundType == model.AfsTypeFullRefund {
isAdjust = true
}
if err = c.SaveAfsOrder(db, afsOrder, isAdjust); err != nil {
return err
}
@@ -106,7 +110,7 @@ func (c *OrderManager) SaveAfsOrder(db *dao.DaoDB, afsOrder *model.AfsOrder, isD
}()
if isDeleteFirst {
err = utils.CallFuncLogError(func() error {
_, err = dao.DeleteEntity(db, afsOrder, "AfsOrderID")
_, err = dao.DeleteEntity(db, afsOrder, "VendorOrderID", "VendorID")
return err
}, "SaveAfsOrder delete AfsOrder, afsOrderID:%s", afsOrder.AfsOrderID)
if err != nil {
@@ -114,8 +118,10 @@ func (c *OrderManager) SaveAfsOrder(db *dao.DaoDB, afsOrder *model.AfsOrder, isD
}
err = utils.CallFuncLogError(func() error {
_, err = dao.DeleteEntity(db, &model.OrderSkuFinancial{
AfsOrderID: afsOrder.AfsOrderID,
}, "AfsOrderID")
VendorOrderID: afsOrder.VendorOrderID,
VendorID: afsOrder.VendorID,
IsAfsOrder: 1,
}, "VendorOrderID", "VendorID", "IsAfsOrder")
return err
}, "SaveAfsOrder delete OrderSkuFinancial, afsOrderID:%s", afsOrder.AfsOrderID)
if err != nil {
@@ -243,14 +249,13 @@ func (c *OrderManager) updateAfsOrderSkuOtherInfo(db *dao.DaoDB, order *model.Af
}
fieldPrefix := dao.ConvertDBFieldPrefix(model.VendorNames[order.VendorID])
sql := `
SELECT %s.%s_id vendor_sku_id, t1.id sku_id, t2.price, t1.weight, t3.id join_id
SELECT %s.%s_id vendor_sku_id, t1.id sku_id, t2.price, t1.weight
FROM sku t1
LEFT JOIN store_sku_bind t2 ON t1.id = t2.sku_id AND t2.deleted_at = ? AND t2.store_id = ?
LEFT JOIN order_sku_financial t3 ON t3.is_afs_order = 1 AND t3.store_id = t2.store_id AND t3.sku_id = t2.sku_id AND t3.vendor_order_id = ? AND t3.vendor_id = ?
WHERE t1.deleted_at = ? AND %s.%s_id IN (-1, ` + dao.GenQuestionMarks(len(vendorSkuIDs)) + ")"
sql = fmt.Sprintf(sql, tableName, fieldPrefix, tableName, fieldPrefix)
var skuInfos []*tStoreSkuBindAndVendorSkuID
if err = dao.GetRows(db, &skuInfos, sql, utils.DefaultTimeValue, jxStoreID, order.VendorOrderID, order.VendorID, utils.DefaultTimeValue, vendorSkuIDs); err != nil {
if err = dao.GetRows(db, &skuInfos, sql, utils.DefaultTimeValue, jxStoreID, utils.DefaultTimeValue, vendorSkuIDs); err != nil {
globals.SugarLogger.Errorf("updateAfsOrderSkuOtherInfo can not get sku info for orderID:%s, error:%v", order.VendorOrderID, err)
return err
}
@@ -258,7 +263,6 @@ func (c *OrderManager) updateAfsOrderSkuOtherInfo(db *dao.DaoDB, order *model.Af
for _, v := range skuInfos {
skumapper[v.VendorSkuID] = v
}
var newSkus []*model.OrderSkuFinancial
for _, v := range orderSkus {
v.AfsOrderID = order.AfsOrderID
v.JxStoreID = jxStoreID
@@ -268,14 +272,10 @@ func (c *OrderManager) updateAfsOrderSkuOtherInfo(db *dao.DaoDB, order *model.Af
if skuBindInfo == nil {
globals.SugarLogger.Infof("updateAfsOrderSkuOtherInfo [运营%s]%s订单sku找不到门店价格或商品映射orderID:%s, StoreID:%d, VendorSkuID:%s, sku:%v", opNumStr, model.VendorChineseNames[order.VendorID], order.VendorOrderID, jxStoreID, v.VendorSkuID, v)
} else {
if skuBindInfo.JoinID == 0 {
newSkus = append(newSkus, v)
v.JxSkuID = skuBindInfo.SkuID
}
v.JxSkuID = skuBindInfo.SkuID
}
}
}
order.Skus = newSkus
}
return nil
}