Browse Source

Merge branch 'milestone-20250723-wwl' into jihaipeng/feature-20250714184358-抽奖众筹

dev
jihaipeng 3 weeks ago
parent
commit
6e521d2b40
  1. 6
      lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FixUserDto.java
  2. 46
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminPrizeServiceImpl.java
  3. 9
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminWinServiceImpl.java
  4. 2
      lottery-system/lottery-service/src/main/java/com/lottery/config/MybatisPageConfig.java

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 lombok.Data;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
/** /**
* @program: lottery * @program: lottery
@ -16,8 +18,12 @@ import javax.validation.constraints.NotNull;
public class FixUserDto { public class FixUserDto {
@NotNull(message = "用户名不能为空") @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; private String username;
@Pattern(regexp = "^\\d{5,12}$", message = "精网号必须是5到12位的数字")
@NotNull(message = "精网号不能为空") @NotNull(message = "精网号不能为空")
private String jwcode; private String jwcode;

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.utils.ConvertBeanUtil;
import com.lottery.vo.PageInfo; import com.lottery.vo.PageInfo;
import com.lottery.vo.PrizeVo; import com.lottery.vo.PrizeVo;
import org.apache.ibatis.annotations.Lang;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -82,10 +83,10 @@ public class AdminPrizeServiceImpl extends ServiceImpl<AdminPrizeMapper, Prize>
return Result.failure("等级不存在"); // 等级不存在直接返回失败 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且已存在奖品时才拒绝添加 // 2. 检查逻辑仅当等级未删除is_del=0且已存在奖品时才拒绝添加
if (grade.getIsDel() == 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() Prize prize = Prize.builder()
.PrizeName(prizeDto.getPrizeName()) .PrizeName(prizeDto.getPrizeName())
.gradeId(grade.getId()) .gradeId(grade.getId())
@ -124,10 +133,14 @@ public class AdminPrizeServiceImpl extends ServiceImpl<AdminPrizeMapper, Prize>
Long gradeId = prizeDto.getGradeId(); Long gradeId = prizeDto.getGradeId();
Grade grade = adminGradeMapper.selectById(gradeId); 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 // 2. 检查是否是修改现有奖品需要传入prizeId
// 1. 查询原奖品信息 // 1. 查询原奖品信息
@ -151,19 +164,18 @@ public class AdminPrizeServiceImpl extends ServiceImpl<AdminPrizeMapper, Prize>
// 3. 如果修改后的等级和原等级不同检查目标等级是否已有奖品 // 3. 如果修改后的等级和原等级不同检查目标等级是否已有奖品
if (!targetGrade.getId().equals(originalPrize.getGradeId())) { if (!targetGrade.getId().equals(originalPrize.getGradeId())) {
LambdaQueryWrapper<Prize> wrapper = new LambdaQueryWrapper<>(); 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) { if (this.count(wrapper) > 0) {
return Result.failure("目标等级已有奖品,不能修改"); // 目标等级已有奖品不能修改 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<>(); // LambdaQueryWrapper<Prize> wrapper = new LambdaQueryWrapper<>();
// wrapper.eq(Prize::getGradeId, grade.getId()); // 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.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ser.Serializers;
import com.lottery.LotteryApplication; import com.lottery.LotteryApplication;
import com.lottery.admin.mapper.AdminGradeMapper; import com.lottery.admin.mapper.AdminGradeMapper;
import com.lottery.admin.mapper.AdminUserMapper; import com.lottery.admin.mapper.AdminUserMapper;
@ -19,6 +20,9 @@ import com.lottery.dto.UserQueryDto;
import com.lottery.dto.WinUserExportDto; import com.lottery.dto.WinUserExportDto;
import com.lottery.dto.WinUserQueryDto; import com.lottery.dto.WinUserQueryDto;
import com.lottery.entity.*; 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.result.Result;
import com.lottery.utils.ConvertBeanUtil; import com.lottery.utils.ConvertBeanUtil;
import com.lottery.vo.PageInfo; 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); 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导出 // 4. 使用EasyExcel导出
EasyExcel.write(response.getOutputStream(), WinUserExportDto.class) EasyExcel.write(response.getOutputStream(), WinUserExportDto.class)
.excelType(ExcelTypeEnum.XLSX) .excelType(ExcelTypeEnum.XLSX)

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

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

Loading…
Cancel
Save