|
|
@@ -0,0 +1,331 @@
|
|
|
+-- ==================== 艾灸椅管理后台初始化 SQL ====================
|
|
|
+-- 执行前请确保已创建数据库:CREATE DATABASE aijiuyi_admin DEFAULT CHARACTER SET utf8mb4;
|
|
|
+-- 数据库连接:jdbc:mysql://localhost:3306/aijiuyi_admin
|
|
|
+
|
|
|
+SET NAMES utf8mb4;
|
|
|
+SET FOREIGN_KEY_CHECKS = 0;
|
|
|
+
|
|
|
+-- ----------------------------
|
|
|
+-- 系统操作日志表
|
|
|
+-- ----------------------------
|
|
|
+CREATE TABLE IF NOT EXISTS `sys_log` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `user_id` BIGINT COMMENT '请求用户ID',
|
|
|
+ `user_name` VARCHAR(100) COMMENT '请求用户名',
|
|
|
+ `user_type` TINYINT COMMENT '操作者类型:1=普通用户,2=专家,3=管理员(统一使用app_user表)',
|
|
|
+ `request_url` VARCHAR(500) COMMENT '请求接口路径',
|
|
|
+ `request_params` TEXT COMMENT '请求参数(JSON格式)',
|
|
|
+ `request_result` TEXT COMMENT '请求结果(JSON格式,超2000字符截断)',
|
|
|
+ `api_desc` VARCHAR(200) COMMENT '接口说明(来自@Log注解)',
|
|
|
+ `operation_type` VARCHAR(20) COMMENT '操作方式(查询/新增/更新/删除/其他)',
|
|
|
+ `request_ip` VARCHAR(50) COMMENT '请求客户端IP',
|
|
|
+ `operation_module` VARCHAR(100) COMMENT '操作模块(来自@Log注解)',
|
|
|
+ `request_id` VARCHAR(50) COMMENT '请求唯一ID(同一请求的所有日志共享)',
|
|
|
+ `create_time` DATETIME COMMENT '创建时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_request_id` (`request_id`),
|
|
|
+ KEY `idx_user_id` (`user_id`),
|
|
|
+ KEY `idx_create_time` (`create_time`)
|
|
|
+) ENGINE = InnoDB
|
|
|
+ DEFAULT CHARSET = utf8mb4
|
|
|
+ COMMENT = '系统操作日志表';
|
|
|
+
|
|
|
+-- ----------------------------
|
|
|
+-- 应用用户表(手机号验证码登录的普通用户/专家)
|
|
|
+-- ----------------------------
|
|
|
+CREATE TABLE IF NOT EXISTS `app_user` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `phone` VARCHAR(20) COMMENT '手机号(唯一,用于登录)',
|
|
|
+ `username` VARCHAR(64) COMMENT '用户名(管理员登录用,唯一)',
|
|
|
+ `password` VARCHAR(64) COMMENT '密码(MD5加密,管理员用)',
|
|
|
+ `nickname` VARCHAR(100) COMMENT '昵称',
|
|
|
+ `avatar` VARCHAR(500) COMMENT '头像URL',
|
|
|
+ `user_type` TINYINT NOT NULL DEFAULT 1 COMMENT '用户类型:1=普通用户,2=专家,3=管理员',
|
|
|
+ `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1=正常,0=禁用',
|
|
|
+ `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
|
|
|
+ `create_time` DATETIME COMMENT '创建时间',
|
|
|
+ `update_time` DATETIME COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `uk_phone` (`phone`),
|
|
|
+ UNIQUE KEY `uk_username` (`username`)
|
|
|
+) ENGINE = InnoDB
|
|
|
+ DEFAULT CHARSET = utf8mb4
|
|
|
+ COMMENT = '应用用户表';
|
|
|
+
|
|
|
+-- 初始化管理员账号(密码:admin123,MD5后为:0192023a7bbd73250516f069df18b500)
|
|
|
+INSERT INTO `app_user` (`username`, `password`, `nickname`, `user_type`, `status`, `deleted`, `create_time`, `update_time`)
|
|
|
+VALUES ('admin', MD5('admin123'), '超级管理员', 3, 1, 0, NOW(), NOW());
|
|
|
+
|
|
|
+-- ----------------------------
|
|
|
+-- 子用户信息表(属于某个应用用户)
|
|
|
+-- ----------------------------
|
|
|
+CREATE TABLE IF NOT EXISTS `user_profile` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `user_id` BIGINT COMMENT '所属应用用户ID(关联 app_user.id)',
|
|
|
+ `name` VARCHAR(50) NOT NULL COMMENT '姓名',
|
|
|
+ `gender` TINYINT COMMENT '性别:1=男,2=女',
|
|
|
+ `age` INT COMMENT '年龄',
|
|
|
+ `phone` VARCHAR(20) COMMENT '手机号(唯一)',
|
|
|
+ `shoulder_width` DECIMAL(5,1) COMMENT '肩宽(cm)',
|
|
|
+ `body_height` DECIMAL(5,1) COMMENT '身长/坐高(cm)',
|
|
|
+ `finger_width_1` DECIMAL(4,2) COMMENT '1寸指宽(cm,选填,提高穴位精度)',
|
|
|
+ `finger_width_15` DECIMAL(4,2) COMMENT '1.5寸指宽(cm,选填)',
|
|
|
+ `finger_width_3` DECIMAL(4,2) COMMENT '3寸指宽(cm,选填)',
|
|
|
+ `acupoint_table_id` BIGINT COMMENT '用户穴位表ID',
|
|
|
+ `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
|
|
|
+ `create_time` DATETIME COMMENT '创建时间',
|
|
|
+ `update_time` DATETIME COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_user_id` (`user_id`),
|
|
|
+ KEY `idx_phone` (`phone`)
|
|
|
+) ENGINE = InnoDB
|
|
|
+ DEFAULT CHARSET = utf8mb4
|
|
|
+ COMMENT = '子用户信息表';
|
|
|
+
|
|
|
+-- ----------------------------
|
|
|
+-- 用户设备绑定表(子用户与设备绑定)
|
|
|
+-- ----------------------------
|
|
|
+CREATE TABLE IF NOT EXISTS `user_device` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `user_id` BIGINT NOT NULL COMMENT '所属子用户ID(关联 user_profile.id)',
|
|
|
+ `device_code` VARCHAR(100) NOT NULL COMMENT '设备唯一编码',
|
|
|
+ `device_name` VARCHAR(100) COMMENT '设备名称',
|
|
|
+ `device_model` VARCHAR(100) COMMENT '设备型号',
|
|
|
+ `is_primary` TINYINT NOT NULL DEFAULT 0 COMMENT '是否主设备:1=是,0=否',
|
|
|
+ `online_status` TINYINT NOT NULL DEFAULT 0 COMMENT '在线状态:1=在线,0=离线',
|
|
|
+ `status` TINYINT NOT NULL DEFAULT 1 COMMENT '绑定状态:1=已绑定,0=已解绑',
|
|
|
+ `bind_time` DATETIME COMMENT '绑定时间',
|
|
|
+ `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
|
|
|
+ `create_time` DATETIME COMMENT '创建时间',
|
|
|
+ `update_time` DATETIME COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_user_id` (`user_id`),
|
|
|
+ KEY `idx_device_code` (`device_code`)
|
|
|
+) ENGINE = InnoDB
|
|
|
+ DEFAULT CHARSET = utf8mb4
|
|
|
+ COMMENT = '用户设备绑定表(子用户绑定设备)';
|
|
|
+
|
|
|
+-- ----------------------------
|
|
|
+-- 艾灸椅设备表
|
|
|
+-- ----------------------------
|
|
|
+CREATE TABLE IF NOT EXISTS `device` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `device_code` VARCHAR(50) NOT NULL COMMENT '设备编号(唯一,如:AJY001)',
|
|
|
+ `device_name` VARCHAR(100) NOT NULL COMMENT '设备名称(如:艾灸椅-001)',
|
|
|
+ `device_model` VARCHAR(50) COMMENT '设备型号(AJY-2026 / AJY-2025)',
|
|
|
+ `serial_no` VARCHAR(50) COMMENT '设备序列号(唯一)',
|
|
|
+ `firmware_version` VARCHAR(20) COMMENT '固件版本(如:v1.2.0)',
|
|
|
+ `online_status` TINYINT NOT NULL DEFAULT 0 COMMENT '在线状态:1=在线,0=离线',
|
|
|
+ `last_online_time` DATETIME COMMENT '最后在线时间',
|
|
|
+ `remark` VARCHAR(200) COMMENT '备注',
|
|
|
+ `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
|
|
|
+ `create_time` DATETIME COMMENT '创建时间',
|
|
|
+ `update_time` DATETIME COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `uk_device_code` (`device_code`),
|
|
|
+ UNIQUE KEY `uk_serial_no` (`serial_no`)
|
|
|
+) ENGINE = InnoDB
|
|
|
+ DEFAULT CHARSET = utf8mb4
|
|
|
+ COMMENT = '艾灸椅设备表';
|
|
|
+
|
|
|
+-- ----------------------------
|
|
|
+-- 穴位信息表
|
|
|
+-- ----------------------------
|
|
|
+CREATE TABLE IF NOT EXISTS `acupoint` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `acupoint_code` VARCHAR(100) NOT NULL COMMENT '穴位编码(唯一标识,如 dazhui)',
|
|
|
+ `name` VARCHAR(50) NOT NULL COMMENT '穴位名称(如:大椎穴)',
|
|
|
+ `meridian` VARCHAR(100) COMMENT '所属经络(如:督脉、足太阳膀胱经)',
|
|
|
+ `effects` VARCHAR(500) COMMENT '功效描述(逗号分隔,如:驱寒,祛湿)',
|
|
|
+ `location_type` TINYINT COMMENT '定位方式:1=相对定位,2=绝对定位',
|
|
|
+ `longitude_offset` DECIMAL(6,2) COMMENT '相对大椎穴纵向偏移(寸)',
|
|
|
+ `lateral_offset` DECIMAL(6,2) COMMENT '相对大椎穴横向偏移(寸,双侧穴位填写)',
|
|
|
+ `side` TINYINT COMMENT '侧别:1=中心,2=左侧,3=右侧,4=双侧',
|
|
|
+ `finger_width_type` TINYINT COMMENT '指寸类型:1=一寸,2=1.5寸,3=三寸',
|
|
|
+ `abs_x` DECIMAL(8,2) COMMENT '绝对坐标X(mm)',
|
|
|
+ `abs_y` DECIMAL(8,2) COMMENT '绝对坐标Y(mm)',
|
|
|
+ `abs_z` DECIMAL(8,2) COMMENT '绝对坐标Z(mm)',
|
|
|
+ `gender` TINYINT NOT NULL DEFAULT 0 COMMENT '适用性别:0=不限,1=仅男,2=仅女',
|
|
|
+ `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1=活跃,0=待完善',
|
|
|
+ `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
|
|
|
+ `create_time` DATETIME COMMENT '创建时间',
|
|
|
+ `update_time` DATETIME COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `uk_acupoint_code` (`acupoint_code`)
|
|
|
+) ENGINE = InnoDB
|
|
|
+ DEFAULT CHARSET = utf8mb4
|
|
|
+ COMMENT = '穴位信息表';
|
|
|
+
|
|
|
+-- 初始化12个常用穴位
|
|
|
+INSERT INTO `acupoint` (`acupoint_code`, `name`, `meridian`, `effects`, `location_type`, `longitude_offset`, `lateral_offset`, `side`, `finger_width_type`, `gender`, `status`, `deleted`, `create_time`, `update_time`) VALUES
|
|
|
+('dazhui', '大椎穴', '督脉', '驱寒,祛湿', 1, 0.00, NULL, 1, 1, 0, 1, 0, NOW(), NOW()),
|
|
|
+('fengmen', '风门穴', '足太阳膀胱经', '祛风,解表', 1, 2.00, 1.50, 4, 1, 0, 1, 0, NOW(), NOW()),
|
|
|
+('feishu', '肺俞穴', '足太阳膀胱经', '宣肺,止咳', 1, 3.00, 1.50, 4, 1, 0, 1, 0, NOW(), NOW()),
|
|
|
+('xinshu', '心俞穴', '足太阳膀胱经', '养心,安神', 1, 5.00, 1.50, 4, 1, 0, 1, 0, NOW(), NOW()),
|
|
|
+('ganshu', '肝俞穴', '足太阳膀胱经', '疏肝,理气', 1, 9.00, 1.50, 4, 1, 0, 1, 0, NOW(), NOW()),
|
|
|
+('pishu', '脾俞穴', '足太阳膀胱经', '健脾,祛湿', 1, 11.00, 1.50, 4, 1, 0, 1, 0, NOW(), NOW()),
|
|
|
+('weishu', '胃俞穴', '足太阳膀胱经', '和胃,消食', 1, 12.00, 1.50, 4, 1, 0, 1, 0, NOW(), NOW()),
|
|
|
+('shenshu', '肾俞穴', '足太阳膀胱经', '补肾,扶阳', 1, 14.00, 1.50, 4, 1, 0, 1, 0, NOW(), NOW()),
|
|
|
+('mingmen', '命门穴', '督脉', '扶阳,固本', 1, 14.00, NULL, 1, 1, 0, 1, 0, NOW(), NOW()),
|
|
|
+('zhongwan', '中脘穴', '任脉', '健脾,和胃', 2, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
|
|
|
+('qihai', '气海穴', '任脉', '扶阳,益气', 2, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
|
|
|
+('guanyuan', '关元穴', '任脉', '温肾,扶阳', 2, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW());
|
|
|
+
|
|
|
+-- ----------------------------
|
|
|
+-- 用户穴位坐标表(根据用户体型数据和穴位信息计算生成)
|
|
|
+-- ----------------------------
|
|
|
+CREATE TABLE IF NOT EXISTS `user_acupoint` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `user_id` BIGINT NOT NULL COMMENT '子用户ID(关联 user_profile.id)',
|
|
|
+ `acupoint_id` BIGINT NOT NULL COMMENT '穴位ID(关联 acupoint.id)',
|
|
|
+ `acupoint_name` VARCHAR(50) NOT NULL COMMENT '穴位名称(冗余存储,加速查询)',
|
|
|
+ `acupoint_side` VARCHAR(10) NOT NULL DEFAULT 'center' COMMENT '侧别:center=中心,left=左侧,right=右侧',
|
|
|
+ `cun_value` DECIMAL(6,2) COMMENT '相对大椎穴纵向偏移(寸)',
|
|
|
+ `cun_type` VARCHAR(10) COMMENT '指寸类型:1寸/1.5寸/3寸',
|
|
|
+ `coordinate_x` DECIMAL(8,2) COMMENT '计算后的X坐标(mm,相对大椎穴,向右为正)',
|
|
|
+ `coordinate_y` DECIMAL(8,2) COMMENT '计算后的Y坐标(mm,相对大椎穴,向下为正)',
|
|
|
+ `create_time` DATETIME COMMENT '首次生成时间',
|
|
|
+ `update_time` DATETIME COMMENT '最后更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_user_id` (`user_id`),
|
|
|
+ KEY `idx_acupoint_id` (`acupoint_id`)
|
|
|
+) ENGINE = InnoDB
|
|
|
+ DEFAULT CHARSET = utf8mb4
|
|
|
+ COMMENT = '用户穴位坐标表(按用户体型计算的个性化穴位坐标)';
|
|
|
+
|
|
|
+-- ----------------------------
|
|
|
+-- 艾灸手法表
|
|
|
+-- ----------------------------
|
|
|
+CREATE TABLE IF NOT EXISTS `moxibustion_technique` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `technique_code` VARCHAR(50) NOT NULL COMMENT '手法编码(唯一标识,如 oneclick)',
|
|
|
+ `name` VARCHAR(50) NOT NULL COMMENT '手法名称(如:一键艾灸)',
|
|
|
+ `motion_mode` VARCHAR(20) NOT NULL COMMENT '运动模式:default=默认工艺,fixed=固定不动,updown=上下移动,circular=圆周运动,dotted=点状移动',
|
|
|
+ `temp_min` DECIMAL(4,1) NOT NULL COMMENT '温度范围最小值(°C,35-50)',
|
|
|
+ `temp_max` DECIMAL(4,1) NOT NULL COMMENT '温度范围最大值(°C,35-50)',
|
|
|
+ `time_min` INT NOT NULL COMMENT '时间范围最小值(分钟,1-30)',
|
|
|
+ `time_max` INT NOT NULL COMMENT '时间范围最大值(分钟,1-30)',
|
|
|
+ `motion_amplitude` DECIMAL(4,1) COMMENT '运动幅度(mm,1-20,运动模式非固定不动时必填)',
|
|
|
+ `motion_speed` DECIMAL(4,1) COMMENT '运动速度(mm/s,1-10,运动模式非固定不动时必填)',
|
|
|
+ `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1=启用,0=禁用',
|
|
|
+ `remark` VARCHAR(200) COMMENT '备注(最长200字符)',
|
|
|
+ `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
|
|
|
+ `create_time` DATETIME COMMENT '创建时间',
|
|
|
+ `update_time` DATETIME COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `uk_technique_code` (`technique_code`)
|
|
|
+) ENGINE = InnoDB
|
|
|
+ DEFAULT CHARSET = utf8mb4
|
|
|
+ COMMENT = '艾灸手法表';
|
|
|
+
|
|
|
+-- 初始化5个内置手法
|
|
|
+INSERT INTO `moxibustion_technique` (`technique_code`, `name`, `motion_mode`, `temp_min`, `temp_max`, `time_min`, `time_max`, `motion_amplitude`, `motion_speed`, `status`, `deleted`, `create_time`, `update_time`) VALUES
|
|
|
+('oneclick', '一键艾灸', 'default', 42.0, 45.0, 30, 30, NULL, NULL, 1, 0, NOW(), NOW()),
|
|
|
+('gentle', '温和灸', 'fixed', 35.0, 50.0, 1, 30, NULL, NULL, 1, 0, NOW(), NOW()),
|
|
|
+('pecking', '雀啄灸', 'updown', 35.0, 50.0, 1, 30, 10.0, 5.0, 1, 0, NOW(), NOW()),
|
|
|
+('circular', '回旋灸', 'circular', 35.0, 50.0, 1, 30, 15.0, 3.0, 1, 0, NOW(), NOW()),
|
|
|
+('sparrow', '麻雀灸', 'dotted', 35.0, 50.0, 1, 30, 8.0, 4.0, 1, 0, NOW(), NOW());
|
|
|
+
|
|
|
+-- ----------------------------
|
|
|
+-- 方案表(艾灸方案)
|
|
|
+-- ----------------------------
|
|
|
+CREATE TABLE IF NOT EXISTS `plan` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `plan_code` VARCHAR(50) NOT NULL COMMENT '方案编码(唯一标识,如 S001)',
|
|
|
+ `name` VARCHAR(100) NOT NULL COMMENT '方案名称(最长100字符)',
|
|
|
+ `mode_type` TINYINT NOT NULL COMMENT '模式类型:1=一键艾灸,2=专业模式,3=自定义模式,4=延年圣手',
|
|
|
+ `effect_type` VARCHAR(20) COMMENT '功效类型:驱寒/祛湿/祛风/化瘀/活血/化痰/养颜/扶阳',
|
|
|
+ `symptoms` VARCHAR(500) COMMENT '适用症状(逗号分隔:怕冷,感冒,咳嗽,...)',
|
|
|
+ `applicable_gender` TINYINT NOT NULL DEFAULT 0 COMMENT '适用人群:0=不限,1=仅男,2=仅女',
|
|
|
+ `age_min` INT NOT NULL DEFAULT 1 COMMENT '适用年龄最小值(岁)',
|
|
|
+ `age_max` INT NOT NULL DEFAULT 120 COMMENT '适用年龄最大值(岁)',
|
|
|
+ `description` VARCHAR(200) COMMENT '方案描述(最长200字符)',
|
|
|
+ `author_type` TINYINT NOT NULL DEFAULT 1 COMMENT '创作人类型:1=管理员,2=普通用户,3=专家',
|
|
|
+ `author_id` BIGINT COMMENT '创作人ID(对应 app_user.id)',
|
|
|
+ `author_name` VARCHAR(100) COMMENT '创作人名称(冗余存储,加速查询)',
|
|
|
+ `status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态:0=草稿,1=已发布,2=已下架',
|
|
|
+ `use_count` INT NOT NULL DEFAULT 0 COMMENT '使用人数',
|
|
|
+ `avg_rating` DECIMAL(3,1) COMMENT '平均评分',
|
|
|
+ `last_use_time` DATETIME COMMENT '最后使用时间',
|
|
|
+ `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
|
|
|
+ `create_time` DATETIME COMMENT '创建时间',
|
|
|
+ `update_time` DATETIME COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `uk_plan_code` (`plan_code`)
|
|
|
+) ENGINE = InnoDB
|
|
|
+ DEFAULT CHARSET = utf8mb4
|
|
|
+ COMMENT = '方案表(艾灸方案)';
|
|
|
+
|
|
|
+-- ----------------------------
|
|
|
+-- 方案步骤表
|
|
|
+-- ----------------------------
|
|
|
+CREATE TABLE IF NOT EXISTS `plan_step` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `plan_id` BIGINT NOT NULL COMMENT '方案ID(关联 plan.id)',
|
|
|
+ `step_order` INT NOT NULL COMMENT '步骤序号(从1开始)',
|
|
|
+ `acupoint_id` BIGINT COMMENT '穴位ID(关联 acupoint.id)',
|
|
|
+ `acupoint_name` VARCHAR(50) NOT NULL COMMENT '穴位名称(冗余存储)',
|
|
|
+ `side` TINYINT NOT NULL COMMENT '侧别:1=中心,2=左侧,3=右侧,4=双侧',
|
|
|
+ `temperature` DECIMAL(4,1) NOT NULL COMMENT '温度(°C,35-50)',
|
|
|
+ `duration` INT NOT NULL COMMENT '时间(分钟,1-30)',
|
|
|
+ `technique_id` BIGINT COMMENT '艾灸手法ID(关联 moxibustion_technique.id)',
|
|
|
+ `technique_name` VARCHAR(50) COMMENT '艾灸手法名称(冗余存储)',
|
|
|
+ `remark` VARCHAR(100) COMMENT '备注(最长100字符)',
|
|
|
+ `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
|
|
|
+ `create_time` DATETIME COMMENT '创建时间',
|
|
|
+ `update_time` DATETIME COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_plan_id` (`plan_id`)
|
|
|
+) ENGINE = InnoDB
|
|
|
+ DEFAULT CHARSET = utf8mb4
|
|
|
+ COMMENT = '方案步骤表';
|
|
|
+
|
|
|
+-- ----------------------------
|
|
|
+-- 用户方案表(用户个性化工艺参数方案)
|
|
|
+-- ----------------------------
|
|
|
+CREATE TABLE IF NOT EXISTS `user_plan` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `user_id` BIGINT NOT NULL COMMENT '子用户ID(关联 user_profile.id)',
|
|
|
+ `plan_id` BIGINT NOT NULL COMMENT '方案ID(关联 plan.id)',
|
|
|
+ `plan_code` VARCHAR(50) NOT NULL COMMENT '方案编码(冗余存储)',
|
|
|
+ `plan_name` VARCHAR(100) NOT NULL COMMENT '方案名称(冗余存储)',
|
|
|
+ `mode_type` TINYINT NOT NULL COMMENT '模式类型:1=一键艾灸,2=专业模式,3=自定义模式,4=延年圣手',
|
|
|
+ `author_name` VARCHAR(100) COMMENT '创作人名称(冗余存储)',
|
|
|
+ `step_count` INT NOT NULL DEFAULT 0 COMMENT '步骤数量',
|
|
|
+ `use_count` INT NOT NULL DEFAULT 0 COMMENT '使用次数',
|
|
|
+ `steps_json` TEXT COMMENT '个性化工艺步骤(JSON格式,含坐标/温度/时间等)',
|
|
|
+ `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
|
|
|
+ `create_time` DATETIME COMMENT '订阅/生成时间',
|
|
|
+ `update_time` DATETIME COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ KEY `idx_user_id` (`user_id`),
|
|
|
+ KEY `idx_plan_id` (`plan_id`)
|
|
|
+) ENGINE = InnoDB
|
|
|
+ DEFAULT CHARSET = utf8mb4
|
|
|
+ COMMENT = '用户方案表(用户个性化工艺参数方案)';
|
|
|
+
|
|
|
+-- ----------------------------
|
|
|
+-- 管理员权限配置表
|
|
|
+-- ----------------------------
|
|
|
+CREATE TABLE IF NOT EXISTS `admin_permission` (
|
|
|
+ `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
|
|
+ `admin_id` BIGINT NOT NULL COMMENT '管理员ID(关联 app_user.id)',
|
|
|
+ `route_paths` TEXT COMMENT '可访问的路由路径(JSON数组,如 ["/dashboard","/device"])',
|
|
|
+ `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
|
|
|
+ `create_time` DATETIME COMMENT '创建时间',
|
|
|
+ `update_time` DATETIME COMMENT '更新时间',
|
|
|
+ PRIMARY KEY (`id`),
|
|
|
+ UNIQUE KEY `uk_admin_id` (`admin_id`)
|
|
|
+) ENGINE = InnoDB
|
|
|
+ DEFAULT CHARSET = utf8mb4
|
|
|
+ COMMENT = '管理员权限配置表';
|
|
|
+
|
|
|
+-- app_user 表追加管理员相关字段(首次执行时添加,若字段已存在请注释掉此段)
|
|
|
+ALTER TABLE `app_user`
|
|
|
+ ADD COLUMN `admin_role` TINYINT DEFAULT NULL COMMENT '管理员角色:1=超级管理员,2=运营人员,3=只读用户(仅 userType=3 时有效)',
|
|
|
+ ADD COLUMN `last_login_time` DATETIME DEFAULT NULL COMMENT '最后登录时间';
|
|
|
+
|
|
|
+-- 更新初始管理员为超级管理员角色
|
|
|
+UPDATE `app_user` SET `admin_role` = 1 WHERE `username` = 'admin' AND `admin_role` IS NULL;
|
|
|
+
|
|
|
+SET FOREIGN_KEY_CHECKS = 1;
|