- dao.FormalizeStoreStatus
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user