|  | @@ -24,6 +24,7 @@ import java.math.MathContext;
 | 
	
		
			
				|  |  |  import java.math.RoundingMode;
 | 
	
		
			
				|  |  |  import java.text.ParseException;
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
		
			
				|  |  | +import java.util.function.Predicate;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
	
		
			
				|  | @@ -42,6 +43,10 @@ public class TenantAssetsInfoServiceImpl extends ServiceImpl<TenantAssetsInfoDao
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      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 -> {
 | 
	
		
			
				|  |  |              log.info("manualDeductAmount >>>>>> {}", record);
 | 
	
		
			
				|  |  | -            //获取总人数 ,+1是算上老师
 | 
	
		
			
				|  |  | -            Integer totalPeople = record.getStudentNum() + 1;
 | 
	
		
			
				|  |  | +            //获取总人数 (算上老师
 | 
	
		
			
				|  |  | +            String totalPeople = getTotalPeople(record.getType(), record.getCourseId());
 | 
	
		
			
				|  |  |              //获取云教室规则  String人数-BigDecimal每分钟扣费标准
 | 
	
		
			
				|  |  |              Map<String, BigDecimal> rule = getRule(record.getTenantId());
 | 
	
		
			
				|  |  |              if (Objects.isNull(rule)) {
 | 
	
	
		
			
				|  | @@ -107,8 +112,8 @@ public class TenantAssetsInfoServiceImpl extends ServiceImpl<TenantAssetsInfoDao
 | 
	
		
			
				|  |  |              if (Objects.isNull(course.getTenantId())) {
 | 
	
		
			
				|  |  |                  return;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            //获取总人数 ,+1是算上老师
 | 
	
		
			
				|  |  | -            Integer totalPeople = course.getStudentNum() + 1;
 | 
	
		
			
				|  |  | +            //获取总人数 ,+1算上老师
 | 
	
		
			
				|  |  | +            String totalPeople = getTotalPeople(course.getType().getCode(), course.getId().intValue());
 | 
	
		
			
				|  |  |              //获取云教室规则  String人数-BigDecimal每分钟扣费标准
 | 
	
		
			
				|  |  |              Map<String, BigDecimal> rule = getRule(course.getTenantId());
 | 
	
		
			
				|  |  |              if (Objects.isNull(rule)) {
 | 
	
	
		
			
				|  | @@ -117,7 +122,7 @@ public class TenantAssetsInfoServiceImpl extends ServiceImpl<TenantAssetsInfoDao
 | 
	
		
			
				|  |  |                  return;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              //获取每分钟扣费标准
 | 
	
		
			
				|  |  | -            BigDecimal minutePrice = rule.get(String.valueOf(totalPeople));
 | 
	
		
			
				|  |  | +            BigDecimal minutePrice = rule.get(totalPeople);
 | 
	
		
			
				|  |  |              if (Objects.isNull(minutePrice)) {
 | 
	
		
			
				|  |  |                  //没有这个扣费标准,写未扣费流水记录
 | 
	
		
			
				|  |  |                  insertRecord(course, BigDecimal.ZERO, 3);
 | 
	
	
		
			
				|  | @@ -159,9 +164,21 @@ public class TenantAssetsInfoServiceImpl extends ServiceImpl<TenantAssetsInfoDao
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return dto.stream()
 | 
	
		
			
				|  |  |                  .filter(c -> c.getTeachMode().equals(TeachModeEnum.ONLINE))
 | 
	
		
			
				|  |  | +                .filter(c -> VipPredicate.or(PracticePredicate).test(c.getType().getCode()))
 | 
	
		
			
				|  |  |                  .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) {
 | 
	
		
			
				|  |  |          //查询云教室扣费标准
 | 
	
		
			
				|  |  |          TenantConfig tenantConfig = tenantConfigService.getOne(new WrapperUtil<TenantConfig>()
 |