378 lines
35 KiB
SQL
378 lines
35 KiB
SQL
-- ----------------------------------------------------------------------------
|
||
-- 智能飞禽物联平台 · 设备域建表脚本(阶段1 / 迭代 I1)
|
||
-- 说明:
|
||
-- 1. 7 张设备表 + 8 个字典 + 设备菜单 + 12 个权限字 + 2 个角色及其菜单关联。
|
||
-- 2. 严禁出现任何直播字段(stream_url / play_url / live_*)与医疗模板字段。
|
||
-- 3. 逻辑删除取值与框架配置一致:0 存在 / 1 删除(common-mybatis.yml: logicDeleteValue=1)。
|
||
-- 4. 唯一索引(device_no / imei)叠加逻辑删除,存在「逻辑删除后编号不可复用」的既有约束,
|
||
-- 与 RuoYi 既有模式一致,已在字段注释中写明;如需复用时改用物理删除策略。
|
||
-- 作者:Kou 日期:2026-09-16
|
||
-- ----------------------------------------------------------------------------
|
||
|
||
-- ============================ 一、设备主表 ============================
|
||
drop table if exists bm_device;
|
||
create table bm_device (
|
||
device_id bigint(20) not null comment '主键(雪花,仅内部关联)',
|
||
device_no varchar(32) not null comment '业务编号,唯一(逻辑删除后编号不可复用)',
|
||
imei varchar(32) not null comment '绑定码IMEI,唯一(逻辑删除后不可复用)',
|
||
name varchar(64) default null comment '用户侧名称≤20字符',
|
||
model varchar(64) default null comment '型号',
|
||
sn varchar(64) default null comment '出厂序列号',
|
||
hw_version varchar(32) default null comment '硬件版本',
|
||
sw_version varchar(32) default null comment '软件版本',
|
||
fw_version varchar(32) default null comment '固件版本',
|
||
pkg_version varchar(32) default null comment '数据包版本',
|
||
ip varchar(64) default null comment '设备IP',
|
||
mac varchar(64) default null comment 'MAC',
|
||
wifi_ssid varchar(64) default null comment 'WiFi SSID',
|
||
status char(1) not null default '0' comment '状态(0未激活 1在线 2离线)',
|
||
bind_user_id bigint(20) default null comment '当前绑定APP用户',
|
||
bind_time datetime default null comment '最近一次绑定时间',
|
||
hood_connected char(1) not null default '0' comment '头套(0断开 1已连接)',
|
||
hood_cover_on char(1) not null default '0' comment '眼罩(0打开 1遮盖)',
|
||
signal_level tinyint not null default 0 comment '信号等级(0离线 1弱 2一般 3强)',
|
||
hood_battery tinyint default null comment '头套电量0-100',
|
||
ring_battery tinyint default null comment '脚环电量0-100',
|
||
-- 低电告警阈值:设备级配置(PRD Q9 口径),恢复阈值 = 触发阈值 + 回差(回差由 device.mqtt 的 20/25 差值派生)
|
||
hood_battery_threshold tinyint not null default 20 comment '头套低电告警阈值0-100(≤该值触发,0=不触发)',
|
||
ring_battery_threshold tinyint not null default 20 comment '脚环低电告警阈值0-100(≤该值触发,0=不触发)',
|
||
lng decimal(10,7) default null comment '最新经度',
|
||
lat decimal(10,7) default null comment '最新纬度',
|
||
address varchar(255) default null comment '地址(设备上报)',
|
||
last_online_time datetime default null comment '最后在线时间',
|
||
remark varchar(500) default null comment '备注',
|
||
create_dept bigint(20) default null comment '创建部门',
|
||
create_by bigint(20) default null comment '创建者',
|
||
create_time datetime comment '创建时间',
|
||
update_by bigint(20) default null comment '更新者',
|
||
update_time datetime comment '更新时间',
|
||
del_flag char(1) not null default '0' comment '逻辑删除(0存在 1删除)',
|
||
primary key (device_id),
|
||
unique key uk_device_no (device_no),
|
||
unique key uk_imei (imei),
|
||
key idx_bind_user (bind_user_id),
|
||
key idx_status (status),
|
||
key idx_last_online (last_online_time)
|
||
) engine=innodb comment = '设备主表';
|
||
|
||
-- ============================ 二、设备绑定流水 ============================
|
||
drop table if exists bm_device_bind;
|
||
create table bm_device_bind (
|
||
bind_id bigint(20) not null comment '主键(雪花)',
|
||
device_id bigint(20) not null comment '设备物理主键',
|
||
device_no varchar(32) default null comment '设备编号(冗余,便于审计/后台展示)',
|
||
user_id bigint(20) not null comment '操作APP用户',
|
||
imei varchar(32) default null comment 'IMEI(冗余快照)',
|
||
action varchar(16) not null comment '动作(bind/unbind/rebind)',
|
||
bind_time datetime not null comment '操作时间',
|
||
remark varchar(255) default null comment '备注',
|
||
primary key (bind_id),
|
||
key idx_device_id (device_id),
|
||
key idx_user_id (user_id),
|
||
key idx_device_action_time (device_id, action, bind_time)
|
||
) engine=innodb comment = '设备绑定流水(无逻辑删除,禁止抹除历史)';
|
||
|
||
-- ============================ 三、设备遥测历史 ============================
|
||
drop table if exists bm_device_telemetry;
|
||
create table bm_device_telemetry (
|
||
telemetry_id bigint(20) not null comment '主键(雪花)',
|
||
device_id bigint(20) not null comment '设备主键',
|
||
device_no varchar(32) default null comment '设备编号(冗余)',
|
||
hood_battery tinyint default null comment '头套电量0-100',
|
||
ring_battery tinyint default null comment '脚环电量0-100',
|
||
signal_level tinyint default null comment '信号等级(0离线 1弱 2一般 3强)',
|
||
hood_connected char(1) default null comment '头套连接(0断开 1已连接)',
|
||
hood_cover_on char(1) default null comment '眼罩状态(0打开 1遮盖)',
|
||
lng decimal(10,7) default null comment '经度',
|
||
lat decimal(10,7) default null comment '纬度',
|
||
address varchar(255) default null comment '地址',
|
||
report_time datetime not null comment '设备上报时间',
|
||
primary key (telemetry_id),
|
||
key idx_device_time (device_id, report_time)
|
||
) engine=innodb comment = '设备遥测历史(一期仅落库,不做轨迹回放)';
|
||
|
||
-- ============================ 四、设备告警 ============================
|
||
drop table if exists bm_device_alert;
|
||
create table bm_device_alert (
|
||
alert_id bigint(20) not null comment '主键(雪花)',
|
||
device_id bigint(20) not null comment '设备主键',
|
||
device_no varchar(32) default null comment '设备编号(冗余)',
|
||
alert_type varchar(32) not null comment '告警类型(offline/low_battery_hood/low_battery_ring)',
|
||
alert_level char(1) not null comment '告警级别(0提示 1警告 2严重)',
|
||
alert_value varchar(64) default null comment '触发值(如电量)',
|
||
content varchar(255) default null comment '告警文案',
|
||
status char(1) not null comment '处理状态(0未处理 1已处理)',
|
||
handle_by bigint(20) default null comment '处理人(sys_user.user_id,后台账号)',
|
||
handle_time datetime default null comment '处理时间',
|
||
message_user_id bigint(20) default null comment '告警发生时的APP收件人快照(用于消息补偿)',
|
||
alert_time datetime not null comment '告警时间',
|
||
del_flag char(1) not null default '0' comment '逻辑删除(0存在 1删除)',
|
||
primary key (alert_id),
|
||
key idx_device_id (device_id),
|
||
key idx_alert_type (alert_type),
|
||
key idx_alert_time (alert_time),
|
||
key idx_status_time (status, alert_time)
|
||
) engine=innodb comment = '设备告警';
|
||
|
||
-- ============================ 五、OTA 升级包 ============================
|
||
drop table if exists bm_ota_package;
|
||
create table bm_ota_package (
|
||
package_id bigint(20) not null comment '主键(雪花)',
|
||
model varchar(64) not null comment '适用型号',
|
||
version varchar(32) not null comment '版本号',
|
||
oss_id bigint(20) default null comment '关联sys_oss.oss_id',
|
||
file_url varchar(500) default null comment '文件URL(冗余)',
|
||
file_name varchar(255) default null comment '文件名',
|
||
file_size bigint(20) default null comment '文件字节数',
|
||
md5 varchar(64) default null comment '校验值MD5',
|
||
changelog varchar(500) default null comment '更新说明',
|
||
status char(1) not null default '0' comment '状态(0停用 1启用)',
|
||
remark varchar(500) default null comment '备注',
|
||
create_dept bigint(20) default null comment '创建部门',
|
||
create_by bigint(20) default null comment '创建者',
|
||
create_time datetime comment '创建时间',
|
||
update_by bigint(20) default null comment '更新者',
|
||
update_time datetime comment '更新时间',
|
||
del_flag char(1) not null default '0' comment '逻辑删除(0存在 1删除)',
|
||
primary key (package_id),
|
||
unique key uk_model_version (model, version),
|
||
key idx_status (status)
|
||
) engine=innodb comment = 'OTA升级包';
|
||
|
||
-- ============================ 六、OTA 升级任务 ============================
|
||
drop table if exists bm_ota_task;
|
||
create table bm_ota_task (
|
||
task_id bigint(20) not null comment '主键(雪花)',
|
||
package_id bigint(20) not null comment '升级包',
|
||
version varchar(32) default null comment '冗余版本',
|
||
device_id bigint(20) not null comment '设备主键',
|
||
device_no varchar(32) default null comment '冗余编号',
|
||
status char(1) not null default '0' comment '状态(0待升级 1升级中 2成功 3失败)',
|
||
result_msg varchar(500) default null comment '结果信息',
|
||
progress tinyint default null comment '进度0-100',
|
||
operator_id bigint(20) default null comment '操作人(后台用户)',
|
||
times int(4) not null default 0 comment '下发次数',
|
||
start_time datetime default null comment '开始时间',
|
||
finish_time datetime default null comment '完成时间',
|
||
create_dept bigint(20) default null comment '创建部门',
|
||
create_by bigint(20) default null comment '创建者',
|
||
create_time datetime comment '创建时间',
|
||
update_by bigint(20) default null comment '更新者',
|
||
update_time datetime comment '更新时间',
|
||
del_flag char(1) not null default '0' comment '逻辑删除(0存在 1删除)',
|
||
primary key (task_id),
|
||
key idx_device_no (device_no),
|
||
key idx_status (status),
|
||
key idx_package_id (package_id)
|
||
) engine=innodb comment = 'OTA升级任务';
|
||
|
||
-- ============================ 七、APP 消息表 ============================
|
||
-- 用途:仅承载「设备告警」向 APP 用户的推送副本(一期不做独立消息中心,见开发计划 D8)。
|
||
-- 设计取舍:
|
||
-- 1. 不复用框架 sys_message —— 该表无「已读」字段,无法支撑 APP 未读角标;
|
||
-- 且改框架表违反「ruoyi-* 框架不动、业务只在 ruoyi-device」的项目边界。
|
||
-- 2. 与 bm_device_alert 职责分离:alert 是「设备事实」(含处理流程),
|
||
-- message 是「推送副本」(含收件人与已读状态),二者不互相替代。
|
||
-- 3. 收件人在告警落库那一刻固化(取 bm_device.bind_user_id 快照),
|
||
-- 因此设备解绑/换绑后,历史消息仍归属当时的收件人,不会被后来者看到。
|
||
drop table if exists bm_app_message;
|
||
create table bm_app_message (
|
||
message_id bigint(20) not null comment '主键(雪花)',
|
||
user_id bigint(20) not null comment '接收用户(sys_user.user_id,APP 用户)',
|
||
device_id bigint(20) default null comment '关联设备主键',
|
||
device_no varchar(32) default null comment '关联设备编号(冗余,供展示与跳转)',
|
||
alert_id bigint(20) default null comment '关联告警主键(bm_device_alert)',
|
||
alert_type varchar(32) default null comment '告警类型(offline/low_battery_hood/low_battery_ring)',
|
||
alert_level char(1) default null comment '告警级别(0提示 1警告 2严重)',
|
||
title varchar(128) not null comment '消息标题',
|
||
content varchar(255) default null comment '消息内容',
|
||
read_flag char(1) not null default '0' comment '已读标记(0未读 1已读)',
|
||
read_time datetime default null comment '已读时间',
|
||
create_time datetime not null comment '产生时间',
|
||
primary key (message_id),
|
||
unique key uk_alert_id (alert_id),
|
||
key idx_user_read (user_id, read_flag),
|
||
key idx_user_time (user_id, create_time, message_id)
|
||
) engine=innodb comment = 'APP 消息(一期仅承载设备告警通知)';
|
||
|
||
-- ============================ 八、字典类型(8 个) ============================
|
||
insert into sys_dict_type values(1771500000000000001, '设备状态', 'bm_device_status', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '设备状态列表');
|
||
insert into sys_dict_type values(1771500000000000002, '信号等级', 'bm_signal_level', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '信号等级列表');
|
||
insert into sys_dict_type values(1771500000000000003, '头套连接', 'bm_hood_connected', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '头套连接列表');
|
||
insert into sys_dict_type values(1771500000000000004, '眼罩状态', 'bm_hood_cover', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '眼罩状态列表');
|
||
insert into sys_dict_type values(1771500000000000005, 'OTA任务状态', 'bm_ota_task_status', 1761000000000000103, 1761100000000000001, sysdate(), null, null, 'OTA任务状态列表');
|
||
insert into sys_dict_type values(1771500000000000006, '升级包状态', 'bm_ota_package_status', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '升级包状态列表');
|
||
insert into sys_dict_type values(1771500000000000007, '告警类型', 'bm_alert_type', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '告警类型列表');
|
||
insert into sys_dict_type values(1771500000000000008, '绑定动作', 'bm_bind_action', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '绑定动作列表');
|
||
|
||
-- ============================ 九、字典数据 ============================
|
||
-- 设备状态
|
||
insert into sys_dict_data values(1771600000000000001, 1, '未激活', '0', 'bm_device_status', '', 'info', 'Y', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '未激活');
|
||
insert into sys_dict_data values(1771600000000000002, 2, '在线', '1', 'bm_device_status', '', 'success', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '在线');
|
||
insert into sys_dict_data values(1771600000000000003, 3, '离线', '2', 'bm_device_status', '', 'danger', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '离线');
|
||
-- 信号等级
|
||
insert into sys_dict_data values(1771600000000000004, 1, '离线', '0', 'bm_signal_level', '', 'danger', 'Y', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '离线');
|
||
insert into sys_dict_data values(1771600000000000005, 2, '弱', '1', 'bm_signal_level', '', 'warning', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '弱');
|
||
insert into sys_dict_data values(1771600000000000006, 3, '一般', '2', 'bm_signal_level', '', 'primary', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '一般');
|
||
insert into sys_dict_data values(1771600000000000007, 4, '强', '3', 'bm_signal_level', '', 'success', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '强');
|
||
-- 头套连接
|
||
insert into sys_dict_data values(1771600000000000008, 1, '已断开', '0', 'bm_hood_connected', '', 'danger', 'Y', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '已断开');
|
||
insert into sys_dict_data values(1771600000000000009, 2, '已连接', '1', 'bm_hood_connected', '', 'success', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '已连接');
|
||
-- 眼罩状态
|
||
insert into sys_dict_data values(1771600000000000010, 1, '打开', '0', 'bm_hood_cover', '', 'primary', 'Y', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '打开');
|
||
insert into sys_dict_data values(1771600000000000011, 2, '遮盖', '1', 'bm_hood_cover', '', 'success', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '遮盖');
|
||
-- OTA任务状态
|
||
insert into sys_dict_data values(1771600000000000012, 1, '待升级', '0', 'bm_ota_task_status', '', 'info', 'Y', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '待升级');
|
||
insert into sys_dict_data values(1771600000000000013, 2, '升级中', '1', 'bm_ota_task_status', '', 'primary', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '升级中');
|
||
insert into sys_dict_data values(1771600000000000014, 3, '成功', '2', 'bm_ota_task_status', '', 'success', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '成功');
|
||
insert into sys_dict_data values(1771600000000000015, 4, '失败', '3', 'bm_ota_task_status', '', 'danger', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '失败');
|
||
-- 升级包状态
|
||
insert into sys_dict_data values(1771600000000000016, 1, '停用', '0', 'bm_ota_package_status', '', 'danger', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '停用');
|
||
insert into sys_dict_data values(1771600000000000017, 2, '启用', '1', 'bm_ota_package_status', '', 'success', 'Y', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '启用');
|
||
-- 告警类型
|
||
insert into sys_dict_data values(1771600000000000018, 1, '设备离线', 'offline', 'bm_alert_type', '', 'danger', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '设备离线');
|
||
insert into sys_dict_data values(1771600000000000019, 2, '头套低电', 'low_battery_hood', 'bm_alert_type', '', 'warning', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '头套低电');
|
||
insert into sys_dict_data values(1771600000000000020, 3, '脚环低电', 'low_battery_ring', 'bm_alert_type', '', 'warning', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '脚环低电');
|
||
-- 绑定动作
|
||
insert into sys_dict_data values(1771600000000000021, 1, '绑定', 'bind', 'bm_bind_action', '', 'primary', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '绑定');
|
||
insert into sys_dict_data values(1771600000000000022, 2, '解绑', 'unbind', 'bm_bind_action', '', 'danger', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '解绑');
|
||
insert into sys_dict_data values(1771600000000000023, 3, '换绑', 'rebind', 'bm_bind_action', '', 'warning', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '换绑');
|
||
|
||
-- ============================ 十、菜单 + 权限字 ============================
|
||
-- 一级目录
|
||
insert into sys_menu values(1771400000000000001, '设备管理', 0, 6, 'device', null, '', 'N', 'Y', 'M', '0', '0', '', 'dashboard', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '设备管理目录');
|
||
-- 二级菜单
|
||
insert into sys_menu values(1771400000000000002, '设备列表', 1771400000000000001, 1, 'device', 'device/device/index', '', 'N', 'Y', 'C', '0', '0', 'device:device:list', 'form', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '设备列表菜单');
|
||
insert into sys_menu values(1771400000000000003, 'OTA管理', 1771400000000000001, 2, 'ota', 'device/ota/index', '', 'N', 'Y', 'C', '0', '0', 'device:ota:list', 'upload', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, 'OTA管理菜单');
|
||
-- 设备列表按钮
|
||
insert into sys_menu values(1771400000000000011, '设备查询', 1771400000000000002, 1, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:device:query', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
insert into sys_menu values(1771400000000000012, '设备新增', 1771400000000000002, 2, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:device:add', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
insert into sys_menu values(1771400000000000013, '设备修改', 1771400000000000002, 3, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:device:edit', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
insert into sys_menu values(1771400000000000014, '设备删除', 1771400000000000002, 4, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:device:remove', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
insert into sys_menu values(1771400000000000015, '设备导出', 1771400000000000002, 5, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:device:export', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
-- OTA 按钮
|
||
insert into sys_menu values(1771400000000000016, 'OTA新增', 1771400000000000003, 1, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:ota:add', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
-- APP 用户管理(后台管理 APP 注册账号;与 APP 端 /app/user 不是同一组接口)
|
||
-- 数据来源:sys_user 中 user_type = 'app_user' 的账号(仅手机号 / 邮箱注册的 C 端用户)
|
||
insert into sys_menu values(1771400000000000004, 'APP用户', 1771400000000000001, 3, 'app-user', 'device/appUser/index', '', 'N', 'Y', 'C', '0', '0', 'device:appuser:list', 'user', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, 'APP用户管理菜单');
|
||
-- APP 用户按钮(编辑权限字复用:状态变更 / 重置密码 / 解绑设备,口径同 device:ota:add)
|
||
insert into sys_menu values(1771400000000000017, '用户查询', 1771400000000000004, 1, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:appuser:query', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
insert into sys_menu values(1771400000000000018, '用户编辑', 1771400000000000004, 2, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:appuser:edit', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
-- 告警记录(后台只读 + 标记处理;告警的「消息推送」面向 APP 用户,见 bm_app_message)
|
||
insert into sys_menu values(1771400000000000005, '告警记录', 1771400000000000001, 4, 'alert', 'device/alert/index', '', 'N', 'Y', 'C', '0', '0', 'device:alert:list', 'message', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '告警记录菜单');
|
||
-- 告警记录按钮
|
||
insert into sys_menu values(1771400000000000019, '告警查询', 1771400000000000005, 1, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:alert:query', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
insert into sys_menu values(1771400000000000020, '告警处理', 1771400000000000005, 2, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:alert:edit', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
insert into sys_menu values(1771400000000000021, '告警删除', 1771400000000000005, 3, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:alert:remove', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
|
||
-- ============================ 十一、角色 ============================
|
||
insert into sys_role values(1771300000000000001, '设备管理员', 'device_admin', 5, 1, 1, 1, '0', '0', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '设备域管理角色');
|
||
insert into sys_role values(1771300000000000002, '审计员', 'device_auditor', 6, 1, 1, 1, '0', '0', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '设备域只读审计角色');
|
||
|
||
-- ============================ 十二、角色-菜单关联 ============================
|
||
-- 设备管理员:全部设备菜单
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000001);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000002);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000003);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000011);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000012);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000013);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000014);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000015);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000016);
|
||
-- 设备管理员:APP 用户管理(菜单 + 查询 + 编辑)
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000004);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000017);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000018);
|
||
-- 设备管理员:告警记录(菜单 + 查询 + 处理 + 删除)
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000005);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000019);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000020);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000021);
|
||
-- 审计员:目录 + 列表 + 详情 + 导出 + OTA 列表 + APP 用户(只读)
|
||
insert into sys_role_menu values (1771300000000000002, 1771400000000000001);
|
||
insert into sys_role_menu values (1771300000000000002, 1771400000000000002);
|
||
insert into sys_role_menu values (1771300000000000002, 1771400000000000003);
|
||
insert into sys_role_menu values (1771300000000000002, 1771400000000000011);
|
||
insert into sys_role_menu values (1771300000000000002, 1771400000000000015);
|
||
-- 审计员:APP 用户菜单 + 查询(不含编辑——审计只读)
|
||
insert into sys_role_menu values (1771300000000000002, 1771400000000000004);
|
||
insert into sys_role_menu values (1771300000000000002, 1771400000000000017);
|
||
-- 审计员:告警记录菜单 + 查询(不含处理与删除——审计只读)
|
||
insert into sys_role_menu values (1771300000000000002, 1771400000000000005);
|
||
insert into sys_role_menu values (1771300000000000002, 1771400000000000019);
|
||
|
||
-- ============================ 十三、APP 客户端版本(第 8 张业务表) ============================
|
||
-- 用途:后台登记 APP(Android/iOS)版本记录,APP 冷启动经 GET /app/version/latest 检查更新。
|
||
-- 口径(与 bm_patch.sql 补丁 7 一致):
|
||
-- 1. 版本比较**只用整数构建号 version_code**(int,32 位正整数,人工递增),version_name 仅展示;
|
||
-- ⚠️ 禁止时间戳式构建号(int 上界 2147483647,时间戳会溢出)。
|
||
-- 2. 唯一键 uk_platform_version_code 不区分逻辑删除(沿用 bm_device.device_no 同口径):
|
||
-- 逻辑删除后同平台同构建号不可复用,构建号填错走编辑修正。
|
||
-- 3. file_size 用 bigint(对齐 OTA);框架把 Long 序列化为字符串,前端按字符串接收再转 MB。
|
||
-- 4. md5 列保留但允许为空(本期不采集,不参与校验)。
|
||
drop table if exists bm_app_version;
|
||
create table bm_app_version (
|
||
version_id bigint(20) not null comment '主键(雪花)',
|
||
platform varchar(16) not null comment '平台(android/ios,字典 bm_app_platform)',
|
||
version_name varchar(32) not null comment '展示版本号,如 1.0.10(仅展示,不参与比较)',
|
||
version_code int(11) not null comment '构建号,32位正整数、单调递增、平台内唯一(唯一比较依据;禁止时间戳式构建号)',
|
||
force_update char(1) not null default '0' comment '强制更新(0否 1是;无字典,页面本地映射)',
|
||
oss_id bigint(20) default null comment '关联 sys_oss.oss_id(安装包,两平台均上传)',
|
||
file_url varchar(500) default null comment '安装包 URL(两平台均上传;冗余自 sys_oss,供 APP 直接下载)',
|
||
file_name varchar(255) default null comment '安装包文件名(两平台均上传)',
|
||
file_size bigint(20) default null comment '安装包字节数(两平台均上传;框架序列化为字符串,前端取 file.raw.size 提交)',
|
||
md5 varchar(64) default null comment '安装包校验值 MD5(预留,本期不填,不参与校验)',
|
||
store_url varchar(500) default null comment 'App Store 引导地址(选填)',
|
||
changelog varchar(500) default null comment '更新说明(纯文本)',
|
||
status char(1) not null default '0' comment '状态(0停用 1启用,字典 bm_app_version_status)',
|
||
publish_time datetime default null comment '发布时间(首次置为启用时写入)',
|
||
remark varchar(500) default null comment '备注',
|
||
create_dept bigint(20) default null comment '创建部门',
|
||
create_by bigint(20) default null comment '创建者',
|
||
create_time datetime comment '创建时间',
|
||
update_by bigint(20) default null comment '更新者',
|
||
update_time datetime comment '更新时间',
|
||
del_flag char(1) not null default '0' comment '逻辑删除(0存在 1删除)',
|
||
primary key (version_id),
|
||
unique key uk_platform_version_code (platform, version_code),
|
||
unique key uk_platform_version_name (platform, version_name),
|
||
key idx_platform_status (platform, status),
|
||
key idx_create_time (create_time)
|
||
) engine=innodb comment = 'APP客户端版本(后台维护,APP冷启动检查更新)';
|
||
|
||
-- ============================ 十四、字典类型(增量 2 个) ============================
|
||
insert into sys_dict_type values(1771500000000000009, 'APP平台', 'bm_app_platform', 1761000000000000103, 1761100000000000001, sysdate(), null, null, 'APP平台列表');
|
||
insert into sys_dict_type values(1771500000000000010, 'APP版本状态', 'bm_app_version_status', 1761000000000000103, 1761100000000000001, sysdate(), null, null, 'APP版本状态列表');
|
||
|
||
-- ============================ 十五、字典数据(增量 4 条) ============================
|
||
-- APP 平台(强制更新无字典,页面本地映射)
|
||
insert into sys_dict_data values(1771600000000000024, 1, '安卓', 'android', 'bm_app_platform', '', 'success', 'Y', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '安卓');
|
||
insert into sys_dict_data values(1771600000000000025, 2, 'iOS', 'ios', 'bm_app_platform', '', 'primary', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, 'iOS');
|
||
-- APP 版本状态
|
||
insert into sys_dict_data values(1771600000000000026, 1, '停用', '0', 'bm_app_version_status', '', 'danger', 'N', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '停用');
|
||
insert into sys_dict_data values(1771600000000000027, 2, '启用', '1', 'bm_app_version_status', '', 'success', 'Y', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '启用');
|
||
|
||
-- ============================ 十六、菜单 + 权限字(APP版本管理) ============================
|
||
-- 二级菜单(挂「设备管理」目录 1771400000000000001,order_num=5)
|
||
insert into sys_menu values(1771400000000000006, 'APP版本管理', 1771400000000000001, 5, 'app-version', 'device/appVersion/index', '', 'N', 'Y', 'C', '0', '0', 'device:appversion:list', 'list', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, 'APP版本管理菜单');
|
||
-- 按钮
|
||
insert into sys_menu values(1771400000000000022, '版本查询', 1771400000000000006, 1, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:appversion:query', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
insert into sys_menu values(1771400000000000023, '版本新增', 1771400000000000006, 2, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:appversion:add', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
insert into sys_menu values(1771400000000000024, '版本修改', 1771400000000000006, 3, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:appversion:edit', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
insert into sys_menu values(1771400000000000025, '版本删除', 1771400000000000006, 4, '', '', '', 'N', 'Y', 'F', '0', '0', 'device:appversion:remove', '#', '', '', 1761000000000000103, 1761100000000000001, sysdate(), null, null, '');
|
||
|
||
-- ============================ 十七、角色-菜单关联(APP 版本) ============================
|
||
-- 设备管理员:菜单 + 全部按钮
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000006);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000022);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000023);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000024);
|
||
insert into sys_role_menu values (1771300000000000001, 1771400000000000025);
|
||
-- 设备管理员:补授框架上传权限字 system:oss:upload(menu_id=1761400000000001601 '文件上传',见 ry_vue.sql:318)
|
||
-- 只补上传这一条,读/删/改配置属超管职责,不授。
|
||
insert into sys_role_menu values (1771300000000000001, 1761400000000001601);
|
||
-- 审计员:菜单 + 仅 query(只读)
|
||
insert into sys_role_menu values (1771300000000000002, 1771400000000000006);
|
||
insert into sys_role_menu values (1771300000000000002, 1771400000000000022);
|