依据:同目录
市场栏位管理功能需求.md。市场栏位 CRUD + 逻辑删除 + 编号自动生成(2 位);列表栏位编号 模糊筛选;无全局配置表(与隔离圈位区分)。
| 项 | 说明 |
|---|---|
| 后端 | RuoYi v3.9.2(springboot2 分支):JDK 8、Spring Boot 2.x、Spring MVC、MyBatis、Druid |
| 数据库 | MySQL 5.7.39,InnoDB,utf8mb4 |
| 前端 | 若依 Vue2;字段 小驼峰(本方案不展开页面) |
分层:Controller → Service(MarketStallValidation、编号生成)→ Mapper/XML → domain。
代码包(建议):com.ruoyi.web.modules.trademarket
业务摘要
| 场景 | 行为 |
|---|---|
| 新增 | 校验通过后 StallCodeGenerator 分配 stall_code(01~99);del_flag=0 |
| 修改 | 不可改 stall_code;仅更新 remark |
| 列表/详情 | 仅 del_flag=0;排序 stall_code ASC, id ASC |
| 列表筛选 | stall_code 模糊 LIKE %keyword% |
| 删除 | del_flag=2;下游引用时 ServiceException |
与隔离圈位:
biz_market_stall与biz_isolation_pen独立表、独立编号序列;01~99在两模块内各自维护,互不影响。
biz_market_stall(市场栏位)| 字段 | 类型 | 非空 | 默认值 | 说明 |
|---|---|---|---|---|
id |
bigint(20) |
Y | 自增 | 主键 |
stall_code |
char(2) |
Y | — | 栏位编号 01~99,本表内全局唯一 |
remark |
varchar(50) |
N | NULL | 栏位备注(≤50 字) |
del_flag |
char(1) |
Y | '0' |
0 存在 2 删除 |
create_by / create_time / update_by / update_time |
若依惯例 | — | — | 审计 |
索引:PRIMARY KEY (id);UNIQUE KEY uk_stall_code (stall_code);KEY idx_del_flag (del_flag)。
CREATE TABLE `biz_market_stall` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`stall_code` char(2) NOT NULL COMMENT '栏位编号01-99',
`remark` varchar(50) DEFAULT NULL COMMENT '栏位备注',
`del_flag` char(1) NOT NULL DEFAULT '0' COMMENT '0存在 2删除',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_stall_code` (`stall_code`),
KEY `idx_del_flag` (`del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='市场栏位';
删除标记 del_flag
| 值 | 含义 |
|---|---|
| 0 | 正常 |
| 2 | 已逻辑删除 |
StallCodeGenerator)在 biz_market_stall 且 del_flag=0 范围内取 MAX(stall_code) + 1,格式 %02d;上限 99;与插入同一事务,避免并发重复。
统一响应:AjaxResult / TableDataInfo(code、msg、data / rows、total)。
权限标识:tradeMarket:marketStall:list|query|add|edit|remove
Base Path:/tradeMarket/marketStall
| # | 说明 | Method | URI | 权限 |
|---|---|---|---|---|
| 3.1 | 分页列表 | GET | /tradeMarket/marketStall/list |
list |
| 3.2 | 详情 | GET | /tradeMarket/marketStall/{id} |
query |
| 3.3 | 新增 | POST | /tradeMarket/marketStall |
add |
| 3.4 | 修改 | PUT | /tradeMarket/marketStall |
edit |
| 3.5 | 删除 | DELETE | /tradeMarket/marketStall/{ids} |
remove |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
pageNum / pageSize |
int | N | 默认 1 / 20 |
stallCode |
string | N | 栏位编号模糊:stall_code LIKE %value% |
排序:stall_code ASC, id ASC。
data(驼峰)id、stallCode、remark、审计字段。
| 字段 | 新增 | 修改 | 说明 |
|---|---|---|---|
id |
— | Y | 主键 |
stallCode |
— | — | 禁止传入;仅响应带回 |
remark |
N | N | ≤50 字,trim;空串存 NULL |
MarketStallValidation)| 项 | 规则 |
|---|---|
| 备注 | 有内容时 ≤50 字 |
| 修改 | 禁止改 stall_code;记录存在且 del_flag=0 |
| 删除 | 未删;MarketStallReferenceChecker.hasReference(id) 为 false(本期可占位 false) |
DELETE /tradeMarket/marketStall/{ids},传一个 id。UPDATE … SET del_flag='2' WHERE id=? AND del_flag='0'。del_flag='0'。AND stall_code LIKE CONCAT('%', #{stallCode}, '%')。| 类型 | 名称 | 权限标识 |
|---|---|---|
| 菜单 | 市场栏位管理 | tradeMarket:marketStall:list |
| 按钮 | 查询 | tradeMarket:marketStall:query |
| 按钮 | 新增 | tradeMarket:marketStall:add |
| 按钮 | 修改 | tradeMarket:marketStall:edit |
| 按钮 | 删除 | tradeMarket:marketStall:remove |
组件路径:tradeMarket/marketStall/index(「交易市场平台」目录下)。
| 项 | 隔离圈位 biz_isolation_pen |
市场栏位 biz_market_stall |
|---|---|---|
| 编号字段 | pen_code |
stall_code |
| 扩展表 | biz_isolation_setting |
无 |
| 配置接口 | /isolationPen/setting |
无 |
| Base Path | /tradeMarket/isolationPen |
/tradeMarket/marketStall |
| 权限 | 含 config |
仅 list/query/add/edit/remove |
sql/biz_market_stall.sql、菜单权限 SQLBizMarketStall、Mapper/XML、Service、ControllerStallCodeGenerator、MarketStallValidation| 版本 | 说明 |
|---|---|
| 1.0 | 初稿:biz_market_stall;CRUD+逻辑删除;2 位 stall_code;/tradeMarket/marketStall;与隔离圈位分表分序列 |