西藏巴青项目

牧场管理技术方案.md 9.2KB

牧场管理 — 技术方案

依据:同目录 牧场管理功能需求.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
区划 省 / 市 / 县三级级联;码表来源与项目行政区划组件一致(国标码或内置树)

分层Controller(权限、AjaxResult / TableDataInfo)→ Service(校验、证件联动、删旧照片)→ Mapper/XML → domain

代码位置(建议)baqing-admincom.ruoyi.web.modules.datamodelBizPasture、Mapper、Service、Controller)。

业务摘要

场景 行为
新增 校验必填;biz_status 缺省 1(正常);del_flag=0
修改 全字段可改;pasture_nature 变更时重校 id_card_no;换照片删旧 photo_file_path
列表/详情 del_flag=0;排序 create_time DESC, id DESC;可按角色脱敏身份证/手机
删除 逻辑删除del_flag2(若依惯例);删照片物理文件(与产品约定一致)

2. 数据库设计

2.1 表 biz_pasture(牧场 / 养殖主体)

字段 类型 非空 默认值 说明
id bigint(20) Y 自增 主键
pasture_name varchar(32) Y 牧场名称(需求 1~10 字)
pasture_nature tinyint(4) Y 1 个体 2 企业
id_card_no varchar(32) Y 身份证号 / 主体识别号(统一存)
province_code varchar(12) Y 省级区划码
province_name varchar(64) Y 省名称
city_code varchar(12) Y 市级区划码
city_name varchar(64) Y 市名称
county_code varchar(12) Y 县级区划码
county_name varchar(64) Y 县(区)名称
detail_address varchar(100) N NULL 详细地址(≤50 字)
person_in_charge varchar(32) N NULL 负责人(≤10 字)
contact_phone varchar(20) Y 联系方式(手机号)
biz_status tinyint(4) Y 1 1 正常 2 停业 3 注销
photo_file_url varchar(512) N NULL 照片访问 URL
photo_file_path varchar(512) N NULL 照片存储路径(/profile/...
del_flag char(1) Y '0' 0 存在 2 删除(逻辑删除)
create_by / create_time / update_by / update_time 若依惯例 审计
remark varchar(500) N NULL 备注

索引PRIMARY KEY (id)KEY idx_pasture_name (pasture_name)KEY idx_pasture_nature (pasture_nature)KEY idx_biz_status (biz_status)KEY idx_create_time (create_time)KEY idx_del_flag (del_flag);可选 KEY idx_id_card (id_card_no)

DDL(MySQL 5.7)

CREATE TABLE `biz_pasture` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `pasture_name` varchar(32) NOT NULL COMMENT '牧场名称',
  `pasture_nature` tinyint(4) NOT NULL COMMENT '1个体 2企业',
  `id_card_no` varchar(32) NOT NULL COMMENT '身份证号/主体识别号',
  `province_code` varchar(12) NOT NULL COMMENT '省编码',
  `province_name` varchar(64) NOT NULL COMMENT '省名称',
  `city_code` varchar(12) NOT NULL COMMENT '市编码',
  `city_name` varchar(64) NOT NULL COMMENT '市名称',
  `county_code` varchar(12) NOT NULL COMMENT '县编码',
  `county_name` varchar(64) NOT NULL COMMENT '县名称',
  `detail_address` varchar(100) DEFAULT NULL COMMENT '详细地址',
  `person_in_charge` varchar(32) DEFAULT NULL COMMENT '负责人',
  `contact_phone` varchar(20) NOT NULL COMMENT '联系电话',
  `biz_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '1正常 2停业 3注销',
  `photo_file_url` varchar(512) DEFAULT NULL COMMENT '照片URL',
  `photo_file_path` varchar(512) 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 '更新时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`),
  KEY `idx_pasture_name` (`pasture_name`),
  KEY `idx_pasture_nature` (`pasture_nature`),
  KEY `idx_biz_status` (`biz_status`),
  KEY `idx_create_time` (`create_time`),
  KEY `idx_del_flag` (`del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='牧场管理';

2.2 枚举常量

字段 含义
pasture_nature 1 个体
2 企业
biz_status 1 正常
2 停业
3 注销
del_flag 0 正常
2 已逻辑删除

3. 接口设计

统一响应AjaxResultcode / msg / data)或分页 TableDataInforowstotal)。

权限标识dataModel:pasture:list|query|add|edit|remove|export

Base Path/dataModel/pasture

# 说明 Method URI 权限 要点
3.1 分页列表 GET /dataModel/pasture/list dataModel:pasture:list Query 3.1.1del_flag=0create_time DESC, id DESC
3.2 详情 GET /dataModel/pasture/{id} dataModel:pasture:query 全字段;已删除返回业务失败
3.3 新增 POST /dataModel/pasture dataModel:pasture:add Body 3.3.1del_flag=0
3.4 修改 PUT /dataModel/pasture dataModel:pasture:edit Body 含 id;换照片删旧
3.5 删除 DELETE /dataModel/pasture/{ids} dataModel:pasture:remove 逻辑删除 + 删照片文件;支持逗号分隔批量

3.1.1 列表 Query

参数 类型 必填 说明
pageNum / pageSize int N 默认 1 / 20
keyword string N 牧场名称模糊;空不过滤
pastureNature int N 1 / 2 精确;空不过滤
bizStatus int N 13 精确(可选筛选项);空不过滤

3.3.1 新增 / 修改 Body(驼峰)

字段 必填 说明
id 修改 Y 主键
pastureName Y 1~10 字符
pastureNature Y 12
idCardNo Y 个体:身份证;企业:主体识别号(建议 18 位)
provinceCode / provinceName Y 省级
cityCode / cityName Y 市级
countyCode / countyName Y 县级(须选至县)
detailAddress N ≤50 字
personInCharge N ≤10 字
contactPhone Y 大陆手机号
bizStatus Y 13;新增缺省 1
photoFileUrl / photoFilePath N 成对;可空
remark N 备注

列表行字段(示例)idpastureNamepastureNatureidCardNo(可脱敏)、provinceName+cityName+countyNamedetailAddresspersonInChargecontactPhone(可脱敏)、bizStatuscreateTime

3.4 照片与删除

  1. 前端 POST /common/upload → 写入 photoFileUrlphotoFilePathfileName 字段)。
  2. 修改替换或逻辑删除时,Service 删除旧 photo_file_path 物理文件(路径以 /profile 前缀校验)。

3.5 服务端校验(摘要)

规则
牧场名称 非空,1~10 字符
牧场性质 ∈ {1, 2}
证件号 pasture_nature=1:18 位身份证+校验位;=2:18 位统一社会信用代码(字母数字,与全局规则一致)
区划 省 / 市 / 县 code、name 均非空
详细地址 / 负责人 可空;有值分别 ≤50、≤10 字
联系方式 11 位大陆手机号
经营状态 ∈ {1, 2, 3};新增默认 1
照片 可空;jpg/jpeg/png;≤10MB;url/path 成对

Mapper 约定:列表、详情、更新查询均带 and del_flag = '0';删除接口执行 update biz_pasture set del_flag='2', update_by=?, update_time=now() where id in (...)


4. 菜单与权限(示例)

类型 名称 权限标识
菜单 牧场管理 dataModel:pasture:list
按钮 查询 dataModel:pasture:query
按钮 新增 dataModel:pasture:add
按钮 修改 dataModel:pasture:edit
按钮 删除 dataModel:pasture:remove
按钮 导出 dataModel:pasture:export

组件路径建议:dataModel/pasture/index(菜单挂载在「产业数据模型及体系」下)。


5. 交付清单

  • sql/biz_pasture.sql、菜单与按钮权限 SQL
  • BizPasture Domain / Mapper / Service / Controller
  • PastureValidation(名称、性质、证件联动、区划、手机、照片)
  • 逻辑删除 + 照片文件清理
  • 单元测试 / 接口测试(MockMvc)

6. 修订记录

版本 说明
1.0 初稿:对齐功能需求;biz_pasture;逻辑删除 del_flag;区划六级字段;无地图接口