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