-- ===============================================
-- 兑换码系统建表 SQL
-- 执行此文件前请确保数据库连接正确
-- ===============================================

-- 1. 兑换码表
CREATE TABLE IF NOT EXISTS `muye_redeem_code` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
  `code` varchar(32) NOT NULL COMMENT '兑换码',
  `code_type` tinyint NOT NULL DEFAULT 1 COMMENT '码类型: 1-单次 2-多次',
  `points` int NOT NULL COMMENT '积分数',
  `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态: 0-未使用 1-已使用 2-已过期 3-已禁用',
  `batch_no` varchar(32) DEFAULT NULL COMMENT '批次号',
  `source` varchar(50) DEFAULT NULL COMMENT '来源',
  `max_use_count` int NOT NULL DEFAULT 1 COMMENT '最大使用次数',
  `used_count` int NOT NULL DEFAULT 0 COMMENT '已使用次数',
  `user_id` bigint DEFAULT NULL COMMENT '使用者用户ID',
  `used_time` datetime DEFAULT NULL COMMENT '使用时间',
  `expire_time` datetime DEFAULT NULL COMMENT '过期时间',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `operator_id` bigint DEFAULT NULL COMMENT '操作人ID',
  `operator_name` varchar(64) DEFAULT NULL COMMENT '操作人名称',
  `creator` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` bit NOT NULL DEFAULT b'0' COMMENT '是否删除',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_code` (`code`) USING BTREE,
  KEY `idx_tenant_id` (`tenant_id`) USING BTREE,
  KEY `idx_batch_no` (`batch_no`) USING BTREE,
  KEY `idx_status` (`status`) USING BTREE,
  KEY `idx_user_id` (`user_id`) USING BTREE,
  KEY `idx_expire_time` (`expire_time`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='兑换码表';

-- 2. 兑换记录表
CREATE TABLE IF NOT EXISTS `muye_redeem_record` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
  `user_id` bigint NOT NULL DEFAULT 0 COMMENT '用户编号',
  `mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手机号',
  `code_id` bigint NOT NULL DEFAULT 0 COMMENT '兑换码ID',
  `code` varchar(32) NOT NULL COMMENT '兑换码',
  `points` int NOT NULL DEFAULT 0 COMMENT '获得积分',
  `balance_after` int NOT NULL DEFAULT 0 COMMENT '兑换后积分余额',
  `source` varchar(50) NOT NULL DEFAULT '' COMMENT '来源',
  `source_id` varchar(64) NOT NULL DEFAULT '' COMMENT '来源关联ID',
  `remark` varchar(500) NOT NULL DEFAULT '' COMMENT '备注',
  `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_tenant_id` (`tenant_id`) USING BTREE,
  KEY `idx_user_id` (`user_id`) USING BTREE,
  KEY `idx_code_id` (`code_id`) USING BTREE,
  KEY `idx_create_time` (`create_time`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='兑换记录表';
