From 55b5649ef622af2a336bd9681bb1e3b2fec34a3b Mon Sep 17 00:00:00 2001 From: jihaipeng <3204568531@qq.com> Date: Thu, 10 Jul 2025 17:14:50 +0800 Subject: [PATCH] to --- lottery-system/.gitignore | 38 ++++++++ lottery-system/.idea/.gitignore | 8 ++ lottery-system/.idea/encodings.xml | 10 ++ lottery-system/.idea/misc.xml | 14 +++ lottery-system/.idea/vcs.xml | 6 ++ lottery-system/lottery-common/pom.xml | 20 ++++ .../src/main/java/com/lottery/utils/Result.java | 80 ++++++++++++++++ lottery-system/lottery-pojo/pom.xml | 20 ++++ .../src/main/java/com/lottery/dto/Prize.java | 46 ++------- lottery-system/lottery-service/pom.xml | 29 ++++++ .../main/java/com/lottery/LotteryApplication.java | 14 +++ .../java/com/lottery/controller/admin/Test.java | 44 +++++++++ .../main/java/com/lottery/mapper/IPrizeMapper.java | 22 +++++ .../java/com/lottery/service/IPrizeService.java | 17 ++++ .../com/lottery/service/Impl/PrizeServiceImpl.java | 39 ++++++++ .../src/main/resources/application.yml | 41 ++++++++ .../src/main/resources/mapper/prizeMapper.xml | 5 + .../lottery-service/src/test/java/Tset.java | 14 +++ lottery-system/pom.xml | 84 ++++++++++++++++ lottery_system.sql | 106 +++++++++++++++++++++ 20 files changed, 619 insertions(+), 38 deletions(-) create mode 100644 lottery-system/.gitignore create mode 100644 lottery-system/.idea/.gitignore create mode 100644 lottery-system/.idea/encodings.xml create mode 100644 lottery-system/.idea/misc.xml create mode 100644 lottery-system/.idea/vcs.xml create mode 100644 lottery-system/lottery-common/pom.xml create mode 100644 lottery-system/lottery-common/src/main/java/com/lottery/utils/Result.java create mode 100644 lottery-system/lottery-pojo/pom.xml create mode 100644 lottery-system/lottery-service/pom.xml create mode 100644 lottery-system/lottery-service/src/main/java/com/lottery/LotteryApplication.java create mode 100644 lottery-system/lottery-service/src/main/java/com/lottery/controller/admin/Test.java create mode 100644 lottery-system/lottery-service/src/main/java/com/lottery/mapper/IPrizeMapper.java create mode 100644 lottery-system/lottery-service/src/main/java/com/lottery/service/IPrizeService.java create mode 100644 lottery-system/lottery-service/src/main/java/com/lottery/service/Impl/PrizeServiceImpl.java create mode 100644 lottery-system/lottery-service/src/main/resources/application.yml create mode 100644 lottery-system/lottery-service/src/main/resources/mapper/prizeMapper.xml create mode 100644 lottery-system/lottery-service/src/test/java/Tset.java create mode 100644 lottery-system/pom.xml create mode 100644 lottery_system.sql diff --git a/lottery-system/.gitignore b/lottery-system/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/lottery-system/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/lottery-system/.idea/.gitignore b/lottery-system/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/lottery-system/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/lottery-system/.idea/encodings.xml b/lottery-system/.idea/encodings.xml new file mode 100644 index 0000000..33ad0ba --- /dev/null +++ b/lottery-system/.idea/encodings.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/lottery-system/.idea/misc.xml b/lottery-system/.idea/misc.xml new file mode 100644 index 0000000..accd629 --- /dev/null +++ b/lottery-system/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/lottery-system/.idea/vcs.xml b/lottery-system/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/lottery-system/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/lottery-system/lottery-common/pom.xml b/lottery-system/lottery-common/pom.xml new file mode 100644 index 0000000..b70b74a --- /dev/null +++ b/lottery-system/lottery-common/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + + org.example + lottery-system + 1.0-SNAPSHOT + + + lottery-common + + + 11 + 11 + UTF-8 + + + \ No newline at end of file diff --git a/lottery-system/lottery-common/src/main/java/com/lottery/utils/Result.java b/lottery-system/lottery-common/src/main/java/com/lottery/utils/Result.java new file mode 100644 index 0000000..c80ebca --- /dev/null +++ b/lottery-system/lottery-common/src/main/java/com/lottery/utils/Result.java @@ -0,0 +1,80 @@ +package com.lottery.utils; + +/** + * @program: lottery-system + * @ClassName Result + * @description: + * @author:jihaipeng + * @create: 2025−07-10 15:59 + * @Version 1.0 + **/ + +public class Result { + // 状态码(如 200 表示成功,500 表示失败) + private int code; + + // 提示信息(如 "操作成功" 或 "操作失败") + private String message; + + // 返回的数据(泛型,可以是任意类型) + private T data; + + // 成功结果(无数据) + public static Result success() { + Result result = new Result<>(); + result.setCode(200); + result.setMessage("操作成功"); + return result; + } + + // 成功结果(带数据) + public static Result success(T data) { + Result result = new Result<>(); + result.setCode(200); + result.setMessage("操作成功"); + result.setData(data); + return result; + } + + // 失败结果 + public static Result failure(int code, String message) { + Result result = new Result<>(); + result.setCode(code); + result.setMessage(message); + return result; + } + + // Getter 和 Setter 方法 + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + @Override + public String toString() { + return "Result{" + + "code=" + code + + ", message='" + message + '\'' + + ", data=" + data + + '}'; + } +} \ No newline at end of file diff --git a/lottery-system/lottery-pojo/pom.xml b/lottery-system/lottery-pojo/pom.xml new file mode 100644 index 0000000..34b0d91 --- /dev/null +++ b/lottery-system/lottery-pojo/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + + org.example + lottery-system + 1.0-SNAPSHOT + + + lottery-pojo + + + 11 + 11 + UTF-8 + + + \ No newline at end of file diff --git a/lottery-system/lottery-pojo/src/main/java/com/lottery/dto/Prize.java b/lottery-system/lottery-pojo/src/main/java/com/lottery/dto/Prize.java index 5e8adda..24cf833 100644 --- a/lottery-system/lottery-pojo/src/main/java/com/lottery/dto/Prize.java +++ b/lottery-system/lottery-pojo/src/main/java/com/lottery/dto/Prize.java @@ -1,7 +1,5 @@ package com.lottery.dto; -import lombok.Data; - /** * @program: lottery-system * @ClassName Gift @@ -10,9 +8,15 @@ import lombok.Data; * @create: 2025−07-10 15:20 * @Version 1.0 **/ +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + import java.math.BigDecimal; import java.util.Date; - +@Data +@AllArgsConstructor +@NoArgsConstructor public class Prize { // 主键ID private Long id; @@ -43,38 +47,4 @@ public class Prize { // 更新时间 private Date updateTime; - - // 无参构造函数 - public Prize() { - } - - // 全参构造函数(可选) - public Prize(Long id, String name, String description, String imageUrl, Integer stock, - BigDecimal probability, Integer prizeType, Integer status, - Date createTime, Date updateTime) { - this.id = id; - this.name = name; - this.description = description; - this.imageUrl = imageUrl; - this.stock = stock; - this.probability = probability; - this.prizeType = prizeType; - this.status = status; - this.createTime = createTime; - this.updateTime = updateTime; - } - - // Getter 和 Setter 方法 - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getName() { - return name; - } - - public \ No newline at end of file +} \ No newline at end of file diff --git a/lottery-system/lottery-service/pom.xml b/lottery-system/lottery-service/pom.xml new file mode 100644 index 0000000..d5e7141 --- /dev/null +++ b/lottery-system/lottery-service/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + org.example + lottery-system + 1.0-SNAPSHOT + + + lottery-service + + + 11 + 11 + UTF-8 + + + + org.example + lottery-pojo + 1.0-SNAPSHOT + compile + + + + + \ No newline at end of file diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/LotteryApplication.java b/lottery-system/lottery-service/src/main/java/com/lottery/LotteryApplication.java new file mode 100644 index 0000000..cdcf3eb --- /dev/null +++ b/lottery-system/lottery-service/src/main/java/com/lottery/LotteryApplication.java @@ -0,0 +1,14 @@ +package com.lottery; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.WebApplicationType; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +import javax.swing.*; + +@SpringBootApplication +public class LotteryApplication { + public static void main(String[] args) { + SpringApplication.run(LotteryApplication.class, args); + } +} diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/controller/admin/Test.java b/lottery-system/lottery-service/src/main/java/com/lottery/controller/admin/Test.java new file mode 100644 index 0000000..6188ad4 --- /dev/null +++ b/lottery-system/lottery-service/src/main/java/com/lottery/controller/admin/Test.java @@ -0,0 +1,44 @@ +package com.lottery.controller.admin; + +import com.lottery.dto.Prize; +import com.lottery.service.IPrizeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @program: lottery-system + * @ClassName Test + * @description: + * @author:jihaipeng + * @create: 2025−07-10 15:19 + * @Version 1.0 + **/ + +@RestController +@RequestMapping("/test") +public class Test { + @Autowired + private IPrizeService prizeService; + + + /** +// * //添加礼物到数据到数据库 + * @param prize + * @return + */ + @PostMapping("/add") + public boolean addPrize(){ + Prize prize = new Prize(); + return prizeService.add(prize); + } + + +} diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/mapper/IPrizeMapper.java b/lottery-system/lottery-service/src/main/java/com/lottery/mapper/IPrizeMapper.java new file mode 100644 index 0000000..b947add --- /dev/null +++ b/lottery-system/lottery-service/src/main/java/com/lottery/mapper/IPrizeMapper.java @@ -0,0 +1,22 @@ +package com.lottery.mapper; + +import com.lottery.dto.Prize; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; + +/** + * @program: lottery-system + * @ClassName IPrizeMapper + * @description: + * @author:jihaipeng + * @create: 2025−07-10 15:32 + * @Version 1.0 + **/ + +@Mapper +public interface IPrizeMapper { + + @Insert("INSERT INTO prize (name, description, image_url, stock, probability, prize_type, status, create_time, update_time) " + + "VALUES (#{name}, #{description}, #{imageUrl}, #{stock}, #{probability}, #{prizeType}, #{status}, #{createTime}, #{updateTime})") + boolean add(Prize prize); +} diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/service/IPrizeService.java b/lottery-system/lottery-service/src/main/java/com/lottery/service/IPrizeService.java new file mode 100644 index 0000000..909a30c --- /dev/null +++ b/lottery-system/lottery-service/src/main/java/com/lottery/service/IPrizeService.java @@ -0,0 +1,17 @@ +package com.lottery.service; + +import com.lottery.dto.Prize; + +/** + * @program: lottery-system + * @ClassName IPrizeService + * @description: + * @author:jihaipeng + * @create: 2025−07-10 15:27 + * @Version 1.0 + **/ + +public interface IPrizeService { + boolean add(Prize prize); + +} diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/service/Impl/PrizeServiceImpl.java b/lottery-system/lottery-service/src/main/java/com/lottery/service/Impl/PrizeServiceImpl.java new file mode 100644 index 0000000..87dc597 --- /dev/null +++ b/lottery-system/lottery-service/src/main/java/com/lottery/service/Impl/PrizeServiceImpl.java @@ -0,0 +1,39 @@ +package com.lottery.service.Impl; + +import com.lottery.dto.Prize; +import com.lottery.mapper.IPrizeMapper; +import com.lottery.service.IPrizeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @program: lottery-system + * @ClassName PrizeServiceImpl + * @description: + * @author:jihaipeng + * @create: 2025−07-10 15:28 + * @Version 1.0 + **/ + +@Service +public class PrizeServiceImpl implements IPrizeService { + + @Autowired + private IPrizeMapper prizeMapper; + @Override + public boolean add(Prize prize) { + prize.setName("测试"); + prize.setDescription("测试"); + prize.setImageUrl("测试"); + prize.setStock(1); + prize.setProbability(new BigDecimal(0.1)); + prize.setPrizeType(1); + prize.setStatus(1); + + + return prizeMapper.add(prize); + } +} diff --git a/lottery-system/lottery-service/src/main/resources/application.yml b/lottery-system/lottery-service/src/main/resources/application.yml new file mode 100644 index 0000000..4ae1511 --- /dev/null +++ b/lottery-system/lottery-service/src/main/resources/application.yml @@ -0,0 +1,41 @@ +server: + port: 8080 # 服务端口 + +spring: + # ========== 数据源配置 (MySQL) ========== + datasource: + url: jdbc:mysql://localhost:3306/lottery_system?useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai + username: root + password: root + driver-class-name: com.mysql.cj.jdbc.Driver + hikari: + pool-name: LotteryHikariCP + maximum-pool-size: 10 # 连接池大小 + connection-timeout: 30000 + + + # ========== Redis 配置 ========== + redis: + host: 127.0.0.1 + port: 6379 + password: # 若无密码则留空 + database: 0 # 默认DB索引 + jedis: + pool: + max-active: 8 # 最大连接数 + max-wait: 5000ms # 最大等待时间 + max-idle: 4 # 最大空闲连接 + min-idle: 1 # 最小空闲连接 + timeout: 3000ms # 连接超时时间 + +# ========== MyBatis 配置(如果使用MyBatis代替JPA) ========== +mybatis: + mapper-locations: classpath:mapper/*.xml # XML映射文件路径 + type-aliases-package: com.lottery.entity # 实体类包路径 + configuration: + map-underscore-to-camel-case: true # 开启驼峰命名转换 + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印SQL日志 + +# ========== 自定义配置(示例) ========== +lottery: + max-draw-times: 3 # 用户每日最大抽奖次数 \ No newline at end of file diff --git a/lottery-system/lottery-service/src/main/resources/mapper/prizeMapper.xml b/lottery-system/lottery-service/src/main/resources/mapper/prizeMapper.xml new file mode 100644 index 0000000..bc24676 --- /dev/null +++ b/lottery-system/lottery-service/src/main/resources/mapper/prizeMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/lottery-system/lottery-service/src/test/java/Tset.java b/lottery-system/lottery-service/src/test/java/Tset.java new file mode 100644 index 0000000..5dbcfcd --- /dev/null +++ b/lottery-system/lottery-service/src/test/java/Tset.java @@ -0,0 +1,14 @@ +/** + * @program: lottery-system + * @ClassName Tset + * @description: + * @author:jihaipeng + * @create: 2025−07-10 15:16 + * @Version 1.0 + **/ + +public class Tset { + public static void main(String[] args) { + + } +} diff --git a/lottery-system/pom.xml b/lottery-system/pom.xml new file mode 100644 index 0000000..a22a12e --- /dev/null +++ b/lottery-system/pom.xml @@ -0,0 +1,84 @@ + + + + org.springframework.boot + spring-boot-starter-parent + 2.7.0 + + + pom + + lottery-service + lottery-pojo + lottery-common + + 4.0.0 + + org.example + lottery-system + 1.0-SNAPSHOT + + + 11 + 11 + UTF-8 + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 2.2.2 + + + + + mysql + mysql-connector-java + runtime + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + redis.clients + jedis + + + + + org.projectlombok + lombok + true + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + org.apache.commons + commons-lang3 + 3.12.0 + + + + diff --git a/lottery_system.sql b/lottery_system.sql new file mode 100644 index 0000000..8bfc508 --- /dev/null +++ b/lottery_system.sql @@ -0,0 +1,106 @@ +/* + Navicat Premium Dump SQL + + Source Server : localhost_3306 + Source Server Type : MySQL + Source Server Version : 80042 (8.0.42) + Source Host : localhost:3306 + Source Schema : lottery_system + + Target Server Type : MySQL + Target Server Version : 80042 (8.0.42) + File Encoding : 65001 + + Date: 10/07/2025 15:00:53 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for lottery_round +-- ---------------------------- +DROP TABLE IF EXISTS `lottery_round`; +CREATE TABLE `lottery_round` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '轮次ID', + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '轮次名称', + `start_time` datetime NOT NULL COMMENT '开始时间', + `end_time` datetime NOT NULL COMMENT '结束时间', + `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '轮次描述', + `status` tinyint NOT NULL DEFAULT 0 COMMENT '状态(0-未开始,1-进行中,2-已结束)', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_time`(`start_time` ASC, `end_time` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '抽奖轮次表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of lottery_round +-- ---------------------------- + +-- ---------------------------- +-- Table structure for prize +-- ---------------------------- +DROP TABLE IF EXISTS `prize`; +CREATE TABLE `prize` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '奖品ID', + `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '奖品名称', + `description` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '奖品描述', + `image_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '奖品图片URL', + `stock` int NOT NULL DEFAULT 0 COMMENT '库存数量', + `probability` decimal(5, 4) NOT NULL COMMENT '中奖概率(0.0000-1.0000)', + `prize_type` tinyint NOT NULL COMMENT '奖品类型(1-实物,2-虚拟,3-积分)', + `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态(0-下架,1-上架)', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '奖品表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of prize +-- ---------------------------- + +-- ---------------------------- +-- Table structure for user +-- ---------------------------- +DROP TABLE IF EXISTS `user`; +CREATE TABLE `user` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID', + `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户名', + `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号', + `email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '邮箱', + `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态(0-禁用,1-正常)', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `idx_username`(`username` ASC) USING BTREE, + INDEX `idx_phone`(`phone` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of user +-- ---------------------------- + +-- ---------------------------- +-- Table structure for winning_record +-- ---------------------------- +DROP TABLE IF EXISTS `winning_record`; +CREATE TABLE `winning_record` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID', + `user_id` bigint NOT NULL COMMENT '用户ID', + `prize_id` bigint NOT NULL COMMENT '奖品ID', + `round_id` bigint NOT NULL COMMENT '抽奖轮次ID', + `win_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '中奖时间', + `is_claimed` tinyint NOT NULL DEFAULT 0 COMMENT '是否已领取(0-未领取,1-已领取)', + `claim_time` datetime NULL DEFAULT NULL COMMENT '领取时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `idx_user_round`(`user_id` ASC, `round_id` ASC) USING BTREE, + INDEX `idx_round`(`round_id` ASC) USING BTREE, + INDEX `idx_user`(`user_id` ASC) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '中奖记录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of winning_record +-- ---------------------------- + +SET FOREIGN_KEY_CHECKS = 1;