diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminGradeController.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminGradeController.java index e127e02..0663547 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminGradeController.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminGradeController.java @@ -86,7 +86,7 @@ public class AdminGradeController { return Result.failure("等级已存在,新增失败"); } - if (!adminGradeService.saveGrade(gradeDto)) return Result.failure("新增失败"); + if (!adminGradeService.saveGrade(gradeDto)) return Result.failure("每轮抽取的人数不能大于总数,"); return Result.success(); } @@ -109,8 +109,9 @@ public class AdminGradeController { Grade grade = ConvertBeanUtil.convert(gradeDto, Grade.class); grade.setUpdateTime(new Date()); + grade.setRemainNum(gradeDto.getAmount()); - if (!adminGradeService.updateById(grade)) return Result.failure("修改失败"); + if (!adminGradeService.updateGradeById(gradeDto)) return Result.failure("每轮抽取人数不能大于总数"); return Result.success(); } diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminGradeService.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminGradeService.java index e761379..33f8ba4 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminGradeService.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminGradeService.java @@ -35,6 +35,9 @@ public interface AdminGradeService extends IService { boolean removeGradeById(Long id); + boolean updateGradeById(GradeDto gradeDto); + + // boolean updateGradeById(GradeDto GradeDto); diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminGradeServiceImpl.java b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminGradeServiceImpl.java index f8f18e8..866ccf8 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminGradeServiceImpl.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminGradeServiceImpl.java @@ -92,6 +92,9 @@ public class AdminGradeServiceImpl extends ServiceImpl @Override public boolean saveGrade(GradeDto gradeDto) { + if(gradeDto.getPerWin() > gradeDto.getAmount()){ + return false; + } Grade grade = ConvertBeanUtil.convert(gradeDto, Grade.class); grade.setRemainNum(gradeDto.getAmount()); @@ -107,8 +110,9 @@ public class AdminGradeServiceImpl extends ServiceImpl @Override @Transactional public boolean removeGradeById(Long id) { - //把关联的win_record表删了 - // 1. 查询所有关联的 prizeId(可能多个) +// 把关联的win_record表删了 +// 1. 查询所有关联的 prizeId(可能多个) + List prizes = adminPrizeMapper.selectList( new LambdaQueryWrapper() .eq(Prize::getGradeId, id) @@ -144,18 +148,52 @@ public class AdminGradeServiceImpl extends ServiceImpl return true; } -// @Autowired -// private AdminGradeMapper adminGradeMapper; + @Override + public boolean updateGradeById(GradeDto gradeDto) { + // 先查询出原始数据 + Grade originalGrade = this.getById(gradeDto.getId()); + if (originalGrade == null) { + throw new RuntimeException("等级不存在: " + gradeDto.getId()); + } + + LambdaUpdateWrapper gradeLambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + gradeLambdaUpdateWrapper.eq(Grade::getId, gradeDto.getId()); + + // 处理普通字段 + if (gradeDto.getGradeName() != null) { + gradeLambdaUpdateWrapper.set(Grade::getGradeName, gradeDto.getGradeName()); + } + if (gradeDto.getSort() != null) { + gradeLambdaUpdateWrapper.set(Grade::getSort, gradeDto.getSort()); + } + if (gradeDto.getPerWin() != null) { + if(gradeDto.getPerWin() > gradeDto.getAmount()){ + return false; + } + gradeLambdaUpdateWrapper.set(Grade::getPerWin, gradeDto.getPerWin()); + } + // 特殊处理amount字段 + if (gradeDto.getAmount() != null) { + if(gradeDto.getPerWin() > gradeDto.getAmount()){ + return false; + } + Integer newTotalAmount = gradeDto.getAmount(); + Integer originalTotalAmount = originalGrade.getAmount(); + Integer originalRemaining = originalGrade.getRemainNum(); + + // 计算新的剩余量:新总量 - (原总量 - 原剩余量) + // 即:newRemaining = newTotal - (originalTotal - originalRemaining) + Integer newRemaining = newTotalAmount - (originalTotalAmount - originalRemaining); + + // 确保剩余量不会超过总量也不会小于0 + newRemaining = Math.max(0, Math.min(newRemaining, newTotalAmount)); + + gradeLambdaUpdateWrapper + .set(Grade::getAmount, newTotalAmount) + .set(Grade::getRemainNum, newRemaining); + } + return this.update(gradeLambdaUpdateWrapper); + } -// @Override -// public boolean updateGrade(GradeDto gradeDto) { -// -// Grade grade = ConvertBeanUtil.convert(gradeDto,Grade.class); -// grade.setUpdateTime(new Date()); -// if (!(adminGradeMapper.updateById(grade) > 0)) { -// return false; -// } -// return true; - // } } 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 34d2c9f..1d08ac3 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 @@ -295,7 +295,7 @@ public class AdminPrizeServiceImpl extends ServiceImpl @Override public boolean removePrizeById(Long id) { - //把关联的win_record表删了 + //把关联的win_record表删了, LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(WinnerRecord::getPrizeId, id).set(WinnerRecord::getIsDel, 1); adminWinMapper.update(null, updateWrapper); diff --git a/lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/UserDetailServiceImpl.java b/lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/UserDetailServiceImpl.java index 07ce305..cc4ff3f 100644 --- a/lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/UserDetailServiceImpl.java +++ b/lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/UserDetailServiceImpl.java @@ -201,6 +201,15 @@ public class UserDetailServiceImpl extends ServiceImpl