diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index f22717ac9..bb887e0ed 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -500,7 +500,7 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf if err = s.canOrderCreateWaybillNormally(order); err == nil { if (order.DeliveryFlag & model.OrderDeliveryFlagMaskScheduleDisabled) == 0 { if savedOrderInfo.retryCount <= maxWaybillRetryCount { - _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.NewWithOnlyUserName("admin"), savedOrderInfo, false) + _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, false) } else { err = fmt.Errorf("订单:%s已经自动创建过了%d次运单,请人工处理", order.VendorOrderID, savedOrderInfo.retryCount) globals.SugarLogger.Infof("createWaybillOn3rdProviders [运营]同一订单orderID:%s尝试了%d次创建运单失败, 停止调度,如果还需要发单,请人工处理", order.VendorOrderID, savedOrderInfo.retryCount) diff --git a/business/jxstore/cms/storeman.go b/business/jxstore/cms/storeman.go index 8f1b18a97..8c2655916 100644 --- a/business/jxstore/cms/storeman.go +++ b/business/jxstore/cms/storeman.go @@ -56,12 +56,12 @@ func (s *StoreManager) OnStoreStatusChanged(vendorStoreID string, vendorID int, if storeKV != nil { store := &model.Store{} store.ID = storeDetail.Store.ID - if _, err = dao.UpdateEntityLogically(db, store, storeKV, "admin", nil); err != nil { + if _, err = dao.UpdateEntityLogically(db, store, storeKV, model.AdminName, nil); err != nil { return err } } if storeMapKV != nil { - if _, err = dao.UpdateEntityLogically(db, &model.StoreMap{}, storeMapKV, "admin", map[string]interface{}{ + if _, err = dao.UpdateEntityLogically(db, &model.StoreMap{}, storeMapKV, model.AdminName, map[string]interface{}{ model.FieldStoreID: storeDetail.Store.ID, model.FieldVendorID: vendorID, model.FieldDeletedAt: utils.DefaultTimeValue, @@ -69,6 +69,12 @@ func (s *StoreManager) OnStoreStatusChanged(vendorStoreID string, vendorID int, return err } } + if storeStatus != model.StoreStatusOpened { + // 因为storeStatus != model.StoreStatusOpened不会修改京西门店的状态,所以直接用storeDetail.Status是合适的 + if err = dao.FormalizeStoreStatus(db, storeDetail.Store.ID, storeDetail.Status); err != nil { + return err + } + } dao.Commit(db) } } diff --git a/business/model/dao/store.go b/business/model/dao/store.go index b9abf330c..d28e6c09e 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -178,3 +178,49 @@ func GetStoreCourierList(db *DaoDB, storeID, status int) (courierStoreList []*mo } return nil, err } + +// 此函数在检测到一个门店的所有平台状态一样,且不为StoreStatusOpened时, +// 将平台门店状态全部改为StoreStatusOpened,则把京西门店状态改为之前那个统一的平台门店状态 +func FormalizeStoreStatus(db *DaoDB, storeID, storeStatus int) (err error) { + sql := ` + SELECT DISTINCT t1.status + FROM store_map t1 + WHERE t1.deleted_at = ? AND t1.store_id = ? + ` + sqlParams := []interface{}{ + utils.DefaultTimeValue, + storeID, + } + var statusList []int + Begin(db) + defer func() { + if err != nil { + Rollback(db) + } + }() + if err = GetRows(db, &statusList, sql, sqlParams...); err == nil { + if len(statusList) == 1 { + if statusList[0] != model.StoreStatusOpened { + if storeStatus != statusList[0] { + store := &model.Store{} + store.ID = storeID + if _, err = UpdateEntityLogically(db, store, map[string]interface{}{ + model.FieldStatus: statusList[0], + }, model.AdminName, nil); err != nil { + return err + } + } + if _, err = UpdateEntityLogically(db, &model.StoreMap{}, map[string]interface{}{ + model.FieldStatus: model.StoreStatusOpened, + }, model.AdminName, map[string]interface{}{ + model.FieldStoreID: storeID, + model.FieldDeletedAt: utils.DefaultTimeValue, + }); err != nil { + return err + } + Commit(db) + } + } + } + return err +} diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 1e89462bd..190babcc3 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -120,8 +120,8 @@ func GetStoreCategories(db *DaoDB, vendorID, storeID int, level int) (cats []*St LEFT JOIN sku_category t4p ON t4.parent_id = t4p.id LEFT JOIN store_sku_category_map t5p ON t4p.id = t5p.category_id AND t5.store_id = t5p.store_id AND t5p.deleted_at = ? WHERE t5.store_id = ? AND t4.level = ? AND t5.%s_sync_status <> 0 AND t5.deleted_at = ? - `, fieldPrefix, fieldPrefix, fieldPrefix, utils.DefaultTimeValue) - if err = GetRows(db, &cats, sql, utils.DefaultTimeValue, utils.DefaultTimeValue, storeID, level); err != nil { + `, fieldPrefix, fieldPrefix, fieldPrefix) + if err = GetRows(db, &cats, sql, utils.DefaultTimeValue, utils.DefaultTimeValue, storeID, level, utils.DefaultTimeValue); err != nil { return nil, err } return cats, err diff --git a/business/model/dao/store_test.go b/business/model/dao/store_test.go index aa805949c..88fa6768d 100644 --- a/business/model/dao/store_test.go +++ b/business/model/dao/store_test.go @@ -23,3 +23,10 @@ func TestGetStoreCourierList(t *testing.T) { } globals.SugarLogger.Debug(utils.Format4Output(storeCourierList, false)) } + +func TestFormalizeStoreStatus(t *testing.T) { + err := FormalizeStoreStatus(GetDB(), 100119, model.StoreStatusOpened) + if err != nil { + t.Fatal(err) + } +}