|
@@ -685,12 +685,8 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
|
|
|
}
|
|
|
return sum;
|
|
|
})));
|
|
|
- //获取学员付费排课资格
|
|
|
- List<ActivityUserMapper> activityUserMappers = activityUserMapperDao.findByStudents(studentIdList,categoryId,classMinutes);
|
|
|
- //获取学员赠送排课资格
|
|
|
- List<ActivityUserMapper> freeActivityUserMappers = activityUserMapperDao.findByStudents1(studentIdList,categoryId,classMinutes);
|
|
|
//消耗排课资格(获取被使用的排课资格)
|
|
|
- return this.use(activityUserMappers, freeActivityUserMappers, courseNum,groupId,studentIdList);
|
|
|
+ return this.use(categoryId,classMinutes, courseNum,groupId,studentIdList);
|
|
|
}
|
|
|
|
|
|
private void getStudentPayment(Integer userId,
|
|
@@ -730,81 +726,86 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<CourseScheduleStudentPayment> use(List<ActivityUserMapper> activityUserMappers,
|
|
|
- List<ActivityUserMapper> freeActivityUserMappers,
|
|
|
+ public List<CourseScheduleStudentPayment> use(Integer categoryId,Integer classMinutes,
|
|
|
int courseNum,
|
|
|
Long groupId,List<Integer> studentIdList) {
|
|
|
- Map<Integer, List<ActivityUserMapper>> collect = activityUserMappers.stream().collect(Collectors.groupingBy(ActivityUserMapper::getUserId));
|
|
|
Map<Integer,Integer> subCourseMap = new HashMap<>();
|
|
|
studentIdList.stream().forEach(e-> subCourseMap.put(e,courseNum));
|
|
|
List<CourseScheduleStudentPayment> courseScheduleStudentPayments = new ArrayList<>();
|
|
|
- List<ActivityUserMapper> useActivityUserMappers = new ArrayList<>();
|
|
|
- one:for (Integer integer : collect.keySet()) {
|
|
|
- Integer subCourseNum = courseNum;
|
|
|
- List<ActivityUserMapper> activityUserMapperList = collect.get(integer);
|
|
|
- for (ActivityUserMapper activityUserMapper : activityUserMapperList) {
|
|
|
- if(subCourseNum == 0){
|
|
|
- continue one;
|
|
|
- }
|
|
|
- useActivityUserMappers.add(activityUserMapper);
|
|
|
- //区分vip还是网管
|
|
|
- this.modifyGroupId(activityUserMapper,groupId);
|
|
|
- int num = activityUserMapper.getSubCourseNum();
|
|
|
- //剩余课次不足
|
|
|
- if(num <= subCourseNum){
|
|
|
- subCourseNum = subCourseNum - num;
|
|
|
- subCourseMap.put(integer, subCourseNum);
|
|
|
- activityUserMapper.setSubCourseNum(0);
|
|
|
- //生成学员课程支付记录
|
|
|
- this.getStudentPayment(integer,activityUserMapper.getSubNoCoursePrice(),num,courseScheduleStudentPayments,activityUserMapper.getId());
|
|
|
- activityUserMapper.setCurrentCoursePrice(activityUserMapper.getSubNoCoursePrice());
|
|
|
- activityUserMapper.setSubNoCoursePrice(BigDecimal.ZERO);
|
|
|
- }else {
|
|
|
- subCourseMap.put(integer, 0);
|
|
|
- activityUserMapper.setSubCourseNum(num - subCourseNum);
|
|
|
- //单课价值
|
|
|
- BigDecimal singlePrice = activityUserMapper.getActualPrice().divide(new BigDecimal(activityUserMapper.getTotalCourseNum()), RoundingMode.DOWN);
|
|
|
- //消耗的课程总价值
|
|
|
- BigDecimal divide = singlePrice.multiply(new BigDecimal(subCourseNum));
|
|
|
- activityUserMapper.setSubNoCoursePrice(activityUserMapper.getSubNoCoursePrice().subtract(divide));
|
|
|
- activityUserMapper.setCurrentCoursePrice(divide);
|
|
|
- this.getStudentPayment(integer,subCourseNum,singlePrice,courseScheduleStudentPayments,activityUserMapper.getId());
|
|
|
- //剩余课次充足
|
|
|
- continue one;
|
|
|
+ //获取学员付费排课资格
|
|
|
+ List<ActivityUserMapper> activityUserMappers = activityUserMapperDao.findByStudents(studentIdList,categoryId,classMinutes);
|
|
|
+ if(CollectionUtils.isNotEmpty(activityUserMappers)){
|
|
|
+ Map<Integer, List<ActivityUserMapper>> collect = activityUserMappers.stream().collect(Collectors.groupingBy(ActivityUserMapper::getUserId));
|
|
|
+ one:for (Integer integer : collect.keySet()) {
|
|
|
+ Integer subCourseNum = courseNum;
|
|
|
+ List<ActivityUserMapper> activityUserMapperList = collect.get(integer);
|
|
|
+ for (ActivityUserMapper activityUserMapper : activityUserMapperList) {
|
|
|
+ if(subCourseNum == 0){
|
|
|
+ continue one;
|
|
|
+ }
|
|
|
+ //区分vip还是网管
|
|
|
+ this.modifyGroupId(activityUserMapper,groupId);
|
|
|
+ int num = activityUserMapper.getSubCourseNum();
|
|
|
+ //剩余课次不足
|
|
|
+ if(num <= subCourseNum){
|
|
|
+ subCourseNum = subCourseNum - num;
|
|
|
+ subCourseMap.put(integer, subCourseNum);
|
|
|
+ activityUserMapper.setSubCourseNum(0);
|
|
|
+ //生成学员课程支付记录
|
|
|
+ this.getStudentPayment(integer,activityUserMapper.getSubNoCoursePrice(),num,courseScheduleStudentPayments,activityUserMapper.getId());
|
|
|
+ activityUserMapper.setCurrentCoursePrice(activityUserMapper.getSubNoCoursePrice());
|
|
|
+ activityUserMapper.setSubNoCoursePrice(BigDecimal.ZERO);
|
|
|
+ }else {
|
|
|
+ subCourseMap.put(integer, 0);
|
|
|
+ activityUserMapper.setSubCourseNum(num - subCourseNum);
|
|
|
+ //单课价值
|
|
|
+ BigDecimal singlePrice = activityUserMapper.getActualPrice().divide(new BigDecimal(activityUserMapper.getTotalCourseNum()), RoundingMode.DOWN);
|
|
|
+ //消耗的课程总价值
|
|
|
+ BigDecimal divide = singlePrice.multiply(new BigDecimal(subCourseNum));
|
|
|
+ activityUserMapper.setSubNoCoursePrice(activityUserMapper.getSubNoCoursePrice().subtract(divide));
|
|
|
+ activityUserMapper.setCurrentCoursePrice(divide);
|
|
|
+ this.getStudentPayment(integer,subCourseNum,singlePrice,courseScheduleStudentPayments,activityUserMapper.getId());
|
|
|
+ //剩余课次充足
|
|
|
+ continue one;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ activityUserMapperDao.batchUpdate(activityUserMappers);
|
|
|
}
|
|
|
- Map<Integer, List<ActivityUserMapper>> collect1 = freeActivityUserMappers.stream().collect(Collectors.groupingBy(ActivityUserMapper::getUserId));
|
|
|
- one:for (Integer integer : subCourseMap.keySet()) {
|
|
|
- Integer subCourseNum = subCourseMap.get(integer);
|
|
|
- if(subCourseNum == 0){
|
|
|
- continue;
|
|
|
- }
|
|
|
- List<ActivityUserMapper> activityUserMapperList = collect1.get(integer);
|
|
|
- for (ActivityUserMapper activityUserMapper : activityUserMapperList) {
|
|
|
+ //获取学员赠送排课资格
|
|
|
+ List<ActivityUserMapper> freeActivityUserMappers = activityUserMapperDao.findByStudents1(studentIdList,categoryId,classMinutes);
|
|
|
+ if(CollectionUtils.isNotEmpty(freeActivityUserMappers)){
|
|
|
+ Map<Integer, List<ActivityUserMapper>> collect1 = freeActivityUserMappers.stream().collect(Collectors.groupingBy(ActivityUserMapper::getUserId));
|
|
|
+ one:for (Integer integer : subCourseMap.keySet()) {
|
|
|
+ Integer subCourseNum = subCourseMap.get(integer);
|
|
|
if(subCourseNum == 0){
|
|
|
- continue one;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<ActivityUserMapper> activityUserMapperList = collect1.get(integer);
|
|
|
+ for (ActivityUserMapper activityUserMapper : activityUserMapperList) {
|
|
|
+ if(subCourseNum == 0){
|
|
|
+ continue one;
|
|
|
+ }
|
|
|
+ //区分vip还是网管
|
|
|
+ this.modifyGiveGroupId(activityUserMapper,groupId);
|
|
|
+ int num = activityUserMapper.getSubGiveCourseNum();
|
|
|
+ //剩余课次不足
|
|
|
+ if(num <= subCourseNum){
|
|
|
+ activityUserMapper.setSubGiveCourseNum(0);
|
|
|
+ subCourseNum = subCourseNum - num;
|
|
|
+ this.getStudentPayment(integer,num,BigDecimal.ZERO,courseScheduleStudentPayments,activityUserMapper.getId());
|
|
|
+ }else {
|
|
|
+ activityUserMapper.setSubGiveCourseNum(num - subCourseNum);
|
|
|
+ this.getStudentPayment(integer,subCourseNum,BigDecimal.ZERO,courseScheduleStudentPayments,activityUserMapper.getId());
|
|
|
+ continue one;
|
|
|
+ }
|
|
|
}
|
|
|
- useActivityUserMappers.add(activityUserMapper);
|
|
|
- //区分vip还是网管
|
|
|
- this.modifyGiveGroupId(activityUserMapper,groupId);
|
|
|
- int num = activityUserMapper.getSubGiveCourseNum();
|
|
|
- //剩余课次不足
|
|
|
- if(num <= subCourseNum){
|
|
|
- activityUserMapper.setSubGiveCourseNum(0);
|
|
|
- subCourseNum = subCourseNum - num;
|
|
|
- this.getStudentPayment(integer,num,BigDecimal.ZERO,courseScheduleStudentPayments,activityUserMapper.getId());
|
|
|
- }else {
|
|
|
- activityUserMapper.setSubGiveCourseNum(num - subCourseNum);
|
|
|
- this.getStudentPayment(integer,subCourseNum,BigDecimal.ZERO,courseScheduleStudentPayments,activityUserMapper.getId());
|
|
|
- continue one;
|
|
|
+ if (subCourseNum > 0){
|
|
|
+ throw new BizException("所选部分学员排课资格不足,请重新选择");
|
|
|
}
|
|
|
}
|
|
|
- if (subCourseNum > 0){
|
|
|
- throw new BizException("所选部分学员排课资格不足,请重新选择");
|
|
|
- }
|
|
|
+ activityUserMapperDao.batchUpdate(freeActivityUserMappers);
|
|
|
}
|
|
|
- activityUserMapperDao.batchUpdate(useActivityUserMappers);
|
|
|
return courseScheduleStudentPayments;
|
|
|
}
|
|
|
|
|
@@ -1085,18 +1086,7 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
|
|
|
public void use(List<ActivityUserMapper> activityUserMappers, List<ActivityUserMapper> freeActivityUserMappers,
|
|
|
BaseMapDto<Integer,Integer> indexDto,Long groupId,CourseScheduleStudentPayment courseScheduleStudentPayment) {
|
|
|
//扣除排课资格
|
|
|
- if (!org.springframework.util.CollectionUtils.isEmpty(freeActivityUserMappers) && freeActivityUserMappers.size() > indexDto.getKey()) {
|
|
|
- ActivityUserMapper activityUserMapper = freeActivityUserMappers.get(indexDto.getKey());
|
|
|
- Integer subCourseNum = activityUserMapper.getSubGiveCourseNum();
|
|
|
- if(subCourseNum == 1){
|
|
|
- indexDto.setKey(indexDto.getKey() + 1);
|
|
|
- }
|
|
|
- activityUserMapper.setSubGiveCourseNum(subCourseNum - 1);
|
|
|
- this.modifyGiveGroupId(activityUserMapper,groupId);
|
|
|
- courseScheduleStudentPayment.setActivityUserMapperId(activityUserMapper.getId());
|
|
|
- courseScheduleStudentPayment.setActualPrice(ZERO);
|
|
|
- courseScheduleStudentPayment.setExpectPrice(ZERO);
|
|
|
- }else if(!org.springframework.util.CollectionUtils.isEmpty(activityUserMappers) && activityUserMappers.size() > indexDto.getValue()){
|
|
|
+ if(!org.springframework.util.CollectionUtils.isEmpty(activityUserMappers) && activityUserMappers.size() > indexDto.getValue()){
|
|
|
ActivityUserMapper activityUserMapper = activityUserMappers.get(indexDto.getValue());
|
|
|
BigDecimal consumerPrice = ZERO;
|
|
|
Integer subCourseNum = activityUserMapper.getSubCourseNum();
|
|
@@ -1116,6 +1106,17 @@ public class ActivityUserMapperServiceImpl extends BaseServiceImpl<Integer, Acti
|
|
|
courseScheduleStudentPayment.setActivityUserMapperId(activityUserMapper.getId());
|
|
|
courseScheduleStudentPayment.setActualPrice(consumerPrice);
|
|
|
courseScheduleStudentPayment.setExpectPrice(consumerPrice);
|
|
|
+ }else if (!org.springframework.util.CollectionUtils.isEmpty(freeActivityUserMappers) && freeActivityUserMappers.size() > indexDto.getKey()) {
|
|
|
+ ActivityUserMapper activityUserMapper = freeActivityUserMappers.get(indexDto.getKey());
|
|
|
+ Integer subCourseNum = activityUserMapper.getSubGiveCourseNum();
|
|
|
+ if(subCourseNum == 1){
|
|
|
+ indexDto.setKey(indexDto.getKey() + 1);
|
|
|
+ }
|
|
|
+ activityUserMapper.setSubGiveCourseNum(subCourseNum - 1);
|
|
|
+ this.modifyGiveGroupId(activityUserMapper,groupId);
|
|
|
+ courseScheduleStudentPayment.setActivityUserMapperId(activityUserMapper.getId());
|
|
|
+ courseScheduleStudentPayment.setActualPrice(ZERO);
|
|
|
+ courseScheduleStudentPayment.setExpectPrice(ZERO);
|
|
|
}else {
|
|
|
throw new BizException("所选学员排课资格不足");
|
|
|
}
|