feat(binding): verify 4G relations before Banban unbind

This commit is contained in:
stu2not
2026-09-23 17:47:42 +08:00
parent e5ba92ba13
commit 515567f6d4
26 changed files with 2185 additions and 29 deletions
+4
View File
@@ -312,6 +312,7 @@ CREATE TABLE IF NOT EXISTS `device_bindings` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`device_id` VARCHAR(64) NOT NULL,
`owner_user_id` BIGINT NOT NULL,
`binding_instance_id` CHAR(36) NULL,
`child_id` BIGINT NULL,
`status` TINYINT NOT NULL DEFAULT 1,
`bound_at` DATETIME NOT NULL,
@@ -320,6 +321,7 @@ CREATE TABLE IF NOT EXISTS `device_bindings` (
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
CONSTRAINT `uq_device_binding_device` UNIQUE (`device_id`),
UNIQUE KEY `uk_binding_instance` (`binding_instance_id`),
CONSTRAINT `uq_device_binding_child` UNIQUE (`child_id`),
KEY `idx_device_bindings_owner_user_id` (`owner_user_id`),
CONSTRAINT `fk_device_bindings_device`
@@ -498,6 +500,7 @@ CREATE TABLE IF NOT EXISTS `device_settings` (
`signal` TINYINT UNSIGNED NULL,
`version` VARCHAR(64) NULL,
`imei` VARCHAR(64) NULL,
`iccid` VARCHAR(22) NULL,
`device_type` TINYINT NULL,
`ota_channel` VARCHAR(32) NULL,
`disable_weekdays` VARCHAR(32) NULL,
@@ -505,6 +508,7 @@ CREATE TABLE IF NOT EXISTS `device_settings` (
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`setting_id`),
UNIQUE KEY `uq_device_settings_device_id` (`device_id`),
UNIQUE KEY `uk_device_settings_iccid` (`iccid`),
CONSTRAINT `fk_device_settings_device`
FOREIGN KEY (`device_id`)
REFERENCES `device_auth` (`device_id`)
@@ -0,0 +1,17 @@
CREATE TABLE IF NOT EXISTS device_binding_operations (
operation_id CHAR(36) NOT NULL PRIMARY KEY,
binding_instance_id CHAR(36) NOT NULL,
device_id VARCHAR(64) NOT NULL,
owner_user_id BIGINT NOT NULL,
action VARCHAR(8) NOT NULL,
iccid VARCHAR(22) NULL,
traffic_status VARCHAR(24) NOT NULL DEFAULT 'pending',
status VARCHAR(24) NOT NULL DEFAULT 'pending',
handoff_attempt INT NOT NULL DEFAULT 0,
handoff_started TINYINT NOT NULL DEFAULT 0,
last_error VARCHAR(64) NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_binding_operation (binding_instance_id, action),
KEY idx_binding_operation_owner (owner_user_id, device_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;