依据: 《店铺设置功能需求.md》v1.1
关联: 《店铺管理技术方案.md》v1.2.2、《商品管理技术方案.md》v1.2、《商品审核技术方案.md》v1.0、《关联需求分析.md》v1.2
范围: 平台 全平台唯一 店铺策略;针对所有店铺;biz_shop_global_config单例配置。
原则: submit 读 全局 Facade;改开关 不批量改商品。
v1.1.1:biz_shop不再 存储default_audit_pass、max_sub_admin;策略 仅存 全局表。
| 项 | 选型 |
|---|---|
| 基础框架 | RuoYi v3.9.2(springboot2) |
| 数据库 | MySQL 5.7.39 |
| 配置存储 | biz_shop_global_config(config_id=1 单例) |
| 权限 | agri:shop:setting |
baqing-shop
└── com.ruoyi.web.modules.store
├── controller.ShopGlobalSettingController # GET/PUT /agri/shopSetting
├── service.IShopGlobalConfigService
├── service.impl.ShopGlobalConfigServiceImpl
├── facade.IShopGlobalConfigFacade # 商品 submit 读全局
├── domain.BizShopGlobalConfig
├── mapper.BizShopGlobalConfigMapper
├── dto.ShopSettingsDTO / vo.ShopSettingsVO
└── constant.ShopGlobalConfigConstants
sql/
└── biz_shop_global_config.sql
v1.1: 移除
GET/PUT /agri/shop/{shopId}/settings逐店接口;ShopController不再 暴露 settings。
biz_shop_global_config(config_id=1,全平台唯一)
├── default_audit_pass ──► IShopGlobalConfigFacade
│ └── GoodsServiceImpl.submitGoods(任意 shopId)
└── max_sub_admin ──► (预留)子管理员模块
| 模块 | 关系 |
|---|---|
| 商品管理 | submit 读 IShopGlobalConfigFacade |
| 店铺管理 | 开店 仅 insert 店铺基础信息;不写入 策略字段 |
| 接口 | 方法 | 用途 |
|---|---|---|
IShopGlobalConfigFacade |
getDefaultAuditPass() |
商品 submit |
getMaxSubAdmin() |
预留 |
biz_shop_global_config(单例)| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
| config_id | bigint PK | 1 | 固定单例 |
| default_audit_pass | char(1) | 0 | 全平台免审开关 |
| max_sub_admin | int | 5 | 全平台子管理员上限 |
| create_by/time, update_by/time | 审计 |
初始化脚本见 sql/biz_shop_global_config.sql(INSERT ... WHERE NOT EXISTS)。
v1.1.1:
biz_shop表 不含 策略字段;存量库执行sql/biz_shop_drop_settings_columns.sql迁移。
基路径: /agri/shopSetting(无 shopId)
权限: agri:shop:setting
GET /agri/shopSetting{
"defaultAuditPass": "0",
"maxSubAdmin": 5
}
PUT /agri/shopSettingBody: ShopSettingsDTO(defaultAuditPass、maxSubAdmin)
成功 msg: 商品默认审核设置仅对此后新提交上架的商品生效(ShopConstants.MSG_SETTINGS_SAVED)
| 校验 | 失败 msg |
|---|---|
| defaultAuditPass ∈ {0,1} | 默认审核通过参数无效 |
| maxSubAdmin ∈ [1,99] | 请输入 1~99 之间的整数 |
String pass = shopGlobalConfigFacade.getDefaultAuditPass();
String target = AUDIT_PASS_YES.equals(pass) ? STATUS_ON_SALE : STATUS_PENDING;
任意 shopId 均读 同一 全局值。
getGlobalSettings()select config_id=1 → 若无则 lazy insert 默认(0,5) → ShopSettingsVO
updateGlobalSettings(dto, operator)validateSettings → UPDATE biz_shop_global_config WHERE config_id=1
(不 UPDATE biz_goods;不 UPDATE 全部 biz_shop)
| 编号 | 实现 |
|---|---|
| SS1 | 单表单例 config_id=1;Facade 全店共用 |
| SS2 | 默认 default_audit_pass=0 |
| SS3 | update 仅改全局表 |
| SS4 | GoodsServiceImpl.submitGoods → Facade |
| SS5~SS12 | 同功能需求 |
| 菜单 | 权限 |
|---|---|
| 店铺设置(全局) | agri:shop:setting |
| 项 | v1.0 | v1.1 |
|---|---|---|
| 维度 | 单店 /{shopId}/settings |
全局 /agri/shopSetting |
| 存储 | 仅 biz_shop 列 |
biz_shop_global_config |
| submit 读 | 单店字段 | IShopGlobalConfigFacade |
| 入口 | 列表逐店 | 独立菜单 |
| 版本 | 说明 |
|---|---|
| v1.0 | 单店方案(已废止) |
| v1.1 | 全局设计,针对所有店铺 |
文档版本:v1.1 · 关联《店铺设置功能需求.md》v1.1