Browse Source

Merge branch 'wuweili/feature-20250715095139-抽奖众筹' into milestone-20250723-wwl

feature/0725lihuilin
willy 3 weeks ago
parent
commit
820213a42d
  1. 5
      lottery-system/lottery-service/src/main/java/com/lottery/admin/controller/AdminGradeController.java
  2. 3
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminGradeService.java
  3. 62
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminGradeServiceImpl.java
  4. 2
      lottery-system/lottery-service/src/main/java/com/lottery/admin/service/Impl/AdminPrizeServiceImpl.java
  5. 9
      lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/UserDetailServiceImpl.java

5
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();
}

3
lottery-system/lottery-service/src/main/java/com/lottery/admin/service/AdminGradeService.java

@ -35,6 +35,9 @@ public interface AdminGradeService extends IService<Grade> {
boolean removeGradeById(Long id);
boolean updateGradeById(GradeDto gradeDto);
// boolean updateGradeById(GradeDto GradeDto);

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

@ -92,6 +92,9 @@ public class AdminGradeServiceImpl extends ServiceImpl<AdminGradeMapper, Grade>
@Override
public boolean saveGrade(GradeDto gradeDto) {
if(gradeDto.getPerWin() > gradeDto.getAmount()){
return false;
}
Grade grade = ConvertBeanUtil.convert(gradeDto, Grade.class);
grade.setRemainNum(gradeDto.getAmount());
@ -109,6 +112,7 @@ public class AdminGradeServiceImpl extends ServiceImpl<AdminGradeMapper, Grade>
public boolean removeGradeById(Long id) {
// 把关联的win_record表删了
// 1. 查询所有关联的 prizeId可能多个
List<Prize> prizes = adminPrizeMapper.selectList(
new LambdaQueryWrapper<Prize>()
.eq(Prize::getGradeId, id)
@ -144,18 +148,52 @@ public class AdminGradeServiceImpl extends ServiceImpl<AdminGradeMapper, Grade>
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<Grade> 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;
// }
}

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

@ -295,7 +295,7 @@ public class AdminPrizeServiceImpl extends ServiceImpl<AdminPrizeMapper, Prize>
@Override
public boolean removePrizeById(Long id) {
//把关联的win_record表删了
//把关联的win_record表删了
LambdaUpdateWrapper<WinnerRecord> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(WinnerRecord::getPrizeId, id).set(WinnerRecord::getIsDel, 1);
adminWinMapper.update(null, updateWrapper);

9
lottery-system/lottery-service/src/main/java/com/lottery/api/service/Impl/UserDetailServiceImpl.java

@ -201,6 +201,15 @@ public class UserDetailServiceImpl extends ServiceImpl<IUserDetailMapper, UserDe
markUsersAsWinners(supplementWinners, startLotteryDto);
}
//如果抽奖人数没了
if (winners.isEmpty()) {
boolean hasNextRound = false;
LotteryVo lotteryVo = new LotteryVo();
lotteryVo.setData(winners);
lotteryVo.setRound(hasNextRound);
return lotteryVo;
}
//剩余人数
int lastNum = startLotteryDto.getRemainNum() - winners.size();
updateRemainNum(grade, lastNum);

Loading…
Cancel
Save