- dao.FormalizeStoreStatus

This commit is contained in:
gazebo
2019-04-12 17:10:35 +08:00
parent c968cfe109
commit 47ec846c36
5 changed files with 64 additions and 5 deletions

View File

@@ -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)

View File

@@ -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)
}
}

View File

@@ -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
}

View File

@@ -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

View File

@@ -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)
}
}