
-- 接入支付平台的应用信息表
CREATE TABLE webchat_payment.`web_chat_app` (
        `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
        `name` char(20) NOT NULL COMMENT '应用名称 ',
        `logo` varchar(300) NOT NULL COMMENT '应用Logo',
        `description` varchar(200) NOT NULL COMMENT '应用描述',
        `admin` char(100) NOT NULL COMMENT '创建人/管理员',
        `status` int(4) NOT NULL COMMENT '状态',
        `access_key` char(64) NOT NULL COMMENT 'access key 应用访问凭证',
        `secret_hash_key` char(100) NOT NULL COMMENT 'secret key hash值 应用访问凭证秘钥',
        `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`),
        UNIQUE KEY `INDEX_ACCESS_SECRET_KEY` (`ACCESS_KEY`, `SECRET_HASH_KEY`),
        KEY `INDEX_STATUS` (`STATUS`),
        KEY `INDEX_ADMIN` (`admin`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='接入支付平台的应用信息表';

CREATE TABLE `web_chat_payment_order` (
                                          `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
                                          `order_id` char(64) NOT NULL COMMENT '交易订单ID',
                                          `trans_id` char(64) NOT NULL COMMENT '交易订单对应分布式事务ID，用于订单回滚，包括订单明细的回滚',
                                          `status` int NOT NULL COMMENT '订单状态',
                                          `app_id` bigint NOT NULL COMMENT '订单接入方（应用）',
                                          `event_type` int NOT NULL COMMENT '订单事件：出行、红包、餐饮……',
                                          `bill_type` int NOT NULL COMMENT '账单类型： 1：收入、-1：支出',
                                          `amount` decimal(10,2) NOT NULL COMMENT '订单总金额',
                                          `source_account` char(64) NOT NULL COMMENT '交易订单发起账户',
                                          `target_account` char(64) NOT NULL COMMENT '交易订单接收账户',
                                          `description` varchar(100) DEFAULT NULL COMMENT '订单描述',
                                          `expire_date` datetime DEFAULT NULL COMMENT '订单过期时间',
                                          `CREATE_DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
                                          `UPDATE_DATE` datetime DEFAULT NULL COMMENT '更新时间',
                                          `VERSION` int DEFAULT '0' COMMENT '版本',
                                          PRIMARY KEY (`ID`),
                                          UNIQUE KEY `INDEX_ORDER_ID` (`order_id`),
                                          UNIQUE KEY `INDEX_TRANS_ID` (`trans_id`),
                                          KEY `INDEX_STATUS` (`status`),
                                          KEY `INDEX_SOURCE_ACCOUNT` (`source_account`),
                                          KEY `INDEX_TARGET_ACCOUNT` (`target_account`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4  COMMENT='支付订单表';

-- 支付交易明细表
CREATE TABLE `web_chat_payment_order_detail` (
                                                 `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
                                                 `order_id` char(64) NOT NULL COMMENT '关联交易订单ID',
                                                 `payment_id` char(64) NOT NULL COMMENT '交易ID',
                                                 `source_account` char(64) NOT NULL COMMENT '交易订单发起账户，一定是跟order中的发起人是同一个',
                                                 `target_account` char(64) NOT NULL COMMENT '交易订单目标账户，人/业务账户',
                                                 `amount` decimal(10,2) NOT NULL COMMENT '交易总金额，收入类交易金额为正数、支出类为负数',
                                                 `status` int NOT NULL COMMENT '交易明细状态',
                                                 `CREATE_DATE` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
                                                 `UPDATE_DATE` datetime DEFAULT NULL COMMENT '更新时间',
                                                 `VERSION` int DEFAULT '0' COMMENT '版本',
                                                 PRIMARY KEY (`ID`),
                                                 KEY `INDEX_ORDER_ID` (`order_id`),
                                                 KEY `INDEX_STATUS` (`status`),
                                                 KEY `INDEX_SOURCE_ACCOUNT` (`source_account`),
                                                 KEY `INDEX_TARGET_ACCOUNT` (`target_account`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='支付订单明细表';

CREATE TABLE `web_chat_user_wallet` (
                                        `ID` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
                                        `trans_event` int NOT NULL COMMENT '事件类型',
                                        `trans_type` int 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=utf8mb4 COMMENT='用户钱包'
