新视频推送接收(未测) app升级 告警 国际短信跟谷歌邮箱接入
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
-- ----------------------------------------------------------------------------
|
||||
-- 智能飞禽物联平台 · 设备域建表脚本(阶段1 / 迭代 I1)
|
||||
-- 说明:
|
||||
-- 1. 6 张设备表 + 8 个字典 + 设备菜单 + 8 个权限字 + 2 个角色及其菜单关联。
|
||||
-- 1. 7 张设备表 + 8 个字典 + 设备菜单 + 12 个权限字 + 2 个角色及其菜单关联。
|
||||
-- 2. 严禁出现任何直播字段(stream_url / play_url / live_*)与医疗模板字段。
|
||||
-- 3. 逻辑删除取值与框架配置一致:0 存在 / 1 删除(common-mybatis.yml: logicDeleteValue=1)。
|
||||
-- 4. 唯一索引(device_no / imei)叠加逻辑删除,存在「逻辑删除后编号不可复用」的既有约束,
|
||||
@@ -101,12 +101,17 @@ create table bm_device_alert (
|
||||
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已处理,一期只读展示)',
|
||||
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_alert_time (alert_time),
|
||||
key idx_status_time (status, alert_time)
|
||||
) engine=innodb comment = '设备告警';
|
||||
|
||||
-- ============================ 五、OTA 升级包 ============================
|
||||
@@ -161,7 +166,36 @@ create table bm_ota_task (
|
||||
key idx_package_id (package_id)
|
||||
) engine=innodb comment = 'OTA升级任务';
|
||||
|
||||
-- ============================ 七、字典类型(8 个) ============================
|
||||
-- ============================ 七、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, '头套连接列表');
|
||||
@@ -171,7 +205,7 @@ insert into sys_dict_type values(1771500000000000006, '升级包状态', 'bm_o
|
||||
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, '在线');
|
||||
@@ -204,7 +238,7 @@ insert into sys_dict_data values(1771600000000000021, 1, '绑定', 'bind', 'bm
|
||||
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, '设备管理目录');
|
||||
-- 二级菜单
|
||||
@@ -224,12 +258,18 @@ insert into sys_menu values(1771400000000000004, 'APP用户', 177140000000000000
|
||||
-- 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);
|
||||
@@ -244,6 +284,11 @@ insert into sys_role_menu values (1771300000000000001, 1771400000000000016);
|
||||
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);
|
||||
@@ -253,3 +298,80 @@ 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);
|
||||
|
||||
Reference in New Issue
Block a user