diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 6554f9f6b..2d8b815ba 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -21,6 +21,8 @@ type tStoreSkuBindAndVendorSkuID struct { SkuID int `orm:"column(sku_id)"` Weight int Price int + + JoinID int `orm:"column(join_id)"` } func init() { diff --git a/business/jxcallback/orderman/order_afs.go b/business/jxcallback/orderman/order_afs.go index a6acd0525..3664837fb 100644 --- a/business/jxcallback/orderman/order_afs.go +++ b/business/jxcallback/orderman/order_afs.go @@ -243,13 +243,14 @@ 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 + SELECT %s.%s_id vendor_sku_id, t1.id sku_id, t2.price, t1.weight, t3.id join_id 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, utils.DefaultTimeValue, vendorSkuIDs); err != nil { + if err = dao.GetRows(db, &skuInfos, sql, utils.DefaultTimeValue, jxStoreID, utils.DefaultTimeValue, vendorSkuIDs, order.VendorOrderID, order.VendorID); err != nil { globals.SugarLogger.Errorf("updateAfsOrderSkuOtherInfo can not get sku info for orderID:%s, error:%v", order.VendorOrderID, err) return err } @@ -257,19 +258,24 @@ 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 intVendorSkuID := utils.Str2Int64WithDefault(v.VendorSkuID, 0) if intVendorSkuID != 0 && v.VendorSkuID != "-70000" { // todo hard code skuBindInfo := skumapper[intVendorSkuID] - 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 { - v.JxSkuID = skuBindInfo.SkuID + if skuBindInfo.JoinID == 0 { + newSkus = append(newSkus, v) + 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 { + v.JxSkuID = skuBindInfo.SkuID + } } } } + order.Skus = newSkus } return nil } @@ -294,7 +300,7 @@ func (c *OrderManager) updateAfsOrderOtherInfo(db *dao.DaoDB, afsOrder *model.Af } if err == nil { if err = c.updateAfsOrderSkuOtherInfo(db, afsOrder); err == nil { - + jxutils.RefreshAfsOrderSkuRelated(afsOrder) } } return err diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index be70b7422..b641cc11a 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -453,6 +453,16 @@ func RefreshOrderSkuRelated(order *model.GoodsOrder) *model.GoodsOrder { return order } +func RefreshAfsOrderSkuRelated(afsOrder *model.AfsOrder) *model.AfsOrder { + afsOrder.SkuUserMoney = 0 + afsOrder.PmSkuSubsidyMoney = 0 + for _, orderSku := range afsOrder.Skus { + afsOrder.SkuUserMoney += orderSku.UserMoney + afsOrder.PmSkuSubsidyMoney += orderSku.PmSkuSubsidyMoney + } + return afsOrder +} + func RemoveSkuFromOrder(order *model.GoodsOrder, removedSkuList []*model.OrderSku) *model.GoodsOrder { removedSkuMap := make(map[int]*model.OrderSku) removedSkuMap2 := make(map[string]*model.OrderSku)