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;