|
@@ -95,10 +95,19 @@ import com.ym.mec.common.page.PageInfo;
|
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
import com.ym.mec.im.ImFeignService;
|
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> implements VipGroupService {
|
|
|
-
|
|
|
+
|
|
|
@Autowired
|
|
|
private VipGroupDao vipGroupDao;
|
|
|
@Autowired
|
|
@@ -119,37 +128,39 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
private VipGroupActivityDao vipGroupActivityDao;
|
|
|
@Autowired
|
|
|
private VipGroupCategoryDao vipGroupCategoryDao;
|
|
|
- @Autowired
|
|
|
- private SysUserFeignService sysUserFeignService;
|
|
|
- @Autowired
|
|
|
- private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
|
|
|
- @Autowired
|
|
|
- private StudentPaymentOrderDao studentPaymentOrderDao;
|
|
|
- @Autowired
|
|
|
- private StudentVipGroupPaymentDao studentVipGroupPaymentDao;
|
|
|
- @Autowired
|
|
|
+ @Autowired
|
|
|
+ private SysUserFeignService sysUserFeignService;
|
|
|
+ @Autowired
|
|
|
+ private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
|
|
|
+ @Autowired
|
|
|
+ private StudentPaymentOrderDao studentPaymentOrderDao;
|
|
|
+ @Autowired
|
|
|
+ private StudentVipGroupPaymentDao studentVipGroupPaymentDao;
|
|
|
+ @Autowired
|
|
|
private StudentApplyRefundsDao studentApplyRefundsDao;
|
|
|
-
|
|
|
+
|
|
|
@Autowired
|
|
|
private SysUserCashAccountService sysUserCashAccountService;
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Autowired
|
|
|
private SysUserCashAccountDetailDao sysUserCashAccountDetailDao;
|
|
|
- @Autowired
|
|
|
+ @Autowired
|
|
|
private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao;
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Autowired
|
|
|
private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
|
|
|
- @Autowired
|
|
|
+ @Autowired
|
|
|
private ImFeignService imFeignService;
|
|
|
- @Autowired
|
|
|
+ @Autowired
|
|
|
private SubjectDao subjectDao;
|
|
|
- @Autowired
|
|
|
+ @Autowired
|
|
|
private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
|
|
|
- @Autowired
|
|
|
+ @Autowired
|
|
|
private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
|
|
|
@Autowired
|
|
|
private PayService payService;
|
|
|
+ @Autowired
|
|
|
+ private ClassGroupStudentMapperDao classGroupStudentMapperDao;
|
|
|
|
|
|
@Autowired
|
|
|
private CourseScheduleRewardsRulesService courseScheduleRewardsRulesService;
|
|
@@ -165,101 +176,99 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
@Override
|
|
|
public void createVipGroup(VipGroupApplyDto vipGroup) {
|
|
|
|
|
|
- if (Objects.isNull(vipGroup.getVipGroupApplyBaseInfo().getUserId())) {
|
|
|
+ if (Objects.isNull(vipGroup.getVipGroupApplyBaseInfo().getUserId())){
|
|
|
throw new BizException("请选择指导老师");
|
|
|
}
|
|
|
|
|
|
- if (vipGroup.getCourseSchedules().size() != (vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum() + vipGroup.getVipGroupApplyBaseInfo()
|
|
|
- .getOnlineClassesNum())) {
|
|
|
- throw new BizException("课时总数不匹配!");
|
|
|
- }
|
|
|
+ if(vipGroup.getCourseSchedules().size()!=(vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum()+vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum())){
|
|
|
+ throw new BizException("课时总数不匹配!");
|
|
|
+ }
|
|
|
|
|
|
- Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroup = vipGroup.getCourseSchedules().stream()
|
|
|
- .collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
|
|
|
+ Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroup = vipGroup.getCourseSchedules().stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
|
|
|
|
|
|
- if ((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE)) && vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum() != 0)
|
|
|
- || (!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE)) && (courseScheduleGroup.get(TeachModeEnum.OFFLINE).size() < vipGroup
|
|
|
- .getVipGroupApplyBaseInfo().getOfflineClassesNum()))) {
|
|
|
- throw new BizException("线下课课时数量安排有误!");
|
|
|
- }
|
|
|
- if ((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE)) && vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum() != 0)
|
|
|
- || (!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE)) && (courseScheduleGroup.get(TeachModeEnum.ONLINE).size() < vipGroup
|
|
|
- .getVipGroupApplyBaseInfo().getOnlineClassesNum()))) {
|
|
|
- throw new BizException("线上课课时数量安排有误!");
|
|
|
- }
|
|
|
+ if((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE))&&vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum()!=0)
|
|
|
+ ||(!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE))&&(courseScheduleGroup.get(TeachModeEnum.OFFLINE).size()<vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum()))){
|
|
|
+ throw new BizException("线下课课时数量安排有误!");
|
|
|
+ }
|
|
|
+ if((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE))&&vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum()!=0)
|
|
|
+ ||(!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE))&&(courseScheduleGroup.get(TeachModeEnum.ONLINE).size()<vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum()))){
|
|
|
+ throw new BizException("线上课课时数量安排有误!");
|
|
|
+ }
|
|
|
|
|
|
- // 获取活动信息
|
|
|
- VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupActivityId().intValue());
|
|
|
+ //获取活动信息
|
|
|
+ VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupActivityId().intValue());
|
|
|
|
|
|
- // 生成vip课信息
|
|
|
- VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto = vipGroup.getVipGroupApplyBaseInfo();
|
|
|
+ //生成vip课信息
|
|
|
+ VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto=vipGroup.getVipGroupApplyBaseInfo();
|
|
|
List<String> bySubIds = subjectDao.findBySubIds(vipGroupApplyBaseInfoDto.getSubjectIdList());
|
|
|
- StringBuffer className = new StringBuffer(StringUtils.join(bySubIds, ","));
|
|
|
+ StringBuffer className=new StringBuffer(StringUtils.join(bySubIds,","));
|
|
|
className.append("•");
|
|
|
className.append(vipGroupApplyBaseInfoDto.getName());
|
|
|
vipGroupApplyBaseInfoDto.setName(className.toString());
|
|
|
- vipGroupApplyBaseInfoDto.setTotalPrice(countVipGroupPredictFee(vipGroupApplyBaseInfoDto, vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice(),
|
|
|
+ vipGroupApplyBaseInfoDto.setTotalPrice(countVipGroupPredictFee(vipGroupApplyBaseInfoDto,
|
|
|
+ vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice(),
|
|
|
vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice()).get("totalPrice"));
|
|
|
vipGroupApplyBaseInfoDto.setStatus(VipGroupStatusEnum.APPLYING);
|
|
|
vipGroupDao.insert(vipGroupApplyBaseInfoDto);
|
|
|
|
|
|
- // 获取vip课类型信息
|
|
|
+ //获取vip课类型信息
|
|
|
VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupCategoryId().intValue());
|
|
|
|
|
|
- // 创建班级信息
|
|
|
- ClassGroup classGroup = new ClassGroup();
|
|
|
+ //创建班级信息
|
|
|
+ ClassGroup classGroup=new ClassGroup();
|
|
|
classGroup.setSubjectIdList(vipGroupApplyBaseInfoDto.getSubjectIdList());
|
|
|
classGroup.setExpectStudentNum(vipGroupCategory.getStudentNum());
|
|
|
classGroup.setName(vipGroupApplyBaseInfoDto.getName());
|
|
|
classGroup.setExpectStudentNum(vipGroupApplyBaseInfoDto.getExpectStudentNum());
|
|
|
- classGroup.setTotalClassTimes(vipGroupApplyBaseInfoDto.getOnlineClassesNum() + vipGroupApplyBaseInfoDto.getOfflineClassesNum());
|
|
|
+ classGroup.setTotalClassTimes(vipGroupApplyBaseInfoDto.getOnlineClassesNum()+vipGroupApplyBaseInfoDto.getOfflineClassesNum());
|
|
|
classGroup.setType(ClassGroupTypeEnum.VIP);
|
|
|
classGroup.setDelFlag(YesOrNoEnum.NO);
|
|
|
classGroupDao.insert(classGroup);
|
|
|
|
|
|
- // 创建vip课班级关联记录
|
|
|
- VipGroupClassGroupMapper vipGroupClassGroupMapper = new VipGroupClassGroupMapper();
|
|
|
+ //创建vip课班级关联记录
|
|
|
+ VipGroupClassGroupMapper vipGroupClassGroupMapper=new VipGroupClassGroupMapper();
|
|
|
vipGroupClassGroupMapper.setVipGroupId(vipGroupApplyBaseInfoDto.getId());
|
|
|
vipGroupClassGroupMapper.setClassGroupId(classGroup.getId());
|
|
|
vipGroupClassGroupMapperDao.insert(vipGroupClassGroupMapper);
|
|
|
|
|
|
- // 创建融云班级群
|
|
|
+ //创建融云班级群
|
|
|
// 指导老师加入群组
|
|
|
- ImGroupMember[] imGroupMembers = { new ImGroupMember(vipGroup.getVipGroupApplyBaseInfo().getUserId().toString()) };
|
|
|
+ ImGroupMember[] imGroupMembers = { new ImGroupMember(vipGroup.getVipGroupApplyBaseInfo().getUserId().toString())};
|
|
|
// 创建群组
|
|
|
imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
|
|
|
|
|
|
- // 创建班级老师关联记录
|
|
|
- ClassGroupTeacherMapper classGroupTeacherMapper = new ClassGroupTeacherMapper();
|
|
|
+ //创建班级老师关联记录
|
|
|
+ ClassGroupTeacherMapper classGroupTeacherMapper=new ClassGroupTeacherMapper();
|
|
|
classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP);
|
|
|
classGroupTeacherMapper.setUserId(vipGroupApplyBaseInfoDto.getUserId());
|
|
|
classGroupTeacherMapperDao.insert(classGroupTeacherMapper);
|
|
|
|
|
|
- // 创建班级与老师课酬记录
|
|
|
- ClassGroupTeacherSalary classGroupTeacherSalary = new ClassGroupTeacherSalary();
|
|
|
+ //创建班级与老师课酬记录
|
|
|
+ ClassGroupTeacherSalary classGroupTeacherSalary=new ClassGroupTeacherSalary();
|
|
|
classGroupTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
|
|
|
classGroupTeacherSalary.setUserId(vipGroupApplyBaseInfoDto.getUserId());
|
|
|
classGroupTeacherSalary.setSalary(vipGroupApplyBaseInfoDto.getOfflineTeacherSalary());
|
|
|
classGroupTeacherSalary.setOnlineClassesSalary(vipGroupApplyBaseInfoDto.getOnlineTeacherSalary());
|
|
|
classGroupTeacherSalaryDao.insert(classGroupTeacherSalary);
|
|
|
|
|
|
- // 课程信息调整
|
|
|
- vipGroup.getCourseSchedules().forEach(
|
|
|
- courseSchedule -> {
|
|
|
- if (courseSchedule.getEndClassTime().after(vipGroupActivity.getCoursesEndTime())
|
|
|
- && courseSchedule.getStartClassTime().before(vipGroupActivity.getCoursesStartTime())) {
|
|
|
- throw new BizException("课时安排时间超出范围!");
|
|
|
- }
|
|
|
- courseSchedule.setTeacherId(vipGroupApplyBaseInfoDto.getUserId().longValue());
|
|
|
- courseSchedule.setStatus(CourseStatusEnum.NOT_START);
|
|
|
- courseSchedule.setType(CourseSchedule.CourseScheduleType.VIP);
|
|
|
- courseSchedule.setClassGroupId(classGroup.getId());
|
|
|
- });
|
|
|
+ //课程信息调整
|
|
|
+ vipGroup.getCourseSchedules().forEach(courseSchedule -> {
|
|
|
+ if(courseSchedule.getEndClassTime().after(vipGroupActivity.getCoursesEndTime())
|
|
|
+ &&courseSchedule.getStartClassTime().before(vipGroupActivity.getCoursesStartTime())){
|
|
|
+ throw new BizException("课时安排时间超出范围!");
|
|
|
+ }
|
|
|
+ courseSchedule.setTeacherId(vipGroupApplyBaseInfoDto.getUserId().longValue());
|
|
|
+ courseSchedule.setStatus(CourseStatusEnum.NOT_START);
|
|
|
+ courseSchedule.setType(CourseSchedule.CourseScheduleType.VIP);
|
|
|
+ courseSchedule.setClassGroupId(classGroup.getId());
|
|
|
+ });
|
|
|
courseScheduleService.batchAddCourseSchedule(vipGroup.getCourseSchedules());
|
|
|
|
|
|
- // 创建老师单节课课酬信息
|
|
|
- courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(vipGroupApplyBaseInfoDto, vipGroup.getCourseSchedules(),
|
|
|
- vipGroupApplyBaseInfoDto.getOnlineTeacherSalary(), vipGroupApplyBaseInfoDto.getOfflineTeacherSalary());
|
|
|
+ //创建老师单节课课酬信息
|
|
|
+ courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(vipGroupApplyBaseInfoDto,
|
|
|
+ vipGroup.getCourseSchedules(),
|
|
|
+ vipGroupApplyBaseInfoDto.getOnlineTeacherSalary(),
|
|
|
+ vipGroupApplyBaseInfoDto.getOfflineTeacherSalary());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -306,7 +315,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
|
|
|
@Override
|
|
|
public Map<String, Object> findVipGroupTeachingRecord(VipGroupTeachingRecordQueryInfo queryInfo) {
|
|
|
- if (Objects.isNull(queryInfo.getVipGroupId())) {
|
|
|
+ if(Objects.isNull(queryInfo.getVipGroupId())){
|
|
|
throw new BizException("请指定vip课程!");
|
|
|
}
|
|
|
PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
@@ -327,18 +336,18 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
TeachingRecordBaseInfo classTimes = vipGroupDao.getClassTimes(queryInfo.getVipGroupId());
|
|
|
classTimes.setIsSalaryNum(vipGroupDao.countIsSalaryNum(queryInfo.getVipGroupId()));
|
|
|
classTimes.setComplaintsNum(vipGroupDao.countComplaintsNum(queryInfo.getVipGroupId()));
|
|
|
- Map<String, Object> result = new HashMap<>();
|
|
|
- result.put("pageInfo", pageInfo);
|
|
|
- result.put("baseInfo", classTimes);
|
|
|
+ Map<String,Object> result=new HashMap<>();
|
|
|
+ result.put("pageInfo",pageInfo);
|
|
|
+ result.put("baseInfo",classTimes);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public TeachingRecordBaseInfo findTeachingRecordBaseInfo(Long vipGroupId) {
|
|
|
- TeachingRecordBaseInfo classTimes = vipGroupDao.getClassTimes(vipGroupId);
|
|
|
- classTimes.setIsSalaryNum(vipGroupDao.countIsSalaryNum(vipGroupId));
|
|
|
- classTimes.setComplaintsNum(vipGroupDao.countComplaintsNum(vipGroupId));
|
|
|
- return classTimes;
|
|
|
+ TeachingRecordBaseInfo classTimes = vipGroupDao.getClassTimes(vipGroupId);
|
|
|
+ classTimes.setIsSalaryNum(vipGroupDao.countIsSalaryNum(vipGroupId));
|
|
|
+ classTimes.setComplaintsNum(vipGroupDao.countComplaintsNum(vipGroupId));
|
|
|
+ return classTimes;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -363,11 +372,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
|
|
|
@Override
|
|
|
public VipGroupManageDetailDto getVipGroupDetail(Long vipGroupId) {
|
|
|
- if (Objects.isNull(vipGroupId)) {
|
|
|
+ if(Objects.isNull(vipGroupId)){
|
|
|
throw new BizException("请指定vip课程");
|
|
|
}
|
|
|
VipGroupManageDetailDto vipGroupBaseInfo = vipGroupDao.getVipGroupBaseInfo(vipGroupId);
|
|
|
- vipGroupBaseInfo.setSubjectName(StringUtils.join(subjectDao.findBySubIds(vipGroupBaseInfo.getSubjectIdList()), ","));
|
|
|
+ vipGroupBaseInfo.setSubjectName(StringUtils.join(subjectDao.findBySubIds(vipGroupBaseInfo.getSubjectIdList()),","));
|
|
|
return vipGroupBaseInfo;
|
|
|
}
|
|
|
|
|
@@ -393,167 +402,162 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
|
|
|
@Override
|
|
|
public StudentVipGroupDetailDto getVipGroupShowDetail(Long vipGroupId) {
|
|
|
- if (Objects.isNull(vipGroupId)) {
|
|
|
+ if(Objects.isNull(vipGroupId)){
|
|
|
throw new BizException("请指定vip课程");
|
|
|
}
|
|
|
- StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(vipGroupId);
|
|
|
- vipGroupDetail.setNumberOfClasses(vipGroupDao.countTeacherVipGroups(vipGroupDetail.getTeacherId().longValue()));
|
|
|
- return vipGroupDetail;
|
|
|
+ StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(vipGroupId);
|
|
|
+ vipGroupDetail.setNumberOfClasses(vipGroupDao.countTeacherVipGroups(vipGroupDetail.getTeacherId().longValue()));
|
|
|
+ return vipGroupDetail;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public VipGroupCostCountDto vipGroupCostCount(VipGroupCostCountParamsDto vipGroupCostCountParamsDto) {
|
|
|
- SysUser user = sysUserFeignService.queryUserInfo();
|
|
|
- TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(user.getId().longValue(),
|
|
|
- vipGroupCostCountParamsDto.getVipGroupCategoryId());
|
|
|
- VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.get(vipGroupCostCountParamsDto
|
|
|
- .getVipGroupDefaultClassesUnitPriceId().intValue());
|
|
|
+ SysUser user = sysUserFeignService.queryUserInfo();
|
|
|
+ TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(user.getId().longValue(), vipGroupCostCountParamsDto.getVipGroupCategoryId());
|
|
|
+ VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.get(vipGroupCostCountParamsDto.getVipGroupDefaultClassesUnitPriceId().intValue());
|
|
|
VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroupCostCountParamsDto.getVipGroupActivityId().intValue());
|
|
|
- VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(),
|
|
|
- VipGroupSalarySettlementDto.class);
|
|
|
- BigDecimal offlineClassNum = new BigDecimal(vipGroupCostCountParamsDto.getOfflineClassesNum());
|
|
|
- BigDecimal onlineClassNum = new BigDecimal(vipGroupCostCountParamsDto.getOnlineClassesNum());
|
|
|
-
|
|
|
- // 教师课酬
|
|
|
- BigDecimal teacherOnlineSalary, teacherOfflineSalary, teacherSalary;
|
|
|
- switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()) {
|
|
|
- case TEACHER_DEFAULT:
|
|
|
- teacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(onlineClassNum);
|
|
|
- break;
|
|
|
- case RATIO_DISCOUNT:
|
|
|
- teacherOnlineSalary = vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice()
|
|
|
- .multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()).multiply(onlineClassNum);
|
|
|
- break;
|
|
|
- case FIXED_SALARY:
|
|
|
- teacherOnlineSalary = vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue().multiply(onlineClassNum);
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("未指定课酬结算标准!");
|
|
|
- }
|
|
|
- switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()) {
|
|
|
- case TEACHER_DEFAULT:
|
|
|
- teacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(offlineClassNum);
|
|
|
- break;
|
|
|
- case RATIO_DISCOUNT:
|
|
|
- teacherOfflineSalary = vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice()
|
|
|
- .multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).multiply(offlineClassNum);
|
|
|
- break;
|
|
|
- case FIXED_SALARY:
|
|
|
- teacherOfflineSalary = vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue().multiply(offlineClassNum);
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("未指定课酬结算标准!");
|
|
|
- }
|
|
|
- teacherSalary = teacherOnlineSalary.add(teacherOfflineSalary);
|
|
|
- return new VipGroupCostCountDto(null, teacherSalary);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @Author: Joburgess
|
|
|
- * @Date: 2019/10/2
|
|
|
- * 计算VIP课程预计收费
|
|
|
- */
|
|
|
- @Override
|
|
|
- public Map<String, BigDecimal> countVipGroupPredictFee(VipGroup vipGroup, BigDecimal onlineClassesUnitPrice, BigDecimal offlineClassesUnitPrice) {
|
|
|
- if (Objects.isNull(vipGroup.getUserId())) {
|
|
|
+ VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
|
|
|
+ BigDecimal offlineClassNum=new BigDecimal(vipGroupCostCountParamsDto.getOfflineClassesNum());
|
|
|
+ BigDecimal onlineClassNum=new BigDecimal(vipGroupCostCountParamsDto.getOnlineClassesNum());
|
|
|
+
|
|
|
+
|
|
|
+ //教师课酬
|
|
|
+ BigDecimal teacherOnlineSalary,teacherOfflineSalary,teacherSalary;
|
|
|
+ switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
|
|
|
+ case TEACHER_DEFAULT:
|
|
|
+ teacherOnlineSalary=teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(onlineClassNum);
|
|
|
+ break;
|
|
|
+ case RATIO_DISCOUNT:
|
|
|
+ teacherOnlineSalary=vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice().multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()).multiply(onlineClassNum);
|
|
|
+ break;
|
|
|
+ case FIXED_SALARY:
|
|
|
+ teacherOnlineSalary=vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue().multiply(onlineClassNum);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new BizException("未指定课酬结算标准!");
|
|
|
+ }
|
|
|
+ switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
|
|
|
+ case TEACHER_DEFAULT:
|
|
|
+ teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(offlineClassNum);
|
|
|
+ break;
|
|
|
+ case RATIO_DISCOUNT:
|
|
|
+ teacherOfflineSalary=vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice().multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).multiply(offlineClassNum);
|
|
|
+ break;
|
|
|
+ case FIXED_SALARY:
|
|
|
+ teacherOfflineSalary=vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue().multiply(offlineClassNum);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new BizException("未指定课酬结算标准!");
|
|
|
+ }
|
|
|
+ teacherSalary=teacherOnlineSalary.add(teacherOfflineSalary);
|
|
|
+ return new VipGroupCostCountDto(null,teacherSalary);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Author: Joburgess
|
|
|
+ * @Date: 2019/10/2
|
|
|
+ * 计算VIP课程预计收费
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String,BigDecimal> countVipGroupPredictFee(VipGroup vipGroup,BigDecimal onlineClassesUnitPrice,BigDecimal offlineClassesUnitPrice){
|
|
|
+ if(Objects.isNull(vipGroup.getUserId())){
|
|
|
throw new BizException("请指定教师");
|
|
|
}
|
|
|
|
|
|
- if (Objects.isNull(vipGroup.getVipGroupCategoryId())) {
|
|
|
+ if(Objects.isNull(vipGroup.getVipGroupCategoryId())){
|
|
|
throw new BizException("请指定课程形式");
|
|
|
}
|
|
|
|
|
|
- TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId().longValue(),
|
|
|
+ TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId().longValue(),
|
|
|
vipGroup.getVipGroupCategoryId());
|
|
|
|
|
|
VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
|
|
|
|
|
|
- if (Objects.isNull(vipGroupActivity)) {
|
|
|
+ if(Objects.isNull(vipGroupActivity)){
|
|
|
throw new BizException("指定的活动方案不存在");
|
|
|
}
|
|
|
|
|
|
- VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(),
|
|
|
- VipGroupSalarySettlementDto.class);
|
|
|
+ VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
|
|
|
|
|
|
- if (Objects.isNull(vipGroupSalarySettlementDto)) {
|
|
|
+ if(Objects.isNull(vipGroupSalarySettlementDto)){
|
|
|
throw new BizException("课酬结算方案错误");
|
|
|
}
|
|
|
|
|
|
- Map<String, BigDecimal> results = new HashMap<>(1);
|
|
|
+ Map<String,BigDecimal> results=new HashMap<>(1);
|
|
|
|
|
|
- BigDecimal offlineClassNum = new BigDecimal(vipGroup.getOfflineClassesNum());
|
|
|
- BigDecimal onlineClassNum = new BigDecimal(vipGroup.getOnlineClassesNum());
|
|
|
+ BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
|
|
|
+ BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
|
|
|
BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
|
|
|
- // 教师课酬线上单课酬计算
|
|
|
- switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()) {
|
|
|
- case TEACHER_DEFAULT:
|
|
|
- if (Objects.isNull(teacherDefaultVipGroupSalary)) {
|
|
|
- throw new BizException("未设置教师默认课酬");
|
|
|
- }
|
|
|
- results.put("onlineTeacherSalary", teacherDefaultVipGroupSalary.getOfflineClassesSalary());
|
|
|
- break;
|
|
|
- case RATIO_DISCOUNT:
|
|
|
- results.put("onlineTeacherSalary", onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())));
|
|
|
- break;
|
|
|
- case FIXED_SALARY:
|
|
|
- results.put("onlineTeacherSalary", vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue());
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("未指定课酬结算标准!");
|
|
|
- }
|
|
|
- // 教师线下单课酬计算
|
|
|
- switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()) {
|
|
|
- case TEACHER_DEFAULT:
|
|
|
- if (Objects.isNull(teacherDefaultVipGroupSalary)) {
|
|
|
- throw new BizException("未设置教师默认课酬");
|
|
|
- }
|
|
|
- results.put("offlineTeacherSalary", teacherDefaultVipGroupSalary.getOfflineClassesSalary());
|
|
|
- break;
|
|
|
- case RATIO_DISCOUNT:
|
|
|
- results.put("offlineTeacherSalary", offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()));
|
|
|
- break;
|
|
|
- case FIXED_SALARY:
|
|
|
- results.put("offlineTeacherSalary", vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue());
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("未指定课酬结算标准!");
|
|
|
- }
|
|
|
-
|
|
|
- // 课程购买费用计算
|
|
|
- BigDecimal totalPrice;
|
|
|
- switch (vipGroupActivity.getType()) {
|
|
|
- case BASE_ACTIVITY:
|
|
|
- totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
- break;
|
|
|
- case DISCOUNT:
|
|
|
- BigDecimal discount = new BigDecimal(vipGroupActivity.getAttribute1());
|
|
|
- totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
- totalPrice = totalPrice.multiply(discount);
|
|
|
- break;
|
|
|
- case GIVE_CLASS:
|
|
|
- if (vipGroup.getGiveTeachMode() == TeachModeEnum.OFFLINE) {
|
|
|
- if (offlineClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1())) > -1) {
|
|
|
- offlineClassNum = offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
|
|
|
+ //教师课酬线上单课酬计算
|
|
|
+ switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
|
|
|
+ case TEACHER_DEFAULT:
|
|
|
+ if(Objects.isNull(teacherDefaultVipGroupSalary)){
|
|
|
+ throw new BizException("未设置教师默认课酬");
|
|
|
}
|
|
|
- offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
- } else if (vipGroup.getGiveTeachMode() == TeachModeEnum.ONLINE) {
|
|
|
- if (onlineClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1())) > -1) {
|
|
|
- onlineClassNum = onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
|
|
|
+ results.put("onlineTeacherSalary",teacherDefaultVipGroupSalary.getOfflineClassesSalary());
|
|
|
+ break;
|
|
|
+ case RATIO_DISCOUNT:
|
|
|
+ results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())));
|
|
|
+ break;
|
|
|
+ case FIXED_SALARY:
|
|
|
+ results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new BizException("未指定课酬结算标准!");
|
|
|
+ }
|
|
|
+ //教师线下单课酬计算
|
|
|
+ switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
|
|
|
+ case TEACHER_DEFAULT:
|
|
|
+ if(Objects.isNull(teacherDefaultVipGroupSalary)){
|
|
|
+ throw new BizException("未设置教师默认课酬");
|
|
|
}
|
|
|
- onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
- } else {
|
|
|
- throw new BizException("请指定赠送课程类型!");
|
|
|
- }
|
|
|
- totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("活动类型错误!");
|
|
|
+ results.put("offlineTeacherSalary",teacherDefaultVipGroupSalary.getOfflineClassesSalary());
|
|
|
+ break;
|
|
|
+ case RATIO_DISCOUNT:
|
|
|
+ results.put("offlineTeacherSalary",offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()));
|
|
|
+ break;
|
|
|
+ case FIXED_SALARY:
|
|
|
+ results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new BizException("未指定课酬结算标准!");
|
|
|
+ }
|
|
|
+
|
|
|
+ //课程购买费用计算
|
|
|
+ BigDecimal totalPrice;
|
|
|
+ switch (vipGroupActivity.getType()){
|
|
|
+ case BASE_ACTIVITY:
|
|
|
+ totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
+ break;
|
|
|
+ case DISCOUNT:
|
|
|
+ BigDecimal discount=new BigDecimal(vipGroupActivity.getAttribute1());
|
|
|
+ totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
+ totalPrice=totalPrice.multiply(discount);
|
|
|
+ break;
|
|
|
+ case GIVE_CLASS:
|
|
|
+ if(vipGroup.getGiveTeachMode()==TeachModeEnum.OFFLINE){
|
|
|
+ if(offlineClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
|
|
|
+ offlineClassNum=offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
|
|
|
+ }
|
|
|
+ offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
|
|
|
+ }else if(vipGroup.getGiveTeachMode()==TeachModeEnum.ONLINE){
|
|
|
+ if(onlineClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
|
|
|
+ onlineClassNum=onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
|
|
|
+ }
|
|
|
+ onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
|
|
|
+ }else{
|
|
|
+ throw new BizException("请指定赠送课程类型!");
|
|
|
+ }
|
|
|
+ totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new BizException("活动类型错误!");
|
|
|
}
|
|
|
- results.put("totalPrice", totalPrice);
|
|
|
- return results;
|
|
|
- }
|
|
|
+ results.put("totalPrice",totalPrice);
|
|
|
+ return results;
|
|
|
+ }
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
@@ -562,46 +566,51 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
|
|
|
StudentPaymentOrder byStudentVipGroup = studentPaymentOrderDao.findByStudentVipGroup(vipGroupBuyParams.getVipGroupId(), user.getId().longValue());
|
|
|
|
|
|
- if (Objects.nonNull(byStudentVipGroup)) {
|
|
|
+ if(Objects.nonNull(byStudentVipGroup)){
|
|
|
throw new BizException("订单已存在!");
|
|
|
}
|
|
|
|
|
|
VipGroup vipGroup = vipGroupDao.get(vipGroupBuyParams.getVipGroupId());
|
|
|
|
|
|
- if (vipGroup.getStatus() != VipGroupStatusEnum.APPLYING) {
|
|
|
+ if(vipGroup.getStatus()!=VipGroupStatusEnum.APPLYING){
|
|
|
throw new BizException("该课程已结束报名!");
|
|
|
}
|
|
|
|
|
|
VipGroupClassGroupMapper vipGroupClassGroupMapper = vipGroupClassGroupMapperDao.findByVipGroupId(vipGroup.getId());
|
|
|
|
|
|
VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
|
|
|
- StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
|
|
|
+ StudentPaymentOrder studentPaymentOrder=new StudentPaymentOrder();
|
|
|
studentPaymentOrder.setUserId(user.getId());
|
|
|
- String orderNo = StringUtils.join(new String[] { user.getId().toString(), String.valueOf(System.currentTimeMillis()) });
|
|
|
+ String orderNo=StringUtils.join(new String[]{user.getId().toString(),String.valueOf(System.currentTimeMillis())});
|
|
|
studentPaymentOrder.setOrderNo(orderNo);
|
|
|
studentPaymentOrder.setType(OrderTypeEnum.SMALL_CLASS_TO_BUY);
|
|
|
studentPaymentOrder.setExpectAmount(vipGroup.getTotalPrice());
|
|
|
- if (vipGroupActivity.getType() == VipGroupActivityTypeEnum.DISCOUNT) {
|
|
|
+ if(vipGroupActivity.getType()==VipGroupActivityTypeEnum.DISCOUNT){
|
|
|
studentPaymentOrder.setActualAmount(studentPaymentOrder.getExpectAmount().multiply(new BigDecimal(vipGroupActivity.getAttribute1())));
|
|
|
- } else {
|
|
|
+ }else{
|
|
|
studentPaymentOrder.setActualAmount(studentPaymentOrder.getExpectAmount());
|
|
|
}
|
|
|
studentPaymentOrder.setMusicGroupId(vipGroup.getId().toString());
|
|
|
studentPaymentOrder.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
|
|
|
studentPaymentOrderDao.insert(studentPaymentOrder);
|
|
|
|
|
|
- StudentVipGroupPayment studentVipGroupPayment = new StudentVipGroupPayment();
|
|
|
+ StudentVipGroupPayment studentVipGroupPayment=new StudentVipGroupPayment();
|
|
|
studentVipGroupPayment.setUserId(user.getId());
|
|
|
studentVipGroupPayment.setVipGroupId(vipGroup.getId());
|
|
|
studentVipGroupPayment.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
|
|
|
studentVipGroupPayment.setStudentPaymentOrderId(studentPaymentOrder.getId());
|
|
|
studentVipGroupPaymentDao.insert(studentVipGroupPayment);
|
|
|
|
|
|
- // 更新班级人数,如果订单支付失败则减少
|
|
|
- classGroupService.updateClassStudentNum(vipGroupClassGroupMapper.getClassGroupId().longValue(), 1);
|
|
|
+ //更新班级人数,如果订单支付失败则减少
|
|
|
+ classGroupService.updateClassStudentNum(vipGroupClassGroupMapper.getClassGroupId().longValue(),1);
|
|
|
|
|
|
- // 生成回调地址
|
|
|
- Map payMap = payService.getPayMap(vipGroup.getTotalPrice(), orderNo, "https://pay.dayaedu.com/api/yqpay/notify", "http://dev.dayaedu.com", "vip课购买",
|
|
|
+ //生成回调地址
|
|
|
+ Map payMap = payService.getPayMap(
|
|
|
+ vipGroup.getTotalPrice(),
|
|
|
+ orderNo,
|
|
|
+ "https://pay.dayaedu.com/api/yqpay/notify",
|
|
|
+ "http://dev.dayaedu.com",
|
|
|
+ "vip课购买",
|
|
|
vipGroup.getName());
|
|
|
|
|
|
return payMap;
|
|
@@ -612,53 +621,54 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void orderCallback(String callbackParams) {
|
|
|
/*
|
|
|
- * 根据回调信息调整订单状态及vip课程状态等相关信息
|
|
|
+ 根据回调信息调整订单状态及vip课程状态等相关信息
|
|
|
*/
|
|
|
- Long vipGroupId = 1L, userId = 1L;
|
|
|
+ Long vipGroupId=1L,userId=1L;
|
|
|
|
|
|
VipGroup vipGroup = vipGroupDao.get(vipGroupId);
|
|
|
|
|
|
- // 生成学生单课缴费信息
|
|
|
- courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId, userId);
|
|
|
+ //生成学生单课缴费信息
|
|
|
+ courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId,userId);
|
|
|
|
|
|
VipGroupClassGroupMapper vipGroupClassGroupMapper = vipGroupClassGroupMapperDao.findByVipGroupId(vipGroupId);
|
|
|
|
|
|
- // 更新订单状态
|
|
|
- StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, userId);
|
|
|
+ //更新订单状态
|
|
|
+ StudentPaymentOrder studentPaymentOrder=studentPaymentOrderDao.findByStudentVipGroup(vipGroupId,userId);
|
|
|
studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
|
|
|
studentPaymentOrderDao.update(studentPaymentOrder);
|
|
|
|
|
|
- // 将学生加入到班级,更新班级报名状态及人数信息
|
|
|
+ //将学生加入到班级,更新班级报名状态及人数信息
|
|
|
ClassGroup classGroup = classGroupDao.get(vipGroupClassGroupMapper.getClassGroupId());
|
|
|
int classStudents = classGroupDao.countClassStudent(vipGroupClassGroupMapper.getClassGroupId().longValue());
|
|
|
- if (classGroup.getExpectStudentNum() == classStudents) {
|
|
|
+ if(classGroup.getExpectStudentNum()==classStudents){
|
|
|
vipGroup.setStatus(VipGroupStatusEnum.FINISH);
|
|
|
vipGroupDao.update(vipGroup);
|
|
|
}
|
|
|
- classGroup.setStudentNum(classGroup.getStudentNum() + 1);
|
|
|
+ classGroup.setStudentNum(classGroup.getStudentNum()+1);
|
|
|
classGroupDao.update(classGroup);
|
|
|
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public void applyRefund(Long vipGroupId, Long studentId) {
|
|
|
- SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
- if (null == studentId) {
|
|
|
- studentId = sysUser.getId().longValue();
|
|
|
- }
|
|
|
- StudentApplyRefunds studentApplyRefunds = new StudentApplyRefunds();
|
|
|
- StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, studentId);
|
|
|
- if (null == studentPaymentOrder) {
|
|
|
+ public void applyRefund(Long vipGroupId,Long studentId) {
|
|
|
+ SysUser sysUser=sysUserFeignService.queryUserInfo();
|
|
|
+ if(null==studentId){
|
|
|
+ studentId=sysUser.getId().longValue();
|
|
|
+ }
|
|
|
+ StudentApplyRefunds studentApplyRefunds=new StudentApplyRefunds();
|
|
|
+ StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId,studentId);
|
|
|
+ if(null==studentPaymentOrder){
|
|
|
throw new BizException("未找到相关订单信息!");
|
|
|
}
|
|
|
- VipGroup vipGroup = vipGroupDao.get(vipGroupId);
|
|
|
- // 剩余课时数
|
|
|
- Map surplusClassTimes = MapUtil.convertMybatisMap(vipGroupDao.countSurplusClassTimes(vipGroupId));
|
|
|
- studentApplyRefunds.setExpectAmount(countVipGroupPredictFee(vipGroup, new BigDecimal(surplusClassTimes.get(TeachModeEnum.ONLINE.getCode()).toString()),
|
|
|
+ VipGroup vipGroup=vipGroupDao.get(vipGroupId);
|
|
|
+ //剩余课时数
|
|
|
+ Map surplusClassTimes=MapUtil.convertMybatisMap(vipGroupDao.countSurplusClassTimes(vipGroupId));
|
|
|
+ studentApplyRefunds.setExpectAmount(countVipGroupPredictFee(vipGroup,
|
|
|
+ new BigDecimal(surplusClassTimes.get(TeachModeEnum.ONLINE.getCode()).toString()),
|
|
|
new BigDecimal(surplusClassTimes.get(TeachModeEnum.OFFLINE.getCode()).toString())).get("totalPrice"));
|
|
|
studentApplyRefunds.setStatus(AuditStatusEnum.ING);
|
|
|
- String orderNo = StringUtils.join(new String[] { studentId.toString(), String.valueOf(System.currentTimeMillis()) });
|
|
|
+ String orderNo=StringUtils.join(new String[]{studentId.toString(),String.valueOf(System.currentTimeMillis())});
|
|
|
studentApplyRefunds.setOrderNo(orderNo);
|
|
|
studentApplyRefunds.setOrigPaymentOrderId(studentPaymentOrder.getId());
|
|
|
studentApplyRefunds.setUserId(studentId.intValue());
|
|
@@ -668,44 +678,54 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
public void applyRefundAudit(StudentApplyRefunds studentApplyRefunds) {
|
|
|
- if (Objects.isNull(studentApplyRefunds.getId())) {
|
|
|
- throw new BizException("请指定退费订单!");
|
|
|
+ if(Objects.isNull(studentApplyRefunds.getId())){
|
|
|
+ throw new BizException("请指定退费订单!");
|
|
|
+ }
|
|
|
+
|
|
|
+ StudentApplyRefunds oldStudentApplyRefunds=studentApplyRefundsDao.get(studentApplyRefunds.getId());
|
|
|
+
|
|
|
+ StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.get(oldStudentApplyRefunds.getOrigPaymentOrderId());
|
|
|
+ if(null==studentPaymentOrder){
|
|
|
+ throw new BizException("未找到原订单信息!");
|
|
|
}
|
|
|
- StudentApplyRefunds oldStudentApplyRefunds = studentApplyRefundsDao.get(studentApplyRefunds.getId());
|
|
|
+
|
|
|
oldStudentApplyRefunds.setStatus(studentApplyRefunds.getStatus());
|
|
|
- if (null == studentApplyRefunds.getActualAmount()) {
|
|
|
+ if(null==studentApplyRefunds.getActualAmount()){
|
|
|
oldStudentApplyRefunds.setActualAmount(oldStudentApplyRefunds.getExpectAmount());
|
|
|
- } else {
|
|
|
+ }else{
|
|
|
oldStudentApplyRefunds.setActualAmount(studentApplyRefunds.getActualAmount());
|
|
|
}
|
|
|
oldStudentApplyRefunds.setRemark(studentApplyRefunds.getRemark());
|
|
|
studentApplyRefundsDao.update(oldStudentApplyRefunds);
|
|
|
- switch (studentApplyRefunds.getStatus()) {
|
|
|
- case PASS:
|
|
|
- sysUserCashAccountService.updateBalance(oldStudentApplyRefunds.getUserId(), oldStudentApplyRefunds.getActualAmount());
|
|
|
- SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentApplyRefunds.getUserId().intValue());
|
|
|
- SysUserCashAccountDetail sysUserCashAccountDetail = new SysUserCashAccountDetail();
|
|
|
- sysUserCashAccountDetail.setUserId(studentApplyRefunds.getUserId());
|
|
|
- sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
|
|
|
- sysUserCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
|
|
|
- sysUserCashAccountDetail.setAmount(oldStudentApplyRefunds.getActualAmount());
|
|
|
- sysUserCashAccountDetail.setBalance(sysUserCashAccount.getBalance());
|
|
|
- sysUserCashAccountDetail.setAttribute(oldStudentApplyRefunds.getId().toString());
|
|
|
- sysUserCashAccountDetailDao.insert(sysUserCashAccountDetail);
|
|
|
- break;
|
|
|
- case REJECT:
|
|
|
-
|
|
|
- break;
|
|
|
- default:
|
|
|
- throw new BizException("审核状态错误!");
|
|
|
+ switch (studentApplyRefunds.getStatus()){
|
|
|
+ case PASS:
|
|
|
+ sysUserCashAccountService.updateBalance(oldStudentApplyRefunds.getUserId(),oldStudentApplyRefunds.getActualAmount());
|
|
|
+ SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentApplyRefunds.getUserId().intValue());
|
|
|
+ SysUserCashAccountDetail sysUserCashAccountDetail=new SysUserCashAccountDetail();
|
|
|
+ sysUserCashAccountDetail.setUserId(studentApplyRefunds.getUserId());
|
|
|
+ sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
|
|
|
+ sysUserCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
|
|
|
+ sysUserCashAccountDetail.setAmount(oldStudentApplyRefunds.getActualAmount());
|
|
|
+ sysUserCashAccountDetail.setBalance(sysUserCashAccount.getBalance());
|
|
|
+ sysUserCashAccountDetail.setAttribute(oldStudentApplyRefunds.getId().toString());
|
|
|
+ sysUserCashAccountDetailDao.insert(sysUserCashAccountDetail);
|
|
|
+
|
|
|
+ classGroupStudentMapperDao.deleteStudentByClassGroupId(studentPaymentOrder.getClassGroupId().longValue(),
|
|
|
+ studentPaymentOrder.getUserId().longValue());
|
|
|
+ break;
|
|
|
+ case REJECT:
|
|
|
+
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new BizException("审核状态错误!");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Map<String, Object> findVipGroupSalarys(VipGroupSalaryQueryInfo queryInfo) {
|
|
|
|
|
|
- if (Objects.isNull(queryInfo.getVipGroupId())) {
|
|
|
- throw new BizException("请指定vip课程!");
|
|
|
+ if(Objects.isNull(queryInfo.getVipGroupId())){
|
|
|
+ throw new BizException("请指定vip课程!");
|
|
|
}
|
|
|
|
|
|
PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
@@ -719,13 +739,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
params.put("offset", pageInfo.getOffset());
|
|
|
dataList = courseScheduleTeacherSalaryDao.findVipGroupSalarys(params);
|
|
|
dataList.forEach(vipGroupSalaryDto -> {
|
|
|
- if (Objects.isNull(vipGroupSalaryDto.getExpectSalary())) {
|
|
|
+ if(Objects.isNull(vipGroupSalaryDto.getExpectSalary())){
|
|
|
vipGroupSalaryDto.setExpectSalary(new BigDecimal(0));
|
|
|
}
|
|
|
- if (Objects.isNull(vipGroupSalaryDto.getActualSalary())) {
|
|
|
+ if(Objects.isNull(vipGroupSalaryDto.getActualSalary())){
|
|
|
vipGroupSalaryDto.setActualSalary(new BigDecimal(0));
|
|
|
vipGroupSalaryDto.setIsSalary(YesOrNoEnum.NO);
|
|
|
- } else {
|
|
|
+ }else{
|
|
|
vipGroupSalaryDto.setIsSalary(YesOrNoEnum.YES);
|
|
|
}
|
|
|
vipGroupSalaryDto.setDeductionFee(vipGroupSalaryDto.getExpectSalary().subtract(vipGroupSalaryDto.getActualSalary()));
|
|
@@ -737,28 +757,28 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
pageInfo.setRows(dataList);
|
|
|
|
|
|
VipGroupSalaryBaseInfo vipGroupSalaryBaseInfo = vipGroupDao.getVipGroupSalaryInfo(queryInfo.getVipGroupId());
|
|
|
- if (Objects.isNull(vipGroupSalaryBaseInfo)) {
|
|
|
- vipGroupSalaryBaseInfo = new VipGroupSalaryBaseInfo();
|
|
|
+ if(Objects.isNull(vipGroupSalaryBaseInfo)){
|
|
|
+ vipGroupSalaryBaseInfo=new VipGroupSalaryBaseInfo();
|
|
|
}
|
|
|
- if (Objects.isNull(vipGroupSalaryBaseInfo.getExpectTotalSalary())) {
|
|
|
+ if(Objects.isNull(vipGroupSalaryBaseInfo.getExpectTotalSalary())){
|
|
|
vipGroupSalaryBaseInfo.setExpectTotalSalary(new BigDecimal(0));
|
|
|
}
|
|
|
- if (Objects.isNull(vipGroupSalaryBaseInfo.getTotalSalary())) {
|
|
|
+ if(Objects.isNull(vipGroupSalaryBaseInfo.getTotalSalary())){
|
|
|
vipGroupSalaryBaseInfo.setTotalSalary(new BigDecimal(0));
|
|
|
}
|
|
|
vipGroupSalaryBaseInfo.setTotalFeeDeduction(vipGroupSalaryBaseInfo.getExpectTotalSalary().subtract(vipGroupSalaryBaseInfo.getTotalSalary()));
|
|
|
vipGroupSalaryBaseInfo.setFeeDeductionNum(vipGroupDao.countVipGroupDeductionNum(queryInfo.getVipGroupId()));
|
|
|
|
|
|
- Map<String, Object> result = new HashMap<>();
|
|
|
- result.put("pageInfo", pageInfo);
|
|
|
- result.put("baseInfo", vipGroupSalaryBaseInfo);
|
|
|
+ Map<String,Object> result=new HashMap<>();
|
|
|
+ result.put("pageInfo",pageInfo);
|
|
|
+ result.put("baseInfo",vipGroupSalaryBaseInfo);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<String> findVipGroupAttendanceStudents(Long courseScheduleId) {
|
|
|
- if (Objects.isNull(courseScheduleId)) {
|
|
|
- throw new BizException("请指定课程");
|
|
|
+ if(Objects.isNull(courseScheduleId)){
|
|
|
+ throw new BizException("请指定课程");
|
|
|
}
|
|
|
return courseScheduleDao.findStudentNamesByCourseSchedule(courseScheduleId);
|
|
|
}
|
|
@@ -766,36 +786,36 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void stopGroup(Long vipGroupId) {
|
|
|
- if (Objects.isNull(vipGroupId)) {
|
|
|
- throw new BizException("请指定vip课");
|
|
|
+ if(Objects.isNull(vipGroupId)){
|
|
|
+ throw new BizException("请指定vip课");
|
|
|
}
|
|
|
VipGroup vipGroup = vipGroupDao.get(vipGroupId);
|
|
|
- if (Objects.isNull(vipGroup)) {
|
|
|
- throw new BizException("该课程不存在");
|
|
|
+ if(Objects.isNull(vipGroup)){
|
|
|
+ throw new BizException("该课程不存在");
|
|
|
}
|
|
|
- if (vipGroup.getStatus() == VipGroupStatusEnum.FINISH || vipGroup.getStatus() == VipGroupStatusEnum.CANCEL) {
|
|
|
- throw new BizException("该课程已结束或者已被停止,无法进行此操作");
|
|
|
+ if(vipGroup.getStatus()==VipGroupStatusEnum.FINISH||vipGroup.getStatus()==VipGroupStatusEnum.CANCEL){
|
|
|
+ throw new BizException("该课程已结束或者已被停止,无法进行此操作");
|
|
|
}
|
|
|
- if (vipGroup.getStatus() == VipGroupStatusEnum.NOT_START) {
|
|
|
+ if(vipGroup.getStatus()==VipGroupStatusEnum.NOT_START){
|
|
|
vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
|
|
|
- vipGroupDao.update(vipGroup);
|
|
|
- return;
|
|
|
+ vipGroupDao.update(vipGroup);
|
|
|
+ return;
|
|
|
}
|
|
|
List<Map<Long, BigDecimal>> maps = vipGroupDao.countSurplusCourseFee(vipGroupId);
|
|
|
- if (CollectionUtils.isEmpty(maps) || (maps.size() == 1 && Objects.isNull(maps.get(0)))) {
|
|
|
+ if(CollectionUtils.isEmpty(maps)||(maps.size()==1&&Objects.isNull(maps.get(0)))){
|
|
|
vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
|
|
|
vipGroupDao.update(vipGroup);
|
|
|
return;
|
|
|
}
|
|
|
Map<Long, BigDecimal> studentSurplusClassFees = MapUtil.convertMybatisMap(maps);
|
|
|
- for (Long userId : studentSurplusClassFees.keySet()) {
|
|
|
- StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, userId);
|
|
|
- if (null == studentPaymentOrder) {
|
|
|
+ for(Long userId:studentSurplusClassFees.keySet()){
|
|
|
+ StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId,userId);
|
|
|
+ if(null==studentPaymentOrder){
|
|
|
throw new BizException("未找到相关订单信息!");
|
|
|
}
|
|
|
- sysUserCashAccountService.updateBalance(userId.intValue(), studentSurplusClassFees.get(userId));
|
|
|
+ sysUserCashAccountService.updateBalance(userId.intValue(),studentSurplusClassFees.get(userId));
|
|
|
SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(userId.intValue());
|
|
|
- SysUserCashAccountDetail sysUserCashAccountDetail = new SysUserCashAccountDetail();
|
|
|
+ SysUserCashAccountDetail sysUserCashAccountDetail=new SysUserCashAccountDetail();
|
|
|
sysUserCashAccountDetail.setUserId(userId.intValue());
|
|
|
sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
|
|
|
sysUserCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
|