From db526ce3abce593ccf90c401973702a3fc511681 Mon Sep 17 00:00:00 2001 From: danial Date: Sat, 13 Dec 2025 21:32:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(db-migrate):=20=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E5=A3=B0=E6=98=8E=E5=BC=8F=E6=95=B0=E6=8D=AE=E5=BA=93=E8=BF=81?= =?UTF-8?q?=E7=A7=BB=E9=A1=B9=E7=9B=AE=E9=AA=A8=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加数据库 schema 声明文件 schema.sql,包含多张表的完整结构定义 - 新增 Dockerfile,配置基于 arigaio/atlas 的迁移镜像 - 添加 migrate.sh 脚本执行生产环境迁移操作 - 创建 generate-migration.sh 脚本导出本地数据库 schema - 新建 test-local.sh 脚本用于本地迁移兼容性测试 - 配置 atlas.hcl 支持本地(local)和生产(prod)两个环境 - 添加 docker-compose.yml 支持基于环境变量的容器化迁移服务 - 新增 .drone.yml 配置自动构建并推送迁移镜像流水线 - 提供 .env.example 和 .env.local 模板方便环境变量管理 - 更新 .gitignore 和 .dockerignore 优化开发与构建忽略规则 - 编写 README.md,详细说明项目架构、使用步骤及注意事项 - 编写 CLAUDE.md,提供代码库整体说明及迁移工作流程指导 --- .dockerignore | 6 + .drone.yml | 26 + .env.example | 6 + .env.local | 9 + .gitignore | 2 + CLAUDE.md | 74 ++ Dockerfile | 11 + README.md | 62 ++ atlas.hcl | 11 + docker-compose.yml | 10 + generate-migration.sh | 12 + migrate.sh | 16 + schema.sql | 1561 +++++++++++++++++++++++++++++++++++++++++ test-local.sh | 44 ++ 14 files changed, 1850 insertions(+) create mode 100644 .dockerignore create mode 100644 .drone.yml create mode 100644 .env.example create mode 100644 .env.local create mode 100644 .gitignore create mode 100644 CLAUDE.md create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 atlas.hcl create mode 100644 docker-compose.yml create mode 100755 generate-migration.sh create mode 100755 migrate.sh create mode 100644 schema.sql create mode 100755 test-local.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..28b1e9b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +*.sh +!migrate.sh +.git +.gitignore +.env.local +docker-compose.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..100de8b --- /dev/null +++ b/.drone.yml @@ -0,0 +1,26 @@ +--- +kind: pipeline +type: ssh +name: master-machine + +server: + host: 38.38.251.113:34156 + user: root + password: + from_secret: www_password + +clone: + depth: 1 + +steps: + - name: build new image + environment: + DOCKER_LOGIN: + from_secret: docker_login + DOCKER_TOKEN: + from_secret: docker_token + commands: + - docker login git.oceanpay.cc -u $DOCKER_LOGIN -p $DOCKER_TOKEN + - docker build -t git.oceanpay.cc/danial/kami-db-migrate${DRONE_BRANCH}:latest . + - docker push git.oceanpay.cc/danial/kami-db-migrate${DRONE_BRANCH}:latest + - docker logout git.oceanpay.cc diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..fd9ec79 --- /dev/null +++ b/.env.example @@ -0,0 +1,6 @@ +# 生产环境数据库配置 +DB_USER=root +DB_PASSWORD=your_password +DB_HOST=mysql_host +DB_PORT=3306 +DB_NAME=production_db diff --git a/.env.local b/.env.local new file mode 100644 index 0000000..1ffeb93 --- /dev/null +++ b/.env.local @@ -0,0 +1,9 @@ +# MySQL Docker 容器名称(根据实际情况修改) +MYSQL_CONTAINER=mysql-server + +# 本地数据库连接信息 +DB_USER=root +DB_PASSWORD=mysql123 +DB_NAME=kami +DB_HOST=localhost +DB_PORT=3306 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f2c8c65 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.idea/ +/.vscode/ \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..d1669ce --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,74 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Overview + +This is a database migration repository using Atlas for declarative schema management. The project manages MySQL database schema migrations using Atlas' declarative approach. + +## Architecture + +- **Declarative Schema Management**: Uses `schema.sql` as the single source of truth for database schema +- **Atlas**: Uses Atlas CLI for schema inspection and migration +- **Docker-based**: All operations run in Docker containers for consistency +- **Environment Configuration**: Supports both local development and production deployments + +## Key Commands + +### Local Development +```bash +# Export current database schema to schema.sql +./generate-migration.sh + +# Run local testing (creates test database and applies migrations) +./test-local.sh +``` + +### Production Deployment +```bash +# Using Docker Compose (recommended) +cp .env.example .env +# Edit .env with production database credentials +docker-compose up db-migrate + +# Using Docker directly +docker build -t db-migrate:latest . +docker run --rm -e DB_URL="mysql://user:password@host:3306/database" db-migrate:latest +``` + +## Configuration Files + +- `atlas.hcl`: Atlas environment configuration (local and prod) +- `.env.local`: Local development settings (includes MySQL container name) +- `.env.example`: Production environment template +- `schema.sql`: Database schema definition (generated from local database) + +## Environment Setup + +The project uses two Atlas environments: +- **local**: Connects to local MySQL instance at `localhost:3306/kami` +- **prod**: Uses `DB_URL` environment variable for production database connection + +Both environments use `atlas_dev` as the development database for Atlas operations. + +## Migration Process + +1. **Schema Development**: Make changes to local database +2. **Export Schema**: Run `./generate-migration.sh` to update `schema.sql` +3. **Local Testing**: Run `./test-local.sh` to verify migrations work +4. **Production Deployment**: Use Docker Compose or Docker run with production credentials + +## Testing + +The `test-local.sh` script performs a complete integration test: +1. Creates `atlas_dev` database for Atlas operations +2. Generates current schema from local database +3. Creates fresh `kami_test` database +4. Applies migrations to test database +5. Verifies migration results by listing tables + +## Docker Configuration + +- Base image: `arigaio/atlas:latest` +- Entry point: `/app/migrate.sh` (expects `DB_URL` environment variable) +- Built with Atlas CLI and migration scripts \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2b0c40d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM arigaio/atlas:latest + +WORKDIR /app + +COPY atlas.hcl . +COPY schema.sql . +COPY migrate.sh . + +RUN chmod +x migrate.sh + +ENTRYPOINT ["/app/migrate.sh"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..c05c306 --- /dev/null +++ b/README.md @@ -0,0 +1,62 @@ +# Atlas 数据库迁移(声明式) + +## 文件说明 + +- `atlas.hcl` - Atlas 配置文件 +- `schema.sql` - 数据库 schema 定义(声明式) +- `.env.local` - 本地环境配置 +- `.env.example` - 生产环境配置示例 +- `generate-migration.sh` - 从本地数据库导出 schema.sql +- `migrate.sh` - 生产环境迁移脚本 +- `test-local.sh` - 本地测试脚本 +- `Dockerfile` - Docker 镜像配置 +- `docker-compose.yml` - Docker Compose 配置 + +## 使用步骤 + +### 1. 导出当前数据库 schema + +```bash +./generate-migration.sh +``` + +### 2. 本地测试 + +```bash +./test-local.sh +``` + +### 3. 生产环境部署 + +#### 方式一:Docker Compose(推荐) + +```bash +# 1. 复制环境变量配置 +cp .env.example .env + +# 2. 修改 .env 文件,填入生产数据库信息 +# DB_USER=root +# DB_PASSWORD=your_password +# DB_HOST=mysql_host +# DB_PORT=3306 +# DB_NAME=production_db + +# 3. 执行迁移 +docker-compose up db-migrate +``` + +#### 方式二:Docker Run + +```bash +docker build -t db-migrate:latest . +docker run --rm \ + -e DB_URL="mysql://user:password@host:3306/database" \ + db-migrate:latest +``` + +## 注意事项 + +1. 本地测试需修改 `.env.local` 中的 `MYSQL_CONTAINER` 为实际容器名称 +2. 生产环境需配置 `.env` 文件或设置环境变量 +3. 使用声明式迁移,schema.sql 是数据库最终状态 +4. Atlas 自动计算并执行差异变更 diff --git a/atlas.hcl b/atlas.hcl new file mode 100644 index 0000000..18e817b --- /dev/null +++ b/atlas.hcl @@ -0,0 +1,11 @@ +env "local" { + src = "file://schema.sql" + url = "mysql://root:mysql123@localhost:3306/kami" + dev = "mysql://root:mysql123@localhost:3306/atlas_dev" +} + +env "prod" { + src = "file://schema.sql" + url = getenv("DB_URL") + dev = "mysql://root:mysql123@localhost:3306/atlas_dev" +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..6a9f6be --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +version: "3.8" + +services: + # 数据库迁移服务 + db-migrate: + build: . + environment: + # 从环境变量读取数据库连接信息 + DB_URL: "mysql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}" + restart: "no" diff --git a/generate-migration.sh b/generate-migration.sh new file mode 100755 index 0000000..a5c5e50 --- /dev/null +++ b/generate-migration.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +set -e + +echo "从本地数据库导出 schema.sql..." + +atlas schema inspect \ + --env local \ + --format '{{ sql . }}' > schema.sql + +echo "schema.sql 生成完成!" +wc -l schema.sql diff --git a/migrate.sh b/migrate.sh new file mode 100755 index 0000000..d10d98f --- /dev/null +++ b/migrate.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -e + +echo "开始数据库迁移..." + +if [ -z "$DB_URL" ]; then + echo "错误: DB_URL 环境变量未设置" + exit 1 +fi + +atlas schema apply \ + --env prod \ + --auto-approve + +echo "迁移完成!" diff --git a/schema.sql b/schema.sql new file mode 100644 index 0000000..a8c2561 --- /dev/null +++ b/schema.sql @@ -0,0 +1,1561 @@ +-- Create "merchant_info" table +CREATE TABLE `merchant_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `status` varchar(255) NULL COMMENT "商户状态状态", + `belong_agent_uid` varchar(255) NULL COMMENT "所属代理uid", + `belong_agent_name` varchar(255) NULL COMMENT "所属代理名称", + `merchant_name` varchar(255) NULL COMMENT "商户名称", + `merchant_uid` varchar(255) NULL COMMENT "商户uid", + `merchant_key` varchar(255) NULL COMMENT "商户key", + `merchant_secret` varchar(255) NULL COMMENT "商户密钥", + `login_account` varchar(255) NULL COMMENT "登录账号", + `login_password` varchar(255) NULL COMMENT "登录密码", + `auto_settle` varchar(10) NOT NULL DEFAULT "YES" COMMENT "是否自动结算", + `auto_pay_for` varchar(10) NOT NULL DEFAULT "YES" COMMENT "是否自动代付", + `white_ips` varchar(255) NULL COMMENT "配置ip白名单", + `remark` varchar(255) NULL COMMENT "备注", + `single_pay_for_road_uid` varchar(255) NULL COMMENT "单代付代付通道uid", + `single_pay_for_road_name` varchar(255) NULL COMMENT "单代付通道名称", + `roll_pay_for_road_code` varchar(255) NULL COMMENT "轮询代付通道编码", + `roll_pay_for_road_name` varchar(255) NULL COMMENT "轮询代付通道名称", + `payfor_fee` float NULL COMMENT "代付手续费", + `update_time` datetime NULL COMMENT "更新时间", + `create_time` datetime NULL COMMENT "创建时间", + `otp_secret` varchar(255) NULL COMMENT "二次验证", + PRIMARY KEY (`id`), + INDEX `idx_agent_status` (`belong_agent_uid`, `status`), + UNIQUE INDEX `merchant_key` (`merchant_key`), + UNIQUE INDEX `merchant_name` (`merchant_name`), + UNIQUE INDEX `merchant_secret` (`merchant_secret`), + UNIQUE INDEX `merchant_uid` (`merchant_uid`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "商户支付配置表"; +-- Create "order_settle_info" table +CREATE TABLE `order_settle_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `pay_product_code` varchar(100) NOT NULL COMMENT "支付产品编码", + `pay_product_name` varchar(200) NOT NULL COMMENT "支付产品名称", + `pay_type_code` varchar(50) NOT NULL COMMENT "支付类型编码", + `pay_type_name` varchar(100) NOT NULL COMMENT "支付类型名称", + `merchant_uid` varchar(100) NOT NULL COMMENT "商户uid,表示订单是哪个商户的", + `road_uid` varchar(50) NOT NULL COMMENT "通道uid", + `merchant_name` varchar(200) NOT NULL COMMENT "商户名称", + `merchant_order_id` varchar(50) NOT NULL COMMENT "下游商户提交过来的订单id", + `bank_order_id` varchar(50) NOT NULL COMMENT "平台自身的订单id", + `settle_amount` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "结算金额", + `is_allow_settle` varchar(10) NOT NULL DEFAULT "yes" COMMENT "是否允许结算,允许-yes,不允许-no", + `is_complete_settle` varchar(10) NOT NULL DEFAULT "no" COMMENT "该笔订单是否结算完毕,没有结算-no,结算完毕-yes", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL COMMENT "创建时间", + PRIMARY KEY (`id`), + UNIQUE INDEX `bank_order_id` (`bank_order_id`), + INDEX `idx_merchant_settle` (`merchant_uid`, `is_complete_settle`, `create_time`), + INDEX `idx_road_settle` (`road_uid`, `is_complete_settle`, `create_time`), + UNIQUE INDEX `merchant_order_id` (`merchant_order_id`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "订单结算表"; +-- Create "agent_info" table +CREATE TABLE `agent_info` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `status` varchar(255) NULL COMMENT "代理状态状态", + `agent_name` varchar(255) NULL COMMENT "代理名称", + `agent_password` varchar(255) NULL COMMENT "代理登录密码", + `pay_password` varchar(255) NULL COMMENT "支付密码", + `agent_uid` varchar(255) NULL COMMENT "代理编号", + `agent_phone` varchar(255) NULL COMMENT "代理手机号", + `agent_remark` varchar(255) NULL COMMENT "备注", + `update_time` datetime NULL COMMENT "更新时间", + `create_time` datetime NULL COMMENT "创建时间", + PRIMARY KEY (`id`), + UNIQUE INDEX `agent_name` (`agent_name`), + UNIQUE INDEX `agent_uid` (`agent_uid`), + INDEX `idx_status_phone` (`status`, `agent_phone`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "代理"; +-- Create "bank_card_info" table +CREATE TABLE `bank_card_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `uid` varchar(100) NOT NULL COMMENT "唯一标识", + `user_name` varchar(100) NOT NULL COMMENT "用户名称", + `bank_name` varchar(100) NOT NULL COMMENT "银行名称", + `bank_code` varchar(30) NOT NULL COMMENT "银行编码", + `bank_account_type` varchar(20) NOT NULL COMMENT "银行账号类型", + `account_name` varchar(50) NOT NULL COMMENT "银行账户名称", + `bank_no` varchar(50) NOT NULL COMMENT "银行账号", + `identify_card` varchar(100) NOT NULL COMMENT "证件类型", + `certificate_no` varchar(100) NOT NULL COMMENT "证件号码", + `phone_no` varchar(50) NOT NULL COMMENT "手机号码", + `bank_address` varchar(200) NOT NULL COMMENT "银行地址", + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "最近更新时间", + PRIMARY KEY (`id`), + INDEX `idx_account_name` (`account_name`), + INDEX `idx_bank_no` (`bank_no`), + INDEX `idx_phone` (`phone_no`), + INDEX `idx_user_name` (`user_name`), + UNIQUE INDEX `uid` (`uid`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "银行卡表" AUTO_INCREMENT 5; +-- Create "camel_oil_account" table +CREATE TABLE `camel_oil_account` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `account_name` varchar(128) NULL COMMENT "账号名称(备注)", + `phone` varchar(20) NULL COMMENT "手机号(登录后记录,不可重复)", + `token` text NULL COMMENT "登录Token", + `status` tinyint NOT NULL DEFAULT 1 COMMENT "状态:1待登录 2在线 3暂停 4已失效 5登录失败", + `token_expire_at` datetime NULL COMMENT "Token过期时间", + `last_login_at` datetime NULL COMMENT "最后登录时间", + `last_used_at` datetime NULL COMMENT "最后使用时间", + `daily_order_count` int NOT NULL DEFAULT 0 COMMENT "当日已下单数量", + `daily_order_date` date NULL COMMENT "当日订单日期", + `total_order_count` int NOT NULL DEFAULT 0 COMMENT "累计下单数量", + `failure_reason` text NULL COMMENT "失败原因", + `remark` text NULL COMMENT "备注信息", + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间(软删除)", + PRIMARY KEY (`id`), + INDEX `idx_daily_order` (`daily_order_date`, `daily_order_count`), + INDEX `idx_deleted_at` (`deleted_at`), + INDEX `idx_last_used` (`last_used_at`), + INDEX `idx_status` (`status`), + INDEX `idx_token_expire` (`token_expire_at`), + UNIQUE INDEX `uk_phone` (`phone`) +) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT "骆驼加油账号表"; +-- Create "camel_oil_prefetch_order" table +CREATE TABLE `camel_oil_prefetch_order` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `account_id` bigint NOT NULL COMMENT "拉取时使用的账号ID", + `account_name` varchar(128) NULL COMMENT "账号名称", + `amount` decimal(10,2) NOT NULL COMMENT "预拉取订单金额", + `platform_order_no` varchar(128) NULL COMMENT "骆驼平台订单号", + `alipay_url` text NULL COMMENT "支付宝支付链接", + `status` tinyint NOT NULL DEFAULT 1 COMMENT "预拉取订单状态:1待匹配 2已匹配 3已过期 4已失效", + `order_no` varchar(64) NULL COMMENT "匹配后的订单号(关联camel_oil_order表的order_no字段)", + `matched_at` datetime NULL COMMENT "匹配时间", + `expire_at` datetime NULL COMMENT "预拉取订单过期时间(通常为24小时后)", + `failure_reason` text NULL COMMENT "失败原因", + `remark` text NULL COMMENT "备注信息", + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间(软删除)", + PRIMARY KEY (`id`), + INDEX `idx_account_id` (`account_id`), + INDEX `idx_created_at` (`created_at`), + INDEX `idx_deleted_at` (`deleted_at`), + INDEX `idx_order_id` (`order_no`), + INDEX `idx_platform_order_no` (`platform_order_no`), + INDEX `idx_status` (`status`), + INDEX `idx_status_expire` (`status`, `expire_at`) +) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT "骆驼加油预拉取订单表"; +-- Create "migrations" table +CREATE TABLE `migrations` ( + `id_migration` int unsigned NOT NULL AUTO_INCREMENT COMMENT "surrogate key", + `name` varchar(255) NULL COMMENT "migration name, unique", + `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "date migrated or rolled back", + `statements` longtext NULL COMMENT "SQL statements for this migration", + `rollback_statements` longtext NULL COMMENT "SQL statment for rolling back migration", + `status` enum('update','rollback') NULL COMMENT "update indicates it is a normal migration while rollback means this migration is rolled back", + PRIMARY KEY (`id_migration`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci; +-- Create "card_apple_account_info" table +CREATE TABLE `card_apple_account_info` ( + `id` varchar(255) NOT NULL COMMENT "主键", + `account` varchar(255) NULL COMMENT "账户", + `password` varchar(255) NULL COMMENT "密码", + `balance` float unsigned NOT NULL DEFAULT 0 COMMENT "余额", + `balance_itunes` float NOT NULL DEFAULT 0 COMMENT "itunes充值后余额", + `status` int NOT NULL DEFAULT 1 COMMENT "状态 0.停用 1.正常使用(待充值) 2.正在充值 3.已达到单日充值限制", + `today_recharge_amount` float unsigned NOT NULL DEFAULT 0 COMMENT "今日充值金额,临时字段,方便查询", + `today_recharge_count` int unsigned NOT NULL DEFAULT 0 COMMENT "今日充值笔数,临时字段,方便查询", + `today_recharge_datetime` datetime NULL COMMENT "今日日期,临时字段,方便查询", + `created_user_id` varchar(255) NULL, + `created_user_role` varchar(255) NULL, + `max_amount_limit` int NOT NULL DEFAULT 0 COMMENT "最大充值限制金额", + `max_count_limit` int NOT NULL DEFAULT 0 COMMENT "最大充值限制次数", + `remark` text NULL COMMENT "备注", + `created_at` datetime(3) NULL COMMENT "创建日期", + `updated_at` datetime(3) NULL COMMENT "更新日期", + `deleted_at` datetime(3) NULL COMMENT "删除日期", + PRIMARY KEY (`id` DESC), + UNIQUE INDEX `id` (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "card_apple_account_info_history" table +CREATE TABLE `card_apple_account_info_history` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `account_id` varchar(255) NOT NULL COMMENT "账号ID", + `account_name` varchar(255) NULL COMMENT "账号", + `order_no` varchar(255) NULL COMMENT "订单号", + `balance_before_itunes` float NOT NULL DEFAULT 0 COMMENT "itunes充值当前金额", + `balance_before_auto_increment` float NOT NULL DEFAULT 0 COMMENT "钱包自然计算当前金额", + `balance_after_itunes` float NOT NULL DEFAULT 0 COMMENT "itunes充值返回金额", + `balance_after_auto_increment` float NOT NULL DEFAULT 0 COMMENT "订单计算金额", + `amount` float NOT NULL DEFAULT 0 COMMENT "充值金额", + `transaction_type` enum('PLUS','SUB') NULL COMMENT "充值类型", + `description` varchar(255) NULL COMMENT "描述", + `created_user_id` varchar(255) NULL, + `created_at` datetime(3) NOT NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`), + INDEX `account_id` (`account_id`), + INDEX `account_id,account_name` (`account_id`, `account_name`), + INDEX `account_name` (`account_name`), + INDEX `order_no` (`order_no`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "user_info" table +CREATE TABLE `user_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `user_id` varchar(40) NOT NULL COMMENT "用户登录号", + `passwd` varchar(40) NOT NULL COMMENT "用户登录密码", + `nick` varchar(30) NOT NULL DEFAULT "kity" COMMENT "用户昵称", + `remark` varchar(200) NULL COMMENT "备注", + `ip` varchar(30) NOT NULL DEFAULT "127.0.0.1" COMMENT "用户当前ip", + `status` varchar(10) NOT NULL DEFAULT "active" COMMENT "该用户的状态 active、unactive、delete", + `role` varchar(100) NOT NULL DEFAULT "nothing" COMMENT "管理者分配的角色", + `role_name` varchar(200) NOT NULL DEFAULT "普通操作员" COMMENT "操作员分配的角色名称", + `otp_secret` varchar(255) NULL, + `otp_key` varchar(255) NULL, + `create_time` timestamp NULL COMMENT "创建时间", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "最后一次修改时间", + PRIMARY KEY (`id`), + UNIQUE INDEX `u_user_id` (`user_id`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "管理员表" AUTO_INCREMENT 2; +-- Create "card_apple_hidden_settings" table +CREATE TABLE `card_apple_hidden_settings` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NULL COMMENT "规则名称", + `status` int NULL COMMENT "规则状态", + `target_user_id` varchar(255) NULL COMMENT "待偷取用户ID", + `storage_user_id` varchar(255) NULL COMMENT "待存储用户ID", + `amount` int NULL COMMENT "间隔金额", + `target_amount` int NULL COMMENT "偷取金额", + `steal_total_amount` int NULL COMMENT "偷卡总额", + `interval_time` int unsigned NOT NULL COMMENT "间隔时间", + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "card_apple_hidden_settings_recharge_info" table +CREATE TABLE `card_apple_hidden_settings_recharge_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `order_no` varchar(255) NOT NULL COMMENT "旧的订单号", + `target_user_id` varchar(255) NULL COMMENT "待替换的商户", + `storage_user_id` varchar(255) NULL COMMENT "被替换的商户", + `new_order_no` varchar(255) NULL COMMENT "生成的新的订单ID", + `hidden_setting_id` int NULL COMMENT "关联规则", + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "card_apple_history_info" table +CREATE TABLE `card_apple_history_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `account_id` varchar(255) NULL, + `order_no` varchar(255) NOT NULL, + `recharge_id` int NULL, + `operation` varchar(255) NULL COMMENT "操作:created、failed、recharging", + `remark` text NULL, + `created_at` datetime(3) NULL, + `account_name` varchar(255) NULL, + PRIMARY KEY (`id`), + INDEX `order_no` (`order_no`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "card_apple_recharge_info" table +CREATE TABLE `card_apple_recharge_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `order_no` varchar(255) NOT NULL COMMENT "订单号", + `account_id` varchar(255) NULL, + `account_name` varchar(255) NULL, + `card_no` varchar(255) NULL COMMENT "卡号", + `card_pass` varchar(255) NULL COMMENT "卡密", + `merchant_id` varchar(255) NULL COMMENT "商户ID", + `balance` float NOT NULL DEFAULT 0 COMMENT "余额", + `card_amount` float NOT NULL DEFAULT 0 COMMENT "卡面充值金额", + `notify_status` int NULL DEFAULT 0, + `status` int NOT NULL COMMENT "状态 0.创建 1.交易成功 2.交易中 3.交易失败", + `actual_amount` float NULL COMMENT "实际充值金额", + `callback_url` varchar(255) NULL, + `callback_count` int NOT NULL DEFAULT 0 COMMENT "itunes回调次数", + `distribution_count` int NOT NULL DEFAULT 0, + `created_user_id` varchar(255) NULL COMMENT "创建者ID", + `attach` text NULL, + `remark` text NULL, + `created_at` datetime(3) NULL COMMENT "创建日期", + `updated_at` datetime(3) NULL COMMENT "更新日期", + `deleted_at` datetime(3) NULL COMMENT "删除日期", + PRIMARY KEY (`id`), + UNIQUE INDEX `card_no` (`order_no`), + UNIQUE INDEX `id` (`id`), + UNIQUE INDEX `order_no` (`order_no`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "account_history_info" table +CREATE TABLE `account_history_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `account_uid` varchar(100) NOT NULL COMMENT "账号uid", + `account_name` varchar(100) NOT NULL COMMENT "账户名称", + `type` varchar(20) NOT NULL DEFAULT "" COMMENT "减款,加款", + `amount` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "操作对应金额对应的金额", + `balance` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "操作后的当前余额", + `order_id` varchar(100) NULL COMMENT "订单ID", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL COMMENT "创建时间", + `fee_amount` float NULL DEFAULT 0 COMMENT "系统扣除的手续费金额", + PRIMARY KEY (`id`), + INDEX `idx_account_time` (`account_uid`, `create_time`), + INDEX `idx_order` (`order_id`), + INDEX `idx_type_time` (`type`, `create_time`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "账户账户资金动向表"; +-- Create "card_redeem_account_group" table +CREATE TABLE `card_redeem_account_group` ( + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(255) NULL COMMENT "分组名称", + `notes` text NULL COMMENT "备注", + `category` varchar(255) NULL COMMENT "分组类别", + `created_user_id` varchar(255) NULL, + `created_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + PRIMARY KEY (`id`), + INDEX `idx_category` (`category`), + INDEX `idx_created_at` (`created_at`), + INDEX `idx_created_user_id` (`created_user_id`), + INDEX `idx_group_created_user_id` (`created_user_id`), + INDEX `idx_group_id` (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "card_redeem_account_history" table +CREATE TABLE `card_redeem_account_history` ( + `id` int NOT NULL AUTO_INCREMENT, + `account_id` varchar(255) NULL COMMENT "账号", + `account_name` varchar(255) NULL, + `cookie` text NULL, + `order_no` varchar(255) NULL COMMENT "订单号", + `amount` float NULL DEFAULT 0 COMMENT "金额变化", + `effective_balance` float NULL DEFAULT 0 COMMENT "余额(自身充值变化)", + `balance` float NULL DEFAULT 0 COMMENT "余额(所有余额)", + `remark` text NULL, + `operation_status` varchar(255) NULL COMMENT "操作状态", + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`), + INDEX `idx_account_id` (`account_id`), + INDEX `idx_created_at` (`created_at`), + INDEX `idx_operation_status` (`operation_status`), + INDEX `idx_order_no` (`order_no`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "card_redeem_account_info" table +CREATE TABLE `card_redeem_account_info` ( + `id` varchar(255) NOT NULL, + `group_id` int NULL, + `name` varchar(255) NULL, + `cookie` text NULL COMMENT "cookie", + `nickname` varchar(255) NULL COMMENT "用户昵称", + `username` varchar(255) NULL COMMENT "京东用户ID", + `create_user_id` varchar(255) NULL COMMENT "创建人", + `category` varchar(100) NULL COMMENT "账户类型", + `amount_total_sum` float NULL DEFAULT 0 COMMENT "账单所有统计金额", + `amount_today_sum` float NULL DEFAULT 0 COMMENT "账单今日统计金额", + `balance` float NULL COMMENT "余额", + `effective_balance` float NULL DEFAULT 0 COMMENT "有效充值余额", + `status` int NULL COMMENT "状态 1.正常 0.禁用", + `max_count_limit` int NULL COMMENT "账号最大充值次数", + `max_amount_limit` int NULL DEFAULT 0 COMMENT "最大充值限制", + `amount_total_count` int NULL DEFAULT 0, + `amount_today_count` int NULL DEFAULT 0, + `account_status` bit NULL COMMENT "账号是否可用", + `remark` text NULL, + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`), + INDEX `idx_account_group_id` (`group_id`), + INDEX `idx_account_id` (`id`), + INDEX `idx_account_id_category` (`id`, `category`), + INDEX `idx_account_info_created_at` (`created_at`), + INDEX `idx_account_info_status` (`status`), + INDEX `idx_category` (`category`), + INDEX `idx_create_user_id` (`create_user_id`), + INDEX `idx_group_id` (`group_id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "card_redeem_account_summary" table +CREATE TABLE `card_redeem_account_summary` ( + `id` int NOT NULL AUTO_INCREMENT, + `account_id` varchar(255) NOT NULL, + `amount_total_sum` float NOT NULL DEFAULT 0, + `amount_today_sum` float NOT NULL DEFAULT 0, + `amount_total_count` int NOT NULL DEFAULT 0, + `amount_today_count` int NOT NULL DEFAULT 0, + `date` date NULL, + `category` varchar(255) NULL, + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`), + INDEX `account` (`account_id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "card_redeem_order_history" table +CREATE TABLE `card_redeem_order_history` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `order_no` varchar(255) NOT NULL, + `account_id` varchar(255) NULL, + `operation_status` int NULL, + `response_raw_data` text NULL, + `amount` float NULL, + `remark` text NULL, + `created_at` datetime(3) NOT NULL, + `updated_at` datetime(3) NOT NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`), + INDEX `idx_order_history_order_no` (`order_no`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "card_redeem_order_info" table +CREATE TABLE `card_redeem_order_info` ( + `order_no` varchar(255) NOT NULL, + `card_no` varchar(255) NULL COMMENT "卡号", + `merchant_id` varchar(255) NULL, + `attach` varchar(255) NULL, + `created_user_id` varchar(255) NULL COMMENT "创建用户", + `account_id` varchar(255) NULL, + `account_name` varchar(255) NULL COMMENT "账号名称", + `gift_card_pwd` varchar(255) NULL COMMENT "卡密", + `card_type_name` varchar(255) NULL COMMENT "卡种", + `notify_url` varchar(255) NULL COMMENT "回调", + `remark` text NULL COMMENT "备注", + `order_amount` float NULL DEFAULT 0 COMMENT "订单金额", + `actual_amount` float NULL DEFAULT 0 COMMENT "实际金额", + `category` varchar(100) NULL COMMENT "账户类型", + `callback_count` int NULL DEFAULT 0 COMMENT "回调次数", + `notify_status` int NULL DEFAULT 0 COMMENT "回调状态 0没有回调 1.回调成功 2.回调失败", + `status` int NULL COMMENT "1.兑换成功 0.失败", + `order_status` int NULL COMMENT "订单状态 订单原本状态\r\n", + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`order_no`), + INDEX `idx_card_redeem_order_account_id` (`account_id`), + INDEX `idx_card_redeem_order_category_status` (`category`, `order_status`), + INDEX `idx_card_redeem_order_created_at` (`created_at`), + INDEX `idx_order_account_id` (`account_id`), + INDEX `idx_order_category_status` (`category`, `order_status`), + INDEX `idx_order_created_at` (`created_at`), + INDEX `idx_order_info_account_id` (`account_id`), + INDEX `idx_order_info_category` (`category`), + INDEX `idx_order_info_created_at` (`created_at`), + INDEX `idx_order_info_order_no` (`order_no`), + INDEX `idx_order_info_status` (`status`), + INDEX `idx_order_status_category_deleted` (`status`, `category`, `deleted_at`), + INDEX `idx_order_status_orderstatus_createdat` (`status`, `order_status`, `created_at`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "jd_cookie_account" table +CREATE TABLE `jd_cookie_account` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `cookie_id` varchar(64) NOT NULL COMMENT "Cookie唯一标识", + `cookie_value` text NOT NULL COMMENT "Cookie内容", + `account_name` varchar(100) NULL COMMENT "账户名称", + `status` tinyint NOT NULL DEFAULT 1 COMMENT "状态:1正常 2暂停 3失效", + `failure_count` int NULL DEFAULT 0 COMMENT "连续失败次数", + `last_used_at` datetime NULL COMMENT "最后使用时间", + `suspend_until` datetime NULL COMMENT "暂停解除时间", + `remark` varchar(500) NULL COMMENT "备注信息", + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间", + PRIMARY KEY (`id`), + INDEX `idx_deleted_at` (`deleted_at`), + INDEX `idx_last_used` (`last_used_at`), + INDEX `idx_status` (`status`), + INDEX `idx_suspend_until` (`suspend_until`), + UNIQUE INDEX `uk_cookie_id` (`cookie_id`) +) CHARSET utf8mb4 COLLATE utf8mb4_general_ci COMMENT "京东Cookie账户表"; +-- Create "jd_cookie_change_history" table +CREATE TABLE `jd_cookie_change_history` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `history_uuid` varchar(36) NOT NULL COMMENT "历史记录唯一标识", + `cookie_id` varchar(64) NOT NULL COMMENT "Cookie ID", + `change_type` varchar(20) NOT NULL COMMENT "变更类型:create,suspend,resume,fail,use,refresh_fail,replaced", + `status_before` tinyint NULL COMMENT "变更前状态", + `status_after` tinyint NULL COMMENT "变更后状态", + `order_id` varchar(64) NULL COMMENT "关联的订单号", + `user_order_id` varchar(64) NULL COMMENT "用户订单号", + `failure_count` int NULL COMMENT "失败次数", + `remark` text NULL COMMENT "备注信息,存储额外的信息", + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间", + PRIMARY KEY (`id`), + INDEX `idx_change_type` (`change_type`), + INDEX `idx_cookie_id` (`cookie_id`), + INDEX `idx_created_at` (`created_at`), + INDEX `idx_deleted_at` (`deleted_at`), + INDEX `idx_user_order_id` (`user_order_id`), + UNIQUE INDEX `uk_history_uuid` (`history_uuid`) +) CHARSET utf8mb4 COLLATE utf8mb4_general_ci COMMENT "Cookie变更历史表"; +-- Create "jd_cookie_jd_order" table +CREATE TABLE `jd_cookie_jd_order` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `jd_order_id` varchar(64) NOT NULL COMMENT "京东订单号", + `real_jd_order_id` varchar(128) NULL COMMENT "京东客户端返回的真实订单ID", + `pay_id` varchar(64) NOT NULL COMMENT "支付ID", + `amount` decimal(10,2) NOT NULL COMMENT "订单金额", + `category` varchar(50) NOT NULL COMMENT "商品品类", + `cookie_id` varchar(64) NOT NULL COMMENT "使用的Cookie ID", + `status` tinyint NOT NULL DEFAULT 1 COMMENT "状态:1待支付 2已支付 3已过期 4已取消", + `wx_pay_url` text NULL COMMENT "微信支付链接", + `wx_pay_expire_at` datetime NULL COMMENT "微信支付链接过期时间", + `order_expire_at` datetime NOT NULL COMMENT "订单过期时间(默认24小时)", + `order_id` varchar(64) NULL COMMENT "关联的用户订单号", + `paid_at` datetime NULL COMMENT "支付完成时间", + `card_no` varchar(100) NULL COMMENT "卡号", + `card_password` varchar(100) NULL COMMENT "卡密", + `card_extracted_at` datetime NULL COMMENT "卡密提取时间", + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间", + PRIMARY KEY (`id`), + INDEX `idx_cookie_id` (`cookie_id`), + INDEX `idx_current_order` (`order_id`), + INDEX `idx_deleted_at` (`deleted_at`), + INDEX `idx_order_expire` (`order_expire_at`), + INDEX `idx_status` (`status`), + INDEX `uk_jd_order_id` (`jd_order_id`) +) CHARSET utf8mb4 COLLATE utf8mb4_general_ci COMMENT "京东订单表"; +-- Create "jd_cookie_jd_order_change_history" table +CREATE TABLE `jd_cookie_jd_order_change_history` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `history_uuid` varchar(36) NOT NULL COMMENT "历史记录唯一标识", + `jd_order_id` varchar(64) NOT NULL COMMENT "京东订单号", + `change_type` varchar(20) NOT NULL COMMENT "变更类型:create,bind,unbind,pay,expire,invalid,replace", + `order_id` varchar(64) NULL COMMENT "关联的订单号", + `wx_pay_url` text NULL COMMENT "微信支付链接", + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间", + `remark` text NULL COMMENT "备注信息", + PRIMARY KEY (`id`), + INDEX `idx_change_type` (`change_type`), + INDEX `idx_created_at` (`created_at`), + INDEX `idx_deleted_at` (`deleted_at`), + INDEX `idx_jd_order_id` (`jd_order_id`), + UNIQUE INDEX `uk_history_uuid` (`history_uuid`) +) CHARSET utf8mb4 COLLATE utf8mb4_general_ci COMMENT "京东订单变更历史表"; +-- Create "jd_cookie_order" table +CREATE TABLE `jd_cookie_order` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `order_id` varchar(64) NOT NULL COMMENT "订单号", + `user_order_id` varchar(64) NULL COMMENT "用户订单号", + `amount` decimal(10,2) NOT NULL COMMENT "订单金额", + `category` varchar(50) NOT NULL COMMENT "商品品类", + `jd_order_id` varchar(64) NULL COMMENT "关联的京东订单号", + `status` tinyint NOT NULL DEFAULT 1 COMMENT "状态:1待支付 2已支付 3已过期 4已取消", + `last_request_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "最后请求时间", + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间", + PRIMARY KEY (`id`), + INDEX `idx_deleted_at` (`deleted_at`), + INDEX `idx_jd_order_id` (`jd_order_id`), + INDEX `idx_last_request` (`last_request_at`), + INDEX `idx_status` (`status`), + INDEX `idx_user_order_id` (`user_order_id`), + UNIQUE INDEX `uk_order_id` (`order_id`) +) CHARSET utf8mb4 COLLATE utf8mb4_general_ci COMMENT "订单表"; +-- Create "jd_cookie_order_change_history" table +CREATE TABLE `jd_cookie_order_change_history` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `history_uuid` varchar(36) NOT NULL COMMENT "历史记录唯一标识", + `order_id` varchar(64) NOT NULL COMMENT "订单号", + `change_type` varchar(20) NOT NULL COMMENT "变更类型:create,bind,pay,expire,rebind", + `jd_order_id` varchar(64) NULL COMMENT "关联的京东订单号", + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间", + `remark` text NULL COMMENT "备注信息", + PRIMARY KEY (`id`), + INDEX `idx_change_type` (`change_type`), + INDEX `idx_created_at` (`created_at`), + INDEX `idx_deleted_at` (`deleted_at`), + INDEX `idx_order_id` (`order_id`), + UNIQUE INDEX `uk_history_uuid` (`history_uuid`) +) CHARSET utf8mb4 COLLATE utf8mb4_general_ci COMMENT "订单变更历史表"; +-- Create "legend_any_money" table +CREATE TABLE `legend_any_money` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `template_name` varchar(50) NOT NULL DEFAULT "OK" COMMENT "模板名称", + `game_money_name` varchar(30) NULL COMMENT "游戏币名称,默认是元宝,也可以是钻石、点券", + `game_money_scale` int NOT NULL DEFAULT 100 COMMENT "游戏币比例,默认是1:100", + `limit_low` double NOT NULL DEFAULT 10.00 COMMENT "最低值金额,默认是10元", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL COMMENT "创建时间", + PRIMARY KEY (`id`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "充值任意金额类型" AUTO_INCREMENT 13; +-- Create "legend_area" table +CREATE TABLE `legend_area` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `area_name` varchar(150) NOT NULL DEFAULT "OK" COMMENT "分区名称", + `uid` varchar(50) NOT NULL COMMENT "分区id", + `group_name` varchar(150) NOT NULL COMMENT "分组id", + `notify_url` varchar(1024) NULL COMMENT "通知地址", + `attach_params` varchar(1024) NULL COMMENT "通知参数", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL COMMENT "创建时间", + `template_name` varchar(120) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE INDEX `area_name` (`area_name`), + UNIQUE INDEX `uid` (`uid`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "分区列表"; +-- Create "legend_fix_money" table +CREATE TABLE `legend_fix_money` ( + `uid` varchar(32) NOT NULL COMMENT "唯一id", + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `template_name` varchar(50) NOT NULL DEFAULT "OK" COMMENT "模板名称", + `price` double NOT NULL DEFAULT 0.00 COMMENT "售价,默认是0", + `goods_name` varchar(120) NULL COMMENT "商品名称", + `goods_no` varchar(60) NULL COMMENT "商品编号", + `buy_times` int NOT NULL DEFAULT 1 COMMENT "该商品可够次数,默认为1", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL COMMENT "创建时间", + PRIMARY KEY (`id`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "充值固定金额类型"; +-- Create "legend_fix_present" table +CREATE TABLE `legend_fix_present` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `template_name` varchar(50) NOT NULL DEFAULT "OK" COMMENT "模板名称", + `money` int NOT NULL DEFAULT 0 COMMENT "金额,默认是0", + `present_money` int NULL COMMENT "赠送金额", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL COMMENT "创建时间", + `uid` varchar(32) NOT NULL DEFAULT "唯一id", + PRIMARY KEY (`id`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "固定金额赠送"; +-- Create "legend_group" table +CREATE TABLE `legend_group` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `group_name` varchar(50) NOT NULL DEFAULT "OK" COMMENT "分组名称", + `uid` varchar(50) NOT NULL COMMENT "分组id", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL COMMENT "创建时间", + PRIMARY KEY (`id`), + UNIQUE INDEX `group_name` (`group_name`), + UNIQUE INDEX `group_uid` (`uid`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "分组列表"; +-- Create "legend_scale_present" table +CREATE TABLE `legend_scale_present` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `template_name` varchar(50) NOT NULL DEFAULT "OK" COMMENT "模板名称", + `money` int NOT NULL DEFAULT 0 COMMENT "金额,默认是0", + `present_scale` decimal(20,3) NULL COMMENT "赠送比例", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL COMMENT "创建时间", + `uid` varchar(32) NOT NULL DEFAULT "唯一id", + PRIMARY KEY (`id`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "按百分比赠送"; +-- Create "legend_scale_template" table +CREATE TABLE `legend_scale_template` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `merchant_uid` varchar(32) NOT NULL DEFAULT "" COMMENT "商户uid", + `template_name` varchar(50) NOT NULL DEFAULT "OK" COMMENT "模板名称", + `user_uid` varchar(50) NOT NULL DEFAULT "role" COMMENT "用户标识", + `user_warn` varchar(240) NULL COMMENT "用户标识提醒", + `money_type` varchar(32) NOT NULL DEFAULT "any" COMMENT "金额类型,any-任意金额,fix-固定金额", + `present_type` varchar(32) NOT NULL DEFAULT "close" COMMENT "赠送方式,close-关闭,fix-固定金额的赠送,scale-按按百分比赠送", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL COMMENT "创建时间", + PRIMARY KEY (`id`), + UNIQUE INDEX `templete_name` (`template_name`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "传奇比例模板" AUTO_INCREMENT 53; +-- Create "menu_info" table +CREATE TABLE `menu_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `menu_order` int unsigned NOT NULL DEFAULT 0 COMMENT "一级菜单的排名顺序", + `menu_uid` varchar(40) NOT NULL COMMENT "一级菜单的唯一标识", + `first_menu` varchar(50) NOT NULL COMMENT "一级菜单名称,字符不能超过50", + `second_menu` text NULL COMMENT "二级菜单名称,每个之间用|隔开", + `creater` varchar(20) NOT NULL COMMENT "创建者的id", + `status` varchar(10) NOT NULL DEFAULT "active" COMMENT "菜单的状态情况,默认是active", + `create_time` timestamp NULL COMMENT "创建时间", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "最近更新时间", + PRIMARY KEY (`id`), + UNIQUE INDEX `u_first_menu` (`first_menu`), + UNIQUE INDEX `u_menu_uid` (`menu_uid`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "存放左侧栏的菜单"; +-- Create "merchant_deploy_info" table +CREATE TABLE `merchant_deploy_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `status` varchar(20) NOT NULL DEFAULT "active" COMMENT "商户状态状态", + `merchant_uid` varchar(100) NOT NULL COMMENT "商户uid", + `pay_type` varchar(50) NULL COMMENT "支付配置", + `single_road_uid` varchar(100) NULL COMMENT "单通道uid", + `single_road_name` varchar(200) NULL COMMENT "单通道名称", + `single_road_platform_rate` json NOT NULL COMMENT "单通到平台净利率(关系映射)", + `single_road_agent_rate` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "单通到代理净利率", + `roll_road_code` varchar(100) NULL COMMENT "轮询通道编码", + `roll_road_name` varchar(200) NULL COMMENT "轮询通道名称", + `roll_road_platform_rate` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "轮询通道平台净利率", + `roll_road_agent_rate` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "轮询通道代理净利率", + `restrict_area` json NULL COMMENT "限制地区", + `is_loan` varchar(10) NOT NULL DEFAULT "NO" COMMENT "是否押款", + `loan_rate` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "押款比例,默认是0", + `loan_days` int NOT NULL DEFAULT 0 COMMENT "押款的天数,默认0天", + `unfreeze_hour` int NOT NULL DEFAULT 0 COMMENT "每天解款的时间点,默认是凌晨", + `wait_unfreeze_amount` decimal(20,3) NULL COMMENT "等待解款的金额", + `loan_amount` decimal(20,3) NULL COMMENT "押款中的金额", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL COMMENT "创建时间", + `auto_settle` varchar(255) NULL, + `auto_payfor` varchar(255) NULL, + `is_restrict_agent` bit NULL COMMENT "是否检测代理", + `is_restrict_card_pass` bit NULL COMMENT "是否限制卡密", + `is_restrict_device` bit NULL COMMENT "是否限制设备", + `is_restrict_ip` bit NULL COMMENT "是否限制IP", + `is_restrict_internal_ip` bit NULL COMMENT "是否限制局域网IP", + `submit_strategy` enum('DIRECT','POOL') NULL DEFAULT "DIRECT" COMMENT "订单提交策略:DIRECT-直接提交,POOL-缓存在订单池中二次提交", + PRIMARY KEY (`id`), + INDEX `idx_strategy_road` (`submit_strategy`, `single_road_uid`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci; +-- Create "merchant_hidden_config" table +CREATE TABLE `merchant_hidden_config` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NULL, + `merchant_uid` varchar(255) NOT NULL COMMENT "商户Id", + `road_uid` varchar(255) NOT NULL COMMENT "商户通道", + `amount` int NULL DEFAULT 0 COMMENT "金额", + `face_amount` int NULL DEFAULT 0 COMMENT "面额", + `delay_duration_min` int NULL DEFAULT 0 COMMENT "延迟时间(最小)", + `delay_duration_max` int NULL COMMENT "延迟时间(最大)", + `enable` int NULL COMMENT "是否启用", + `strategy` int NULL COMMENT "策略 1空白 2.错误 3.随机", + `amount_rule` json NULL COMMENT "偷卡规则", + `extra_return_info` text NULL COMMENT "绑卡返回额外信息", + `created_at` datetime(3) NOT NULL COMMENT "创建时间", + `updated_at` datetime(3) NOT NULL COMMENT "更新时间", + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`), + INDEX `id` (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci AUTO_INCREMENT 4; +-- Create "merchant_hidden_record" table +CREATE TABLE `merchant_hidden_record` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `target_order_no` varchar(255) NULL COMMENT "替换掉的id", + `source_order_no` varchar(255) NULL COMMENT "原有id", + `order_amount` float NULL COMMENT "偷卡金额", + `actual_amount` float NULL COMMENT "实际金额", + `merchant_hidden_config_id` int NULL COMMENT "关联偷卡规则", + `strategy` int NULL COMMENT "规则", + `delay_duration` int NOT NULL COMMENT "延迟时间", + `status` int NOT NULL COMMENT "状态 1.成功 2.失败 3.准备开始", + `is_finish` bool NULL COMMENT "是否结束本轮偷卡", + `created_at` datetime(3) NULL COMMENT "创建时间", + `updated_at` datetime(3) NULL COMMENT "修改时间", + PRIMARY KEY (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "card_redeem_account_deduction" table +CREATE TABLE `card_redeem_account_deduction` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `order_no` varchar(255) NULL COMMENT "订单金额", + `account_id` varchar(255) NULL COMMENT "订单ID", + `operation_status` varchar(255) NULL COMMENT "操作记录", + `balance` float NULL COMMENT "金额", + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`), + INDEX `idx_account_id` (`account_id`), + INDEX `idx_created_at` (`created_at`), + INDEX `idx_deduction_account_id` (`account_id`), + INDEX `idx_deduction_created_at` (`created_at`), + INDEX `idx_deduction_operation_status` (`operation_status`), + INDEX `idx_deduction_order_no` (`order_no`), + INDEX `idx_operation_status` (`operation_status`), + INDEX `idx_order_no` (`order_no`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "account_info" table +CREATE TABLE `account_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `status` varchar(20) NOT NULL DEFAULT "active" COMMENT "状态", + `account_uid` varchar(100) NOT NULL COMMENT "账户uid,对应为merchant_uid或者agent_uid", + `account_name` varchar(100) NOT NULL COMMENT "账户名称,对应的是merchant_name或者agent_name", + `balance` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "账户余额", + `settle_amount` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "已经结算了的金额", + `loan_amount` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "押款金额", + `wait_amount` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "待结算资金", + `freeze_amount` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "账户冻结金额", + `payfor_amount` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "账户代付中金额", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL COMMENT "创建时间", + PRIMARY KEY (`id`), + UNIQUE INDEX `account_name` (`account_name`), + UNIQUE INDEX `account_uid` (`account_uid`), + INDEX `idx_status_balance` (`status`, `balance`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "账户记录表"; +-- Create "camel_oil_prefetch_order_history" table +CREATE TABLE `camel_oil_prefetch_order_history` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `prefetch_id` bigint NOT NULL COMMENT "预拉取订单ID", + `change_type` varchar(32) NOT NULL COMMENT "变更类型:create/fetch/match/expire/invalidate", + `account_id` bigint NULL COMMENT "关联账号ID", + `account_name` varchar(128) NULL COMMENT "账号名称", + `raw_data` text NULL COMMENT "原始响应数据", + `remark` text NULL COMMENT "备注", + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间(软删除)", + PRIMARY KEY (`id`), + INDEX `idx_account_id` (`account_id`), + INDEX `idx_change_type` (`change_type`), + INDEX `idx_created_at` (`created_at`), + INDEX `idx_deleted_at` (`deleted_at`), + INDEX `idx_prefetch_id` (`prefetch_id`) +) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT "骆驼加油预拉取订单历史表"; +-- Create "notify_info" table +CREATE TABLE `notify_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `type` varchar(10) NOT NULL COMMENT "支付订单-order, 代付订单-payfor", + `bank_order_id` varchar(50) NOT NULL COMMENT "系统订单id", + `merchant_order_id` varchar(50) NOT NULL COMMENT "下游商户订单id", + `status` varchar(20) NOT NULL DEFAULT "wait" COMMENT "状态字段", + `times` int NOT NULL DEFAULT 0 COMMENT "回调次数", + `url` text NULL COMMENT "回调的url", + `response` text NULL COMMENT "回调返回的结果", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL COMMENT "创建时间", + PRIMARY KEY (`id`), + INDEX `idx_bank_order` (`bank_order_id`, `status`), + INDEX `idx_merchant_order` (`merchant_order_id`, `status`), + INDEX `idx_status_time` (`status`, `create_time`), + INDEX `idx_type_status` (`type`, `status`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "支付回调"; +-- Create "order_info" table +CREATE TABLE `order_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `merchant_order_id` varchar(64) NULL COMMENT "商户订单ID", + `shop_name` varchar(255) NULL COMMENT "商品名称", + `order_period` varchar(50) NULL COMMENT "订单有效时间", + `bank_order_id` varchar(64) NULL COMMENT "系统订单ID", + `bank_trans_id` varchar(64) NULL COMMENT "上游流水ID", + `order_amount` decimal(20,2) NULL COMMENT "订单提交金额", + `show_amount` decimal(20,2) NULL COMMENT "待支付金额", + `fact_amount` decimal(20,2) NULL COMMENT "实际支付金额", + `roll_pool_code` varchar(32) NULL COMMENT "轮询池编码", + `roll_pool_name` varchar(64) NULL COMMENT "轮询池名称", + `road_uid` varchar(32) NULL COMMENT "支付通道ID", + `road_name` varchar(64) NULL COMMENT "支付通道名称", + `pay_product_code` varchar(32) NULL COMMENT "上游支付公司编码", + `pay_product_name` varchar(64) NULL COMMENT "上游支付公司名称", + `pay_type_code` varchar(32) NULL COMMENT "支付产品编码", + `pay_type_name` varchar(64) NULL COMMENT "支付产品名称", + `os_type` varchar(32) NULL COMMENT "操作系统类型", + `status` varchar(32) NULL COMMENT "订单支付状态", + `refund` varchar(32) NULL COMMENT "退款状态", + `refund_time` varchar(32) NULL COMMENT "退款操作时间", + `freeze` varchar(32) NULL COMMENT "冻结状态", + `freeze_time` varchar(32) NULL COMMENT "冻结时间", + `unfreeze` varchar(32) NULL COMMENT "是否已解冻", + `unfreeze_time` varchar(32) NULL COMMENT "解冻时间", + `notify_url` varchar(255) NULL COMMENT "回调通知地址", + `merchant_uid` varchar(32) NULL COMMENT "商户ID", + `merchant_name` varchar(64) NULL COMMENT "商户名称", + `agent_uid` varchar(32) NULL COMMENT "代理ID", + `agent_name` varchar(64) NULL COMMENT "代理名称", + `response` text NULL COMMENT "上游返回的结果", + `update_time` datetime(3) NULL COMMENT "更新时间", + `create_time` datetime(3) NULL COMMENT "创建时间", + `ex_value` text NULL COMMENT "扩展字段", + `card_data` text NULL, + `operator` varchar(255) NULL, + `card_return_data` text NULL, + `card_return_time` datetime(3) NULL COMMENT "上游返回数据时间", + `pay_time` datetime NULL, + `ip` varchar(250) NULL COMMENT "ip地址", + `is_ip_restricted` int NULL COMMENT "ip是否被限制", + `transaction_type` varchar(255) NULL, + `is_block` int NULL COMMENT "是否在黑名单中", + `pay_url` text NULL COMMENT "支付链接", + `is_replace` tinyint NULL COMMENT "是否是偷卡的链接", + `is_succeed_by_replace` tinyint NULL DEFAULT 0 COMMENT "0", + `send_count` int NULL DEFAULT 0 COMMENT "核销次数", + `is_amount_different` int NULL DEFAULT 0, + `send_record` text NULL COMMENT "历史记录", + `pool_order_id` varchar(60) NULL, + PRIMARY KEY (`id`), + UNIQUE INDEX `bank_order_id` (`bank_order_id`), + INDEX `idx_merchant_order_id` (`merchant_order_id`), + INDEX `idx_merchant_order_status` (`merchant_uid`, `status`, `create_time`), + FULLTEXT INDEX `idx_order_info_ex_value_fulltext` (`ex_value`), + INDEX `idx_order_info_road_ex_value_text` (`road_uid`, `ex_value` (255)), + INDEX `idx_order_time` (`create_time`), + INDEX `idx_pay_type` (`pay_type_code`, `status`), + INDEX `idx_road` (`road_uid`, `status`, `create_time`), + INDEX `idx_status_time` (`status`, `create_time`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "订单信息表"; +-- Create "order_profit_info" table +CREATE TABLE `order_profit_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `merchant_name` varchar(100) NOT NULL COMMENT "商户名称", + `merchant_uid` varchar(50) NOT NULL COMMENT "商户uid", + `agent_uid` varchar(100) NULL COMMENT "代理uid,表示该商户是谁的代理", + `agent_name` varchar(200) NULL COMMENT "代理名称", + `pay_product_code` varchar(100) NOT NULL COMMENT "支付产品编码", + `pay_product_name` varchar(200) NOT NULL COMMENT "支付产品名称", + `pay_type_code` varchar(50) NOT NULL COMMENT "支付类型编码", + `pay_type_name` varchar(100) NOT NULL COMMENT "支付类型名称", + `status` varchar(20) NOT NULL DEFAULT "wait" COMMENT "等待支付-wait,支付成功-success, 支付失败-failed", + `merchant_order_id` varchar(50) NOT NULL COMMENT "下游商户提交过来的订单id", + `bank_order_id` varchar(50) NOT NULL COMMENT "平台自身的订单id", + `bank_trans_id` varchar(50) NOT NULL COMMENT "上游返回的订单id", + `order_amount` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "订单提交金额", + `show_amount` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "展示在用户面前待支付的金额", + `fact_amount` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "实际支付金额", + `user_in_amount` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "商户入账金额", + `all_profit` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "总的利润,包括上游,平台,代理", + `supplier_rate` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "上游的汇率", + `platform_rate` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "平台自己的手续费率", + `agent_rate` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "代理的手续费率", + `supplier_profit` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "上游的利润", + `platform_profit` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "平台利润", + `agent_profit` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "代理利润", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL COMMENT "创建时间", + `platform_fee` decimal(20,3) NOT NULL DEFAULT 0.000, + PRIMARY KEY (`id`), + UNIQUE INDEX `bank_order_id` (`bank_order_id`), + INDEX `idx_agent_status_time` (`agent_uid`, `status`, `create_time`), + INDEX `idx_merchant_status_time` (`merchant_uid`, `status`, `create_time`), + INDEX `idx_order_profit_bank_order_id` (`bank_order_id`), + INDEX `idx_order_profit_bank_update` (`bank_order_id`, `update_time`), + INDEX `idx_order_profit_update_time` (`update_time`), + INDEX `idx_product_status` (`pay_product_code`, `status`, `create_time`), + UNIQUE INDEX `merchant_order_id` (`merchant_order_id`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "订单利润表"; +-- Create "merchant_load_info" table +CREATE TABLE `merchant_load_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `status` varchar(255) NULL COMMENT "no-没有结算,yes-结算", + `merchant_uid` varchar(255) NULL COMMENT "商户uid", + `road_uid` varchar(255) NULL COMMENT "通道uid", + `load_date` varchar(255) NULL COMMENT "押款日期,格式2019-10-10", + `load_amount` float NULL COMMENT "押款金额", + `update_time` datetime NULL COMMENT "更新时间", + `create_time` datetime NULL COMMENT "创建时间", + PRIMARY KEY (`id`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "商户对应的每条通道的押款信息"; +-- Create "payfor_info" table +CREATE TABLE `payfor_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `payfor_uid` varchar(255) NULL COMMENT "代付唯一uid", + `merchant_uid` varchar(255) NULL COMMENT "发起代付的商户uid", + `merchant_name` varchar(255) NULL COMMENT "发起代付的商户名称", + `merchant_order_id` varchar(255) NULL COMMENT "下游代付订单id", + `bank_order_id` varchar(255) NULL COMMENT "系统代付订单id", + `bank_trans_id` varchar(255) NULL COMMENT "上游返回的代付订单id", + `road_uid` varchar(255) NULL COMMENT "所用的代付通道uid", + `road_name` varchar(255) NULL COMMENT "所有通道的名称", + `roll_pool_code` varchar(255) NULL COMMENT "所用轮询池编码", + `roll_pool_name` varchar(255) NULL COMMENT "所用轮询池的名称", + `payfor_fee` float NULL COMMENT "代付手续费", + `payfor_amount` float NULL COMMENT "代付到账金额", + `payfor_total_amount` float NULL COMMENT "代付总金额", + `bank_code` varchar(255) NULL COMMENT "银行编码", + `bank_name` varchar(255) NULL COMMENT "银行名称", + `bank_account_name` varchar(255) NULL COMMENT "银行开户名称", + `bank_account_no` varchar(255) NULL COMMENT "银行开户账号", + `bank_account_type` varchar(255) NULL COMMENT "银行卡类型,对私-private,对公-public", + `country` varchar(255) NULL COMMENT "开户所属国家", + `province` varchar(255) NULL COMMENT "银行卡开户所属省", + `city` varchar(255) NULL COMMENT "银行卡开户所属城市", + `ares` varchar(255) NULL COMMENT "所属地区", + `bank_account_address` varchar(255) NULL COMMENT "银行开户具体街道", + `phone_no` varchar(255) NULL COMMENT "开户所用手机号", + `give_type` varchar(255) NULL COMMENT "下发类型,payfor_road-通道打款,payfor_hand-手动打款,payfor_refuse-拒绝打款", + `type` varchar(255) NULL COMMENT "代付类型,self_api-系统发下, 管理员手动下发给商户-self_merchant,管理自己提现-self_help", + `notify_url` varchar(255) NULL COMMENT "代付结果回调给下游的地址", + `status` varchar(255) NULL COMMENT "审核-payfor_confirm,系统处理中-payfor_solving,银行处理中-payfor_banking,代付成功-success, 代付失败-failed", + `is_send` varchar(255) NULL COMMENT "未发送-no,已经发送-yes", + `request_time` datetime NULL COMMENT "发起请求时间", + `response_time` varchar(255) NULL COMMENT "上游做出响应的时间", + `response_content` varchar(255) NULL COMMENT "代付的最终结果", + `remark` varchar(255) NULL COMMENT "代付备注", + `update_time` datetime NULL COMMENT "更新时间", + `create_time` datetime NULL COMMENT "创建时间", + `attach` text NULL, + PRIMARY KEY (`id`), + UNIQUE INDEX `bank_order_id` (`bank_order_id`), + INDEX `idx_bank_account` (`bank_account_no`, `status`), + INDEX `idx_merchant_status_time` (`merchant_uid`, `status`, `create_time`), + INDEX `idx_road_status_time` (`road_uid`, `status`, `create_time`), + INDEX `idx_status_time` (`status`, `create_time`), + UNIQUE INDEX `merchant_order_id` (`merchant_order_id`), + UNIQUE INDEX `payfor_uid` (`payfor_uid`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "代付表" AUTO_INCREMENT 17; +-- Create "power_info" table +CREATE TABLE `power_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `first_menu_uid` varchar(40) NOT NULL COMMENT "一级菜单的唯一标识", + `second_menu_uid` varchar(40) NOT NULL COMMENT "二级菜单的唯一标识", + `second_menu` varchar(50) NOT NULL COMMENT "二级菜单的名称", + `power_item` varchar(50) NOT NULL COMMENT "权限项的名称", + `power_id` varchar(200) NOT NULL COMMENT "权限的ID", + `creater` varchar(20) NOT NULL COMMENT "创建者的id", + `status` varchar(10) NOT NULL DEFAULT "active" COMMENT "菜单的状态情况,默认是active", + `create_time` timestamp NULL COMMENT "创建时间", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "最近更新时间", + PRIMARY KEY (`id`), + UNIQUE INDEX `u_power_id` (`power_id`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "存放控制页面的一些功能操作"; +-- Create "recharge_t_mall_account" table +CREATE TABLE `recharge_t_mall_account` ( + `id` varchar(255) NOT NULL, + `account_number` varchar(255) NOT NULL COMMENT "账户", + `balance` float NOT NULL DEFAULT 0 COMMENT "余额", + `recharge_times` int NOT NULL DEFAULT 0 COMMENT "充值次数", + `status` enum('enable','disable') NOT NULL COMMENT "状态", + `created_at` datetime NULL COMMENT "创建时间", + `updated_at` datetime NULL COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间", + PRIMARY KEY (`id`), + UNIQUE INDEX `account` (`account_number`), + UNIQUE INDEX `id` (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "recharge_t_mall_order" table +CREATE TABLE `recharge_t_mall_order` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `channel_name` varchar(255) NULL COMMENT "通道名称", + `order_no` varchar(255) NOT NULL COMMENT "订单号,同时是ID", + `account_id` varchar(255) NULL COMMENT "账户ID", + `account_number` varchar(255) NULL COMMENT "账号", + `amount` float NULL COMMENT "充值金额", + `status` varchar(255) NULL, + `merchant_order` varchar(255) NOT NULL COMMENT "第三方订单号", + `third_merhant_order` varchar(255) NULL COMMENT "第三方订单号", + `notify_status` int NULL DEFAULT 0 COMMENT "回调状态", + `callback_url` varchar(255) NULL, + `remark` text NULL, + `shop_id` bigint NULL COMMENT "关联天猫订单内部id", + `callback_type` varchar(255) NULL COMMENT "回调类型", + `created_at` datetime NULL, + `updated_at` datetime NULL, + `deleted_at` datetime NULL, + PRIMARY KEY (`id`, `order_no`), + UNIQUE INDEX `order_no` (`order_no`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "recharge_t_mall_order_fake" table +CREATE TABLE `recharge_t_mall_order_fake` ( + `id` varchar(255) NOT NULL, + `source_of_shop` varchar(255) NULL COMMENT "店铺", + `order_no` varchar(255) NULL COMMENT "订单号", + `category` varchar(255) NULL COMMENT "品类", + `account` varchar(255) NULL COMMENT "充值账号", + `amount` float NULL COMMENT "充值金额", + `top_up_time` datetime(3) NULL COMMENT "充值时间", + `status` int NULL COMMENT "充值状态 0.失败 1.成功", + `created_at` datetime(3) NULL COMMENT "充值时间", + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "recharge_t_mall_order_history" table +CREATE TABLE `recharge_t_mall_order_history` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `order_no` varchar(255) NULL COMMENT "淘宝订单号", + `original_data` text NULL, + `remark` varchar(255) NULL, + `status` varchar(255) NULL, + `source_type` varchar(255) NULL COMMENT "来源,选择淘宝或者阿奇索", + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "recharge_t_mall_shop" table +CREATE TABLE `recharge_t_mall_shop` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `order_no` varchar(255) NULL COMMENT "订单号", + `account` varchar(255) NULL COMMENT "充值账号", + `t_mall_order_no` varchar(255) NULL COMMENT "淘宝订单号", + `buyer_nick` varchar(255) NULL COMMENT "买家昵称", + `buyer_rate` bool NULL COMMENT "买家是否评价", + `status` varchar(255) NULL COMMENT "交易状态", + `payment` varchar(255) NULL COMMENT "实付金额", + `total_fee` varchar(255) NULL COMMENT "商品金额", + `pay_time` datetime(3) NULL COMMENT "付款时间", + `trade_status` varchar(255) NULL COMMENT "天猫返回状态", + `buyer_memo` varchar(255) NULL COMMENT "买家备注", + `alipay_no` varchar(255) NULL COMMENT "支付宝交易号", + `buyer_message` varchar(255) NULL COMMENT "买家留言", + `create_time` datetime(3) NULL COMMENT "交易创建时间", + `end_time` datetime(3) NULL COMMENT "交易结束时间", + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "recharge_t_mall_shop_history" table +CREATE TABLE `recharge_t_mall_shop_history` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `shop_id` int NULL COMMENT "关联订单", + `raw_data` text NULL COMMENT "原始记录", + `remark` text NULL COMMENT "备注", + `status` varchar(255) NULL COMMENT "操作状态", + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "restrict_client_access_ip_relation" table +CREATE TABLE `restrict_client_access_ip_relation` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `ip` varchar(255) NULL COMMENT "IP地址", + `is_remote_ip` bit NULL, + `restrict_ip_record_id` int NULL COMMENT "限制IP详情", + `restrict_client_access_record_id` int NULL COMMENT "IP访问地址详情", + `session_id` varchar(255) NULL COMMENT "回话ID", + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "restrict_client_access_record" table +CREATE TABLE `restrict_client_access_record` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `visitor_id` varchar(255) NULL COMMENT "访问ID", + `device_model` varchar(255) NULL COMMENT "设备型号", + `user_agent` varchar(255) NULL COMMENT "用户浏览器代理", + `is_use_proxy` bit NULL COMMENT "是否使用代理", + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci AUTO_INCREMENT 9; +-- Create "restrict_ip_order_access" table +CREATE TABLE `restrict_ip_order_access` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `restrict_ip_id` int NULL COMMENT "关联的IP地址", + `order_no` varchar(255) NULL COMMENT "订单号", + `card_pass` varchar(255) NULL COMMENT "卡密", + `ip` varchar(255) NULL COMMENT "ip地址", + `status` int NULL COMMENT "状态", + `restrict_strategy` json NULL COMMENT "限制策略", + `device_id` varchar(255) NULL COMMENT "设备ID", + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "restrict_ip_record" table +CREATE TABLE `restrict_ip_record` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `ip` varchar(255) NULL COMMENT "ip地址", + `ip_province` varchar(255) NULL COMMENT "ip地址所在省份或地区", + `is_public` bit NULL COMMENT "是否是公共地址", + `raw_data` json NULL, + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "road_info" table +CREATE TABLE `road_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `status` varchar(20) NOT NULL DEFAULT "active通道状态", + `road_name` varchar(100) NOT NULL COMMENT "通道名称", + `road_uid` varchar(100) NOT NULL COMMENT "通道唯一id", + `remark` varchar(100) NULL COMMENT "备注", + `product_name` varchar(100) NOT NULL COMMENT "上游产品名称", + `product_uid` varchar(100) NOT NULL COMMENT "上游产品编号", + `pay_type` varchar(50) NOT NULL COMMENT "支付类型", + `basic_fee` double NOT NULL COMMENT "基本汇率/成本汇率", + `settle_fee` double NOT NULL COMMENT "代付手续费", + `total_limit` double NOT NULL COMMENT "通道总额度", + `today_limit` double NOT NULL COMMENT "每日最多额度", + `single_min_limit` double NOT NULL COMMENT "单笔最小金额", + `single_max_limit` double NOT NULL COMMENT "单笔最大金额", + `star_hour` int NOT NULL COMMENT "通道开始时间", + `end_hour` int NOT NULL COMMENT "通道结束时间", + `params` text NULL COMMENT "参数json格式", + `today_income` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "当天的收入", + `total_income` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "通道总收入", + `today_profit` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "当天的收益", + `total_profit` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "通道总收益", + `balance` decimal(20,3) NOT NULL DEFAULT 0.000 COMMENT "通道的余额", + `request_all` int NULL DEFAULT 0 COMMENT "请求总次数", + `request_success` int NULL DEFAULT 0 COMMENT "请求成功次数", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL ON UPDATE CURRENT_TIMESTAMP COMMENT "创建时间", + `today_request_all` int NULL, + `today_request_success` int NULL, + `product_code` varchar(255) NULL COMMENT "产品编码", + `payment_html` varchar(255) NULL COMMENT "支付页面模板,需要与前段对齐)", + `transaction_type` varchar(255) NULL, + `is_allow_different_resend` int NULL DEFAULT 0, + `is_repeat_submit` tinyint NULL DEFAULT 1 COMMENT "是否允许重复提交", + PRIMARY KEY (`id`), + INDEX `idx_product` (`product_uid`, `status`), + INDEX `idx_product_code` (`product_code`, `status`), + INDEX `idx_status_type` (`status`, `pay_type`), + INDEX `idx_time_limit` (`star_hour`, `end_hour`), + UNIQUE INDEX `road_name` (`road_name`), + UNIQUE INDEX `road_uid` (`road_uid`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "通道数据表" AUTO_INCREMENT 43; +-- Create "road_pool_info" table +CREATE TABLE `road_pool_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `status` varchar(20) NOT NULL DEFAULT "active" COMMENT "通道池状态", + `road_pool_name` varchar(100) NOT NULL COMMENT "通道池名称", + `road_pool_code` varchar(100) NOT NULL COMMENT "通道池编号", + `road_uid_pool` text NULL COMMENT "通道池里面的通道uid", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `create_time` timestamp NULL COMMENT "创建时间", + PRIMARY KEY (`id`), + UNIQUE INDEX `road_pool_code` (`road_pool_code`), + UNIQUE INDEX `road_pool_name` (`road_pool_name`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "通道池" AUTO_INCREMENT 2; +-- Create "role_info" table +CREATE TABLE `role_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `role_name` varchar(100) NOT NULL COMMENT "角色名称", + `role_uid` varchar(200) NOT NULL COMMENT "角色唯一标识号", + `show_first_menu` text NOT NULL COMMENT "可以展示的一级菜单名", + `show_first_uid` text NOT NULL COMMENT "可以展示的一级菜单uid", + `show_second_menu` text NOT NULL COMMENT "可以展示的二级菜单名", + `show_second_uid` text NOT NULL COMMENT "可以展示的二级菜单uid", + `show_power` text NOT NULL COMMENT "可以展示的权限项名称", + `show_power_uid` text NOT NULL COMMENT "可以展示的权限项uid", + `remark` text NOT NULL COMMENT "角色描述", + `creater` varchar(20) NOT NULL COMMENT "创建者的id", + `status` varchar(10) NOT NULL DEFAULT "active" COMMENT "菜单的状态情况,默认是active", + `create_time` timestamp NULL COMMENT "创建时间", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "最近更新时间", + PRIMARY KEY (`id`), + UNIQUE INDEX `u_power_name` (`role_name`), + UNIQUE INDEX `u_role_uid` (`role_uid`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "角色表"; +-- Create "schema_migrations" table +CREATE TABLE `schema_migrations` ( + `version` bigint NOT NULL, + `dirty` bool NOT NULL, + PRIMARY KEY (`version`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "second_menu_info" table +CREATE TABLE `second_menu_info` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键,自增", + `first_menu_order` int unsigned NOT NULL DEFAULT 0 COMMENT "一级菜单对应的顺序", + `menu_order` int unsigned NOT NULL DEFAULT 0 COMMENT "二级菜单的排名顺序", + `first_menu_uid` varchar(40) NOT NULL COMMENT "二级菜单的唯一标识", + `first_menu` varchar(50) NOT NULL COMMENT "一级菜单名称,字符不能超过50", + `second_menu_uid` varchar(40) NOT NULL COMMENT "二级菜单唯一标识", + `second_menu` varchar(225) NOT NULL COMMENT "二级菜单名称", + `second_router` varchar(200) NOT NULL COMMENT "二级菜单路由", + `creater` varchar(20) NOT NULL COMMENT "创建者的id", + `status` varchar(10) NOT NULL DEFAULT "active" COMMENT "菜单的状态情况,默认是active", + `create_time` timestamp NULL COMMENT "创建时间", + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "最近更新时间", + PRIMARY KEY (`id`), + UNIQUE INDEX `u_second_menu` (`second_menu`), + UNIQUE INDEX `u_second_menu_uid` (`second_menu_uid`) +) CHARSET utf8mb3 COLLATE utf8mb3_general_ci COMMENT "存放左侧栏的二级菜单"; +-- Create "sys_auth_rule" table +CREATE TABLE `sys_auth_rule` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `pid` int unsigned NOT NULL DEFAULT 0 COMMENT "父ID", + `name` varchar(100) NOT NULL DEFAULT "" COMMENT "规则名称", + `title` varchar(50) NOT NULL DEFAULT "" COMMENT "规则名称", + `icon` varchar(300) NOT NULL DEFAULT "" COMMENT "图标", + `condition` varchar(255) NOT NULL DEFAULT "" COMMENT "条件", + `remark` varchar(255) NOT NULL DEFAULT "" COMMENT "备注", + `menu_type` tinyint unsigned NOT NULL DEFAULT 0 COMMENT "类型 0目录 1菜单 2按钮", + `weigh` int NOT NULL DEFAULT 0 COMMENT "权重", + `is_hide` tinyint unsigned NOT NULL DEFAULT 0 COMMENT "显示状态", + `path` varchar(100) NOT NULL DEFAULT "" COMMENT "路由地址", + `component` varchar(100) NOT NULL DEFAULT "" COMMENT "组件路径", + `is_link` tinyint unsigned NOT NULL DEFAULT 0 COMMENT "是否外链 1是 0否", + `module_type` varchar(30) NOT NULL DEFAULT "" COMMENT "所属模块", + `model_id` int unsigned NOT NULL DEFAULT 0 COMMENT "模型ID", + `is_iframe` tinyint unsigned NOT NULL DEFAULT 0 COMMENT "是否内嵌iframe", + `is_cached` tinyint unsigned NOT NULL DEFAULT 0 COMMENT "是否缓存", + `redirect` varchar(255) NOT NULL DEFAULT "" COMMENT "路由重定向地址", + `is_affix` tinyint unsigned NOT NULL DEFAULT 0 COMMENT "是否固定", + `link_url` varchar(500) NOT NULL DEFAULT "" COMMENT "链接地址", + `created_at` datetime NULL COMMENT "创建日期", + `updated_at` datetime NULL COMMENT "修改日期", + PRIMARY KEY (`id`), + UNIQUE INDEX `name` (`name`), + INDEX `pid` (`pid`), + INDEX `weigh` (`weigh`) +) CHARSET utf8mb4 COLLATE utf8mb4_general_ci COMMENT "菜单节点表"; +-- Create "sys_casbin_rule" table +CREATE TABLE `sys_casbin_rule` ( + `ptype` varchar(10) NULL, + `v0` varchar(256) NULL, + `v1` varchar(256) NULL, + `v2` varchar(256) NULL, + `v3` varchar(256) NULL, + `v4` varchar(256) NULL, + `v5` varchar(256) NULL +) CHARSET utf8mb4 COLLATE utf8mb4_general_ci; +-- Create "sys_config_dict" table +CREATE TABLE `sys_config_dict` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NULL, + `key` varchar(255) NOT NULL, + `value` varchar(255) NULL, + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`), + UNIQUE INDEX `key` (`key`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "sys_role" table +CREATE TABLE `sys_role` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `status` tinyint unsigned NOT NULL DEFAULT 0 COMMENT "状态;0:禁用;1:正常", + `list_order` int unsigned NOT NULL DEFAULT 0 COMMENT "排序", + `name` varchar(20) NOT NULL DEFAULT "" COMMENT "角色名称" COLLATE utf8mb4_unicode_ci, + `remark` varchar(255) NOT NULL DEFAULT "" COMMENT "备注", + `data_scope` tinyint unsigned NOT NULL DEFAULT 3 COMMENT "数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)", + `created_at` datetime NULL COMMENT "创建时间", + `updated_at` datetime NULL COMMENT "更新时间", + PRIMARY KEY (`id`), + INDEX `status` (`status`) +) CHARSET utf8mb4 COLLATE utf8mb4_general_ci COMMENT "角色表"; +-- Create "sys_user" table +CREATE TABLE `sys_user` ( + `id` varchar(255) NOT NULL COMMENT "ID", + `username` varchar(255) NOT NULL COMMENT "账号", + `nick_name` varchar(255) NULL COMMENT "昵称", + `user_password` varchar(255) NOT NULL COMMENT "密码", + `is_admin` int NULL COMMENT "是否是管理员", + `user_salt` varchar(250) NULL, + `user_status` int NULL COMMENT "用户状态", + `otp_key` varchar(255) NULL, + `otp_secret` varchar(255) NULL, + `created_at` datetime NOT NULL, + `updated_at` datetime NULL, + `deleted_at` datetime NULL, + PRIMARY KEY (`id`), + INDEX `idx_user_id` (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "sys_user_config_channel" table +CREATE TABLE `sys_user_config_channel` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `sys_user_id` varchar(255) NOT NULL, + `name` varchar(255) NOT NULL COMMENT "充值通道", + `num` int NULL COMMENT "充值轮询ck个数", + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`), + UNIQUE INDEX `user_info` (`sys_user_id`, `name`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "sys_user_deductions" table +CREATE TABLE `sys_user_deductions` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `user_id` varchar(255) NULL COMMENT "用户ID", + `order_no` varchar(255) NULL COMMENT "订单编号", + `order_category` varchar(255) NULL COMMENT "订单分类", + `operation_status` varchar(255) NULL COMMENT "操作状态", + `user_payment_id` int NULL COMMENT "用户钱包ID", + `user_payment_record_id` int NULL COMMENT "用户钱包流水记录ID", + `balance` float NULL COMMENT "价格", + `note` text NULL, + `created_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "sys_user_login_log" table +CREATE TABLE `sys_user_login_log` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `user_id` varchar(255) NULL, + `login_name` varchar(255) NULL COMMENT "登录名\n", + `ip_addr` varchar(255) NULL COMMENT "登录IP", + `login_location` varchar(255) NULL COMMENT "登录地点", + `user_agent` varchar(255) NULL, + `browser` varchar(255) NULL, + `os` varchar(255) NULL, + `created_at` datetime NULL COMMENT "登录时间", + `status` int NULL COMMENT "登录状态 1登录成功2登录失败", + `message` varchar(255) NULL, + `login_time` datetime(3) NULL COMMENT "登录时长", + `module` varchar(250) NULL, + PRIMARY KEY (`id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "sys_user_payment" table +CREATE TABLE `sys_user_payment` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `user_id` varchar(255) NOT NULL, + `balance` decimal(20,2) NOT NULL DEFAULT 0.00 COMMENT "余额", + `total_deposits` decimal(20,2) NOT NULL DEFAULT 0.00 COMMENT "总充值金额", + `total_consumption` decimal(20,2) NOT NULL DEFAULT 0.00 COMMENT "总消耗金额", + `last_deposit_time` datetime(3) NULL, + `last_consumption_time` datetime(3) NULL COMMENT "上次消耗时间", + `total_deposit_count` int NOT NULL DEFAULT 0 COMMENT "总充值次数", + `total_consumption_count` int NOT NULL DEFAULT 0 COMMENT "总消耗次数", + `status` enum('Active','Suspended','Closed') NULL COMMENT "0.禁用 1.正常 3.关闭", + `notes` text NULL COMMENT "备注", + `created_at` datetime(3) NOT NULL, + `updated_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + PRIMARY KEY (`id`, `user_id`), + UNIQUE INDEX `id` (`id`), + UNIQUE INDEX `user_id` (`user_id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "sys_user_payment_records" table +CREATE TABLE `sys_user_payment_records` ( + `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT "主键", + `transaction_id` varchar(255) NOT NULL COMMENT "交易唯一ID", + `payment_id` int NOT NULL COMMENT "钱包ID", + `deduction_id` varchar(255) NULL COMMENT "预扣款ID", + `user_id` varchar(255) NOT NULL, + `amount` decimal(10,2) NOT NULL COMMENT "操作金额", + `transaction_type` enum('deposit','consumption','Manual Adjustment','deduction_return') NOT NULL COMMENT "交易类型 1deposit 2.withdrawal", + `order_no` varchar(255) NULL COMMENT "订单号", + `status` enum('success','fail') NOT NULL COMMENT "交易状态:0.失败 1.成功", + `category` varchar(255) NULL, + `notes` text NULL COMMENT "备注", + `created_at` datetime(3) NULL, + `deleted_at` datetime(3) NULL, + `updated_at` datetime(3) NULL, + PRIMARY KEY (`id`, `transaction_id`), + INDEX `payment_id` (`payment_id`), + UNIQUE INDEX `trans_id` (`id`, `transaction_id`), + INDEX `user_id` (`user_id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "task_order_fake" table +CREATE TABLE `task_order_fake` ( + `id` int NOT NULL AUTO_INCREMENT, + `road_uid` varchar(60) NULL, + `bank_order_id` varchar(60) NULL, + `order_amount` float NULL DEFAULT 0 COMMENT "订单金额", + `create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + PRIMARY KEY (`id`), + INDEX `idx_create_time` (`create_time`), + INDEX `idx_create_time_new` (`create_time`), + INDEX `idx_road_bank` (`road_uid`, `bank_order_id`) +) CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci; +-- Create "camel_oil_account_history" table +CREATE TABLE `camel_oil_account_history` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `account_id` bigint NOT NULL COMMENT "账号ID", + `change_type` varchar(32) NOT NULL COMMENT "变更类型:create/login/offline/login_fail/pause/resume/invalidate/order_bind/order_complete/update/delete", + `status_before` tinyint NULL COMMENT "变更前状态", + `status_after` tinyint NULL COMMENT "变更后状态", + `failure_count` int NULL COMMENT "失败次数", + `remark` text NULL COMMENT "备注", + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间(软删除)", + PRIMARY KEY (`id`), + INDEX `idx_account_id` (`account_id`), + INDEX `idx_change_type` (`change_type`), + INDEX `idx_created_at` (`created_at`), + INDEX `idx_deleted_at` (`deleted_at`), + CONSTRAINT `fk_camel_oil_account_history_account_id` FOREIGN KEY (`account_id`) REFERENCES `camel_oil_account` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE +) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT "骆驼加油账号历史表"; +-- Create "camel_oil_order" table +CREATE TABLE `camel_oil_order` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `order_no` varchar(64) NOT NULL COMMENT "系统订单号", + `merchant_order_id` varchar(128) NULL COMMENT "商户订单号", + `account_id` bigint NOT NULL COMMENT "使用的账号ID", + `account_name` varchar(128) NULL COMMENT "账号名称", + `platform_order_no` varchar(128) NULL COMMENT "骆驼平台订单号", + `amount` decimal(10,2) NOT NULL COMMENT "订单金额", + `alipay_url` text NULL COMMENT "支付宝支付链接", + `card_password` varchar(256) NULL COMMENT "卡密", + `card_number` varchar(256) NULL COMMENT "卡号", + `status` tinyint NOT NULL DEFAULT 1 COMMENT "状态:1待支付 2已支付 3支付超时 4下单失败", + `pay_status` tinyint NOT NULL DEFAULT 0 COMMENT "支付状态:0未支付 1已支付 2超时", + `notify_status` tinyint NOT NULL DEFAULT 0 COMMENT "回调状态:0未回调 1已回调 2回调失败", + `notify_count` int NOT NULL DEFAULT 0 COMMENT "回调次数", + `last_check_at` datetime NULL COMMENT "最后检测支付时间", + `paid_at` datetime NULL COMMENT "支付完成时间", + `attach` text NULL COMMENT "附加信息", + `failure_reason` text NULL COMMENT "失败原因", + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间(软删除)", + PRIMARY KEY (`id`), + INDEX `idx_account_id` (`account_id`), + INDEX `idx_account_status` (`account_id`, `status`), + INDEX `idx_card_number` (`card_number`), + INDEX `idx_card_password` (`card_password`), + INDEX `idx_created_at` (`created_at`), + INDEX `idx_deleted_at` (`deleted_at`), + INDEX `idx_merchant_order_id` (`merchant_order_id`), + INDEX `idx_notify_status` (`notify_status`), + INDEX `idx_pay_status` (`pay_status`), + INDEX `idx_platform_order_no` (`platform_order_no`), + INDEX `idx_status` (`status`), + UNIQUE INDEX `uk_order_no` (`order_no`), + CONSTRAINT `fk_camel_oil_order_account_id` FOREIGN KEY (`account_id`) REFERENCES `camel_oil_account` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT +) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT "骆驼加油订单表"; +-- Create "camel_oil_token" table +CREATE TABLE `camel_oil_token` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `user_id` varchar(64) NOT NULL DEFAULT "" COMMENT "用户ID,空字符串表示管理员创建", + `name` varchar(128) NOT NULL COMMENT "名称", + `phone` varchar(20) NULL COMMENT "绑定的手机号", + `status` tinyint NULL DEFAULT 0 COMMENT "状态:0待验证码 1可用 2已禁用 3已过期 4登录失败", + `login_token` text NULL COMMENT "登录后获取的token", + `login_token_expires_at` datetime NULL COMMENT "登录token过期时间", + `last_login_at` datetime NULL COMMENT "最后登录时间", + `bind_count` int NOT NULL DEFAULT 0 COMMENT "已绑定卡密数量", + `total_bind_amount` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT "累计绑定金额", + `last_bind_at` datetime NULL COMMENT "最后绑定时间", + `last_used_at` datetime NULL COMMENT "最后使用时间", + `remark` text NULL COMMENT "备注", + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间(软删除)", + `recharge_limit_amount` decimal(15,2) NULL DEFAULT 0.00 COMMENT "充值金额限制", + `recharge_limit_count` int NULL DEFAULT 0 COMMENT "充值次数限制", + `total_recharge_amount` decimal(15,2) NULL DEFAULT 0.00 COMMENT "总充值金额", + PRIMARY KEY (`id`), + INDEX `idx_bind_count` (`bind_count`), + INDEX `idx_deleted_at` (`deleted_at`), + INDEX `idx_last_bind_at` (`last_bind_at`), + INDEX `idx_phone` (`phone`), + INDEX `idx_status` (`status`), + INDEX `idx_token_name` (`name`), + INDEX `idx_total_bind_amount` (`total_bind_amount`), + INDEX `idx_user_id` (`user_id`) +) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT "骆驼加油Token管理表"; +-- Create "camel_oil_card_binding" table +CREATE TABLE `camel_oil_card_binding` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `token_id` bigint NOT NULL COMMENT "Token ID", + `order_id` bigint NOT NULL COMMENT "订单ID", + `card_number` varchar(256) NULL COMMENT "卡号", + `card_password` varchar(256) NULL COMMENT "卡密", + `amount` decimal(10,2) NOT NULL COMMENT "绑定金额", + `remark` text NULL COMMENT "备注", + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间(软删除)", + PRIMARY KEY (`id`), + INDEX `idx_amount` (`amount`), + INDEX `idx_created_at` (`created_at`), + INDEX `idx_deleted_at` (`deleted_at`), + INDEX `idx_order_id` (`order_id`), + INDEX `idx_token_id` (`token_id`), + CONSTRAINT `fk_camel_oil_card_binding_order_id` FOREIGN KEY (`order_id`) REFERENCES `camel_oil_order` (`id`) ON UPDATE RESTRICT ON DELETE CASCADE, + CONSTRAINT `fk_camel_oil_card_binding_token_id` FOREIGN KEY (`token_id`) REFERENCES `camel_oil_token` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT +) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT "骆驼加油卡密绑定记录表" AUTO_INCREMENT 2; +-- Create "camel_oil_order_history" table +CREATE TABLE `camel_oil_order_history` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT "主键ID", + `order_no` varchar(64) NOT NULL COMMENT "订单号", + `change_type` varchar(32) NOT NULL COMMENT "变更类型:create/submit/get_pay_url/check_pay/paid/timeout/fail/callback_success/callback_fail", + `account_id` bigint NULL COMMENT "关联账号ID", + `account_name` varchar(128) NULL COMMENT "账号名称", + `raw_data` text NULL COMMENT "原始响应数据", + `remark` text NULL COMMENT "备注", + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间", + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "更新时间", + `deleted_at` datetime NULL COMMENT "删除时间(软删除)", + PRIMARY KEY (`id`), + INDEX `fk_camel_oil_order_history_account_id` (`account_id`), + INDEX `idx_change_type` (`change_type`), + INDEX `idx_created_at` (`created_at`), + INDEX `idx_deleted_at` (`deleted_at`), + INDEX `idx_order_no` (`order_no`), + CONSTRAINT `fk_camel_oil_order_history_account_id` FOREIGN KEY (`account_id`) REFERENCES `camel_oil_account` (`id`) ON UPDATE RESTRICT ON DELETE SET NULL +) CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT "骆驼加油订单历史表"; diff --git a/test-local.sh b/test-local.sh new file mode 100755 index 0000000..c28e80d --- /dev/null +++ b/test-local.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +set -e + +# 加载配置 +if [ -f .env.local ]; then + export $(cat .env.local | grep -v '^#' | xargs) +fi + +echo "=========================================" +echo "本地测试数据库迁移" +echo "使用容器: $MYSQL_CONTAINER" +echo "=========================================" + +# 1. 创建 atlas_dev 数据库 +echo "" +echo "步骤 1: 创建 atlas_dev 数据库" +docker exec $MYSQL_CONTAINER mysql -uroot -pmysql123 -e "CREATE DATABASE IF NOT EXISTS atlas_dev;" + +# 2. 生成 schema.sql +echo "" +echo "步骤 2: 生成 schema.sql" +./generate-migration.sh + +# 3. 创建测试数据库 +echo "" +echo "步骤 3: 创建测试数据库" +docker exec $MYSQL_CONTAINER mysql -uroot -pmysql123 -e "DROP DATABASE IF EXISTS kami_test; CREATE DATABASE kami_test;" + +# 4. 测试迁移 +echo "" +echo "步骤 4: 测试迁移到 kami_test" +export DB_URL="mysql://root:mysql123@localhost:3306/kami_test" +atlas schema apply --env prod --auto-approve + +# 5. 验证结果 +echo "" +echo "步骤 5: 验证迁移结果" +docker exec $MYSQL_CONTAINER mysql -uroot -pmysql123 kami_test -e "SHOW TABLES;" + +echo "" +echo "=========================================" +echo "测试完成!" +echo "========================================="