1
This commit is contained in:
@@ -311,7 +311,15 @@ func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *m
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 商品库存修改
|
// 商品库存修改
|
||||||
ModifyOrderSkusStock(db, order2, true)
|
switch beego.BConfig.RunMode {
|
||||||
|
case model.ServerTypeFruits, model.ServerTypeVegetable:
|
||||||
|
ModifyOrderSkusStock(db, order2, true)
|
||||||
|
case model.ServerTypePet:
|
||||||
|
// 宠物会出现美团多门店对应京西一个门店的库存数,即同一老板开多家店,单只有一个库存门店,
|
||||||
|
// 所以不同门店同一品牌,最终商品库存只扣除门店ID最小的商品库存(最早创建门店,主店)
|
||||||
|
// 最好商品由主店创建,复制到分店,分店本地同步状态不在打开
|
||||||
|
ModifyPetOrderSkusStock(db, order2, true)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !isDuplicated {
|
if !isDuplicated {
|
||||||
@@ -441,7 +449,15 @@ func (c *OrderManager) SaveOrder(order *model.GoodsOrder, isAdjust bool, db *dao
|
|||||||
}
|
}
|
||||||
//修改商品库存
|
//修改商品库存
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = ModifyOrderSkusStock(db, order, false)
|
switch beego.BConfig.RunMode {
|
||||||
|
case model.ServerTypeFruits, model.ServerTypeVegetable:
|
||||||
|
err = ModifyOrderSkusStock(db, order, false)
|
||||||
|
case model.ServerTypePet:
|
||||||
|
// 宠物会出现美团多门店对应京西一个门店的库存数,即同一老板开多家店,单只有一个库存门店,
|
||||||
|
// 所以不同门店同一品牌,最终商品库存只扣除门店ID最小的商品库存(最早创建门店,主店)
|
||||||
|
// 最好商品由主店创建,复制到分店,分店本地同步状态不在打开
|
||||||
|
err = ModifyOrderSkusStock(db, order, false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
dao.Commit(db, txDB)
|
dao.Commit(db, txDB)
|
||||||
@@ -449,6 +465,7 @@ func (c *OrderManager) SaveOrder(order *model.GoodsOrder, isAdjust bool, db *dao
|
|||||||
return isDuplicated, err
|
return isDuplicated, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ModifyOrderSkusStock 果园和菜市同步库存
|
||||||
func ModifyOrderSkusStock(db *dao.DaoDB, order *model.GoodsOrder, isAdd bool) (err error) {
|
func ModifyOrderSkusStock(db *dao.DaoDB, order *model.GoodsOrder, isAdd bool) (err error) {
|
||||||
store, err := dao.GetStoreDetail(db, order.JxStoreID, order.VendorID, order.VendorOrgCode)
|
store, err := dao.GetStoreDetail(db, order.JxStoreID, order.VendorID, order.VendorOrgCode)
|
||||||
if err != nil || store.IsSync != model.YES {
|
if err != nil || store.IsSync != model.YES {
|
||||||
@@ -458,16 +475,10 @@ func ModifyOrderSkusStock(db *dao.DaoDB, order *model.GoodsOrder, isAdd bool) (e
|
|||||||
for _, sku := range skus {
|
for _, sku := range skus {
|
||||||
storeSkus, _ := dao.GetStoresSkusInfo(db, []int{jxutils.GetSaleStoreIDFromOrder(order)}, []int{sku.SkuID})
|
storeSkus, _ := dao.GetStoresSkusInfo(db, []int{jxutils.GetSaleStoreIDFromOrder(order)}, []int{sku.SkuID})
|
||||||
if len(storeSkus) == 0 {
|
if len(storeSkus) == 0 {
|
||||||
// if !isAdd {
|
|
||||||
// globals.SugarLogger.Warnf("此订单商品没得storsku,%v,%v", order.VendorOrderID, sku.SkuID)
|
|
||||||
// }
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
storeSku, stock := storeSkus[0], 0
|
storeSku, stock := storeSkus[0], 0
|
||||||
if storeSku.Stock == 0 {
|
if storeSku.Stock == 0 {
|
||||||
if !isAdd {
|
|
||||||
// globals.SugarLogger.Warnf("此订单商品库存为0,%v,%v", order.VendorOrderID, sku.SkuID)
|
|
||||||
}
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if isAdd {
|
if isAdd {
|
||||||
@@ -490,9 +501,56 @@ func ModifyOrderSkusStock(db *dao.DaoDB, order *model.GoodsOrder, isAdd bool) (e
|
|||||||
}
|
}
|
||||||
storeSku.Stock = stock
|
storeSku.Stock = stock
|
||||||
db.Db.Update(storeSku, "Stock")
|
db.Db.Update(storeSku, "Stock")
|
||||||
if order.VendorID != model.VendorIDJX {
|
}
|
||||||
// dao.SetStoreSkuSyncStatus(db, order.VendorID, []int{jxutils.GetSaleStoreIDFromOrder(order)}, []int{sku.SkuID}, model.SyncFlagStockMask)
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// ModifyPetOrderSkusStock 宠物同步库存
|
||||||
|
func ModifyPetOrderSkusStock(db *dao.DaoDB, order *model.GoodsOrder, isAdd bool) (err error) {
|
||||||
|
store, err := dao.GetStoreDetail(db, order.JxStoreID, order.VendorID, order.VendorOrgCode)
|
||||||
|
if err != nil {
|
||||||
|
return err // 门店未打开同步不修改库存
|
||||||
|
}
|
||||||
|
|
||||||
|
storeList, err := dao.GetStoreList(db, nil, nil, nil, []int{store.BrandID}, nil, "")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if len(storeList) == 0 {
|
||||||
|
globals.SugarLogger.Errorf("根据品牌获取门店信息异常,未获取到门店列表[storeID:%d,brandID:%d]", store.ID, store.BrandID)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
skus := order.Skus
|
||||||
|
for _, sku := range skus {
|
||||||
|
storeSkus, _ := dao.GetStoresSkusInfo(db, []int{storeList[0].ID}, []int{sku.SkuID})
|
||||||
|
if len(storeSkus) == 0 {
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
storeSku, stock := storeSkus[0], 0
|
||||||
|
if storeSku.Stock == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if isAdd {
|
||||||
|
stock = storeSku.Stock + sku.Count
|
||||||
|
} else {
|
||||||
|
stock = storeSku.Stock - sku.Count
|
||||||
|
//如果是进货的订单,进货方门店对应商品要加上这么多库存
|
||||||
|
if order.OrderType == model.OrderTypeSupplyGoods {
|
||||||
|
storeSkus2, _ := dao.GetStoresSkusInfo(db, []int{order.FromStoreID}, []int{sku.SkuID})
|
||||||
|
if len(storeSkus2) > 0 {
|
||||||
|
storeSku3 := storeSkus2[0]
|
||||||
|
storeSku3.Stock = storeSku3.Stock + sku.Count
|
||||||
|
db.Db.Update(storeSku3, "Stock")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
realStock := checkPriceDefendOrderByStock(db, jxutils.GetSaleStoreIDFromOrder(order), sku.SkuID, stock, storeSku.JxPrice)
|
||||||
|
if realStock != -1 {
|
||||||
|
stock = realStock
|
||||||
|
}
|
||||||
|
}
|
||||||
|
storeSku.Stock = stock
|
||||||
|
db.Db.Update(storeSku, "Stock")
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -612,6 +612,7 @@ func (v *VendorSync) SyncStoresSkus(ctx *jxcontext.Context, parentTask tasksch.I
|
|||||||
setSyncStatus = model.SyncFlagStoreSkuModifiedMask
|
setSyncStatus = model.SyncFlagStoreSkuModifiedMask
|
||||||
}
|
}
|
||||||
//权限
|
//权限
|
||||||
|
globals.SugarLogger.Debugf("---------permission.IsRoled(ctx) : %s", utils.Format4Output(permission.IsRoled(ctx), false))
|
||||||
if permission.IsRoled(ctx) {
|
if permission.IsRoled(ctx) {
|
||||||
if storeIDsMap, err := permission.GetUserStoresResultMap(ctx.GetUserID()); err == nil {
|
if storeIDsMap, err := permission.GetUserStoresResultMap(ctx.GetUserID()); err == nil {
|
||||||
var storeIDs2 []int
|
var storeIDs2 []int
|
||||||
|
|||||||
@@ -521,6 +521,7 @@ func isSkuLockTimeValid(sku *dao.StoreSkuSyncInfo) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag int, isFull bool, vendorID, storeID int, vendorOrgCode string, nameIDs, skuIDs, excludeSkuIDs []int, useVendorPriceDirectly, isContinueWhenError bool) (err error) {
|
func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag int, isFull bool, vendorID, storeID int, vendorOrgCode string, nameIDs, skuIDs, excludeSkuIDs []int, useVendorPriceDirectly, isContinueWhenError bool) (err error) {
|
||||||
|
globals.SugarLogger.Debugf("---------------111111")
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
storeDetail, err := dao.GetStoreDetail(db, storeID, vendorID, vendorOrgCode)
|
storeDetail, err := dao.GetStoreDetail(db, storeID, vendorID, vendorOrgCode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -533,6 +534,8 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
|
|||||||
} else {
|
} else {
|
||||||
skus, err = dao.GetStoreSkus(db, vendorID, storeID, skuIDs)
|
skus, err = dao.GetStoreSkus(db, vendorID, storeID, skuIDs)
|
||||||
}
|
}
|
||||||
|
globals.SugarLogger.Debugf("---------------skus := %s", utils.Format4Output(skus, false))
|
||||||
|
|
||||||
if err != nil || len(skus) == 0 {
|
if err != nil || len(skus) == 0 {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -752,6 +755,10 @@ func syncStoreSkuNew(ctx *jxcontext.Context, parentTask tasksch.ITask, causeFlag
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
globals.SugarLogger.Debugf("---------create:= %s", utils.Format4Output(createList, false))
|
||||||
|
globals.SugarLogger.Debugf("---------update:= %s", utils.Format4Output(updateList, false))
|
||||||
|
globals.SugarLogger.Debugf("---------stock:= %s", utils.Format4Output(stockList, false))
|
||||||
|
globals.SugarLogger.Debugf("---------online:= %s", utils.Format4Output(onlineList, false))
|
||||||
task := tasksch.NewParallelTask("syncStoreSkuNew", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError2), ctx,
|
task := tasksch.NewParallelTask("syncStoreSkuNew", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError2), 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) {
|
||||||
step := batchItemList[0].(int)
|
step := batchItemList[0].(int)
|
||||||
|
|||||||
@@ -511,6 +511,8 @@ func GetStoreList(db *DaoDB, idList, cityCodes, statuss, brandIDs []int, mobileL
|
|||||||
sql += " AND (t1.market_man_role = ? OR t1.operator_role = ? OR t1.operator_role2 = ? OR t1.operator_role3 = ?)"
|
sql += " AND (t1.market_man_role = ? OR t1.operator_role = ? OR t1.operator_role2 = ? OR t1.operator_role3 = ?)"
|
||||||
sqlParams = append(sqlParams, shortRoleName, shortRoleName, shortRoleName, shortRoleName)
|
sqlParams = append(sqlParams, shortRoleName, shortRoleName, shortRoleName, shortRoleName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sql += ` ORDER BY id `
|
||||||
err = GetRows(db, &storeList, sql, sqlParams...)
|
err = GetRows(db, &storeList, sql, sqlParams...)
|
||||||
return storeList, err
|
return storeList, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user