|
@@ -1,5 +1,8 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
|
+import com.ym.mec.auth.api.entity.SysUser;
|
|
|
import com.ym.mec.biz.dal.dao.*;
|
|
|
import com.ym.mec.biz.dal.dto.*;
|
|
|
import com.ym.mec.biz.dal.entity.*;
|
|
@@ -11,15 +14,15 @@ import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
|
|
|
import com.ym.mec.biz.service.CourseScheduleService;
|
|
|
import com.ym.mec.biz.service.VipGroupService;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
+import com.ym.mec.common.exception.BizException;
|
|
|
import com.ym.mec.common.page.PageInfo;
|
|
|
-import com.ym.mec.common.page.QueryInfo;
|
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
-
|
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
@@ -38,6 +41,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
|
|
|
@Autowired
|
|
|
private CourseScheduleService courseScheduleService;
|
|
|
+ @Autowired
|
|
|
+ private VipGroupDefaultClassesUnitPriceDao vipGroupDefaultClassesUnitPriceDao;
|
|
|
+ @Autowired
|
|
|
+ private VipGroupActivityDao vipGroupActivityDao;
|
|
|
+ @Autowired
|
|
|
+ private SysUserFeignService sysUserFeignService;
|
|
|
+ @Autowired
|
|
|
+ private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
|
|
|
|
|
|
@Override
|
|
|
public BaseDAO<Long, VipGroup> getDAO() {
|
|
@@ -47,6 +58,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
public void createVipGroup(VipGroupApplyDto vipGroup) {
|
|
|
+ VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupActivityId().intValue());
|
|
|
VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto=vipGroup.getVipGroupApplyBaseInfo();
|
|
|
vipGroupDao.insert(vipGroupApplyBaseInfoDto);
|
|
|
ClassGroup classGroup=new ClassGroup();
|
|
@@ -65,6 +77,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
classGroupTeacherMapper.setSalary(vipGroupApplyBaseInfoDto.getSalary());
|
|
|
classGroupTeacherMapperDao.insert(classGroupTeacherMapper);
|
|
|
vipGroup.getCourseSchedules().forEach(courseSchedule -> {
|
|
|
+ if(courseSchedule.getEndClassTime().after(vipGroupActivity.getCoursesEndTime())
|
|
|
+ &&courseSchedule.getStartClassTime().before(vipGroupActivity.getCoursesStartTime())){
|
|
|
+ throw new BizException("课时安排时间超出范围!");
|
|
|
+ }
|
|
|
courseSchedule.setClassGroupId(classGroup.getId());
|
|
|
});
|
|
|
courseScheduleService.batchAddCourseSchedule(vipGroup.getCourseSchedules());
|
|
@@ -120,4 +136,52 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
|
|
|
public StudentVipGroupDetailDto getVipGroupShowDetail(Long vipGroupId) {
|
|
|
return vipGroupDao.getVipGroupDetail(vipGroupId);
|
|
|
}
|
|
|
+
|
|
|
+ @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());
|
|
|
+ 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());
|
|
|
+ //vip课总费用
|
|
|
+ BigDecimal onlineVipGroupCharge = vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice().multiply(onlineClassNum);
|
|
|
+ BigDecimal offlineVipGroupCharge = vipGroupDefaultClassesUnitPrice.
|
|
|
+ getOfflineClassesUnitPrice().
|
|
|
+ multiply(offlineClassNum);
|
|
|
+ BigDecimal vipGroupCharge=onlineVipGroupCharge.add(offlineClassNum);
|
|
|
+
|
|
|
+ //教师课酬
|
|
|
+ BigDecimal teacherOnlineSalary = null,teacherOfflineSalay=null,teacherSalary=null;
|
|
|
+ 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:
|
|
|
+ teacherOfflineSalay=teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(offlineClassNum);
|
|
|
+ break;
|
|
|
+ case RATIO_DISCOUNT:
|
|
|
+ teacherOfflineSalay=vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice().multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).multiply(offlineClassNum);
|
|
|
+ break;
|
|
|
+ case FIXED_SALARY:
|
|
|
+ teacherOfflineSalay=vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue().multiply(offlineClassNum);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new BizException("未指定课酬结算标准!");
|
|
|
+ }
|
|
|
+ teacherSalary=teacherOnlineSalary.add(teacherOfflineSalay);
|
|
|
+ return new VipGroupCostCountDto(vipGroupCharge,teacherSalary);
|
|
|
+ }
|
|
|
}
|