-- App 业务独立库（用户/设备）
-- 执行前请先确认数据库权限

CREATE DATABASE IF NOT EXISTS `u_center` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE `u_center`;

-- ----------------------------
-- 1. App 用户表
-- ----------------------------
DROP TABLE IF EXISTS `u_user`;
CREATE TABLE `u_user` (
  `user_id`            BIGINT       NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `mobile`             VARCHAR(20)  NOT NULL COMMENT '手机号(登录账号)',
  `nick_name`          VARCHAR(64)  DEFAULT '' COMMENT '昵称',
  `avatar`             VARCHAR(255) DEFAULT '' COMMENT '头像URL',
  `password_hash`      VARCHAR(255) DEFAULT '' COMMENT '密码哈希(可空,支持验证码登录)',
  `status`             CHAR(1)      DEFAULT '0' COMMENT '状态(0正常 1停用)',
  `last_login_ip`      VARCHAR(64)  DEFAULT '' COMMENT '最后登录IP',
  `last_login_time`    DATETIME     DEFAULT NULL COMMENT '最后登录时间',

  `create_by`          VARCHAR(64)  DEFAULT '' COMMENT '创建者',
  `create_time`        DATETIME     DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by`          VARCHAR(64)  DEFAULT '' COMMENT '更新者',
  `update_time`        DATETIME     DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `remark`             VARCHAR(500) DEFAULT '' COMMENT '备注',
  `del_flag`           CHAR(1)      DEFAULT '0' COMMENT '删除标志(0存在 2删除)',

  PRIMARY KEY (`user_id`),
  UNIQUE KEY `uk_u_user_mobile` (`mobile`),
  KEY `idx_u_user_status` (`status`),
  KEY `idx_u_user_del_flag` (`del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='App用户表';

-- ----------------------------
-- 2. App 设备表
-- ----------------------------
DROP TABLE IF EXISTS `u_device`;
CREATE TABLE `u_device` (
  `device_id`          BIGINT       NOT NULL AUTO_INCREMENT COMMENT '设备ID',
  `device_name`        VARCHAR(100) NOT NULL COMMENT '设备名称',
  `device_sn`          VARCHAR(64)  NOT NULL COMMENT '设备SN/唯一编码',
  `device_type`        VARCHAR(50)  DEFAULT '' COMMENT '设备类型',
  `status`             CHAR(1)      DEFAULT '0' COMMENT '状态(0正常 1停用)',
  `owner_user_id`      BIGINT       DEFAULT NULL COMMENT '归属用户ID',
  `bind_time`          DATETIME     DEFAULT NULL COMMENT '绑定时间',
  `last_connected_at`  DATETIME     DEFAULT NULL COMMENT '最近连接时间',

  `create_by`          VARCHAR(64)  DEFAULT '' COMMENT '创建者',
  `create_time`        DATETIME     DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by`          VARCHAR(64)  DEFAULT '' COMMENT '更新者',
  `update_time`        DATETIME     DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `remark`             VARCHAR(500) DEFAULT '' COMMENT '备注',
  `del_flag`           CHAR(1)      DEFAULT '0' COMMENT '删除标志(0存在 2删除)',

  PRIMARY KEY (`device_id`),
  UNIQUE KEY `uk_u_device_sn` (`device_sn`),
  KEY `idx_u_device_owner` (`owner_user_id`),
  KEY `idx_u_device_status` (`status`),
  KEY `idx_u_device_del_flag` (`del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='App设备表';

-- ----------------------------
-- 3. App 用户设备关系表（推荐）
-- ----------------------------
DROP TABLE IF EXISTS `u_user_device`;
CREATE TABLE `u_user_device` (
  `id`                 BIGINT       NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_id`            BIGINT       NOT NULL COMMENT '用户ID',
  `device_id`          BIGINT       NOT NULL COMMENT '设备ID',
  `is_owner`           CHAR(1)      DEFAULT '0' COMMENT '是否主绑定人(0否 1是)',
  `status`             CHAR(1)      DEFAULT '0' COMMENT '关系状态(0正常 1解除)',

  `create_by`          VARCHAR(64)  DEFAULT '' COMMENT '创建者',
  `create_time`        DATETIME     DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_by`          VARCHAR(64)  DEFAULT '' COMMENT '更新者',
  `update_time`        DATETIME     DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `remark`             VARCHAR(500) DEFAULT '' COMMENT '备注',
  `del_flag`           CHAR(1)      DEFAULT '0' COMMENT '删除标志(0存在 2删除)',

  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_u_user_device` (`user_id`,`device_id`,`del_flag`),
  KEY `idx_u_user_device_user` (`user_id`),
  KEY `idx_u_user_device_device` (`device_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='App用户设备关联表';
