7 Commits

  1. 6
      lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FixUserDto.java
  2. 2
      lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FundingActivityDto.java
  3. 2
      lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/IFundingMapper.java
  4. 2
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminGradeServiceImpl.java
  5. 46
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminPrizeServiceImpl.java
  6. 9
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminWinServiceImpl.java
  7. 6
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/FundingServiceImpl.java
  8. 16
      lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/ApiFundingServiceImpl.java
  9. 28
      lottery-system/lottery-service/src/main/java/com/lottery/config/ApiConfig.java
  10. 2
      lottery-system/lottery-service/src/main/java/com/lottery/config/MybatisPageConfig.java
  11. 4
      lottery-system/lottery-service/src/main/resources/application-dev.yml
  12. 4
      lottery-system/lottery-service/src/main/resources/application-prod.yml
  13. 8
      lottery-system/lottery-service/src/main/resources/mapper/admin/fundingMapper.xml

6
lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FixUserDto.java

@ -3,6 +3,8 @@ package com.lottery.dto;
import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
/**
* @program: lottery
@ -16,8 +18,12 @@ import javax.validation.constraints.NotNull;
public class FixUserDto {
@NotNull(message = "用户名不能为空")
@Size(max = 30, message = "姓名长度不能超过30个字符")
@Pattern(regexp = "^[\\u4e00-\\u9fa5\\u3400-\\u4dbf\\u20000-\\u2a6df\\u2a700-\\u2b73f\\u2b740-\\u2b81f\\u2b820-\\u2ceaf\\uf900-\\ufaffa-zA-Z]+$",
message = "姓名只能包含中文(简繁体)或英文字符")
private String username;
@Pattern(regexp = "^\\d{5,12}$", message = "精网号必须是5到12位的数字")
@NotNull(message = "精网号不能为空")
private String jwcode;

2
lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FundingActivityDto.java

@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDate;
import java.util.Date;
@ -19,6 +20,7 @@ import java.util.Date;
public class FundingActivityDto {
@NotNull(message = "活动名称不能为空")
@Size(min = 1, max = 20, message = "活动名称长度必须在 1 到 20 个字符之间")
private String activityName; // 活动名称
@NotNull(message = "市场一不能为空")
private Integer marketOne; // 市场一(如USA)

2
lottery-system/lottery-service/src/main/java/com/lottery/admin/mapper/IFundingMapper.java

@ -83,4 +83,6 @@ public interface IFundingMapper {
Integer selectmarket(Integer id);
Integer selectmarketCount(Integer market);
Integer selectActivityStatus(Integer id);
}

2
lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminGradeServiceImpl.java

@ -78,11 +78,11 @@ public class AdminGradeServiceImpl extends ServiceImpl<AdminGradeMapper, Grade>
.orderByAsc(Grade::getId); //sort一样按照id排序
Page<Grade> gradePage = this.page(page, gradeLambdaQueryWrapper);
List<GradeVo> gradeVos = ConvertBeanUtil.convertList(gradePage.getRecords(), GradeVo.class);
return PageInfo.of(gradePage, gradeVos);
}
@Override
public List<GradeSimpleVo> selectAllGrade() {
// List<String> GradeNameList = new ArrayList<>();

46
lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminPrizeServiceImpl.java

@ -14,6 +14,7 @@ import com.lottery.result.Result;
import com.lottery.utils.ConvertBeanUtil;
import com.lottery.vo.PageInfo;
import com.lottery.vo.PrizeVo;
import org.apache.ibatis.annotations.Lang;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -82,10 +83,10 @@ public class AdminPrizeServiceImpl extends ServiceImpl<AdminPrizeMapper, Prize>
return Result.failure("等级不存在"); // 等级不存在直接返回失败
}
Long l = adminPrizeMapper.selectByName(prizeDto.getPrizeName());
if (l != null) {
return Result.failure("奖品名已存在");
}
//Long l = adminPrizeMapper.selectByName(prizeDto.getPrizeName());
//if (l != null) {
// return Result.failure("奖品名已存在");
//}
// 2. 检查逻辑仅当等级未删除is_del=0且已存在奖品时才拒绝添加
if (grade.getIsDel() == 0) { // 等级未删除
@ -97,6 +98,14 @@ public class AdminPrizeServiceImpl extends ServiceImpl<AdminPrizeMapper, Prize>
}
}
// 4. 检查奖品名称是否重复
LambdaQueryWrapper<Prize> nameCheckWrapper = new LambdaQueryWrapper<>();
nameCheckWrapper.eq(Prize::getPrizeName, prizeDto.getPrizeName()).eq(Prize::getIs_del, 0);
if (this.count(nameCheckWrapper) > 0) {
return Result.failure("奖品名称已存在"); // 奖品名称已存在
}
Prize prize = Prize.builder()
.PrizeName(prizeDto.getPrizeName())
.gradeId(grade.getId())
@ -124,10 +133,14 @@ public class AdminPrizeServiceImpl extends ServiceImpl<AdminPrizeMapper, Prize>
Long gradeId = prizeDto.getGradeId();
Grade grade = adminGradeMapper.selectById(gradeId);
Long l = adminPrizeMapper.selectByName(prizeDto.getPrizeName());
if (l != null) {
return Result.failure("奖品名已存在");
}
//LambdaUpdateWrapper<Prize> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
//lambdaUpdateWrapper.eq(Prize::getPrizeName, prizeDto.getPrizeName()).ne(Prize::getId, prizeDto.getId());
//this.update(null, lambdaUpdateWrapper);
//Long l = adminPrizeMapper.selectByName(prizeDto.getPrizeName());
//if (l != null){
// return Result.failure("奖品名已存在");
//}
// 2. 检查是否是修改现有奖品需要传入prizeId
// 1. 查询原奖品信息
@ -151,19 +164,18 @@ public class AdminPrizeServiceImpl extends ServiceImpl<AdminPrizeMapper, Prize>
// 3. 如果修改后的等级和原等级不同检查目标等级是否已有奖品
if (!targetGrade.getId().equals(originalPrize.getGradeId())) {
LambdaQueryWrapper<Prize> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Prize::getGradeId, targetGrade.getId());
wrapper.eq(Prize::getGradeId, targetGrade.getId()).eq(Prize::getIs_del, 0);
if (this.count(wrapper) > 0) {
return Result.failure("目标等级已有奖品,不能修改"); // 目标等级已有奖品不能修改
}
}
//
// // 4. 检查奖品名称是否重复排除自己
// LambdaQueryWrapper<Prize> nameCheckWrapper = new LambdaQueryWrapper<>();
// nameCheckWrapper.eq(Prize::getPrizeName, prizeDto.getPrizeName())
// .ne(Prize::getId, prizeDto.getId());
// if (this.count(nameCheckWrapper) > 0) {
// return false; // 奖品名称已存在
// }
// 4. 检查奖品名称是否重复排除自己
LambdaQueryWrapper<Prize> nameCheckWrapper = new LambdaQueryWrapper<>();
nameCheckWrapper.eq(Prize::getPrizeName, prizeDto.getPrizeName()).eq(Prize::getIs_del, 0)
.ne(Prize::getId, prizeDto.getId());
if (this.count(nameCheckWrapper) > 0) {
return Result.failure("奖品名称已存在"); // 奖品名称已存在
}
// LambdaQueryWrapper<Prize> wrapper = new LambdaQueryWrapper<>();
// wrapper.eq(Prize::getGradeId, grade.getId());

9
lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminWinServiceImpl.java

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ser.Serializers;
import com.lottery.LotteryApplication;
import com.lottery.admin.mapper.AdminGradeMapper;
import com.lottery.admin.mapper.AdminUserMapper;
@ -19,6 +20,9 @@ import com.lottery.dto.UserQueryDto;
import com.lottery.dto.WinUserExportDto;
import com.lottery.dto.WinUserQueryDto;
import com.lottery.entity.*;
import com.lottery.exception.BaseException;
import com.lottery.exception.BusinessException;
import com.lottery.exception.GlobalExceptionHandler;
import com.lottery.result.Result;
import com.lottery.utils.ConvertBeanUtil;
import com.lottery.vo.PageInfo;
@ -175,6 +179,11 @@ public class AdminWinServiceImpl extends ServiceImpl<AdminWinMapper, WinnerRecor
//全部放进一页里面直接取
PageInfo<WinUserVo> winUserVoPageInfo = listWinUser(1, Integer.MAX_VALUE, winUserQueryDto);
List<WinUserVo> list = winUserVoPageInfo.getList();
if (list.size() > 10000) {
throw new BusinessException(400,"导出数据大于10000条,请筛选条件后导出");
}
// 4. 使用EasyExcel导出
EasyExcel.write(response.getOutputStream(), WinUserExportDto.class)
.excelType(ExcelTypeEnum.XLSX)

6
lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/FundingServiceImpl.java

@ -106,6 +106,7 @@ public class FundingServiceImpl implements IFundingService {
//查询市场是否存在
Integer count = fundingMapper.selectmarketCount(fundingActivityDto.getMarketOne());
Integer count2 = fundingMapper.selectmarketCount(fundingActivityDto.getMarketTwo());
if(count == 0){
return Result.failure("市场一不存在");
}
@ -435,6 +436,11 @@ public class FundingServiceImpl implements IFundingService {
@Transactional(rollbackOn = SQLException.class)
public Result<String> deleteActivity(Integer id) {
//查看活动的状态
Integer status = fundingMapper.selectActivityStatus(id);
if(status != 0){
return Result.failure("活动正在运行中,请禁用再删除");
}
//产看股票是否存在
Integer count = fundingMapper.selectActivityCount(id);

16
lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/ApiFundingServiceImpl.java

@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.lottery.api.mapper.ApiIFundingMapper;
import com.lottery.api.service.ApiIFundingService;
import com.lottery.config.ApiConfig;
import com.lottery.dto.FundingRecordDto;
import com.lottery.result.Result;
import com.lottery.utils.HttpUtils;
@ -38,6 +39,8 @@ public class ApiFundingServiceImpl implements ApiIFundingService {
@Autowired
ObjectMapper objectMapper = new ObjectMapper();
@Autowired
ApiConfig apiConfig;
@Override
public Result getActivityDetailOne(String token) {
@ -49,17 +52,13 @@ public class ApiFundingServiceImpl implements ApiIFundingService {
if (count == null || count == 0 || count > 1) {
// 根据业务逻辑这里可以分别处理count为null小于0和大于1的情况
// 但为了简化示例我们统一返回一个失败结果
return Result.failure(200,"操作成功");
return Result.failure(400,"活动未开启");
}
Integer activityId = fundingMapper.selectStatus();
//根据活动id查询俩个市场,俩个市场是一条数据
ApiFundingTimeVo data= fundingMapper.getMarket(activityId);
Integer marketOne = data.getMarketOne();
Integer marketTwo = data.getMarketTwo();
LocalDate startTime = (LocalDate) data.getStartTime();
@ -70,7 +69,7 @@ public class ApiFundingServiceImpl implements ApiIFundingService {
try {
// 1. 定义请求 URL
String url = "http://39.101.133.168:8828/hljw/api/v2/member/info";
String url = apiConfig.getHljwUrl() +"/api/v2/member/info";
// 准备请求参数
Map<String, String> params = new HashMap<>();
@ -78,6 +77,9 @@ public class ApiFundingServiceImpl implements ApiIFundingService {
// 调用接口
String response = HttpUtils.postUrlencoded(url, params);
JsonNode rootNode = objectMapper.readTree(response);
if(rootNode.path("code").asInt() == 401){
return Result.failure("登录凭证错误");
}
// 提取 username
username = rootNode.path("data").path("username").asText();
jwcode = rootNode.path("data").path("jwcode").asText();
@ -169,7 +171,7 @@ public class ApiFundingServiceImpl implements ApiIFundingService {
try {
// 1. 定义请求 URL
String url = "http://39.101.133.168:8828/hljw/api/v2/member/info";
String url = apiConfig.getHljwUrl() + "/api/v2/member/info";
// 准备请求参数
Map<String, String> params = new HashMap<>();

28
lottery-system/lottery-service/src/main/java/com/lottery/config/ApiConfig.java

@ -0,0 +1,28 @@
package com.lottery.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* @program: lottery-system
* @ClassName ApiConfig
* @description:
* @author:jihaipeng
* @create: 202507-25 13:00
* @Version 1.0
**/
@Component
@ConfigurationProperties(prefix = "api")
public class ApiConfig {
private String hljwUrl; // 自动匹配当前环境的 api.hljw-url
// Getter & Setter必须提供否则绑定失败
public String getHljwUrl() {
return hljwUrl;
}
public void setHljwUrl(String hljwUrl) {
this.hljwUrl = hljwUrl;
}
}

2
lottery-system/lottery-service/src/main/java/com/lottery/config/MybatisPageConfig.java

@ -25,7 +25,7 @@ public class MybatisPageConfig {
public PaginationInnerInterceptor paginationInnerInterceptor() {
PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor();
// 设置最大单页限制数量默认 500 -1 不受限制
paginationInterceptor.setMaxLimit(10000L);
paginationInterceptor.setMaxLimit(20000L);
paginationInterceptor.setDbType(DbType.MYSQL);
// 开启 count join 优化,只针对部分 left join
paginationInterceptor.setOptimizeJoin(true);

4
lottery-system/lottery-service/src/main/resources/application-dev.yml

@ -30,6 +30,6 @@ spring:
max-idle: 20 # 最大空闲连接
min-idle: 10 # 最小空闲连接
api:
hljw-url: "http://39.101.133.168:8828/hljw"

4
lottery-system/lottery-service/src/main/resources/application-prod.yml

@ -31,6 +31,8 @@ spring:
min-idle: 10 # 最小空闲连接
# 不同环境的 API 路径配置
api:
hljw-url: "http://api.homilychart.com/hljw"

8
lottery-system/lottery-service/src/main/resources/mapper/admin/fundingMapper.xml

@ -250,5 +250,13 @@
from market
where id = #{market}
</select>
<select id="selectActivityStatus" resultType="java.lang.Integer" parameterType="java.lang.Integer">
SELECT
status
FROM
activity
WHERE
id = #{activityId}
</select>
</mapper>
Loading…
Cancel
Save