init.sql 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. -- ==================== 艾灸椅管理后台初始化 SQL ====================
  2. -- 执行前请确保已创建数据库:CREATE DATABASE aijiuyi_admin DEFAULT CHARACTER SET utf8mb4;
  3. -- 数据库连接:jdbc:mysql://localhost:3306/aijiuyi_admin
  4. SET NAMES utf8mb4;
  5. SET FOREIGN_KEY_CHECKS = 0;
  6. -- ----------------------------
  7. -- 系统操作日志表
  8. -- ----------------------------
  9. CREATE TABLE IF NOT EXISTS `sys_log` (
  10. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  11. `user_id` BIGINT COMMENT '请求用户ID',
  12. `user_name` VARCHAR(100) COMMENT '请求用户名',
  13. `user_type` TINYINT COMMENT '操作者类型:1=普通用户,2=专家,3=管理员(统一使用app_user表)',
  14. `request_url` VARCHAR(500) COMMENT '请求接口路径',
  15. `request_params` TEXT COMMENT '请求参数(JSON格式)',
  16. `request_result` TEXT COMMENT '请求结果(JSON格式,超2000字符截断)',
  17. `api_desc` VARCHAR(200) COMMENT '接口说明(来自@Log注解)',
  18. `operation_type` VARCHAR(20) COMMENT '操作方式(查询/新增/更新/删除/其他)',
  19. `request_ip` VARCHAR(50) COMMENT '请求客户端IP',
  20. `operation_module` VARCHAR(100) COMMENT '操作模块(来自@Log注解)',
  21. `request_id` VARCHAR(50) COMMENT '请求唯一ID(同一请求的所有日志共享)',
  22. `create_time` DATETIME COMMENT '创建时间',
  23. PRIMARY KEY (`id`),
  24. KEY `idx_request_id` (`request_id`),
  25. KEY `idx_user_id` (`user_id`),
  26. KEY `idx_create_time` (`create_time`)
  27. ) ENGINE = InnoDB
  28. DEFAULT CHARSET = utf8mb4
  29. COMMENT = '系统操作日志表';
  30. -- ----------------------------
  31. -- 应用用户表(手机号验证码登录的普通用户/专家)
  32. -- ----------------------------
  33. CREATE TABLE IF NOT EXISTS `app_user` (
  34. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  35. `phone` VARCHAR(20) COMMENT '手机号(唯一,用于登录)',
  36. `username` VARCHAR(64) COMMENT '用户名(管理员登录用,唯一)',
  37. `password` VARCHAR(64) COMMENT '密码(MD5加密,管理员用)',
  38. `nickname` VARCHAR(100) COMMENT '昵称',
  39. `avatar` VARCHAR(500) COMMENT '头像URL',
  40. `user_type` TINYINT NOT NULL DEFAULT 1 COMMENT '用户类型:1=普通用户,2=专家,3=管理员',
  41. `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1=正常,0=禁用',
  42. `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
  43. `create_time` DATETIME COMMENT '创建时间',
  44. `update_time` DATETIME COMMENT '更新时间',
  45. PRIMARY KEY (`id`),
  46. UNIQUE KEY `uk_phone` (`phone`),
  47. UNIQUE KEY `uk_username` (`username`)
  48. ) ENGINE = InnoDB
  49. DEFAULT CHARSET = utf8mb4
  50. COMMENT = '应用用户表';
  51. -- 初始化管理员账号(密码:admin123,MD5后为:0192023a7bbd73250516f069df18b500)
  52. INSERT INTO `app_user` (`username`, `password`, `nickname`, `user_type`, `status`, `deleted`, `create_time`, `update_time`)
  53. VALUES ('admin', MD5('admin123'), '超级管理员', 3, 1, 0, NOW(), NOW());
  54. -- ----------------------------
  55. -- 子用户信息表(属于某个应用用户)
  56. -- ----------------------------
  57. CREATE TABLE IF NOT EXISTS `user_profile` (
  58. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  59. `user_id` BIGINT COMMENT '所属应用用户ID(关联 app_user.id)',
  60. `name` VARCHAR(50) NOT NULL COMMENT '姓名',
  61. `gender` TINYINT COMMENT '性别:1=男,2=女',
  62. `age` INT COMMENT '年龄',
  63. `phone` VARCHAR(20) COMMENT '手机号(唯一)',
  64. `shoulder_width` DECIMAL(5,1) COMMENT '肩宽(cm)',
  65. `body_height` DECIMAL(5,1) COMMENT '身长/坐高(cm)',
  66. `finger_width_1` DECIMAL(4,2) COMMENT '1寸指宽(cm,选填,提高穴位精度)',
  67. `finger_width_15` DECIMAL(4,2) COMMENT '1.5寸指宽(cm,选填)',
  68. `finger_width_3` DECIMAL(4,2) COMMENT '3寸指宽(cm,选填)',
  69. `acupoint_table_id` BIGINT COMMENT '用户穴位表ID',
  70. `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
  71. `create_time` DATETIME COMMENT '创建时间',
  72. `update_time` DATETIME COMMENT '更新时间',
  73. PRIMARY KEY (`id`),
  74. KEY `idx_user_id` (`user_id`),
  75. KEY `idx_phone` (`phone`)
  76. ) ENGINE = InnoDB
  77. DEFAULT CHARSET = utf8mb4
  78. COMMENT = '子用户信息表';
  79. -- ----------------------------
  80. -- 用户设备绑定表(子用户与设备绑定)
  81. -- ----------------------------
  82. CREATE TABLE IF NOT EXISTS `user_device` (
  83. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  84. `user_id` BIGINT NOT NULL COMMENT '所属子用户ID(关联 user_profile.id)',
  85. `device_code` VARCHAR(100) NOT NULL COMMENT '设备唯一编码',
  86. `device_name` VARCHAR(100) COMMENT '设备名称',
  87. `device_model` VARCHAR(100) COMMENT '设备型号',
  88. `is_primary` TINYINT NOT NULL DEFAULT 0 COMMENT '是否主设备:1=是,0=否',
  89. `online_status` TINYINT NOT NULL DEFAULT 0 COMMENT '在线状态:1=在线,0=离线',
  90. `status` TINYINT NOT NULL DEFAULT 1 COMMENT '绑定状态:1=已绑定,0=已解绑',
  91. `bind_time` DATETIME COMMENT '绑定时间',
  92. `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
  93. `create_time` DATETIME COMMENT '创建时间',
  94. `update_time` DATETIME COMMENT '更新时间',
  95. PRIMARY KEY (`id`),
  96. KEY `idx_user_id` (`user_id`),
  97. KEY `idx_device_code` (`device_code`)
  98. ) ENGINE = InnoDB
  99. DEFAULT CHARSET = utf8mb4
  100. COMMENT = '用户设备绑定表(子用户绑定设备)';
  101. -- ----------------------------
  102. -- 艾灸椅设备表
  103. -- ----------------------------
  104. CREATE TABLE IF NOT EXISTS `device` (
  105. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  106. `device_code` VARCHAR(50) NOT NULL COMMENT '设备编号(唯一,如:AJY001)',
  107. `device_name` VARCHAR(100) NOT NULL COMMENT '设备名称(如:艾灸椅-001)',
  108. `device_model` VARCHAR(50) COMMENT '设备型号(AJY-2026 / AJY-2025)',
  109. `serial_no` VARCHAR(50) COMMENT '设备序列号(唯一)',
  110. `firmware_version` VARCHAR(20) COMMENT '固件版本(如:v1.2.0)',
  111. `online_status` TINYINT NOT NULL DEFAULT 0 COMMENT '在线状态:1=在线,0=离线',
  112. `last_online_time` DATETIME COMMENT '最后在线时间',
  113. `remark` VARCHAR(200) COMMENT '备注',
  114. `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
  115. `create_time` DATETIME COMMENT '创建时间',
  116. `update_time` DATETIME COMMENT '更新时间',
  117. PRIMARY KEY (`id`),
  118. UNIQUE KEY `uk_device_code` (`device_code`),
  119. UNIQUE KEY `uk_serial_no` (`serial_no`)
  120. ) ENGINE = InnoDB
  121. DEFAULT CHARSET = utf8mb4
  122. COMMENT = '艾灸椅设备表';
  123. -- ----------------------------
  124. -- 穴位信息表
  125. -- ----------------------------
  126. CREATE TABLE IF NOT EXISTS `acupoint` (
  127. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  128. `acupoint_code` VARCHAR(100) NOT NULL COMMENT '穴位编码(唯一标识,如 dazhui)',
  129. `name` VARCHAR(50) NOT NULL COMMENT '穴位名称(如:大椎穴)',
  130. `meridian` VARCHAR(100) COMMENT '所属经络(如:督脉、足太阳膀胱经)',
  131. `effects` VARCHAR(500) COMMENT '功效描述(逗号分隔,如:驱寒,祛湿)',
  132. `location_type` TINYINT COMMENT '定位方式:1=相对定位,2=绝对定位',
  133. `longitude_offset` DECIMAL(6,2) COMMENT '相对大椎穴纵向偏移(寸)',
  134. `lateral_offset` DECIMAL(6,2) COMMENT '相对大椎穴横向偏移(寸,双侧穴位填写)',
  135. `side` TINYINT COMMENT '侧别:1=中心,2=左侧,3=右侧,4=双侧',
  136. `finger_width_type` TINYINT COMMENT '指寸类型:1=一寸,2=1.5寸,3=三寸',
  137. `abs_x` DECIMAL(8,2) COMMENT '绝对坐标X(mm)',
  138. `abs_y` DECIMAL(8,2) COMMENT '绝对坐标Y(mm)',
  139. `abs_z` DECIMAL(8,2) COMMENT '绝对坐标Z(mm)',
  140. `gender` TINYINT NOT NULL DEFAULT 0 COMMENT '适用性别:0=不限,1=仅男,2=仅女',
  141. `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1=活跃,0=待完善',
  142. `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
  143. `create_time` DATETIME COMMENT '创建时间',
  144. `update_time` DATETIME COMMENT '更新时间',
  145. PRIMARY KEY (`id`),
  146. UNIQUE KEY `uk_acupoint_code` (`acupoint_code`)
  147. ) ENGINE = InnoDB
  148. DEFAULT CHARSET = utf8mb4
  149. COMMENT = '穴位信息表';
  150. -- 初始化12个常用穴位
  151. 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
  152. ('dazhui', '大椎穴', '督脉', '驱寒,祛湿', 1, 0.00, NULL, 1, 1, 0, 1, 0, NOW(), NOW()),
  153. ('fengmen', '风门穴', '足太阳膀胱经', '祛风,解表', 1, 2.00, 1.50, 4, 1, 0, 1, 0, NOW(), NOW()),
  154. ('feishu', '肺俞穴', '足太阳膀胱经', '宣肺,止咳', 1, 3.00, 1.50, 4, 1, 0, 1, 0, NOW(), NOW()),
  155. ('xinshu', '心俞穴', '足太阳膀胱经', '养心,安神', 1, 5.00, 1.50, 4, 1, 0, 1, 0, NOW(), NOW()),
  156. ('ganshu', '肝俞穴', '足太阳膀胱经', '疏肝,理气', 1, 9.00, 1.50, 4, 1, 0, 1, 0, NOW(), NOW()),
  157. ('pishu', '脾俞穴', '足太阳膀胱经', '健脾,祛湿', 1, 11.00, 1.50, 4, 1, 0, 1, 0, NOW(), NOW()),
  158. ('weishu', '胃俞穴', '足太阳膀胱经', '和胃,消食', 1, 12.00, 1.50, 4, 1, 0, 1, 0, NOW(), NOW()),
  159. ('shenshu', '肾俞穴', '足太阳膀胱经', '补肾,扶阳', 1, 14.00, 1.50, 4, 1, 0, 1, 0, NOW(), NOW()),
  160. ('mingmen', '命门穴', '督脉', '扶阳,固本', 1, 14.00, NULL, 1, 1, 0, 1, 0, NOW(), NOW()),
  161. ('zhongwan', '中脘穴', '任脉', '健脾,和胃', 2, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
  162. ('qihai', '气海穴', '任脉', '扶阳,益气', 2, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
  163. ('guanyuan', '关元穴', '任脉', '温肾,扶阳', 2, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW());
  164. -- ----------------------------
  165. -- 用户穴位坐标表(根据用户体型数据和穴位信息计算生成)
  166. -- ----------------------------
  167. CREATE TABLE IF NOT EXISTS `user_acupoint` (
  168. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  169. `user_id` BIGINT NOT NULL COMMENT '子用户ID(关联 user_profile.id)',
  170. `acupoint_id` BIGINT NOT NULL COMMENT '穴位ID(关联 acupoint.id)',
  171. `acupoint_name` VARCHAR(50) NOT NULL COMMENT '穴位名称(冗余存储,加速查询)',
  172. `acupoint_side` VARCHAR(10) NOT NULL DEFAULT 'center' COMMENT '侧别:center=中心,left=左侧,right=右侧',
  173. `cun_value` DECIMAL(6,2) COMMENT '相对大椎穴纵向偏移(寸)',
  174. `cun_type` VARCHAR(10) COMMENT '指寸类型:1寸/1.5寸/3寸',
  175. `coordinate_x` DECIMAL(8,2) COMMENT '计算后的X坐标(mm,相对大椎穴,向右为正)',
  176. `coordinate_y` DECIMAL(8,2) COMMENT '计算后的Y坐标(mm,相对大椎穴,向下为正)',
  177. `create_time` DATETIME COMMENT '首次生成时间',
  178. `update_time` DATETIME COMMENT '最后更新时间',
  179. PRIMARY KEY (`id`),
  180. KEY `idx_user_id` (`user_id`),
  181. KEY `idx_acupoint_id` (`acupoint_id`)
  182. ) ENGINE = InnoDB
  183. DEFAULT CHARSET = utf8mb4
  184. COMMENT = '用户穴位坐标表(按用户体型计算的个性化穴位坐标)';
  185. -- ----------------------------
  186. -- 艾灸手法表
  187. -- ----------------------------
  188. CREATE TABLE IF NOT EXISTS `moxibustion_technique` (
  189. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  190. `technique_code` VARCHAR(50) NOT NULL COMMENT '手法编码(唯一标识,如 oneclick)',
  191. `name` VARCHAR(50) NOT NULL COMMENT '手法名称(如:一键艾灸)',
  192. `motion_mode` VARCHAR(20) NOT NULL COMMENT '运动模式:default=默认工艺,fixed=固定不动,updown=上下移动,circular=圆周运动,dotted=点状移动',
  193. `temp_min` DECIMAL(4,1) NOT NULL COMMENT '温度范围最小值(°C,35-50)',
  194. `temp_max` DECIMAL(4,1) NOT NULL COMMENT '温度范围最大值(°C,35-50)',
  195. `time_min` INT NOT NULL COMMENT '时间范围最小值(分钟,1-30)',
  196. `time_max` INT NOT NULL COMMENT '时间范围最大值(分钟,1-30)',
  197. `motion_amplitude` DECIMAL(4,1) COMMENT '运动幅度(mm,1-20,运动模式非固定不动时必填)',
  198. `motion_speed` DECIMAL(4,1) COMMENT '运动速度(mm/s,1-10,运动模式非固定不动时必填)',
  199. `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1=启用,0=禁用',
  200. `remark` VARCHAR(200) COMMENT '备注(最长200字符)',
  201. `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
  202. `create_time` DATETIME COMMENT '创建时间',
  203. `update_time` DATETIME COMMENT '更新时间',
  204. PRIMARY KEY (`id`),
  205. UNIQUE KEY `uk_technique_code` (`technique_code`)
  206. ) ENGINE = InnoDB
  207. DEFAULT CHARSET = utf8mb4
  208. COMMENT = '艾灸手法表';
  209. -- 初始化5个内置手法
  210. 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
  211. ('oneclick', '一键艾灸', 'default', 42.0, 45.0, 30, 30, NULL, NULL, 1, 0, NOW(), NOW()),
  212. ('gentle', '温和灸', 'fixed', 35.0, 50.0, 1, 30, NULL, NULL, 1, 0, NOW(), NOW()),
  213. ('pecking', '雀啄灸', 'updown', 35.0, 50.0, 1, 30, 10.0, 5.0, 1, 0, NOW(), NOW()),
  214. ('circular', '回旋灸', 'circular', 35.0, 50.0, 1, 30, 15.0, 3.0, 1, 0, NOW(), NOW()),
  215. ('sparrow', '麻雀灸', 'dotted', 35.0, 50.0, 1, 30, 8.0, 4.0, 1, 0, NOW(), NOW());
  216. -- ----------------------------
  217. -- 方案表(艾灸方案)
  218. -- ----------------------------
  219. CREATE TABLE IF NOT EXISTS `plan` (
  220. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  221. `plan_code` VARCHAR(50) NOT NULL COMMENT '方案编码(唯一标识,如 S001)',
  222. `name` VARCHAR(100) NOT NULL COMMENT '方案名称(最长100字符)',
  223. `mode_type` TINYINT NOT NULL COMMENT '模式类型:1=一键艾灸,2=专业模式,3=自定义模式,4=延年圣手',
  224. `effect_type` VARCHAR(20) COMMENT '功效类型:驱寒/祛湿/祛风/化瘀/活血/化痰/养颜/扶阳',
  225. `symptoms` VARCHAR(500) COMMENT '适用症状(逗号分隔:怕冷,感冒,咳嗽,...)',
  226. `applicable_gender` TINYINT NOT NULL DEFAULT 0 COMMENT '适用人群:0=不限,1=仅男,2=仅女',
  227. `age_min` INT NOT NULL DEFAULT 1 COMMENT '适用年龄最小值(岁)',
  228. `age_max` INT NOT NULL DEFAULT 120 COMMENT '适用年龄最大值(岁)',
  229. `description` VARCHAR(200) COMMENT '方案描述(最长200字符)',
  230. `author_type` TINYINT NOT NULL DEFAULT 1 COMMENT '创作人类型:1=管理员,2=普通用户,3=专家',
  231. `author_id` BIGINT COMMENT '创作人ID(对应 app_user.id)',
  232. `author_name` VARCHAR(100) COMMENT '创作人名称(冗余存储,加速查询)',
  233. `status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态:0=草稿,1=已发布,2=已下架',
  234. `use_count` INT NOT NULL DEFAULT 0 COMMENT '使用人数',
  235. `avg_rating` DECIMAL(3,1) COMMENT '平均评分',
  236. `last_use_time` DATETIME COMMENT '最后使用时间',
  237. `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
  238. `create_time` DATETIME COMMENT '创建时间',
  239. `update_time` DATETIME COMMENT '更新时间',
  240. PRIMARY KEY (`id`),
  241. UNIQUE KEY `uk_plan_code` (`plan_code`)
  242. ) ENGINE = InnoDB
  243. DEFAULT CHARSET = utf8mb4
  244. COMMENT = '方案表(艾灸方案)';
  245. -- ----------------------------
  246. -- 方案步骤表
  247. -- ----------------------------
  248. CREATE TABLE IF NOT EXISTS `plan_step` (
  249. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  250. `plan_id` BIGINT NOT NULL COMMENT '方案ID(关联 plan.id)',
  251. `step_order` INT NOT NULL COMMENT '步骤序号(从1开始)',
  252. `acupoint_id` BIGINT COMMENT '穴位ID(关联 acupoint.id)',
  253. `acupoint_name` VARCHAR(50) NOT NULL COMMENT '穴位名称(冗余存储)',
  254. `side` TINYINT NOT NULL COMMENT '侧别:1=中心,2=左侧,3=右侧,4=双侧',
  255. `temperature` DECIMAL(4,1) NOT NULL COMMENT '温度(°C,35-50)',
  256. `duration` INT NOT NULL COMMENT '时间(分钟,1-30)',
  257. `technique_id` BIGINT COMMENT '艾灸手法ID(关联 moxibustion_technique.id)',
  258. `technique_name` VARCHAR(50) COMMENT '艾灸手法名称(冗余存储)',
  259. `remark` VARCHAR(100) COMMENT '备注(最长100字符)',
  260. `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
  261. `create_time` DATETIME COMMENT '创建时间',
  262. `update_time` DATETIME COMMENT '更新时间',
  263. PRIMARY KEY (`id`),
  264. KEY `idx_plan_id` (`plan_id`)
  265. ) ENGINE = InnoDB
  266. DEFAULT CHARSET = utf8mb4
  267. COMMENT = '方案步骤表';
  268. -- ----------------------------
  269. -- 用户方案表(用户个性化工艺参数方案)
  270. -- ----------------------------
  271. CREATE TABLE IF NOT EXISTS `user_plan` (
  272. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  273. `user_id` BIGINT NOT NULL COMMENT '子用户ID(关联 user_profile.id)',
  274. `plan_id` BIGINT NOT NULL COMMENT '方案ID(关联 plan.id)',
  275. `plan_code` VARCHAR(50) NOT NULL COMMENT '方案编码(冗余存储)',
  276. `plan_name` VARCHAR(100) NOT NULL COMMENT '方案名称(冗余存储)',
  277. `mode_type` TINYINT NOT NULL COMMENT '模式类型:1=一键艾灸,2=专业模式,3=自定义模式,4=延年圣手',
  278. `author_name` VARCHAR(100) COMMENT '创作人名称(冗余存储)',
  279. `step_count` INT NOT NULL DEFAULT 0 COMMENT '步骤数量',
  280. `use_count` INT NOT NULL DEFAULT 0 COMMENT '使用次数',
  281. `steps_json` TEXT COMMENT '个性化工艺步骤(JSON格式,含坐标/温度/时间等)',
  282. `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
  283. `create_time` DATETIME COMMENT '订阅/生成时间',
  284. `update_time` DATETIME COMMENT '更新时间',
  285. PRIMARY KEY (`id`),
  286. KEY `idx_user_id` (`user_id`),
  287. KEY `idx_plan_id` (`plan_id`)
  288. ) ENGINE = InnoDB
  289. DEFAULT CHARSET = utf8mb4
  290. COMMENT = '用户方案表(用户个性化工艺参数方案)';
  291. -- ----------------------------
  292. -- 管理员权限配置表
  293. -- ----------------------------
  294. CREATE TABLE IF NOT EXISTS `admin_permission` (
  295. `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  296. `admin_id` BIGINT NOT NULL COMMENT '管理员ID(关联 app_user.id)',
  297. `route_paths` TEXT COMMENT '可访问的路由路径(JSON数组,如 ["/dashboard","/device"])',
  298. `deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
  299. `create_time` DATETIME COMMENT '创建时间',
  300. `update_time` DATETIME COMMENT '更新时间',
  301. PRIMARY KEY (`id`),
  302. UNIQUE KEY `uk_admin_id` (`admin_id`)
  303. ) ENGINE = InnoDB
  304. DEFAULT CHARSET = utf8mb4
  305. COMMENT = '管理员权限配置表';
  306. -- app_user 表追加管理员相关字段(首次执行时添加,若字段已存在请注释掉此段)
  307. ALTER TABLE `app_user`
  308. ADD COLUMN `admin_role` TINYINT DEFAULT NULL COMMENT '管理员角色:1=超级管理员,2=运营人员,3=只读用户(仅 userType=3 时有效)',
  309. ADD COLUMN `last_login_time` DATETIME DEFAULT NULL COMMENT '最后登录时间';
  310. -- 更新初始管理员为超级管理员角色
  311. UPDATE `app_user` SET `admin_role` = 1 WHERE `username` = 'admin' AND `admin_role` IS NULL;
  312. SET FOREIGN_KEY_CHECKS = 1;