-- ----------------------------
-- 调试宝设备表（TSB Device）
-- 执行前请确认库名；可与 ry_20260417.sql 使用同一数据库
-- ----------------------------
DROP TABLE IF EXISTS tsb_user_device;
DROP TABLE IF EXISTS tsb_device;
CREATE TABLE tsb_device (
  device_id            bigint(20)      NOT NULL AUTO_INCREMENT    COMMENT '设备主键',
  imei                 varchar(32)     NOT NULL                   COMMENT '设备IMEI（唯一）',
  device_type          varchar(32)     NULL                       COMMENT '设备型号',
  device_sn            bigint          NULL                       COMMENT '设备SN码',
  dept_id              bigint(20)      NULL                       COMMENT '所属部门ID',
  device_produce_date  datetime        NULL                       COMMENT '设备生产日期',
  software_version     varchar(32)     NULL                       COMMENT '软件版本号',
  status               char(1)         NULL                       COMMENT '状态（0正常 1停用）',
  last_run_time        datetime        NULL                       COMMENT '最后在线时间',
  del_flag             char(1)         DEFAULT '0'                COMMENT '删除标志（0代表存在 2代表删除）',
  create_by            varchar(64)     DEFAULT ''                 COMMENT '创建者',
  create_time          datetime                                   COMMENT '创建时间',
  update_by            varchar(64)     DEFAULT ''                 COMMENT '更新者',
  update_time          datetime                                   COMMENT '更新时间',
  remark               varchar(500)    DEFAULT NULL               COMMENT '备注',
  PRIMARY KEY (device_id),
  UNIQUE KEY uk_imei (imei),
  KEY idx_device_sn (device_sn),
  KEY idx_status_del (status, del_flag)
) COMMENT='调试宝设备表';


-- ----------------------------
-- 调试宝设备与用户关联表（一用户一台在用设备）
-- user_id、device_id 各自唯一，与 sys_user.user_id、tsb_device.device_id 对应
-- ----------------------------
CREATE TABLE tsb_user_device (
  user_id            bigint(20)      NOT NULL                   COMMENT '用户ID（sys_user.user_id）',
  device_id          bigint(20)      NOT NULL                   COMMENT '设备ID（tsb_device.device_id）',
  bind_time          datetime        NULL                       COMMENT '绑定时间',
  PRIMARY KEY (user_id, device_id)
) COMMENT='调试宝设备与用户绑定表';


-- ----------------------------
-- 调试宝 菜单与按钮（若依 sys_menu）
-- 在 ry_*.sql 初始化库执行后追加；执行完需在「角色管理」中为普通角色勾选新菜单，或为 sys_role_menu 追加见文末
-- ----------------------------

-- 一级目录
INSERT INTO sys_menu VALUES ('3200', '调试宝', '0', '5', 'tsb', NULL, '', '', 1, 0, 'M', '0', '0', '', 'phone', 'admin', sysdate(), '', NULL, '调试宝目录');

-- 设备管理页（含列表中的绑定能力）
INSERT INTO sys_menu VALUES ('3201', '设备管理', '3200', '1', 'device', 'tsb/device/index', '', '', 1, 0, 'C', '0', '0', 'tsb:device:list', 'list', 'admin', sysdate(), '', NULL, '调试宝设备管理');

-- 按钮
INSERT INTO sys_menu VALUES ('3202', '设备查询', '3201', '1', '#', '', '', '', 1, 0, 'F', '0', '0', 'tsb:device:query', '#', 'admin', sysdate(), '', NULL, '');
INSERT INTO sys_menu VALUES ('3203', '设备新增', '3201', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'tsb:device:add', '#', 'admin', sysdate(), '', NULL, '');
INSERT INTO sys_menu VALUES ('3204', '设备修改', '3201', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'tsb:device:edit', '#', 'admin', sysdate(), '', NULL, '');
INSERT INTO sys_menu VALUES ('3205', '设备删除', '3201', '4', '#', '', '', '', 1, 0, 'F', '0', '0', 'tsb:device:remove', '#', 'admin', sysdate(), '', NULL, '');
INSERT INTO sys_menu VALUES ('3206', '设备导出', '3201', '5', '#', '', '', '', 1, 0, 'F', '0', '0', 'tsb:device:export', '#', 'admin', sysdate(), '', NULL, '');

-- 普通角色 role_id=2 授权（超级管理员通常拥有 *:*:*，可不执行；按需对其它角色同样插入）
INSERT INTO sys_role_menu VALUES ('2', '3200');
INSERT INTO sys_role_menu VALUES ('2', '3201');
INSERT INTO sys_role_menu VALUES ('2', '3202');
INSERT INTO sys_role_menu VALUES ('2', '3203');
INSERT INTO sys_role_menu VALUES ('2', '3204');
INSERT INTO sys_role_menu VALUES ('2', '3205');
INSERT INTO sys_role_menu VALUES ('2', '3206');



-- ----------------------------
-- 调试宝终端功能菜单权限（若依 sys_menu）
-- 依据 tsb_home_page.lua：第一层为选项卡目录(M)，第二层为功能菜单(C)
-- 目录 menu_id 按 100 跨度预留，便于后续扩展按钮权限(F)
-- 权限标识 下发至设备登录 permissions 字段，供终端按功能鉴权
-- icon：目录与菜单均使用若依内置 SVG 图标名
-- ----------------------------

-- ========== 第一层：目录（对应 tab_names，menu_id 3300/3400/3500/3600） ==========

-- 常用功能
INSERT INTO sys_menu VALUES ('3300', '常用功能', '0', '6', 'app-common', NULL, '', '', 1, 0, 'M', '1', '0', '', 'dashboard', 'admin', sysdate(), '', NULL, '终端-常用功能目录');
-- 目标设备监测
INSERT INTO sys_menu VALUES ('3400', '目标设备监测', '0', '7', 'app-monitor', NULL, '', '', 1, 0, 'M', '1', '0', '', 'monitor', 'admin', sysdate(), '', NULL, '终端-目标设备监测目录');
-- 目标设备管理
INSERT INTO sys_menu VALUES ('3500', '目标设备管理', '0', '8', 'app-manage', NULL, '', '', 1, 0, 'M', '1', '0', '', 'tool', 'admin', sysdate(), '', NULL, '终端-目标设备管理目录');
-- 本机设备管理
INSERT INTO sys_menu VALUES ('3600', '本机设备管理', '0', '9', 'app-local', NULL, '', '', 1, 0, 'M', '1', '0', '', 'phone', 'admin', sysdate(), '', NULL, '终端-本机设备管理目录');


-- ========== 第二层：菜单（对应 demos_by_tab） ==========

-- ---------- 常用功能（3301-3399 预留） ----------
INSERT INTO sys_menu VALUES ('3301', '报税口',     '3300', '1', 'tax', 'app-common/tax/index', '', '', 1, 0, 'C', '1', '0', 'common:tax',      'money',         'admin', sysdate(), '', NULL, '报税口 Web 镜像页');
INSERT INTO sys_menu VALUES ('3302', '液位仪',     '3300', '2', 'opw', 'app-common/opw/index', '', '', 1, 0, 'C', '1', '0', 'common:opw',      'slider',        'admin', sysdate(), '', NULL, '液位仪 Web 镜像页');
INSERT INTO sys_menu VALUES ('3303', '提枪信号',   '3300', '3', 'raise', 'app-common/raise/index', '', '', 1, 0, 'C', '1', '0', 'common:raise',       'radio',         'admin', sysdate(), '', NULL, '提枪信号 Web 镜像页');
INSERT INTO sys_menu VALUES ('3304', '编码器',     '3300', '4', 'coder', 'app-common/coder/index', '', '', 1, 0, 'C', '1', '0', 'common:coder',      'code',          'admin', sysdate(), '', NULL, '编码器 Web 镜像页');
INSERT INTO sys_menu VALUES ('3305', '简易示波器', '3300', '5', 'oscilloscope', 'app-common/oscilloscope/index', '', '', 1, 0, 'C', '1', '0', 'common:oscilloscope', 'chart',         'admin', sysdate(), '', NULL, '简易示波器 Web 镜像页');
INSERT INTO sys_menu VALUES ('3306', '帮助',       '3300', '6', 'help', 'app-common/help/index', '', '', 1, 0, 'C', '1', '0', 'common:help',     'question',      'admin', sysdate(), '', NULL, '帮助 Web 镜像页');
INSERT INTO sys_menu VALUES ('3307', '液位仪查询', '3302', '1', 'query', 'app-common/opw/query', '', '', 1, 0, 'C', '1', '0', 'common:opw:query', '#', 'admin', sysdate(), '', NULL, '液位仪查询 Web 镜像页');
INSERT INTO sys_menu VALUES ('3308', '液位仪透传', '3302', '2', 'passthrough', 'app-common/opw/passthrough', '', '', 1, 0, 'C', '1', '0', 'common:opw:passthrough', '#', 'admin', sysdate(), '', NULL, '液位仪透传 Web 镜像页');

-- ---------- 目标设备监测（3401-3499 预留） ----------
INSERT INTO sys_menu VALUES ('3401', '日志监测',       '3400', '1', 'devlog', 'app-monitor/devlog/index', '', '', 1, 0, 'C', '1', '0', 'monitor:devlog', 'log',         'admin', sysdate(), '', NULL, '日志监测 Web 镜像页');
INSERT INTO sys_menu VALUES ('3402', '485监测',        '3400', '2', '485', 'app-monitor/485/index', '', '', 1, 0, 'C', '1', '0', 'monitor:485',    'component',   'admin', sysdate(), '', NULL, '485监测 Web 镜像页');
INSERT INTO sys_menu VALUES ('3403', '232监测',        '3400', '3', '232', 'app-monitor/232/index', '', '', 1, 0, 'C', '1', '0', 'monitor:232',    'link',        'admin', sysdate(), '', NULL, '232监测 Web 镜像页');
INSERT INTO sys_menu VALUES ('3404', '射频局域网监测', '3400', '4', 'lora', 'app-monitor/lora/index', '', '', 1, 0, 'C', '1', '0', 'monitor:lora',   'online',      'admin', sysdate(), '', NULL, '射频局域网监测 Web 镜像页');

-- ---------- 目标设备管理（3501-3599 预留） ----------
INSERT INTO sys_menu VALUES ('3501', '固件包下载', '3500', '1', 'firm', 'app-manage/firm/index', '', '', 1, 0, 'C', '1', '0', 'manage:firm',    'download',      'admin', sysdate(), '', NULL, '固件包下载 Web 镜像页');
INSERT INTO sys_menu VALUES ('3502', '升级',       '3500', '2', 'upgrade', 'app-manage/upgrade/index', '', '', 1, 0, 'C', '1', '0', 'manage:upgrade', 'upload',        'admin', sysdate(), '', NULL, '升级 Web 镜像页');
INSERT INTO sys_menu VALUES ('3503', '刷机',       '3500', '3', 'reflash', 'app-manage/reflash/index', '', '', 1, 0, 'C', '1', '0', 'manage:reflash', 'build',         'admin', sysdate(), '', NULL, '刷机 Web 镜像页');
INSERT INTO sys_menu VALUES ('3504', 'MQTT配置',   '3500', '4', 'mqtt', 'app-manage/mqtt/index', '', '', 1, 0, 'C', '1', '0', 'manage:mqtt',    'server',        'admin', sysdate(), '', NULL, 'MQTT配置 Web 镜像页');
INSERT INTO sys_menu VALUES ('3505', '信道切换',   '3500', '5', 'channel', 'app-manage/channel/index', '', '', 1, 0, 'C', '1', '0', 'manage:channel', 'switch',        'admin', sysdate(), '', NULL, '信道切换 Web 镜像页');

-- ---------- 本机设备管理（3601-3699 预留） ----------
INSERT INTO sys_menu VALUES ('3601', '本机信息', '3600', '1', 'info', 'app-local/info/index', '', '', 1, 0, 'C', '1', '0', 'local:info', 'documentation', 'admin', sysdate(), '', NULL, '本机信息 Web 镜像页');
INSERT INTO sys_menu VALUES ('3602', '本机升级', '3600', '2', 'upgrade', 'app-local/upgrade/index', '', '', 1, 0, 'C', '1', '0', 'local:upgrade',  'more-up',       'admin', sysdate(), '', NULL, '本机升级 Web 镜像页');
INSERT INTO sys_menu VALUES ('3603', '本机日志', '3600', '3', 'log', 'app-local/log/index', '', '', 1, 0, 'C', '1', '0', 'local:log',     'logininfor',    'admin', sysdate(), '', NULL, '本机日志 Web 镜像页');
INSERT INTO sys_menu VALUES ('3604', '亮度管理', '3600', '4', 'light', 'app-local/light/index', '', '', 1, 0, 'C', '1', '0', 'local:light',   'theme',         'admin', sysdate(), '', NULL, '亮度管理 Web 镜像页');
INSERT INTO sys_menu VALUES ('3605', '网络设置', '3600', '5', 'wlan', 'app-local/wlan/index', '', '', 1, 0, 'C', '1', '0', 'local:wlan',    'international', 'admin', sysdate(), '', NULL, '网络设置 Web 镜像页');


-- ----------------------------
-- 普通角色 role_id=2 授权（按需调整角色 ID；超级管理员默认 *:*:*）
-- 游客模式可见子集见 tsb_home_page.lua demos_by_tab_visitor，可在角色管理中单独配置
-- ----------------------------
INSERT INTO sys_role_menu VALUES ('2', '3300');
INSERT INTO sys_role_menu VALUES ('2', '3301');
INSERT INTO sys_role_menu VALUES ('2', '3302');
INSERT INTO sys_role_menu VALUES ('2', '3303');
INSERT INTO sys_role_menu VALUES ('2', '3304');
INSERT INTO sys_role_menu VALUES ('2', '3305');
INSERT INTO sys_role_menu VALUES ('2', '3306');
INSERT INTO sys_role_menu VALUES ('2', '3307');
INSERT INTO sys_role_menu VALUES ('2', '3308');

INSERT INTO sys_role_menu VALUES ('2', '3400');
INSERT INTO sys_role_menu VALUES ('2', '3401');
INSERT INTO sys_role_menu VALUES ('2', '3402');
INSERT INTO sys_role_menu VALUES ('2', '3403');
INSERT INTO sys_role_menu VALUES ('2', '3404');

INSERT INTO sys_role_menu VALUES ('2', '3500');
INSERT INTO sys_role_menu VALUES ('2', '3501');
INSERT INTO sys_role_menu VALUES ('2', '3502');
INSERT INTO sys_role_menu VALUES ('2', '3503');
INSERT INTO sys_role_menu VALUES ('2', '3504');
INSERT INTO sys_role_menu VALUES ('2', '3505');

INSERT INTO sys_role_menu VALUES ('2', '3600');
INSERT INTO sys_role_menu VALUES ('2', '3601');
INSERT INTO sys_role_menu VALUES ('2', '3602');
INSERT INTO sys_role_menu VALUES ('2', '3603');
INSERT INTO sys_role_menu VALUES ('2', '3604');
INSERT INTO sys_role_menu VALUES ('2', '3605');


-- ----------------------------
-- 设备升级包表（固件 GET_APK_UP 查询）
-- ----------------------------
DROP TABLE IF EXISTS tb_device_upgrade_package;
CREATE TABLE tb_device_upgrade_package (
  id              bigint(20)      NOT NULL AUTO_INCREMENT    COMMENT '主键',
  device_type     varchar(32)     NULL                       COMMENT '设备类型',
  app_version     varchar(32)     NULL                       COMMENT '软件版本号',
  download_url    varchar(255)    NULL                       COMMENT '下载地址',
  status          tinyint(1)      DEFAULT 1                  COMMENT '状态（0:未启用；1:启用）',
  type            tinyint(1)      DEFAULT 1                  COMMENT '升级包类型（0:测试；1:正式）',
  firmware_type   tinyint(1)      DEFAULT 3                  COMMENT '固件类型（1:bootloader;2:产测;3:app;4:lua）',
  remark          varchar(500)    DEFAULT NULL               COMMENT '备注',
  create_by       varchar(64)     DEFAULT ''                 COMMENT '创建者',
  create_time     datetime                                   COMMENT '创建时间',
  update_by       varchar(64)     DEFAULT ''                 COMMENT '更新者',
  update_time     datetime                                   COMMENT '更新时间',
  del_flag        char(1)         DEFAULT '0'                COMMENT '删除标志（0代表存在 2代表删除）',
  PRIMARY KEY (id),
  KEY idx_model_firmware_type (device_type, firmware_type, type, status, del_flag)
) COMMENT='设备升级包表';


-- ----------------------------
-- 升级包管理 菜单与按钮（若依 sys_menu）
-- 挂载在调试宝(3200)目录下
-- ----------------------------

-- 升级包管理页
INSERT INTO sys_menu VALUES ('3211', '升级包管理', '3200', '2', 'upgradePackage', 'tsb/upgradePackage/index', '', '', 1, 0, 'C', '0', '0', 'tsb:upgradePackage:list', 'tree-table', 'admin', sysdate(), '', NULL, '调试宝升级包管理');

-- 按钮
INSERT INTO sys_menu VALUES ('3212', '升级包查询', '3211', '1', '#', '', '', '', 1, 0, 'F', '0', '0', 'tsb:upgradePackage:query', '#', 'admin', sysdate(), '', NULL, '');
INSERT INTO sys_menu VALUES ('3213', '升级包新增', '3211', '2', '#', '', '', '', 1, 0, 'F', '0', '0', 'tsb:upgradePackage:add', '#', 'admin', sysdate(), '', NULL, '');
INSERT INTO sys_menu VALUES ('3214', '升级包修改', '3211', '3', '#', '', '', '', 1, 0, 'F', '0', '0', 'tsb:upgradePackage:edit', '#', 'admin', sysdate(), '', NULL, '');
INSERT INTO sys_menu VALUES ('3215', '升级包删除', '3211', '4', '#', '', '', '', 1, 0, 'F', '0', '0', 'tsb:upgradePackage:remove', '#', 'admin', sysdate(), '', NULL, '');

-- 普通角色 role_id=2 授权
INSERT INTO sys_role_menu VALUES ('2', '3211');
INSERT INTO sys_role_menu VALUES ('2', '3212');
INSERT INTO sys_role_menu VALUES ('2', '3213');
INSERT INTO sys_role_menu VALUES ('2', '3214');
INSERT INTO sys_role_menu VALUES ('2', '3215');
