diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 9e3fb8326..9abc5b8a3 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -5,6 +5,7 @@ import ( "fmt" "strconv" "strings" + "time" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" @@ -463,8 +464,54 @@ func UpdateStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendor return num, err } -func DeleteStore(ctx *jxcontext.Context, db *dao.DaoDB, storeID int, userName string) (num int64, err error) { - return 0, errors.New("暂不支持删除京西门店") +func DeleteStore(ctx *jxcontext.Context, storeID int) (num int64, err error) { + db := dao.GetDB() + + store := &model.Store{} + store.ID = storeID + if err = dao.GetEntity(db, store); err != nil { + return 0, err + } + if store.Status == model.StoreStatusOpened { + return 0, fmt.Errorf("删除京西门店前必须将所有门店解绑且门店处于关店状态") + } + + sql := ` + SELECT (SELECT COUNT(*) FROM store_map t1 WHERE t1.store_id = ? AND t1.deleted_at = ?) + + (SELECT COUNT(*) FROM store_courier_map t1 WHERE t1.store_id = ? AND t1.deleted_at = ?) ct + ` + ct := 0 + if err = dao.GetRow(db, &ct, sql, storeID, utils.DefaultTimeValue, storeID, utils.DefaultTimeValue); err != nil { + return 0, err + } + globals.SugarLogger.Debugf("DeleteStore storeID:%d, ct=%d", storeID, ct) + if ct > 0 { + return 0, fmt.Errorf("删除京西门店前必须将所有门店解绑且门店处于关店状态") + } + + dao.Begin(db) + defer dao.Rollback(db) + now := time.Now() + + for _, tableName := range []string{"store_sku_bind", "store_sku_category_map", "store_op_request"} { + sql = fmt.Sprintf(` + UPDATE %s t1 + SET t1.deleted_at = ?, + t1.updated_at = ?, + t1.last_operator = ? + WHERE t1.store_id = ? AND t1.deleted_at = ? + `, tableName) + if _, err = dao.ExecuteSQL(db, sql, now, now, ctx.GetUserName(), storeID, utils.DefaultTimeValue); err != nil { + return 0, err + } + } + + if num, err = dao.DeleteEntityLogically(db, store, nil, ctx.GetUserName(), nil); err != nil { + return 0, err + } + dao.Commit(db) + return num, err + // return 0, errors.New("暂不支持删除京西门店") } func TmpGetJxBadCommentsNo(ctx *jxcontext.Context, storeID int) (count int, err error) { diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 331efc035..02823d33b 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -71,6 +71,20 @@ func (c *StoreController) UpdateStore() { }) } +// @Title 删除京西门店 +// @Description 删除京西门店 +// @Param token header string true "认证token" +// @Param storeID query int true "门店ID" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /DeleteStore [delete] +func (c *StoreController) DeleteStore() { + c.callDeleteStore(func(params *tStoreDeleteStoreParams) (retVal interface{}, errCode string, err error) { + retVal, err = cms.DeleteStore(params.Ctx, params.StoreID) + return retVal, "", err + }) +} + // @Title 创建京西门店 // @Description 创建京西门店 // @Param token header string true "认证token" diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index a2203deaa..b317672ed 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -559,6 +559,14 @@ func init() { MethodParams: param.Make(), Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], + beego.ControllerComments{ + Method: "DeleteStore", + Router: `/DeleteStore`, + AllowHTTPMethods: []string{"delete"}, + MethodParams: param.Make(), + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], beego.ControllerComments{ Method: "DeleteStoreCourierMap",