-- ============================================================ -- 应用订阅表 -- 用于记录用户在应用市场购买/订阅的应用 -- ============================================================ CREATE TABLE IF NOT EXISTS `app_subscription` ( `id` BIGINT PRIMARY KEY AUTO_INCREMENT, `subscription_no` VARCHAR(64) NOT NULL COMMENT '订阅编号(业务唯一)', `user_id` BIGINT NOT NULL COMMENT '购买用户ID', `product_id` BIGINT NOT NULL COMMENT '应用产品ID', `tenant_id` BIGINT DEFAULT NULL COMMENT '租户ID', -- 订阅状态 `status` VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT 'pending-待支付, active-生效中, expired-已过期, cancelled-已取消', -- 价格信息 `price_type` VARCHAR(20) NOT NULL COMMENT 'free-免费, one_time-一次性, subscription-订阅', `original_price` DECIMAL(10,2) DEFAULT 0 COMMENT '原价(单位:元)', `pay_price` DECIMAL(10,2) DEFAULT 0 COMMENT '实付金额(单位:元)', `pay_type` TINYINT DEFAULT 0 COMMENT '支付方式: 0-余额, 1-微信, 2-支付宝, 12-免费', `pay_status` TINYINT DEFAULT 0 COMMENT '0-未支付, 1-已支付', `pay_time` DATETIME DEFAULT NULL COMMENT '支付时间', `transaction_id` VARCHAR(128) DEFAULT NULL COMMENT '第三方交易号', -- 订阅周期 `subscription_period` VARCHAR(10) DEFAULT NULL COMMENT 'month-按月, year-按年', `start_time` DATETIME DEFAULT NULL COMMENT '生效时间', `expire_time` DATETIME DEFAULT NULL COMMENT '到期时间(订阅型)', `auto_renew` TINYINT DEFAULT 0 COMMENT '是否自动续费 0-否 1-是', -- 应用实例信息(购买后分配) `instance_domain` VARCHAR(255) DEFAULT NULL COMMENT '分配的域名', `instance_admin_url` VARCHAR(500) DEFAULT NULL COMMENT '实例管理后台URL', `instance_config` TEXT DEFAULT NULL COMMENT '实例配置(JSON)', -- 关联支付订单号(复用统一支付) `order_no` VARCHAR(64) DEFAULT NULL COMMENT '关联的支付订单号', `order_id` BIGINT DEFAULT NULL COMMENT '关联的支付订单ID', -- 通用字段 `remark` VARCHAR(500) DEFAULT NULL, `deleted` TINYINT DEFAULT 0, `sort_number` INT DEFAULT 0, `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX `idx_user_id` (`user_id`), INDEX `idx_product_id` (`product_id`), INDEX `idx_subscription_no` (`subscription_no`), INDEX `idx_status` (`status`), INDEX `idx_tenant_id` (`tenant_id`), UNIQUE KEY `uk_user_product_active` (`user_id`, `product_id`, `deleted`) COMMENT '同一用户对同一应用只能有一个有效订阅' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='应用订阅表';