-- ============================================================ -- 天卡 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='天卡设备激活码';