|
@@ -24,6 +24,7 @@ import java.math.MathContext;
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
import java.text.ParseException;
|
|
import java.text.ParseException;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
+import java.util.function.Predicate;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -42,6 +43,10 @@ public class TenantAssetsInfoServiceImpl extends ServiceImpl<TenantAssetsInfoDao
|
|
@Autowired
|
|
@Autowired
|
|
private TenantCloudCourseRecordService tenantCloudCourseRecordService;
|
|
private TenantCloudCourseRecordService tenantCloudCourseRecordService;
|
|
|
|
|
|
|
|
+ private final Predicate<String> VipPredicate = (o) -> Objects.equals(o, CourseSchedule.CourseScheduleType.VIP.getCode());
|
|
|
|
+
|
|
|
|
+ private final Predicate<String> PracticePredicate = (o) -> Objects.equals(o, CourseSchedule.CourseScheduleType.PRACTICE.getCode());
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 手动执行未扣费的流水
|
|
* 手动执行未扣费的流水
|
|
*
|
|
*
|
|
@@ -60,8 +65,8 @@ public class TenantAssetsInfoServiceImpl extends ServiceImpl<TenantAssetsInfoDao
|
|
}
|
|
}
|
|
records.forEach(record -> {
|
|
records.forEach(record -> {
|
|
log.info("manualDeductAmount >>>>>> {}", record);
|
|
log.info("manualDeductAmount >>>>>> {}", record);
|
|
- //获取总人数 ,+1是算上老师
|
|
|
|
- Integer totalPeople = record.getStudentNum() + 1;
|
|
|
|
|
|
+ //获取总人数 (算上老师
|
|
|
|
+ String totalPeople = getTotalPeople(record.getType(), record.getCourseId());
|
|
//获取云教室规则 String人数-BigDecimal每分钟扣费标准
|
|
//获取云教室规则 String人数-BigDecimal每分钟扣费标准
|
|
Map<String, BigDecimal> rule = getRule(record.getTenantId());
|
|
Map<String, BigDecimal> rule = getRule(record.getTenantId());
|
|
if (Objects.isNull(rule)) {
|
|
if (Objects.isNull(rule)) {
|
|
@@ -107,8 +112,8 @@ public class TenantAssetsInfoServiceImpl extends ServiceImpl<TenantAssetsInfoDao
|
|
if (Objects.isNull(course.getTenantId())) {
|
|
if (Objects.isNull(course.getTenantId())) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- //获取总人数 ,+1是算上老师
|
|
|
|
- Integer totalPeople = course.getStudentNum() + 1;
|
|
|
|
|
|
+ //获取总人数 ,+1算上老师
|
|
|
|
+ String totalPeople = getTotalPeople(course.getType().getCode(), course.getId().intValue());
|
|
//获取云教室规则 String人数-BigDecimal每分钟扣费标准
|
|
//获取云教室规则 String人数-BigDecimal每分钟扣费标准
|
|
Map<String, BigDecimal> rule = getRule(course.getTenantId());
|
|
Map<String, BigDecimal> rule = getRule(course.getTenantId());
|
|
if (Objects.isNull(rule)) {
|
|
if (Objects.isNull(rule)) {
|
|
@@ -117,7 +122,7 @@ public class TenantAssetsInfoServiceImpl extends ServiceImpl<TenantAssetsInfoDao
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
//获取每分钟扣费标准
|
|
//获取每分钟扣费标准
|
|
- BigDecimal minutePrice = rule.get(String.valueOf(totalPeople));
|
|
|
|
|
|
+ BigDecimal minutePrice = rule.get(totalPeople);
|
|
if (Objects.isNull(minutePrice)) {
|
|
if (Objects.isNull(minutePrice)) {
|
|
//没有这个扣费标准,写未扣费流水记录
|
|
//没有这个扣费标准,写未扣费流水记录
|
|
insertRecord(course, BigDecimal.ZERO, 3);
|
|
insertRecord(course, BigDecimal.ZERO, 3);
|
|
@@ -159,9 +164,21 @@ public class TenantAssetsInfoServiceImpl extends ServiceImpl<TenantAssetsInfoDao
|
|
}
|
|
}
|
|
return dto.stream()
|
|
return dto.stream()
|
|
.filter(c -> c.getTeachMode().equals(TeachModeEnum.ONLINE))
|
|
.filter(c -> c.getTeachMode().equals(TeachModeEnum.ONLINE))
|
|
|
|
+ .filter(c -> VipPredicate.or(PracticePredicate).test(c.getType().getCode()))
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private String getTotalPeople(String type, Integer courseId) {
|
|
|
|
+ String result = "2";
|
|
|
|
+ if (VipPredicate.test(type)) {
|
|
|
|
+ result = Optional.ofNullable(courseId)
|
|
|
|
+ .map(baseMapper::queryPeopleNum)
|
|
|
|
+ .map(String::valueOf)
|
|
|
|
+ .orElse(result);
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
private Map<String, BigDecimal> getRule(Integer tenantId) {
|
|
private Map<String, BigDecimal> getRule(Integer tenantId) {
|
|
//查询云教室扣费标准
|
|
//查询云教室扣费标准
|
|
TenantConfig tenantConfig = tenantConfigService.getOne(new WrapperUtil<TenantConfig>()
|
|
TenantConfig tenantConfig = tenantConfigService.getOne(new WrapperUtil<TenantConfig>()
|