| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- -- ============================================================
- -- 监督抽检 / 平台客诉 模块 - 数据库升级脚本(幂等)
- -- 适用: MySQL 5.7+ / 8.0
- -- 表: 5 张(抽检单 / 案件主表 / 案件节点 / 客诉主表 / 客诉节点)
- -- 字典: 6 个(inspection_result / inspection_status / risk_level /
- -- complaint_source / case_status / complaint_status)
- -- 说明: 使用 INFORMATION_SCHEMA 兼容低版本 MySQL,所有 IF NOT EXISTS
- -- 风格的 DDL,支持重复执行不报错
- -- ============================================================
- SET NAMES utf8mb4;
- SET FOREIGN_KEY_CHECKS = 0;
- -- ============================================================
- -- 1. 字典(6 个)
- -- ============================================================
- -- 1.1 抽检结果
- INSERT INTO sys_dict_type (dict_name, dict_type, status, remark, create_by, create_time, update_by, update_time)
- SELECT '抽检结果', 'risk_supervision_inspection_result', '0', '门店抽检结果(合格/不合格)', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'risk_supervision_inspection_result');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 1, '抽检合格', '抽检合格', 'risk_supervision_inspection_result', '', 'success', 'Y', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_inspection_result' AND dict_value = '抽检合格');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 2, '抽检不合格', '抽检不合格', 'risk_supervision_inspection_result', '', 'danger', 'N', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_inspection_result' AND dict_value = '抽检不合格');
- -- 1.2 抽检审核状态
- INSERT INTO sys_dict_type (dict_name, dict_type, status, remark, create_by, create_time, update_by, update_time)
- SELECT '抽检审核状态', 'risk_supervision_inspection_status', '0', '门店抽检单审核状态', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'risk_supervision_inspection_status');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 1, '待审核', '待审核', 'risk_supervision_inspection_status', '', 'warning', 'Y', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_inspection_status' AND dict_value = '待审核');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 2, '已审核', '已审核', 'risk_supervision_inspection_status', '', 'success', 'N', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_inspection_status' AND dict_value = '已审核');
- -- 1.3 风险等级
- INSERT INTO sys_dict_type (dict_name, dict_type, status, remark, create_by, create_time, update_by, update_time)
- SELECT '风险等级', 'risk_supervision_risk_level', '0', '案件风险等级', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'risk_supervision_risk_level');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 1, '高风险', '高风险', 'risk_supervision_risk_level', '', 'danger', 'N', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_risk_level' AND dict_value = '高风险');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 2, '中风险', '中风险', 'risk_supervision_risk_level', '', 'warning', 'N', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_risk_level' AND dict_value = '中风险');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 3, '低风险', '低风险', 'risk_supervision_risk_level', '', 'info', 'N', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_risk_level' AND dict_value = '低风险');
- -- 1.4 客诉来源
- INSERT INTO sys_dict_type (dict_name, dict_type, status, remark, create_by, create_time, update_by, update_time)
- SELECT '客诉来源', 'risk_supervision_complaint_source', '0', '平台客诉来源', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'risk_supervision_complaint_source');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 1, '消费者投诉', '消费者投诉', 'risk_supervision_complaint_source', '', 'primary', 'Y', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_complaint_source' AND dict_value = '消费者投诉');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 2, '媒体舆情', '媒体舆情', 'risk_supervision_complaint_source', '', 'warning', 'N', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_complaint_source' AND dict_value = '媒体舆情');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 3, '12315平台', '12315平台', 'risk_supervision_complaint_source', '', 'danger', 'N', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_complaint_source' AND dict_value = '12315平台');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 4, '其他来源', '其他来源', 'risk_supervision_complaint_source', '', 'info', 'N', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_complaint_source' AND dict_value = '其他来源');
- -- 1.5 案件状态
- INSERT INTO sys_dict_type (dict_name, dict_type, status, remark, create_by, create_time, update_by, update_time)
- SELECT '案件状态', 'risk_supervision_case_status', '0', '不合格案件处理状态', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'risk_supervision_case_status');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 1, '处置中', '处置中', 'risk_supervision_case_status', '', 'warning', 'Y', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_case_status' AND dict_value = '处置中');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 2, '已闭环', '已闭环', 'risk_supervision_case_status', '', 'success', 'N', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_case_status' AND dict_value = '已闭环');
- -- 1.6 客诉状态
- INSERT INTO sys_dict_type (dict_name, dict_type, status, remark, create_by, create_time, update_by, update_time)
- SELECT '客诉状态', 'risk_supervision_complaint_status', '0', '平台客诉处理状态', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'risk_supervision_complaint_status');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 1, '处置中', '处置中', 'risk_supervision_complaint_status', '', 'warning', 'Y', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_complaint_status' AND dict_value = '处置中');
- INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, remark, create_by, create_time, update_by, update_time)
- SELECT 2, '已闭环', '已闭环', 'risk_supervision_complaint_status', '', 'success', 'N', '0', '', 'admin', NOW(), 'admin', NOW()
- WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'risk_supervision_complaint_status' AND dict_value = '已闭环');
- -- ============================================================
- -- 2. 业务表(5 张)
- -- ============================================================
- -- 2.1 门店抽检单
- CREATE TABLE IF NOT EXISTS `risk_supervision_inspection` (
- `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
- `inspection_code` VARCHAR(50) NOT NULL COMMENT '抽检单号 JC+yyyyMMdd+4位序号',
- `store_id` BIGINT DEFAULT NULL COMMENT '门店ID',
- `store_name` VARCHAR(200) DEFAULT NULL COMMENT '门店名称',
- `inspection_time` DATETIME DEFAULT NULL COMMENT '抽检时间',
- `product_name` VARCHAR(200) DEFAULT NULL COMMENT '抽检商品',
- `inspection_result` VARCHAR(20) DEFAULT NULL COMMENT '抽检结果(字典:抽检合格/抽检不合格)',
- `fail_reason` VARCHAR(1000) DEFAULT NULL COMMENT '不合格原因',
- `status` VARCHAR(20) DEFAULT '待审核' COMMENT '状态(字典:待审核/已审核)',
- `inspector_id` BIGINT DEFAULT NULL COMMENT '抽检人ID',
- `inspector_name` VARCHAR(50) DEFAULT NULL COMMENT '抽检人姓名',
- `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
- `tenant_id` VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
- `create_dept` BIGINT DEFAULT NULL COMMENT '创建部门',
- `create_by` BIGINT DEFAULT NULL COMMENT '创建人',
- `create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
- `update_by` BIGINT DEFAULT NULL COMMENT '更新人',
- `update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
- `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0正常 1删除)',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_inspection_code` (`inspection_code`),
- KEY `idx_inspection_time` (`inspection_time`),
- KEY `idx_status_result` (`status`, `inspection_result`),
- KEY `idx_store_id` (`store_id`)
- ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='监督抽检 - 门店抽检单';
- -- 2.2 不合格案件主表
- CREATE TABLE IF NOT EXISTS `risk_supervision_case` (
- `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
- `case_code` VARCHAR(50) NOT NULL COMMENT '案件编号 AJ+yyyyMMdd+4位序号',
- `inspection_id` BIGINT DEFAULT NULL COMMENT '关联抽检单ID',
- `inspection_code` VARCHAR(50) DEFAULT NULL COMMENT '冗余抽检单号',
- `store_id` BIGINT DEFAULT NULL COMMENT '涉事门店ID',
- `store_name` VARCHAR(200) DEFAULT NULL COMMENT '涉事门店',
- `product_name` VARCHAR(200) DEFAULT NULL COMMENT '不合格产品',
- `current_node` INT DEFAULT 1 COMMENT '当前节点(1-5)',
- `node_name` VARCHAR(50) DEFAULT NULL COMMENT '当前节点名称(冗余)',
- `risk_level` VARCHAR(20) DEFAULT NULL COMMENT '风险等级(字典:高/中/低风险)',
- `risk_desc` VARCHAR(2000) DEFAULT NULL COMMENT '风险描述',
- `control_measures` VARCHAR(2000) DEFAULT NULL COMMENT '控制措施',
- `handler_id` BIGINT DEFAULT NULL COMMENT '处理人ID',
- `handler_name` VARCHAR(50) DEFAULT NULL COMMENT '处理人',
- `status` VARCHAR(20) DEFAULT '处置中' COMMENT '状态(字典:处置中/已闭环)',
- `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
- `tenant_id` VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
- `create_dept` BIGINT DEFAULT NULL COMMENT '创建部门',
- `create_by` BIGINT DEFAULT NULL COMMENT '创建人',
- `create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
- `update_by` BIGINT DEFAULT NULL COMMENT '更新人',
- `update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_case_code` (`case_code`),
- KEY `idx_inspection_id` (`inspection_id`),
- KEY `idx_status_node` (`status`, `current_node`),
- KEY `idx_store_id` (`store_id`)
- ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='监督抽检 - 不合格案件主表';
- -- 2.3 案件节点处理记录
- CREATE TABLE IF NOT EXISTS `risk_supervision_case_node` (
- `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
- `case_id` BIGINT NOT NULL COMMENT '案件ID',
- `node_code` INT NOT NULL COMMENT '节点编号 1-5',
- `node_name` VARCHAR(50) DEFAULT NULL COMMENT '节点名称',
- `opinion` VARCHAR(2000) DEFAULT NULL COMMENT '当前节点处理意见',
- `attachment_url` VARCHAR(500) DEFAULT NULL COMMENT '凭证附件URL(MinIO)',
- `attachment_name` VARCHAR(200) DEFAULT NULL COMMENT '凭证附件原始文件名',
- `handler_id` BIGINT DEFAULT NULL COMMENT '处理人ID',
- `handler_name` VARCHAR(50) DEFAULT NULL COMMENT '处理人',
- `handle_time` DATETIME DEFAULT NULL COMMENT '处理时间',
- `tenant_id` VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
- `create_dept` BIGINT DEFAULT NULL COMMENT '创建部门',
- `create_by` BIGINT DEFAULT NULL COMMENT '创建人',
- `create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
- PRIMARY KEY (`id`),
- KEY `idx_case_id_node` (`case_id`, `node_code`)
- ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='监督抽检 - 案件节点处理记录';
- -- 2.4 平台客诉主表
- CREATE TABLE IF NOT EXISTS `risk_supervision_complaint` (
- `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
- `complaint_code` VARCHAR(50) NOT NULL COMMENT '客诉编号 TS+yyyyMMdd+4位序号',
- `source` VARCHAR(50) DEFAULT NULL COMMENT '客诉来源(字典)',
- `complainant_name` VARCHAR(50) DEFAULT NULL COMMENT '投诉人姓名',
- `complainant_phone` VARCHAR(20) DEFAULT NULL COMMENT '投诉人电话',
- `store_id` BIGINT DEFAULT NULL COMMENT '涉事门店ID',
- `store_name` VARCHAR(200) DEFAULT NULL COMMENT '涉事门店',
- `transfer_time` DATETIME DEFAULT NULL COMMENT '移交时间',
- `complaint_content` TEXT COMMENT '客诉内容',
- `attachment_url` VARCHAR(500) DEFAULT NULL COMMENT '附件URL(MinIO)',
- `attachment_name` VARCHAR(200) DEFAULT NULL COMMENT '附件原始文件名',
- `current_node` INT DEFAULT 1 COMMENT '当前节点(1-7)',
- `node_name` VARCHAR(50) DEFAULT NULL COMMENT '当前节点名称',
- `status` VARCHAR(20) DEFAULT '处置中' COMMENT '状态(字典:处置中/已闭环)',
- `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
- `tenant_id` VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
- `create_dept` BIGINT DEFAULT NULL COMMENT '创建部门',
- `create_by` BIGINT DEFAULT NULL COMMENT '创建人',
- `create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
- `update_by` BIGINT DEFAULT NULL COMMENT '更新人',
- `update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
- PRIMARY KEY (`id`),
- UNIQUE KEY `uk_complaint_code` (`complaint_code`),
- KEY `idx_status_node` (`status`, `current_node`),
- KEY `idx_transfer_time` (`transfer_time`),
- KEY `idx_store_id` (`store_id`)
- ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='监督抽检 - 平台客诉主表';
- -- 2.5 客诉节点处理记录
- CREATE TABLE IF NOT EXISTS `risk_supervision_complaint_node` (
- `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
- `complaint_id` BIGINT NOT NULL COMMENT '客诉ID',
- `node_code` INT NOT NULL COMMENT '节点编号 1-7',
- `node_name` VARCHAR(50) DEFAULT NULL COMMENT '节点名称',
- `opinion` VARCHAR(2000) DEFAULT NULL COMMENT '当前环节处理意见',
- `attachment_url` VARCHAR(500) DEFAULT NULL COMMENT '凭证附件URL(MinIO)',
- `attachment_name` VARCHAR(200) DEFAULT NULL COMMENT '凭证附件原始文件名',
- `handler_id` BIGINT DEFAULT NULL COMMENT '处理人ID',
- `handler_name` VARCHAR(50) DEFAULT NULL COMMENT '处理人',
- `handle_time` DATETIME DEFAULT NULL COMMENT '处理时间',
- `tenant_id` VARCHAR(20) DEFAULT '000000' COMMENT '租户ID',
- `create_dept` BIGINT DEFAULT NULL COMMENT '创建部门',
- `create_by` BIGINT DEFAULT NULL COMMENT '创建人',
- `create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
- PRIMARY KEY (`id`),
- KEY `idx_complaint_id_node` (`complaint_id`, `node_code`)
- ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='监督抽检 - 客诉节点处理记录';
- SET FOREIGN_KEY_CHECKS = 1;
- -- ============================================================
- -- 完成 - 监督抽检 / 平台客诉 模块升级
- -- ============================================================
|