巴青农资商城

店铺设置技术方案.md 4.9KB

店铺设置 — 技术方案

依据: 《店铺设置功能需求.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_passmax_sub_admin;策略 仅存 全局表。


1. 技术架构

选型
基础框架 RuoYi v3.9.2springboot2
数据库 MySQL 5.7.39
配置存储 biz_shop_global_configconfig_id=1 单例)
权限 agri:shop:setting

1.1 模块落位

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。

1.2 业务链

biz_shop_global_config(config_id=1,全平台唯一)
    ├── default_audit_pass ──► IShopGlobalConfigFacade
    │                              └── GoodsServiceImpl.submitGoods(任意 shopId)
    └── max_sub_admin ──► (预留)子管理员模块
模块 关系
商品管理 submit 读 IShopGlobalConfigFacade
店铺管理 开店 insert 店铺基础信息;不写入 策略字段

1.3 Facade

接口 方法 用途
IShopGlobalConfigFacade getDefaultAuditPass() 商品 submit
getMaxSubAdmin() 预留

2. 数据库设计

2.1 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.sqlINSERT ... WHERE NOT EXISTS)。

v1.1.1: biz_shop不含 策略字段;存量库执行 sql/biz_shop_drop_settings_columns.sql 迁移。


3. 接口设计

基路径: /agri/shopSetting无 shopId
权限: agri:shop:setting

3.1 获取全局设置 GET /agri/shopSetting

{
  "defaultAuditPass": "0",
  "maxSubAdmin": 5
}

3.2 保存全局设置 PUT /agri/shopSetting

Body: ShopSettingsDTOdefaultAuditPassmaxSubAdmin

成功 msg: 商品默认审核设置仅对此后新提交上架的商品生效ShopConstants.MSG_SETTINGS_SAVED

校验 失败 msg
defaultAuditPass ∈ {0,1} 默认审核通过参数无效
maxSubAdmin ∈ [1,99] 请输入 1~99 之间的整数

3.3 商品 submit 消费

String pass = shopGlobalConfigFacade.getDefaultAuditPass();
String target = AUDIT_PASS_YES.equals(pass) ? STATUS_ON_SALE : STATUS_PENDING;

任意 shopId 均读 同一 全局值。


4. Service 要点

4.1 getGlobalSettings()

select config_id=1 → 若无则 lazy insert 默认(0,5) → ShopSettingsVO

4.2 updateGlobalSettings(dto, operator)

validateSettings → UPDATE biz_shop_global_config WHERE config_id=1
(不 UPDATE biz_goods;不 UPDATE 全部 biz_shop)

5. 业务规则映射(SS)

编号 实现
SS1 单表单例 config_id=1;Facade 全店共用
SS2 默认 default_audit_pass=0
SS3 update 仅改全局表
SS4 GoodsServiceImpl.submitGoods → Facade
SS5~SS12 同功能需求

6. 菜单权限

菜单 权限
店铺设置(全局) agri:shop:setting

7. 与旧方案差异(v1.0 → v1.1)

v1.0 v1.1
维度 单店 /{shopId}/settings 全局 /agri/shopSetting
存储 biz_shop biz_shop_global_config
submit 读 单店字段 IShopGlobalConfigFacade
入口 列表逐店 独立菜单

8. 修订记录

版本 说明
v1.0 单店方案(已废止)
v1.1 全局设计,针对所有店铺

文档版本:v1.1 · 关联《店铺设置功能需求.md》v1.1