-- 创建数据库 [MySQL]
create database webchat;
use webchat;

-- 用户信息主表
CREATE TABLE webchat.`web_chat_user` (
    `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
    `USER_ID` char(60) NOT NULL COMMENT '用户ID',
    `USER_NAME` char(30) NOT NULL COMMENT '用户名',
    `PHOTO` varchar(400) NOT NULL COMMENT '用户头像',
    `MOBILE` char(20) NOT NULL COMMENT '手机号',
    `PASSWORD` char(100) NOT NULL COMMENT '密码',
    `SIGNATURE` varchar(500) DEFAULT '暂无签名' COMMENT '签名',
    `STATUS` INT NOT NULL DEFAULT 1 COMMENT '用户状态状态',
    `ROLE_CODE` INT NOT NULL DEFAULT 1 COMMENT '角色',
    `CREATE_BY` char(100) DEFAULT NULL COMMENT '创建人',
    `CREATE_DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `UPDATE_BY` char(100) DEFAULT NULL COMMENT '更新人',
    `UPDATE_DATE` datetime DEFAULT NULL COMMENT '更新时间',
    `VERSION` int DEFAULT '0' COMMENT '版本',
    PRIMARY KEY (`ID`),
    KEY `INDEX_USER_ID` (`USER_ID`),
    KEY `INDEX_MOBILE_PASSWORD` (`MOBILE`, `PASSWORD`),
    KEY `INDEX_STATUS` (`STATUS`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户信息主表';

-- 初始化默认管理员账号
INSERT INTO `webchat`.`web_chat_user` (`ID`, `USER_ID`, `USER_NAME`, `PHOTO`, `MOBILE`, `PASSWORD`, `STATUS`, `ROLE_CODE`,
                              `CREATE_BY`, `CREATE_DATE`, `UPDATE_BY`, `UPDATE_DATE`, `VERSION`) VALUES
    (1, 'U_770cce9f632543588b4e8aa6ec43e6a2', '管理员', 'https://coderutil.oss-cn-beijing.aliyuncs.com/bbs-image/file_dd489633f1bb4513a9db81be6e9d692f.png',
     'admin', '06525f4969c6cf1886ee0db86bef82df', 1, 2, 'U_770cce9f632543588b4e8aa6ec43e6a2',
     '2022-03-12 05:55:26', NULL, '2022-03-22 10:28:38', 1);

-- 好友关系表
CREATE TABLE webchat.`web_chat_friend` (
    `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
    `USER_ID` char(60) NOT NULL COMMENT '用户ID',
    `FRIEND_ID` char(60) NOT NULL COMMENT '好友ID',
    `STATUS` int(11) DEFAULT '0' COMMENT '好友状态',
    `APPLY_DATE` datetime DEFAULT NULL COMMENT '申请时间',
    `HANDLE_DATE` datetime DEFAULT NULL COMMENT '处理时间',
    `VERSION` int DEFAULT '0' COMMENT '版本',
    PRIMARY KEY (`ID`),
    KEY `INDEX_USER_ID` (`USER_ID`),
    KEY `INDEX_FRIEND_ID` (`FRIEND_ID`),
    KEY `INDEX_STATUS` (`STATUS`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='好友关系表';

CREATE TABLE webchat.`web_chat_mess` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `sender` char(100) NOT NULL COMMENT '发送人',
  `receiver` char(100) NOT NULL COMMENT '接收人',
  `proxy_sender` char(100) DEFAULT NULL COMMENT '消息代理发送人（应用在群聊场景）',
  `message` text DEFAULT NULL COMMENT '消息内容',
  `image` varchar(300) DEFAULT NULL COMMENT '图片',
  `type` tinyint(1) DEFAULT 0 COMMENT '消息类型',
  `IS_READ` tinyint(1) DEFAULT 0 COMMENT '是否已读',
  `SEND_DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '消息时间',
  `UPDATE_DATE` datetime DEFAULT NULL COMMENT '更新时间',
  `VERSION` int DEFAULT '0' COMMENT '版本',
  PRIMARY KEY (`ID`),
  KEY `INDEX_SENDER_PROXY_SENDER` (`sender`, `proxy_sender`),
  KEY `INDEX_RECEIVER` (`receiver`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户私信表';

-- 群组用户表
CREATE TABLE webchat.`web_chat_group_user` (
     `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
     `GROUP_ID` char(60) NOT NULL COMMENT '群组ID',
     `USER_ID` char(60) NOT NULL COMMENT '用户ID',
     `STATUS` INT NOT NULL DEFAULT 1 COMMENT '用户状态状态',
     `CREATE_BY` char(100) DEFAULT NULL COMMENT '创建人',
     `CREATE_DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     `UPDATE_BY` char(100) DEFAULT NULL COMMENT '更新人',
     `UPDATE_DATE` datetime DEFAULT NULL COMMENT '更新时间',
     `VERSION` int DEFAULT '0' COMMENT '版本',
     PRIMARY KEY (`ID`),
     KEY `INDEX_GROUP_ID` (`GROUP_ID`),
     KEY `INDEX_USER_ID` (`USER_ID`),
     KEY `INDEX_STATUS` (`STATUS`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='群组用户表';

-- 朋友圈动态表
CREATE TABLE webchat.`web_chat_moment` (
   `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
   `CONTENT` text DEFAULT NULL COMMENT '正文',
   `STATUS` char(20) NOT NULL COMMENT '状态',
   `IMAGES` varchar(2000) DEFAULT NULL COMMENT '图片',
   `VIDEO` varchar(500) DEFAULT NULL COMMENT '视频',
   `AUTHOR` char(100) NOT NULL COMMENT '作者USER ID',
   `PUB_DATE` datetime DEFAULT NULL COMMENT '发布时间',
   `CLICK_COUNT` bigint DEFAULT '0' COMMENT '点击量',
   `CLIENT` char(40) DEFAULT 'WEB' COMMENT '发布客户端',
   `CREATE_BY` char(100) DEFAULT NULL COMMENT '创建人',
   `CREATE_DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
   `UPDATE_BY` char(100) DEFAULT NULL COMMENT '更新人',
   `UPDATE_DATE` datetime DEFAULT NULL COMMENT '更新时间',
   `VERSION` int DEFAULT '0' COMMENT '版本',
   PRIMARY KEY (`ID`),
   KEY `INDEX_AUTHOR` (`AUTHOR`),
   KEY `INDEX_STATUS` (`STATUS`),
   KEY `INDEX_PUB_DATE` (`PUB_DATE`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='朋友圈动态表';

-- 评论表
CREATE TABLE webchat.`web_chat_comment` (
     `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
     `RESOURCE_ID` bigint NOT NULL COMMENT '资源ID',
     `RESOURCE_TYPE` char(50) NOT NULL COMMENT '资源类型',
     `AUTHOR` char(60) NOT NULL COMMENT '作者',
     `STATUS` char(20) NOT NULL COMMENT '状态',
     `CONTENT` varchar(2000) DEFAULT NULL COMMENT '正文',
     `IMAGES` varchar(1000) DEFAULT NULL COMMENT '图片',
     `REPLY_ID` bigint DEFAULT NULL COMMENT '回复ID',
     `PARENT_ID` bigint DEFAULT NULL COMMENT '父级评论ID',
     `PUB_DATE` datetime DEFAULT NULL COMMENT '发布时间',
     `CREATE_BY` char(100) DEFAULT NULL COMMENT '创建人',
     `CREATE_DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     `UPDATE_BY` char(100) DEFAULT NULL COMMENT '更新人',
     `UPDATE_DATE` datetime DEFAULT NULL COMMENT '更新时间',
     `VERSION` int DEFAULT '0' COMMENT '版本',
     PRIMARY KEY (`ID`),
     KEY `INDEX_RESOURCE_TYPE_ID` (`RESOURCE_TYPE`, `RESOURCE_ID`),
     KEY `INDEX_REPLY_ID` (`REPLY_ID`),
     KEY `INDEX_PARENT_ID` (`PARENT_ID`),
     KEY `INDEX_AUTHOR` (`AUTHOR`),
     KEY `INDEX_STATUS` (`STATUS`),
     KEY `INDEX_PUB_DATE` (`PUB_DATE`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='评论表';

-- 模板配置表
CREATE TABLE webchat.`web_chat_message_template` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `CODE` char(50) NOT NULL COMMENT '模板CODE',
  `TEMPLATE` varchar(1000) NOT NULL COMMENT '模板',
  `VERSION` int DEFAULT '0' COMMENT '版本',
  PRIMARY KEY (`ID`),
  KEY `INDEX_CODE` (`CODE`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='模板配置表';

-- 资源行为记录表：点赞、收藏、分享、浏览、打赏
CREATE TABLE webchat.`web_chat_resource_behavior` (
   `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
   `USER_ID` char(60) DEFAULT NULL COMMENT '用户ID',
   `RESOURCE_INDEX` int(11) NOT NULL COMMENT '资源索引',
   `RESOURCE_TYPE` char(30) NOT NULL COMMENT '资源类型',
   `BEHAVIOR_TYPE` char(30) NOT NULL COMMENT '行为',
   `STATUS` tinyint(1) DEFAULT '0' COMMENT '状态',
   `CREATE_BY` char(100) DEFAULT NULL COMMENT '创建人',
   `CREATE_DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
   `UPDATE_BY` char(100) DEFAULT NULL COMMENT '更新人',
   `UPDATE_DATE` datetime DEFAULT NULL COMMENT '更新时间',
   `VERSION` int DEFAULT '0' COMMENT '版本',
   PRIMARY KEY (`ID`),
   KEY `INDEX_STATUS` (`STATUS`),
   KEY `INDEX_USER_ID` (`USER_ID`),
   KEY `INDEX_RESOURCE_INDEX` (`RESOURCE_INDEX`),
   KEY `INDEX_RESOURCE_TYPE` (`RESOURCE_TYPE`),
   KEY `INDEX_CREATE_DATE` (`CREATE_DATE`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='资源操作记录表';


-- 资源行为记录表：点赞、收藏、分享、浏览、打赏
CREATE TABLE webchat.`web_chat_moment_timeline` (
      `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
      `USER_ID` char(60) DEFAULT NULL COMMENT '用户ID',
      `MOMENT_USER_ID` char(60) DEFAULT NULL COMMENT '动态作者ID',
      `MOMENT_ID` bigint NOT NULL COMMENT '动态ID',
      `DELETED` tinyint(1) DEFAULT '0' COMMENT '是否被删除',
      `TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
      `VERSION` int DEFAULT '0' COMMENT '版本',
      PRIMARY KEY (`ID`),
      KEY `INDEX_DELETED` (`DELETED`),
      KEY `INDEX_USER_ID` (`USER_ID`),
      KEY `INDEX_MOMENT_USER_ID` (`MOMENT_USER_ID`),
      KEY `INDEX_MOMENT_ID` (`MOMENT_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='朋友圈时间线';

-- 用户消息表 coder_util_message
CREATE TABLE webchat.`web_chat_moment_message` (
     `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
     `CATEGORY` char(50) NOT NULL COMMENT '消息分类',
     `TYPE` char(50) NOT NULL COMMENT '消息类型',
     `RESOURCE_TYPE` char(50) DEFAULT NULL COMMENT '资源类型',
     `RESOURCE_ID` char(100) DEFAULT NULL COMMENT '资源ID',
     `CONTENT` varchar(1000) DEFAULT NULL COMMENT '消息正文',
     `ACTIVITY_NAME` varchar(100) DEFAULT NULL COMMENT '活动名',
     `ACTIVITY_URL` varchar(300) DEFAULT NULL COMMENT '活动链接',
     `FROM_USER_ID` char(100) NOT NULL COMMENT '消息发送人',
     `TO_USER_ID` char(100) NOT NULL COMMENT '消息接受人',
     `STATE` tinyint(1) DEFAULT 0 COMMENT '消息状态',
     `CREATE_DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     `READ_DATE` datetime DEFAULT NULL COMMENT '读取时间',
     `VERSION` int DEFAULT '0' COMMENT '版本',
     PRIMARY KEY (`ID`),
     KEY `INDEX_TO_USER_ID_CATEGORY` (`TO_USER_ID`, `CATEGORY`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='朋友圈消息表';

-- 红包信息表
CREATE TABLE webchat.`web_chat_red_packet` (
       `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
       `send_user_id` char(100) NOT NULL COMMENT '红包发送人',
       `receiver_user_id` char(100) NOT NULL COMMENT '接受人',
       `type` int(4) NOT NULL COMMENT '消息类型',
       `count` int(4) NOT NULL COMMENT '红包个数',
       `status` int(4) NOT NULL COMMENT '状态',
       `total_money` DECIMAL(10, 2) default '0.00' COMMENT '金额',
       `CREATE_BY` char(100) DEFAULT NULL COMMENT '创建人',
       `CREATE_DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
       `expire_date` datetime NOT NULL COMMENT '过期时间',
       `UPDATE_BY` char(100) DEFAULT NULL COMMENT '更新人',
       `UPDATE_DATE` datetime DEFAULT NULL COMMENT '更新时间',
       `VERSION` int DEFAULT '0' COMMENT '版本',
       PRIMARY KEY (`ID`),
       KEY `INDEX_SEND_USER_ID` (`send_user_id`),
       KEY `INDEX_STATUS_EXPIRE_DATE` (`status`, `expire_date`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='红包信息表';

-- 红包拆分记录明细表
CREATE TABLE webchat.`web_chat_red_packet_record` (
   `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
   `red_packet_id` bigint NOT NULL COMMENT '红包id',
   `user_id` char(100) NOT NULL COMMENT '领取人',
   `money` DECIMAL(10, 2) default '0.00' COMMENT '领取金额',
   `CREATE_DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
   PRIMARY KEY (`ID`),
   KEY `INDEX_RED_PACKET_ID` (`red_packet_id`),
   KEY `INDEX_USER_ID` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='红包拆分记录明细表';

-- 用户钱包
CREATE TABLE webchat.`web_chat_user_wallet` (
  `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  `trans_event` int(4) NOT NULL COMMENT '事件类型',
  `trans_type` int(4) NOT NULL COMMENT '收入/支出',
  `user_id` char(100) NOT NULL COMMENT '用户id',
  `target_user_id` char(100) NOT NULL COMMENT '目标用户',
  `money` DECIMAL(10, 2) default '0.00' COMMENT '流转金额',
  `trans_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '流转时间',
  PRIMARY KEY (`ID`),
  KEY `INDEX_USER_ID` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户钱包';


-- 公众号文章表
CREATE TABLE webchat.web_chat_article (
      `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
      `PUBLIC_ACCOUNT` char(60) NOT NULL COMMENT '绑定公众号账号',
      `AUTHOR` char(60) NOT NULL COMMENT '作者',
      `TITLE` varchar(100) NOT NULL COMMENT '文章标题',
      `CONTENT` longtext NOT NULL COMMENT '正文',
      `COVER` varchar(400) NOT NULL COMMENT '封面图',
      `DESCRIPTION` varchar(200) DEFAULT NULL COMMENT '摘要/智能总结',
      `signs` varchar(200) DEFAULT NULL COMMENT '标签',
      `PLAN_PUSH_DATE` datetime DEFAULT NULL  COMMENT '计划推文时间',
      `STATUS` tinyint(1) DEFAULT 1 COMMENT '文章状态',
      `CREATE_BY` char(100) DEFAULT NULL COMMENT '创建人',
      `CREATE_DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
      `UPDATE_BY` char(100) DEFAULT NULL COMMENT '更新人',
      `UPDATE_DATE` datetime DEFAULT NULL COMMENT '更新时间',
      `VERSION` int DEFAULT '0' COMMENT '版本',
      PRIMARY KEY (`ID`),
      KEY `INDEX_STATUS_PUBLIC_ACCOUNT` (`STATUS`, `PUBLIC_ACCOUNT`),
      KEY `INDEX_PLAN_PUSH_DATE` (`PLAN_PUSH_DATE`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='公众号文章表';


-- 滑块验证配置信息
CREATE TABLE webchat.`web_chat_slide_verification` (
 `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
 `image` char(200) DEFAULT NULL COMMENT '主图',
 `x` int(11) DEFAULT 0 COMMENT 'x坐标',
 `y` int(11) DEFAULT 0 COMMENT 'y坐标',
 `count` int(11) DEFAULT 0 COMMENT '浏览量',
 `STATUS` tinyint(1) DEFAULT '0' COMMENT '状态',
 `CREATE_BY` char(100) DEFAULT NULL COMMENT '创建人',
 `CREATE_DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `UPDATE_BY` char(100) DEFAULT NULL COMMENT '更新人',
 `UPDATE_DATE` datetime DEFAULT NULL COMMENT '更新时间',
 `VERSION` int DEFAULT '0' COMMENT '版本',
 PRIMARY KEY (`ID`),
 KEY `INDEX_STATUS` (`STATUS`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='滑块验证配置信息';

-- 初始化验证码配置，管理后台可上传
INSERT INTO `webchat`.`web_chat_slide_verification`(`image`, `x`, `y`, `count`, `STATUS`, `CREATE_BY`, `CREATE_DATE`, `UPDATE_BY`, `UPDATE_DATE`, `VERSION`) VALUES ('/image/slide/file_5ed7dbb98fb04fa490d157e8798d1f23.jpeg', 0, 0, 0, 1, NULL, '2024-09-19 01:16:41', NULL, NULL, 1);
INSERT INTO `webchat`.`web_chat_slide_verification`(`image`, `x`, `y`, `count`, `STATUS`, `CREATE_BY`, `CREATE_DATE`, `UPDATE_BY`, `UPDATE_DATE`, `VERSION`) VALUES ('/image/slide/file_5b9df5f2de52439dbc74c86a6f9e749d.jpeg', 0, 0, 0, 1, NULL, '2024-09-19 01:16:46', NULL, NULL, 1);
INSERT INTO `webchat`.`web_chat_slide_verification`(`image`, `x`, `y`, `count`, `STATUS`, `CREATE_BY`, `CREATE_DATE`, `UPDATE_BY`, `UPDATE_DATE`, `VERSION`) VALUES ('/image/slide/file_cc3fc5dea48a43c2923f9e001b9f1b85.jpeg', 0, 0, 0, 1, NULL, '2024-09-19 01:16:51', NULL, NULL, 1);
INSERT INTO `webchat`.`web_chat_slide_verification`(`image`, `x`, `y`, `count`, `STATUS`, `CREATE_BY`, `CREATE_DATE`, `UPDATE_BY`, `UPDATE_DATE`, `VERSION`) VALUES ('/image/slide/file_f36ec169377842dd8ec0c65a43619811.jpeg', 0, 0, 0, 1, NULL, '2024-09-19 01:16:56', NULL, NULL, 1);
INSERT INTO `webchat`.`web_chat_slide_verification`(`image`, `x`, `y`, `count`, `STATUS`, `CREATE_BY`, `CREATE_DATE`, `UPDATE_BY`, `UPDATE_DATE`, `VERSION`) VALUES ('/image/slide/file_b44c3489577b4dfcaae9c09220ff677c.jpeg', 0, 0, 0, 1, NULL, '2024-09-19 01:17:00', NULL, NULL, 1);