From dd5cd8bae73c979f1608106d545a736297a25d94 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 5 Feb 2020 11:47:39 +0800 Subject: [PATCH] checkStoreHaveLinkedStore --- business/jxstore/cms/store.go | 27 ++++++++++++++++++++++++++- business/model/dao/store.go | 14 ++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 9ea420598..b635422a4 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -777,14 +777,20 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa handler.UnregisterPrinter(ctx, store.PrinterSN, store.PrinterKey) } } - if linkStoreID, ok := valid["linkStoreID"].(int); ok { + if valid["linkStoreID"] != nil { + linkStoreID := int(utils.Interface2Int64WithDefault(valid["linkStoreID"], 0)) linkStoreID, err = getRealLinkStoreID(linkStoreID) if err != nil { return 0, err } + if err = checkStoreHaveLinkedStore(storeID); err != nil { + return 0, err + } valid["linkStoreID"] = linkStoreID + // globals.SugarLogger.Debug(linkStoreID) } + // globals.SugarLogger.Debug(utils.Format4Output(valid, false)) for _, v := range []string{ "lng", "lat", @@ -1004,6 +1010,22 @@ func EnableHaveRestStores(ctx *jxcontext.Context, isAsync, isContinueWhenError b return hint, err } +func checkStoreHaveLinkedStore(storeID int) (err error) { + if storeID != 0 { + storeList, err := dao.GetStoreLinkStores(dao.GetDB(), storeID) + if err == nil { + if len(storeList) > 0 { + var storeInfo []string + for _, v := range storeList { + storeInfo = append(storeInfo, utils.Int2Str(v.ID)) + } + err = fmt.Errorf("门店%d已经被其它门店(%s)关联,不能再关联至其它门店", storeID, strings.Join(storeInfo, ",")) + } + } + } + return err +} + func CreateStore(ctx *jxcontext.Context, storeExt *StoreExt, userName string) (id int, err error) { globals.SugarLogger.Debugf("CreateStore storeExt:%s", utils.Format4Output(storeExt, false)) if err = checkBankBranch(storeExt.PayeeBankBranchName); err != nil { @@ -1023,6 +1045,9 @@ func CreateStore(ctx *jxcontext.Context, storeExt *StoreExt, userName string) (i if err != nil { return 0, err } + if err = checkStoreHaveLinkedStore(storeExt.ID); err != nil { + return 0, err + } storeExt.LinkStoreID = realLinkStoreID existingID := store.ID diff --git a/business/model/dao/store.go b/business/model/dao/store.go index 2897e6eb0..f77411a96 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -682,3 +682,17 @@ func GetOrderNotifyPhones(db *DaoDB, storeID int) (phoneList []string) { } return phoneList } + +func GetStoreLinkStores(db *DaoDB, storeID int) (storeList []*model.Store, err error) { + sql := ` + SELECT t1.* + FROM store t1 + WHERE t1.link_store_id = ? AND t1.deleted_at = ? + ` + sqlParams := []interface{}{ + storeID, + utils.DefaultTimeValue, + } + err = GetRows(db, &storeList, sql, sqlParams...) + return storeList, err +}