-- 会员体系初始化脚本
-- 执行说明：
-- 1. 本脚本只新增会员体系核心表，不影响现有后台管理员与代理业务表。
-- 2. 后续当订单、白名单、钱包正式切换到会员主账号时，再补业务迁移脚本。

CREATE TABLE IF NOT EXISTS `xxk_member_user` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `username` VARCHAR(64) NOT NULL COMMENT '用户名',
  `nickname` VARCHAR(64) DEFAULT NULL COMMENT '昵称',
  `password` VARCHAR(255) DEFAULT NULL COMMENT '密码',
  `avatar` VARCHAR(255) DEFAULT NULL COMMENT '头像',
  `mobile` VARCHAR(20) NOT NULL COMMENT '手机号',
  `email` VARCHAR(128) DEFAULT NULL COMMENT '邮箱',
  `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态(1正常 0禁用)',
  `source` VARCHAR(32) NOT NULL DEFAULT 'MANUAL' COMMENT '注册来源',
  `wx_openid` VARCHAR(64) DEFAULT NULL COMMENT '微信openid',
  `wx_unionid` VARCHAR(64) DEFAULT NULL COMMENT '微信unionid',
  `last_login_time` DATETIME DEFAULT NULL COMMENT '最后登录时间',
  `last_login_ip` VARCHAR(64) DEFAULT NULL COMMENT '最后登录IP',
  `remark` VARCHAR(255) DEFAULT NULL COMMENT '备注',
  `create_by` BIGINT DEFAULT NULL COMMENT '创建人ID',
  `update_by` BIGINT DEFAULT NULL COMMENT '更新人ID',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0否 1是)',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_xxk_member_user_mobile` (`mobile`),
  UNIQUE KEY `uk_xxk_member_user_username` (`username`),
  KEY `idx_xxk_member_user_status` (`status`),
  KEY `idx_xxk_member_user_source` (`source`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员主账号表';

CREATE TABLE IF NOT EXISTS `xxk_member_profile` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `member_user_id` BIGINT NOT NULL COMMENT '会员ID',
  `agent_level` TINYINT NOT NULL DEFAULT 2 COMMENT '代理级别(1一级代理 2二级代理)',
  `company_name` VARCHAR(128) DEFAULT NULL COMMENT '公司名称',
  `contact_name` VARCHAR(64) DEFAULT NULL COMMENT '联系人',
  `contact_wechat` VARCHAR(64) DEFAULT NULL COMMENT '联系微信',
  `email` VARCHAR(128) DEFAULT NULL COMMENT '联系邮箱',
  `qq` VARCHAR(32) DEFAULT NULL COMMENT 'QQ',
  `address` VARCHAR(255) DEFAULT NULL COMMENT '地址',
  `industry` VARCHAR(64) DEFAULT NULL COMMENT '行业',
  `realname_status` TINYINT NOT NULL DEFAULT 0 COMMENT '实名状态(0未认证 1已认证)',
  `remark` VARCHAR(255) DEFAULT NULL COMMENT '备注',
  `create_by` BIGINT DEFAULT NULL COMMENT '创建人ID',
  `update_by` BIGINT DEFAULT NULL COMMENT '更新人ID',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0否 1是)',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_xxk_member_profile_user` (`member_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员资料表';

CREATE TABLE IF NOT EXISTS `xxk_member_wallet` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `member_user_id` BIGINT NOT NULL COMMENT '会员ID',
  `balance` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '余额',
  `frozen_balance` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '冻结金额',
  `total_recharge_amount` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '累计充值金额',
  `total_consume_amount` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '累计消费金额',
  `total_refund_amount` DECIMAL(18,2) NOT NULL DEFAULT 0.00 COMMENT '累计退款金额',
  `status` TINYINT NOT NULL DEFAULT 1 COMMENT '状态(1正常 0禁用)',
  `create_by` BIGINT DEFAULT NULL COMMENT '创建人ID',
  `update_by` BIGINT DEFAULT NULL COMMENT '更新人ID',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `is_deleted` TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0否 1是)',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_xxk_member_wallet_user` (`member_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员钱包表';

CREATE TABLE IF NOT EXISTS `xxk_member_login_log` (
  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `member_user_id` BIGINT DEFAULT NULL COMMENT '会员ID',
  `mobile` VARCHAR(20) DEFAULT NULL COMMENT '登录手机号',
  `login_type` VARCHAR(32) NOT NULL COMMENT '登录类型',
  `login_ip` VARCHAR(64) DEFAULT NULL COMMENT '登录IP',
  `login_region` VARCHAR(128) DEFAULT NULL COMMENT '登录地区',
  `device_info` VARCHAR(255) DEFAULT NULL COMMENT '设备信息',
  `status` TINYINT NOT NULL DEFAULT 1 COMMENT '登录结果(1成功 0失败)',
  `message` VARCHAR(255) DEFAULT NULL COMMENT '结果说明',
  `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `idx_xxk_member_login_log_user` (`member_user_id`),
  KEY `idx_xxk_member_login_log_mobile` (`mobile`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员登录日志表';
