Files
as-daycard-openapi/db/mysql.sql
zhaogd 30198c7191 初始化天卡开放平台后端项目
包含完整功能模块:
- 设备激活(直销激活码模式 + 代销免激活码模式)
- 微信支付 + 天卡订单
- 天卡池管理 + 异步橘视厅SDK激活
- 第三方合作伙伴接口(代销模式)
  - 签名鉴权(appKey/appSecret + nonce防重放)
  - 天卡消耗(事务 + 幂等 + 并发控制)
  - 媒资接口(三级授权过滤)
  - 审计日志
- 定价策略(3层:门店 > 渠道 > 平台)
- 分账(微信分账 + 分润规则)
- Docker部署(含Redis容器)
2026-07-26 12:34:13 +08:00

147 lines
9.4 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================================
-- 天卡 OpenAPI 数据库 DDL 脚本
-- 数据库: MySQL 8.0+
-- 字符集: utf8mb4
-- 说明: 字段命名与 Entity/Service 代码严格对齐
-- 通用字段: created_at/updated_at/delete_flag
-- 状态值: 大写英文枚举字符串
-- ============================================================
-- -----------------------------------------------------------
-- 1. 合作伙伴表
-- Entity: OpenApiPartnerEntity
-- 对应 Service 列名: partner_id, app_key, name, status, delete_flag, created_at
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS `open_api_partner` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`partner_id` VARCHAR(64) NOT NULL COMMENT '合作伙伴ID',
`app_key` VARCHAR(64) NOT NULL COMMENT '应用Key',
`app_secret` VARCHAR(128) NOT NULL COMMENT '应用密钥',
`name` VARCHAR(100) DEFAULT NULL COMMENT '合作伙伴名称',
`status` VARCHAR(20) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE/DISABLED',
`api_permissions` TEXT DEFAULT NULL COMMENT 'API权限(JSON)',
`rate_limit` INT NOT NULL DEFAULT 100 COMMENT '速率限制(每秒请求数)',
`delete_flag` VARCHAR(10) NOT NULL DEFAULT 'UNDEL' COMMENT '删除标记:UNDEL/DEL',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_app_key` (`app_key`),
UNIQUE KEY `uk_partner_id` (`partner_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='开放API合作伙伴';
-- -----------------------------------------------------------
-- 2. 天卡池表
-- Entity: DayCardPoolEntity
-- 对应 Service 列名: card_code, partner_id, status, order_no, device_id, delete_flag, created_at, updated_at
-- 对应 Mapper XML: selectOneForUpdateSkipLocked (status, delete_flag, partner_id)
-- 状态枚举: UNUSED/RESERVED/USED
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS `day_card_pool` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`card_code` VARCHAR(128) NOT NULL COMMENT '卡密(导入的激活码)',
`third_party_ref` VARCHAR(128) DEFAULT NULL COMMENT '第三方引用标识',
`third_card_no` VARCHAR(128) DEFAULT NULL COMMENT '传第三方的唯一卡号',
`card_type` VARCHAR(20) NOT NULL DEFAULT 'DAY' COMMENT '卡类型:DAY',
`partner_id` BIGINT DEFAULT NULL COMMENT '所属合作伙伴ID',
`status` VARCHAR(20) NOT NULL DEFAULT 'UNUSED' COMMENT '状态:UNUSED/RESERVED/USED',
`order_no` VARCHAR(32) DEFAULT NULL COMMENT '关联订单号',
`device_id` BIGINT DEFAULT NULL COMMENT '关联设备ID',
`import_batch_id` BIGINT DEFAULT NULL COMMENT '导入批次ID',
`expire_at` DATETIME DEFAULT NULL COMMENT '卡过期时间',
`used_at` DATETIME DEFAULT NULL COMMENT '使用时间',
`delete_flag` VARCHAR(10) NOT NULL DEFAULT 'UNDEL' COMMENT '删除标记:UNDEL/DEL',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_card_code` (`card_code`),
KEY `idx_partner_status` (`partner_id`, `status`),
KEY `idx_order_no` (`order_no`),
KEY `idx_device_id` (`device_id`),
KEY `idx_import_batch_id` (`import_batch_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='天卡池';
-- -----------------------------------------------------------
-- 3. 天卡订单表
-- Entity: DayCardOrderEntity
-- 对应 Service 列名: order_no, partner_id, device_id, status, amount, pay_no, pay_amount, pay_time, expire_time, cancel_time, delete_flag, created_at, updated_at
-- 状态枚举: CREATED/PAYING/PAID/PAY_FAILED/CANCELLED
-- MediaServiceImpl SQL: device_id, status, expire_time
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS `day_card_order` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`order_no` VARCHAR(32) NOT NULL COMMENT '订单号',
`partner_id` BIGINT DEFAULT NULL COMMENT '合作伙伴ID',
`device_id` BIGINT DEFAULT NULL COMMENT '设备ID',
`card_no` VARCHAR(128) DEFAULT NULL COMMENT '卡号(支付后写入,关联day_card_pool.card_code)',
`status` VARCHAR(20) NOT NULL DEFAULT 'CREATED' COMMENT '订单状态:CREATED/PAYING/PAID/PAY_FAILED/CANCELLED',
`amount` DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '订单金额(元)',
`pay_no` VARCHAR(64) DEFAULT NULL COMMENT '支付流水号',
`pay_amount` DECIMAL(10,2) DEFAULT NULL COMMENT '实际支付金额(元)',
`pay_time` DATETIME DEFAULT NULL COMMENT '支付时间',
`expire_time` DATETIME DEFAULT NULL COMMENT '订单过期时间(15分钟)',
`cancel_time` DATETIME DEFAULT NULL COMMENT '取消时间',
`delete_flag` VARCHAR(10) NOT NULL DEFAULT 'UNDEL' COMMENT '删除标记:UNDEL/DEL',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_order_no` (`order_no`),
KEY `idx_device_status` (`device_id`, `status`),
KEY `idx_status_expire` (`status`, `expire_time`),
KEY `idx_partner_status` (`partner_id`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='天卡订单表';
-- -----------------------------------------------------------
-- 4. 天卡导入批次表
-- Entity: DayCardImportBatchEntity
-- 状态枚举: PROCESSING/SUCCEEDED/PARTIAL_FAILED/FAILED
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS `day_card_import_batch` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`batch_no` VARCHAR(64) NOT NULL COMMENT '批次号',
`partner_id` BIGINT DEFAULT NULL COMMENT '合作伙伴ID',
`status` VARCHAR(20) NOT NULL DEFAULT 'PROCESSING' COMMENT '状态:PROCESSING/SUCCEEDED/PARTIAL_FAILED/FAILED',
`total_count` INT NOT NULL DEFAULT 0 COMMENT '总数量',
`success_count` INT NOT NULL DEFAULT 0 COMMENT '成功数量',
`fail_count` INT NOT NULL DEFAULT 0 COMMENT '失败数量',
`result_report_url` VARCHAR(500) DEFAULT NULL COMMENT '结果报告URL',
`remark` VARCHAR(500) DEFAULT NULL COMMENT '备注',
`created_by` BIGINT DEFAULT NULL COMMENT '创建人',
`delete_flag` VARCHAR(10) NOT NULL DEFAULT 'UNDEL' COMMENT '删除标记:UNDEL/DEL',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_batch_no` (`batch_no`),
KEY `idx_partner_id` (`partner_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='天卡导入批次';
-- -----------------------------------------------------------
-- 5. 天卡设备激活码表
-- Entity: DayCardActivationCodeEntity
-- 用途: 管理后台按门店生成激活码,App 端 init 时输入激活码完成设备注册绑定
-- 状态枚举: ACTIVE/DISABLED
-- -----------------------------------------------------------
CREATE TABLE IF NOT EXISTS `day_card_activation_code` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`code` VARCHAR(32) NOT NULL COMMENT '激活码(唯一)',
`channel_org_id` BIGINT NOT NULL COMMENT '渠道组织ID',
`store_org_id` BIGINT NOT NULL COMMENT '门店组织ID',
`status` VARCHAR(16) NOT NULL DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE/DISABLED',
`max_device_count` INT NOT NULL DEFAULT 0 COMMENT '最大可激活设备数(0=不限)',
`activated_count` INT NOT NULL DEFAULT 0 COMMENT '已激活设备数',
`remark` VARCHAR(255) DEFAULT NULL COMMENT '备注',
`delete_flag` VARCHAR(10) NOT NULL DEFAULT 'UNDEL' COMMENT '删除标记:UNDEL/DEL',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`),
KEY `idx_store_org_id` (`store_org_id`),
KEY `idx_channel_org_id` (`channel_org_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='天卡设备激活码';