refactor(device): 重构设备信息模块,按面板拆分数据存储和接口

将原 SnDeviceSystemInfo 单一实体拆分为基本信息、硬件、网络、安全、其他信息五个独立子表和服务,重构 DeviceController 和 MobileController 接口以支持分面板查询和上传
This commit is contained in:
TongTongStudio
2026-08-05 02:09:38 +08:00
parent 537644ab2e
commit 3608c205b9
39 changed files with 2447 additions and 164 deletions

47
sql/sn_hardware_info.sql Normal file
View File

@@ -0,0 +1,47 @@
-- =============================================================================
-- 设备硬件信息表sys_sn_hardware_info
-- 说明:设备【硬件信息】面板独立分表,与基本信息表分离存储。
-- =============================================================================
CREATE TABLE IF NOT EXISTS `sys_sn_hardware_info`
(
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`serialno` VARCHAR(64) NOT NULL COMMENT '设备序列号(关联 sys_sn.serialno',
-- ===================== 硬件信息面板 =====================
`cpu_abi` VARCHAR(128) DEFAULT NULL COMMENT 'CPU ABI 列表(逗号分隔)',
`cpu_abi2` VARCHAR(128) DEFAULT NULL COMMENT 'CPU ABI2',
`cpu_min` VARCHAR(64) DEFAULT NULL COMMENT '最小 CPU ABI',
`cpu_model` VARCHAR(128) DEFAULT NULL COMMENT 'CPU 型号',
`cpu_cores` INT DEFAULT NULL COMMENT 'CPU 核心数',
`cpu_max_freq` VARCHAR(32) DEFAULT NULL COMMENT 'CPU 最大频率',
`cpu_min_freq` VARCHAR(32) DEFAULT NULL COMMENT 'CPU 最小频率',
`total_ram` VARCHAR(32) DEFAULT NULL COMMENT '总内存',
`available_ram` VARCHAR(32) DEFAULT NULL COMMENT '可用内存',
`internal_storage` VARCHAR(32) DEFAULT NULL COMMENT '内部存储',
`available_storage` VARCHAR(32) DEFAULT NULL COMMENT '可用存储',
`external_storage` VARCHAR(32) DEFAULT NULL COMMENT '外部存储SD卡',
`battery_capacity` VARCHAR(32) DEFAULT NULL COMMENT '电池容量',
`battery_level` INT DEFAULT NULL COMMENT '电池电量0-100',
`battery_status` VARCHAR(32) DEFAULT NULL COMMENT '电池状态',
`battery_health` VARCHAR(32) DEFAULT NULL COMMENT '电池健康度',
`battery_temp` VARCHAR(32) DEFAULT NULL COMMENT '电池温度',
`battery_voltage` VARCHAR(32) DEFAULT NULL COMMENT '电池电压',
`battery_technology` VARCHAR(32) DEFAULT NULL COMMENT '电池技术',
`gpu_renderer` VARCHAR(128) DEFAULT NULL COMMENT 'GPU 渲染器',
`gpu_vendor` VARCHAR(64) DEFAULT NULL COMMENT 'GPU 厂商',
`gpu_version` VARCHAR(64) DEFAULT NULL COMMENT 'GPU 版本',
`sensors` TEXT DEFAULT NULL COMMENT '传感器列表JSON',
`support_abi` VARCHAR(128) DEFAULT NULL COMMENT '支持的应用二进制接口',
`support_abi64` VARCHAR(128) DEFAULT NULL COMMENT '支持的 64 位 ABI',
-- ===================== 通用字段 =====================
`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
`update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
`is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除0未删 1已删',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_serialno` (`serialno`),
KEY `idx_is_deleted` (`is_deleted`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COMMENT = '设备硬件信息表';

47
sql/sn_network_info.sql Normal file
View File

@@ -0,0 +1,47 @@
-- =============================================================================
-- 设备网络信息表sys_sn_network_info
-- 说明:设备【网络信息】面板独立分表,与基本信息表分离存储。
-- =============================================================================
CREATE TABLE IF NOT EXISTS `sys_sn_network_info`
(
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`serialno` VARCHAR(64) NOT NULL COMMENT '设备序列号(关联 sys_sn.serialno',
-- ===================== 网络信息面板 =====================
`network_type` VARCHAR(32) DEFAULT NULL COMMENT '网络类型WIFI/MOBILE/ETHERNET等',
`network_subtype` VARCHAR(32) DEFAULT NULL COMMENT '网络子类型',
`is_connected` TINYINT DEFAULT NULL COMMENT '是否联网0否 1是',
`wifi_ssid` VARCHAR(128) DEFAULT NULL COMMENT 'WiFi SSID',
`wifi_bssid` VARCHAR(64) DEFAULT NULL COMMENT 'WiFi BSSID',
`wifi_ip` VARCHAR(64) DEFAULT NULL COMMENT 'WiFi IP 地址',
`wifi_mac` VARCHAR(64) DEFAULT NULL COMMENT 'WiFi MAC 地址',
`wifi_gateway` VARCHAR(64) DEFAULT NULL COMMENT 'WiFi 网关',
`wifi_netmask` VARCHAR(64) DEFAULT NULL COMMENT 'WiFi 子网掩码',
`wifi_dns` VARCHAR(128) DEFAULT NULL COMMENT 'WiFi DNS',
`wifi_rssi` INT DEFAULT NULL COMMENT 'WiFi 信号强度',
`wifi_speed` VARCHAR(32) DEFAULT NULL COMMENT 'WiFi 连接速度',
`mobile_ip` VARCHAR(64) DEFAULT NULL COMMENT '移动网络 IP',
`mobile_mac` VARCHAR(64) DEFAULT NULL COMMENT '移动网络 MAC',
`mobile_imei` VARCHAR(64) DEFAULT NULL COMMENT 'IMEI',
`mobile_imsi` VARCHAR(64) DEFAULT NULL COMMENT 'IMSI',
`mobile_operator` VARCHAR(64) DEFAULT NULL COMMENT '运营商名称',
`mobile_sim_serial` VARCHAR(64) DEFAULT NULL COMMENT 'SIM 序列号',
`mobile_network_type` VARCHAR(32) DEFAULT NULL COMMENT '移动网络类型',
`bluetooth_mac` VARCHAR(64) DEFAULT NULL COMMENT '蓝牙 MAC 地址',
`bluetooth_name` VARCHAR(128) DEFAULT NULL COMMENT '蓝牙名称',
`is_vpn` TINYINT DEFAULT NULL COMMENT '是否 VPN0否 1是',
`is_proxy` TINYINT DEFAULT NULL COMMENT '是否代理0否 1是',
`proxy_host` VARCHAR(64) DEFAULT NULL COMMENT '代理主机',
`proxy_port` VARCHAR(16) DEFAULT NULL COMMENT '代理端口',
-- ===================== 通用字段 =====================
`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
`update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
`is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除0未删 1已删',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_serialno` (`serialno`),
KEY `idx_is_deleted` (`is_deleted`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COMMENT = '设备网络信息表';

44
sql/sn_other_info.sql Normal file
View File

@@ -0,0 +1,44 @@
-- =============================================================================
-- 设备其他信息表sys_sn_other_info
-- 说明:设备【其他信息】面板独立分表,与基本信息表分离存储。
-- =============================================================================
CREATE TABLE IF NOT EXISTS `sys_sn_other_info`
(
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`serialno` VARCHAR(64) NOT NULL COMMENT '设备序列号(关联 sys_sn.serialno',
-- ===================== 其他信息面板 =====================
`app_version` VARCHAR(32) DEFAULT NULL COMMENT 'App 版本',
`app_version_code` INT DEFAULT NULL COMMENT 'App 版本号',
`install_time` DATETIME DEFAULT NULL COMMENT 'App 安装时间',
`update_time_app` DATETIME DEFAULT NULL COMMENT 'App 更新时间',
`package_name` VARCHAR(128) DEFAULT NULL COMMENT '应用包名',
`channel` VARCHAR(64) DEFAULT NULL COMMENT '渠道',
`device_id` VARCHAR(64) DEFAULT NULL COMMENT '设备 ID应用层',
`gaid` VARCHAR(64) DEFAULT NULL COMMENT 'Google Advertising ID',
`oaid` VARCHAR(64) DEFAULT NULL COMMENT 'OAID',
`phone_number` VARCHAR(32) DEFAULT NULL COMMENT '手机号(脱敏)',
`iccid` VARCHAR(32) DEFAULT NULL COMMENT 'ICCID',
`imsi` VARCHAR(64) DEFAULT NULL COMMENT 'IMSI',
`camera_info` TEXT DEFAULT NULL COMMENT '摄像头信息JSON',
`sensor_count` INT DEFAULT NULL COMMENT '传感器数量',
`app_list_md5` VARCHAR(64) DEFAULT NULL COMMENT '应用列表 MD5',
`is_charging` TINYINT DEFAULT NULL COMMENT '是否充电中0否 1是',
`charging_type` VARCHAR(32) DEFAULT NULL COMMENT '充电类型',
`temperature` VARCHAR(32) DEFAULT NULL COMMENT '设备温度',
`free_storage` VARCHAR(32) DEFAULT NULL COMMENT '剩余存储',
`total_storage` VARCHAR(32) DEFAULT NULL COMMENT '总存储',
`free_ram` VARCHAR(32) DEFAULT NULL COMMENT '剩余内存',
`total_ram` VARCHAR(32) DEFAULT NULL COMMENT '总内存',
-- ===================== 通用字段 =====================
`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
`update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
`is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除0未删 1已删',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_serialno` (`serialno`),
KEY `idx_is_deleted` (`is_deleted`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COMMENT = '设备其他信息表';

43
sql/sn_security_info.sql Normal file
View File

@@ -0,0 +1,43 @@
-- =============================================================================
-- 设备安全信息表sys_sn_security_info
-- 说明:设备【安全信息】面板独立分表,与基本信息表分离存储。
-- =============================================================================
CREATE TABLE IF NOT EXISTS `sys_sn_security_info`
(
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`serialno` VARCHAR(64) NOT NULL COMMENT '设备序列号(关联 sys_sn.serialno',
-- ===================== 安全信息面板 =====================
`is_root` TINYINT DEFAULT NULL COMMENT '是否已 Root0否 1是',
`is_jailbreak` TINYINT DEFAULT NULL COMMENT '是否已越狱0否 1是',
`root_status` TINYINT DEFAULT NULL COMMENT 'Root/越狱状态0否 1是',
`has_su_binary` TINYINT DEFAULT NULL COMMENT '是否存在 su 二进制0否 1是',
`has_busybox` TINYINT DEFAULT NULL COMMENT '是否存在 BusyBox0否 1是',
`is_emulator` TINYINT DEFAULT NULL COMMENT '是否模拟器0否 1是',
`is_debuggable` TINYINT DEFAULT NULL COMMENT '是否可调试0否 1是',
`is_usb_debug` TINYINT DEFAULT NULL COMMENT '是否开启 USB 调试0否 1是',
`is_unknown_sources` TINYINT DEFAULT NULL COMMENT '是否允许未知来源0否 1是',
`is_verify_apps` TINYINT DEFAULT NULL COMMENT '是否验证应用0否 1是',
`is_encrypted` TINYINT DEFAULT NULL COMMENT '是否加密0否 1是',
`lock_screen_type` VARCHAR(32) DEFAULT NULL COMMENT '锁屏类型',
`has_password` TINYINT DEFAULT NULL COMMENT '是否设置密码0否 1是',
`password_type` VARCHAR(32) DEFAULT NULL COMMENT '密码类型',
`security_patch` VARCHAR(32) DEFAULT NULL COMMENT '安全补丁级别',
`google_play_protect` TINYINT DEFAULT NULL COMMENT 'Google Play 保护0否 1是',
`adb_status` TINYINT DEFAULT NULL COMMENT 'ADB 状态0关 1开',
`is_vpn_active` TINYINT DEFAULT NULL COMMENT 'VPN 是否激活0否 1是',
`is_device_owner` TINYINT DEFAULT NULL COMMENT '是否设备所有者0否 1是',
`android_version` VARCHAR(32) DEFAULT NULL COMMENT 'Android 版本(安全相关)',
`kernel_version` VARCHAR(128) DEFAULT NULL COMMENT '内核版本(安全相关)',
-- ===================== 通用字段 =====================
`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
`update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
`is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除0未删 1已删',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_serialno` (`serialno`),
KEY `idx_is_deleted` (`is_deleted`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COMMENT = '设备安全信息表';

77
sql/sn_system_info.sql Normal file
View File

@@ -0,0 +1,77 @@
-- =============================================================================
-- 设备基本信息表sys_sn_system_info
-- 说明:仅存放设备【基本信息】面板数据;
-- 硬件信息 / 网络信息 / 安全信息 / 其他信息 已拆分至下列独立表。
-- 脚本遵循项目规范:不直连库,由 DBA 执行。
--
-- 重要:部署环境中若已存在【旧结构】的 sys_sn_system_info列名为 sn_model、
-- sn_brand 等CREATE TABLE IF NOT EXISTS 不会重建,会导致实体查询报
-- "Unknown column 'device_name'"。因此此处先 DROP 再 CREATE确保表结构与
-- 实体SnDeviceSystemInfo完全一致。
-- 注意DROP 会清空该表历史数据,设备数据可由端上重新上报补齐。
-- =============================================================================
DROP TABLE IF EXISTS `sys_sn_system_info`;
CREATE TABLE `sys_sn_system_info`
(
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`serialno` VARCHAR(64) NOT NULL COMMENT '设备序列号(关联 sys_sn.serialno',
-- ===================== 基本信息面板 =====================
`device_name` VARCHAR(128) DEFAULT NULL COMMENT '设备名称',
`device_brand` VARCHAR(64) DEFAULT NULL COMMENT '设备品牌',
`device_model` VARCHAR(64) DEFAULT NULL COMMENT '设备型号',
`device_board` VARCHAR(64) DEFAULT NULL COMMENT '主板名称',
`device_manufacturer` VARCHAR(64) DEFAULT NULL COMMENT '制造商',
`hardware` VARCHAR(64) DEFAULT NULL COMMENT '硬件信息',
`host` VARCHAR(64) DEFAULT NULL COMMENT '主机名',
`android_version` VARCHAR(32) DEFAULT NULL COMMENT 'Android 版本',
`android_api` INT DEFAULT NULL COMMENT 'Android API 级别',
`android_id` VARCHAR(64) DEFAULT NULL COMMENT 'Android ID',
`build_id` VARCHAR(64) DEFAULT NULL COMMENT 'Build ID',
`build_display_id` VARCHAR(128) DEFAULT NULL COMMENT 'Build Display ID',
`build_fingerprint` VARCHAR(255) DEFAULT NULL COMMENT 'Build 指纹',
`build_type` VARCHAR(32) DEFAULT NULL COMMENT 'Build 类型user/userdebug/eng',
`build_user` VARCHAR(64) DEFAULT NULL COMMENT 'Build 用户',
`build_host` VARCHAR(64) DEFAULT NULL COMMENT 'Build 主机',
`build_tags` VARCHAR(64) DEFAULT NULL COMMENT 'Build 标签',
`build_time` DATETIME DEFAULT NULL COMMENT 'Build 时间',
`language` VARCHAR(32) DEFAULT NULL COMMENT '系统语言',
`timezone` VARCHAR(64) DEFAULT NULL COMMENT '时区',
`boot_time` DATETIME DEFAULT NULL COMMENT '开机时间',
`screen_resolution` VARCHAR(32) DEFAULT NULL COMMENT '屏幕分辨率',
`screen_density` INT DEFAULT NULL COMMENT '屏幕密度',
`kernel_version` VARCHAR(128) DEFAULT NULL COMMENT '内核版本',
`rom_version` VARCHAR(128) DEFAULT NULL COMMENT 'ROM 版本',
-- ===================== 补充基本信息字段 =====================
`product_name` VARCHAR(128) DEFAULT NULL COMMENT '产品名称',
`product_model` VARCHAR(64) DEFAULT NULL COMMENT '产品型号',
`product_device` VARCHAR(64) DEFAULT NULL COMMENT '产品设备名',
`board_platform` VARCHAR(64) DEFAULT NULL COMMENT '主板平台',
`device_type` VARCHAR(32) DEFAULT NULL COMMENT '设备类型phone/tablet/tv等',
`is_tablet` TINYINT DEFAULT 0 COMMENT '是否平板0否 1是',
`release_version` VARCHAR(32) DEFAULT NULL COMMENT 'Android 发布版本号',
`display_version` VARCHAR(64) DEFAULT NULL COMMENT '显示版本号',
`bootloader` VARCHAR(64) DEFAULT NULL COMMENT 'Bootloader 版本',
`baseband_version` VARCHAR(64) DEFAULT NULL COMMENT '基带版本',
`radio_version` VARCHAR(64) DEFAULT NULL COMMENT 'Radio 版本',
`screen_size` VARCHAR(16) DEFAULT NULL COMMENT '屏幕尺寸(英寸,文本)',
`screen_inch` DECIMAL(4,2) DEFAULT NULL COMMENT '屏幕尺寸(数值,英寸)',
`refresh_rate` INT DEFAULT NULL COMMENT '屏幕刷新率Hz',
`os_type` VARCHAR(32) DEFAULT NULL COMMENT '操作系统类型',
`os_version` VARCHAR(32) DEFAULT NULL COMMENT '操作系统版本',
`firmware_version` VARCHAR(64) DEFAULT NULL COMMENT '固件版本',
-- ===================== 通用字段 =====================
`create_time` DATETIME DEFAULT NULL COMMENT '创建时间',
`update_time` DATETIME DEFAULT NULL COMMENT '更新时间',
`is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除0未删 1已删',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_serialno` (`serialno`),
KEY `idx_is_deleted` (`is_deleted`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COMMENT = '设备基本信息表';