From df2fc44e9b8a12efda0d17dd68d6ed368daa18b7 Mon Sep 17 00:00:00 2001
From: jihaipeng <3204568531@qq.com>
Date: Tue, 15 Jul 2025 09:55:08 +0800
Subject: [PATCH 1/2] =?UTF-8?q?=E8=83=A1=E7=BD=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lottery-system/pom.xml | 4 ----
1 file changed, 4 deletions(-)
diff --git a/lottery-system/pom.xml b/lottery-system/pom.xml
index 8de5a64..242ced7 100644
--- a/lottery-system/pom.xml
+++ b/lottery-system/pom.xml
@@ -103,10 +103,6 @@
0.11.5
runtime
-
-
-
-
From 62e59ed612c54366aca1c6981fc956317411b3c6 Mon Sep 17 00:00:00 2001
From: jihaipeng <3204568531@qq.com>
Date: Tue, 15 Jul 2025 18:41:15 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E4=BC=97=E7=AD=B9=E6=8E=A5=E5=8F=A3?=
=?UTF-8?q?=E5=AE=9E=E7=8E=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/java/com/lottery/utils/HttpUtils.java | 56 +++++++
.../java/com/lottery/utils/ValidationUtils.java | 68 ++++++++
.../java/com/lottery/dto/FundingRecordDto.java | 21 +++
.../main/java/com/lottery/dto/FundingUserDto.java | 24 +++
.../main/java/com/lottery/entity/FundingData.java | 4 +-
.../main/java/com/lottery/entity/FundingUser.java | 4 +-
.../main/java/com/lottery/vo/FundingUserVo.java | 25 +++
.../admin/controller/FundingController.java | 48 ++++++
.../com/lottery/admin/mapper/IFundingMapper.java | 31 ++++
.../com/lottery/admin/service/IFundingService.java | 16 ++
.../admin/service/Impl/FundingServiceImpl.java | 179 ++++++++++++++++++++-
.../main/resources/mapper/admin/fundingMapper.xml | 116 ++++++++++++-
12 files changed, 585 insertions(+), 7 deletions(-)
create mode 100644 lottery-system/lottery-common/src/main/java/com/lottery/utils/HttpUtils.java
create mode 100644 lottery-system/lottery-common/src/main/java/com/lottery/utils/ValidationUtils.java
create mode 100644 lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FundingRecordDto.java
create mode 100644 lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FundingUserDto.java
create mode 100644 lottery-system/lottery-pojo/src/main/java/com/lottery/vo/FundingUserVo.java
diff --git a/lottery-system/lottery-common/src/main/java/com/lottery/utils/HttpUtils.java b/lottery-system/lottery-common/src/main/java/com/lottery/utils/HttpUtils.java
new file mode 100644
index 0000000..0816170
--- /dev/null
+++ b/lottery-system/lottery-common/src/main/java/com/lottery/utils/HttpUtils.java
@@ -0,0 +1,56 @@
+package com.lottery.utils;
+import java.net.URI;
+import java.net.URLEncoder;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+
+public class HttpUtils{
+
+ private static final HttpClient client = HttpClient.newHttpClient();
+
+ /**
+ * 发送 POST 请求(urlencoded 格式,仅设置 Content-Type)
+ * @param url 接口地址
+ * @param params 请求参数(键值对,自动编码)
+ * @return 响应字符串
+ */
+ public static String postUrlencoded(String url, Map params) throws Exception {
+ // 1. 构建 urlencoded 请求体
+ StringBuilder requestBody = new StringBuilder();
+ for (Map.Entry entry : params.entrySet()) {
+ if (requestBody.length() > 0) {
+ requestBody.append("&");
+ }
+ requestBody.append(URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8))
+ .append("=")
+ .append(URLEncoder.encode(entry.getValue(), StandardCharsets.UTF_8));
+ }
+
+ // 2. 创建 HTTP 请求(仅设置 Content-Type)
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(URI.create(url))
+ .header("Content-Type", "application/x-www-form-urlencoded") // 仅设置 Content-Type
+ .POST(HttpRequest.BodyPublishers.ofString(requestBody.toString()))
+ .build();
+
+ // 3. 发送请求并返回响应
+ return sendRequest(request);
+ }
+
+ /**
+ * 发送请求并返回响应
+ */
+ private static String sendRequest(HttpRequest request) throws Exception {
+ HttpResponse response = client.send(
+ request, HttpResponse.BodyHandlers.ofString());
+
+ if (response.statusCode() >= 400) {
+ throw new RuntimeException("HTTP 错误,状态码: " + response.statusCode() + ", 响应: " + response.body());
+ }
+
+ return response.body();
+ }
+}
\ No newline at end of file
diff --git a/lottery-system/lottery-common/src/main/java/com/lottery/utils/ValidationUtils.java b/lottery-system/lottery-common/src/main/java/com/lottery/utils/ValidationUtils.java
new file mode 100644
index 0000000..ba055d0
--- /dev/null
+++ b/lottery-system/lottery-common/src/main/java/com/lottery/utils/ValidationUtils.java
@@ -0,0 +1,68 @@
+package com.lottery.utils;
+
+/**
+ * @program: lottery-system
+ * @ClassName ValidationUtils
+ * @description:
+ * @author:jihaipeng
+ * @create: 2025−07-15 16:26
+ * @Version 1.0
+ **/
+
+public class ValidationUtils {
+
+ /**
+ * 校验数值是否满足:
+ * 1. 可以小于 0(允许负数)
+ * 2. 必须是整数(不能是小数)
+ *
+ * @param value 待校验的数值(可以是 String 或 Number 类型)
+ * @return 是否校验通过
+ */
+ public static boolean validateInteger(Object value) {
+ try {
+ // 如果是 String 类型,先尝试转为 Number
+ if (value instanceof String) {
+ // 去掉可能的空格
+ String strValue = ((String) value).trim();
+
+ // 检查是否为空
+ if (strValue.isEmpty()) {
+ return false;
+ }
+
+ // 尝试解析为 Long(支持更大的整数范围)
+ try {
+ Long.parseLong(strValue);
+ } catch (NumberFormatException e) {
+ return false; // 解析失败,说明不是整数
+ }
+ }
+ // 如果是 Number 类型(Integer、Long 等)
+ else if (value instanceof Number) {
+ Number num = (Number) value;
+
+ // 检查是否是整数(避免浮点数)
+ if (num instanceof Double || num instanceof Float) {
+ double doubleValue = num.doubleValue();
+ if (doubleValue != Math.floor(doubleValue)) {
+ return false; // 有小数部分,不合法
+ }
+ }
+
+ // 如果是 Integer 或 Long,直接合法
+ return true;
+ }
+ // 其他类型(如非数值类型)
+ else {
+ return false;
+ }
+
+ // 所有检查通过
+ return true;
+
+ } catch (Exception e) {
+ return false; // 任何异常都视为不合法
+ }
+ }
+}
diff --git a/lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FundingRecordDto.java b/lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FundingRecordDto.java
new file mode 100644
index 0000000..0a36b76
--- /dev/null
+++ b/lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FundingRecordDto.java
@@ -0,0 +1,21 @@
+package com.lottery.dto;
+
+import lombok.Data;
+
+/**
+ * @program: lottery-system
+ * @ClassName FundingRecordDto
+ * @description:
+ * @author:jihaipeng
+ * @create: 2025−07-15 14:27
+ * @Version 1.0
+ **/
+@Data
+public class FundingRecordDto {
+
+ private String token;
+
+ private Integer activityId;
+
+ private String marketSign;
+}
diff --git a/lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FundingUserDto.java b/lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FundingUserDto.java
new file mode 100644
index 0000000..2e133ba
--- /dev/null
+++ b/lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FundingUserDto.java
@@ -0,0 +1,24 @@
+package com.lottery.dto;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @program: lottery-system
+ * @ClassName FundingUserDto
+ * @description:
+ * @author:jihaipeng
+ * @create: 2025−07-15 10:47
+ * @Version 1.0
+ **/
+@Data
+public class FundingUserDto {
+ public Integer activityId;
+
+ private String marketSign; // 市场标识(usa/hk)
+ private String username; // 用户名
+ private String jwcode; // 用户唯一码
+ private Integer page=1;
+ private Integer pagesize=10;
+}
diff --git a/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingData.java b/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingData.java
index 6573ae9..94302e7 100644
--- a/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingData.java
+++ b/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingData.java
@@ -24,11 +24,9 @@ import java.util.Date;
public class FundingData {
@TableId(type = IdType.AUTO) // 主键自增策略
private Integer id;
- private Date time; // 统计时间(众筹初始时间)
+ private Integer time; // 统计时间(众筹初始时间)
private String stock; // 市场(美股/港股)
private Integer addTotal; // 虚拟参与人数
private Integer activityId; // 关联的活动ID
- // 可选:关联的活动对象
- private Activity activity;
}
diff --git a/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingUser.java b/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingUser.java
index 79f80fd..d8236ac 100644
--- a/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingUser.java
+++ b/lottery-system/lottery-pojo/src/main/java/com/lottery/entity/FundingUser.java
@@ -7,6 +7,8 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
import java.util.Date;
/**
@@ -27,6 +29,6 @@ public class FundingUser {
private String marketSign; // 市场标识(usa/hk)
private String username; // 用户名
private String jwcode; // 用户唯一码
- private Date joinTime; // 参与时间
+ private LocalDateTime joinTime; // 参与时间
private Integer activityId; // 关联的活动ID
}
diff --git a/lottery-system/lottery-pojo/src/main/java/com/lottery/vo/FundingUserVo.java b/lottery-system/lottery-pojo/src/main/java/com/lottery/vo/FundingUserVo.java
new file mode 100644
index 0000000..f10b169
--- /dev/null
+++ b/lottery-system/lottery-pojo/src/main/java/com/lottery/vo/FundingUserVo.java
@@ -0,0 +1,25 @@
+package com.lottery.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @program: lottery-system
+ * @ClassName FundingUserDto
+ * @description:
+ * @author:jihaipeng
+ * @create: 2025−07-15 10:09
+ * @Version 1.0
+ **/
+@Data
+public class FundingUserVo {
+ @TableId(type = IdType.AUTO) // 主键自增策略
+ private Integer id;
+ private String marketSign; // 市场标识(usa/hk)
+ private String username; // 用户名
+ private String jwcode; // 用户唯一码
+ private LocalDateTime joinTime; // 参与时间
+}
diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/FundingController.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/FundingController.java
index b3a3105..14d59b9 100644
--- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/FundingController.java
+++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/FundingController.java
@@ -3,13 +3,18 @@ package com.lottery.admin.controller;
import com.lottery.dto.FundingActivityDto;
import com.lottery.admin.service.IFundingService;
+import com.lottery.dto.FundingRecordDto;
+import com.lottery.dto.FundingUserDto;
import com.lottery.result.Result;
import com.lottery.vo.FundingActivityVo;
+import com.lottery.vo.FundingUserVo;
+import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
+import java.util.Map;
/**
* @program: lottery-system
@@ -69,4 +74,47 @@ public class FundingController {
}
}
+ //根据活动id查询助力详情
+ @PostMapping("/getActivityDetail")
+ public Map getActivityDetail(@RequestBody FundingUserDto fundingUserDto) {
+ // 必填参数校验(可选,但推荐)
+ if (fundingUserDto.getActivityId() == null) {
+ throw new IllegalArgumentException("activityId 不能为空");
+ }
+ return fundingService.getActivityDetail(fundingUserDto);
+ }
+
+ // //根据活动id查询数据统计
+ @PostMapping("/getActivityDate")
+ public Map getActivityDate(@RequestParam Integer activityId ) {
+ return fundingService.getActivityDate(activityId);
+ }
+
+ //添加用户参与记录
+ @PostMapping("/addRecord")
+ public Result addRecord(@RequestBody FundingRecordDto fundingRecordDto) throws Exception {
+ return fundingService.addRecord(fundingRecordDto);
+ }
+
+ //设置活动初始活动
+ @PostMapping("/setActivityTime")
+ public Result setActivityTime(@RequestParam Integer activityId, @RequestParam Integer time) {
+ return fundingService.setActivityTime(activityId, time);
+ }
+
+ //添加虚拟次数
+ @PostMapping("/addDateVirtual")
+ public Result addVirtual(@RequestParam Integer activityId, @RequestParam String stock, @RequestParam Integer addTotal) {
+ return fundingService.addVirtual(activityId, stock, addTotal);
+ }
+
+ //返回数据详情
+ @PostMapping("/getDate")
+ public Result