diff --git a/lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FixUserDto.java b/lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FixUserDto.java index 852ff6c..27f4f38 100644 --- a/lottery-system/lottery-pojo/src/main/java/com/lottery/dto/FixUserDto.java +++ b/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; diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminPrizeServiceImpl.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminPrizeServiceImpl.java index 0e3d9e2..754c0e7 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminPrizeServiceImpl.java +++ b/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 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 } } + // 4. 检查奖品名称是否重复 + LambdaQueryWrapper 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 Long gradeId = prizeDto.getGradeId(); Grade grade = adminGradeMapper.selectById(gradeId); - Long l = adminPrizeMapper.selectByName(prizeDto.getPrizeName()); - if (l != null) { - return Result.failure("奖品名已存在"); - } + //LambdaUpdateWrapper 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 // 3. 如果修改后的等级和原等级不同,检查目标等级是否已有奖品 if (!targetGrade.getId().equals(originalPrize.getGradeId())) { LambdaQueryWrapper 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 nameCheckWrapper = new LambdaQueryWrapper<>(); -// nameCheckWrapper.eq(Prize::getPrizeName, prizeDto.getPrizeName()) -// .ne(Prize::getId, prizeDto.getId()); -// if (this.count(nameCheckWrapper) > 0) { -// return false; // 奖品名称已存在 -// } + // 4. 检查奖品名称是否重复(排除自己) + LambdaQueryWrapper 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 wrapper = new LambdaQueryWrapper<>(); // wrapper.eq(Prize::getGradeId, grade.getId()); diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminWinServiceImpl.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminWinServiceImpl.java index 54e6ce4..bc484a8 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminWinServiceImpl.java +++ b/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 winUserVoPageInfo = listWinUser(1, Integer.MAX_VALUE, winUserQueryDto); + List list = winUserVoPageInfo.getList(); + if (list.size() > 10000) { + throw new BusinessException(400,"导出数据大于10000条,请筛选条件后导出"); + } + // 4. 使用EasyExcel导出 EasyExcel.write(response.getOutputStream(), WinUserExportDto.class) .excelType(ExcelTypeEnum.XLSX) diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/config/MybatisPageConfig.java b/lottery-system/lottery-service/src/main/java/com/lottery/config/MybatisPageConfig.java index 1c65598..248ef43 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/config/MybatisPageConfig.java +++ b/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);