|
@@ -1588,7 +1588,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
String firstDayOfMonth = DateUtil.format(DateUtil.getFirstDayOfMonth(months),DateUtil.ISO_EXPANDED_DATE_FORMAT);
|
|
|
String lastDayOfMonth = DateUtil.format(DateUtil.getLastDayOfMonth(months),DateUtil.ISO_EXPANDED_DATE_FORMAT);
|
|
|
|
|
|
- List<TaskRewardsRulesDto> rewardsRulesDtos = courseScheduleRewardsRulesService.queryVipGroupTeachereClassTimesByMonth(firstDayOfMonth,lastDayOfMonth);
|
|
|
+ List<TaskRewardsRulesDto> rewardsRulesDtos = courseScheduleRewardsRulesService.queryVipGroupTeacherClassTimesByMonth(firstDayOfMonth,lastDayOfMonth);
|
|
|
if(rewardsRulesDtos != null && rewardsRulesDtos.size() > 0){
|
|
|
List<Integer> activeIds = rewardsRulesDtos.stream().map(e -> e.getActiveId()).collect(Collectors.toList());
|
|
|
List<CourseScheduleRewardsRules> rewardsRules = courseScheduleRewardsRulesService.findByIds(activeIds);
|
|
@@ -1602,20 +1602,30 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
List<RewardsRulesJsonDto> rulesJsonDtos = JSONObject.parseArray(rewardsRule.getRewardsRulesJson(), RewardsRulesJsonDto.class);
|
|
|
BigDecimal money = BigDecimal.ZERO;
|
|
|
//STAIR 阶梯, PER 累计, TOTAL
|
|
|
+ RewardsRulesJsonDto dto;
|
|
|
+ int times = e.getTimes();
|
|
|
switch (rewardsRule.getRewardMode()) {
|
|
|
case STAIR:
|
|
|
- for (RewardsRulesJsonDto rule : rulesJsonDtos) {
|
|
|
- if (e.getTimes() >= rule.getMin()) {
|
|
|
- money = money.add(rule.getMoney());
|
|
|
+ for (int i = 0;i< rulesJsonDtos.size();i++){
|
|
|
+ dto = rulesJsonDtos.get(i);
|
|
|
+ if (e.getTimes() >= dto.getMin()) {
|
|
|
+ //最后一个梯度
|
|
|
+ if(rulesJsonDtos.size()-1 == i){
|
|
|
+ money = money.add(dto.getMoney().multiply(new BigDecimal(times)));
|
|
|
+ }else if(e.getTimes() >= dto.getMax()){
|
|
|
+ times = Math.abs(dto.getMax() - times);
|
|
|
+ money = money.add(dto.getMoney().multiply(new BigDecimal(dto.getMax()-dto.getMin()+1)));
|
|
|
+ }else {
|
|
|
+ money = money.add(dto.getMoney().multiply(new BigDecimal(times)));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
case PER:
|
|
|
- int count = 0;
|
|
|
- for (RewardsRulesJsonDto rule : rulesJsonDtos) {
|
|
|
- if (e.getTimes() >= rule.getMin()) {
|
|
|
- count++;
|
|
|
- money = rule.getMoney().multiply(new BigDecimal(count));
|
|
|
+ for (int i = 0;i< rulesJsonDtos.size();i++){
|
|
|
+ dto = rulesJsonDtos.get(i);
|
|
|
+ if (e.getTimes() >= dto.getMin()) {
|
|
|
+ money = dto.getMoney().multiply(new BigDecimal(times));
|
|
|
}
|
|
|
}
|
|
|
break;
|