西藏巴青项目

项目与补贴-补贴技术方案.md 7.9KB

项目与补贴 — 补贴 — 技术方案

依据:同目录 项目与补贴-补贴功能需求.md。台账 CRUD + 明细附件/封面管理 + 发布/下架


1. 技术架构

说明
后端 RuoYi v3.9.2springboot2 分支):JDK 8、Spring Boot 2.x、Spring MVC、MyBatis、Druid
数据库 MySQL 5.7.39,InnoDB,utf8mb4
前端 若依 Vue2;上传复用 POST /common/upload
文件 表存 URL、存储路径、明细附件原始名;不入库文件大小

分层ControllerService(字段校验、替换/删除物理文件)→ Mapper/XML → domain

业务特征(摘要)

场景 行为
新增/修改 校验必填;明细附件三元组必填;替换附件成功后删旧 detail_file_pathcover_file_path
列表/详情 默认 create_time DESC, id DESC;不区分发放状态限制删改
删除 删库表记录 + 明细附件 + 封面物理文件

发放状态:用户维护,1 申请中、2 已发放;新建未传时默认 1

发布状态:与项目模块一致;publish_status 0/1;未发布可改删发布,已发布仅查看/下架。


2. 数据库设计

2.1 表 biz_subsidy_matter(补贴事项台账)

字段 类型 非空 默认值 说明
id bigint(20) Y 自增 主键
subsidy_name varchar(64) Y 补贴名称(1~20 字)
introduction varchar(200) N NULL 补贴简介,选填(≤50 字)
grant_status tinyint(4) Y 1 1 申请中,2 已发放
detail_file_url varchar(512) Y 补贴明细附件访问 URL
detail_file_path varchar(512) Y 明细附件存储路径
detail_file_name varchar(256) Y 明细附件原始文件名
cover_file_url varchar(512) N NULL 封面 URL
cover_file_path varchar(512) N NULL 封面存储路径
publish_status tinyint(4) Y 0 0 未发布 1 已发布
publish_time datetime N NULL 发布时间
offline_time datetime N NULL 下架时间
create_by / create_time / update_by / update_time 若依惯例 审计
remark varchar(500) N NULL 备注

索引PRIMARY KEY (id)KEY idx_grant_status (grant_status)KEY idx_create_time (create_time)KEY idx_publish (publish_status)

DDL(MySQL 5.7)

CREATE TABLE `biz_subsidy_matter` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `subsidy_name` varchar(64) NOT NULL COMMENT '补贴名称',
  `introduction` varchar(200) DEFAULT NULL COMMENT '补贴简介',
  `grant_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '1申请中 2已发放',
  `detail_file_url` varchar(512) NOT NULL COMMENT '明细附件URL',
  `detail_file_path` varchar(512) NOT NULL COMMENT '明细附件存储路径',
  `detail_file_name` varchar(256) NOT NULL COMMENT '明细附件原始文件名',
  `cover_file_url` varchar(512) DEFAULT NULL COMMENT '封面URL',
  `cover_file_path` varchar(512) DEFAULT NULL COMMENT '封面存储路径',
  `publish_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0未发布 1已发布',
  `publish_time` datetime DEFAULT NULL COMMENT '发布时间',
  `offline_time` datetime DEFAULT NULL COMMENT '下架时间',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  KEY `idx_grant_status` (`grant_status`),
  KEY `idx_create_time` (`create_time`),
  KEY `idx_publish` (`publish_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目与补贴-补贴';

2.2 枚举常量

字段 含义
grant_status 1 申请中
2 已发放
publish_status 0 未发布
1 已发布

3. 接口设计

统一响应AjaxResult / 分页 TableDataInforowstotal)。

权限标识(示例)industryPolicy:subsidyMatter:list|query|add|edit|remove|publish|offline|export

Base Path(示例)/industryPolicy/subsidyMatter

# 说明 Method URI 权限 要点
3.1 分页列表 GET /industryPolicy/subsidyMatter/list industryPolicy:subsidyMatter:list Query 3.1.1;排序 create_time DESC, id DESC
3.2 详情 GET /industryPolicy/subsidyMatter/{id} industryPolicy:subsidyMatter:query 全字段;附件下载/预览鉴权
3.3 新增 POST /industryPolicy/subsidyMatter industryPolicy:subsidyMatter:add Body 3.3.1publish_status=0grantStatus 缺省 1
3.4 修改 PUT /industryPolicy/subsidyMatter industryPolicy:subsidyMatter:edit publish_status=0;替换附件删旧
3.5 删除 DELETE /industryPolicy/subsidyMatter/{ids} industryPolicy:subsidyMatter:remove publish_status=0;删附件与封面
3.6 发布 POST /industryPolicy/subsidyMatter/publish/{id} industryPolicy:subsidyMatter:publish 前置 0;校验明细附件等
3.7 下架 POST /industryPolicy/subsidyMatter/offline/{id} industryPolicy:subsidyMatter:offline 前置 1publish_status=0

3.1.1 列表 Query

参数 类型 必填 说明
pageNum / pageSize int N 默认 1 / 20
keyword string N 补贴名称 / 简介 OR 模糊;空不过滤
grantStatus int N 1 / 2 精确;空不过滤
publishStatus int N 0 / 1 精确;空不过滤

3.3.1 新增 / 修改 Body(驼峰)

字段 必填 说明
id 修改 Y 主键
subsidyName Y 1~20 字符
introduction N ≤50 字
grantStatus Y 12
detailFileUrl / detailFilePath / detailFileName Y 上传后填入,三者同时有效
coverFileUrl / coverFilePath N 封面成对;可空
remark N 备注

列表行字段(示例)idsubsidyNameintroductiongrantStatusdetailFileNamecoverFileUrlcreateTime

3.4 附件流程

  1. 前端 POST /common/upload → 取 urlfileName(path)、originalFilename(明细附件作 detailFileName)。
  2. 提交新增/修改时带上 URL + path + 原始名。
  3. 修改替换或删除记录时,Service 删除旧 detail_file_pathcover_file_path 物理文件。

3.5 服务端校验(摘要)

规则
补贴名称 非空,1~20 字符
补贴简介 可空;有值 ≤50 字
发放状态 ∈ {1, 2}
明细附件 必填;后缀 pdf,md,doc,docx,xls,xlsx,ppt,pptx;≤30MB
封面 可空;有则 jpg,jpeg,png(可扩展 webp);≤10MB

4. 菜单与权限 SQL(示例)

类型 名称 权限标识
菜单 项目与补贴-补贴 industryPolicy:subsidyMatter:list
按钮 查询/新增/修改/删除/发布/下架/导出 …:query …:add …:edit …:remove …:publish …:offline …:export

组件路径建议:policy/subsidyMatter/index


5. 交付清单

  • biz_subsidy_matter DDL、菜单权限 SQL
  • BizSubsidyMatter Domain / Mapper / Service / Controller
  • 明细附件/封面上传校验、替换与删除联动
  • 前端:关键字 + 发放状态筛选、附件必填、列表展示文件名

6. 修订记录

日期 说明
初稿:对齐功能需求;台账 CRUD;grant_status 1/2;明细附件必填
1.1 草稿 §6:新增发布/下架字段与接口;已发布不可改删