Просмотр исходного кода

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

zouxuan 5 лет назад
Родитель
Сommit
8607d083ae

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/VipGroupCourseSchduleRecordDto.java

@@ -30,6 +30,8 @@ public class VipGroupCourseSchduleRecordDto {
 
     @ApiModelProperty(value = "上课人数")
     private Integer attendanceNum;
+    
+    private String schoolName;
 
     public Integer getAttendanceNum() {
         return attendanceNum;
@@ -78,4 +80,12 @@ public class VipGroupCourseSchduleRecordDto {
     public void setIsSalary(YesOrNoEnum isSalary) {
         this.isSalary = isSalary;
     }
+
+	public String getSchoolName() {
+		return schoolName;
+	}
+
+	public void setSchoolName(String schoolName) {
+		this.schoolName = schoolName;
+	}
 }

+ 13 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java

@@ -88,18 +88,26 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @param id
 	 * @param status
 	 * @param reason
+	 * @param isRefundCourseFee 是否退还课程费用
+	 * @param isRefundInstrumentFee 是否退还乐器费用
+	 * @param isRefundTeachingAssistantsFee 是否退还教辅费用
 	 * @return
 	 */
-	boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason);
+	boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason, boolean isRefundCourseFee, boolean isRefundInstrumentFee,
+			boolean isRefundTeachingAssistantsFee);
 
 	/**
 	 * 一键退团
 	 * @param musicGroupId
 	 * @param userId
 	 * @param reason
+	 * @param isRefundCourseFee 是否退还课程费用
+	 * @param isRefundInstrumentFee 是否退还乐器费用
+	 * @param isRefundTeachingAssistantsFee 是否退还教辅费用
 	 * @return
 	 */
-	boolean directQuitMusicGroup(String musicGroupId, Integer userId, String reason);
+	boolean directQuitMusicGroup(String musicGroupId, Integer userId, String reason, boolean isRefundCourseFee, boolean isRefundInstrumentFee,
+			boolean isRefundTeachingAssistantsFee);
 
 	/**
 	 *  续费
@@ -159,7 +167,7 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * @param courseScheduleId
 	 * @return
 	 */
-    List<CourseScheduleTeachersDto> queryTeacherSalary(Integer courseScheduleId);
+	List<CourseScheduleTeachersDto> queryTeacherSalary(Integer courseScheduleId);
 
 	/**
 	 * 开启缴费(报名中 -->  缴费中)
@@ -186,7 +194,7 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * 乐团确认成立
 	 * @param musicGroupId
 	 */
-    void musicGroupFound(String musicGroupId) throws Exception;
+	void musicGroupFound(String musicGroupId) throws Exception;
 
 	/**
 	 * 乐团修改,获取乐团声部信息数据
@@ -224,7 +232,7 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 * 审核失败(审核中 -> 审核失败)
 	 * @param musicGroupId
 	 */
-	void musicGroupAuditFailed(String musicGroupId,String memo) throws Exception;
+	void musicGroupAuditFailed(String musicGroupId, String memo) throws Exception;
 
 	/**
 	 * 审核通过(审核中 -> 报名中)

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -264,6 +264,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     public List<HighClassGroupDto> addHighClassGroup(List<HighClassGroupDto> highClassGroupList) throws Exception {
         MusicGroup musicGroup = musicGroupDao.get(highClassGroupList.get(0).getMusicGroupId());
 
+        int highClassGroupNum = studentRegistrationDao.findMusicGroupStudentNum(musicGroup.getId()) / 5;
+        if(highClassGroupList.size() > highClassGroupNum){
+            throw new BizException("班数不能大于"+highClassGroupNum);
+        }
+
         List<ClassGroup> classGroups = classGroupDao.findClassGroupByMusicGroupIdAndType(musicGroup.getId(), ClassGroupTypeEnum.HIGH);
         if (classGroups.size() > 0) {
             List<Integer> classGroupIds = classGroups.stream().map(classGroup -> classGroup.getId()).collect(Collectors.toList());

+ 142 - 80
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -21,6 +21,7 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -115,6 +116,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
 	@Autowired
 	private SysConfigDao sysConfigDao;
+	
+	@Autowired
+    private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
 
     @Override
     public BaseDAO<String, MusicGroup> getDAO() {
@@ -562,100 +566,158 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         return true;
     }
 
-    @Override
-    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-    public boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason){
-        MusicGroupQuit musicGroupQuit = musicGroupQuitDao.get(id);
-        if(musicGroupQuit == null){
-            throw new BizException("数据不存在");
-        }
-        Date date = new Date();
-
-        String musicGroupId = musicGroupQuit.getMusicGroupId();
-        Integer userId = musicGroupQuit.getUserId();
-
-        musicGroupQuit.setStatus(status);
-        musicGroupQuit.setReason(reason);
-        musicGroupQuit.setQuitDate(date);
-        musicGroupQuitDao.update(musicGroupQuit);
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason, boolean isRefundCourseFee, boolean isRefundInstrumentFee,
+			boolean isRefundTeachingAssistantsFee) {
+		MusicGroupQuit musicGroupQuit = musicGroupQuitDao.get(id);
+		if (musicGroupQuit == null) {
+			throw new BizException("数据不存在");
+		}
+		Date date = new Date();
+
+		String musicGroupId = musicGroupQuit.getMusicGroupId();
+		Integer userId = musicGroupQuit.getUserId();
+
+		musicGroupQuit.setStatus(status);
+		musicGroupQuit.setReason(reason);
+		musicGroupQuit.setQuitDate(date);
+		musicGroupQuitDao.update(musicGroupQuit);
+
+		if (status == ApprovalStatus.APPROVED) {
+			classGroupStudentMapperDao.deleteStudentByMusicGroupId(musicGroupId, userId);
+
+			StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+			if (studentRegistration == null) {
+				throw new BizException("用户注册信息不存在");
+			}
+			// 退团
+			studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
+			studentRegistration.setUpdateTime(date);
+
+			studentRegistrationDao.update(studentRegistration);
+
+			BigDecimal amount = new BigDecimal(0);
+
+			// 判断乐器是否是租赁
+			// MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
+
+			StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, DealStatusEnum.SUCCESS);
+
+			if (studentPaymentOrder == null) {
+				throw new BizException("报名订单找不到");
+			}
+
+			List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.findApplyOrderGoods(studentPaymentOrder.getId());
+
+			for (StudentPaymentOrderDetail detail : orderDetailList) {
+				if (isRefundCourseFee) {
+					// 退课程费用
+					if (detail.getType() == OrderDetailTypeEnum.COURSE) {
+						amount = amount.add(detail.getPrice());
+					}
+				}
+				if (isRefundInstrumentFee) {
+					// 退乐器费用
+					if (detail.getType() == OrderDetailTypeEnum.MUSICAL) {
+						amount = amount.add(detail.getPrice());
+					}
+
+				}
+				if (isRefundTeachingAssistantsFee) {
+					// 退教辅费用
+					if (detail.getType() == OrderDetailTypeEnum.ACCESSORIES || detail.getType() == OrderDetailTypeEnum.TEACHING) {
+						amount = amount.add(detail.getPrice());
+					}
+				}
+			}
+			if (amount.doubleValue() > 0) {
+				// 增加交易流水
+				sysUserCashAccountDetailService.addCashAccountDetail(userId, amount, SysUserCashAccountDetailService.MUSIC_GROUP + musicGroupId, "",
+						PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "退出乐团");
+			}
+		}
+		return true;
+	}
 
-        if (status == ApprovalStatus.APPROVED) {
-            classGroupStudentMapperDao.deleteStudentByMusicGroupId(musicGroupId, userId);
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean directQuitMusicGroup(String musicGroupId, Integer userId, String reason, boolean isRefundCourseFee, boolean isRefundInstrumentFee,
+			boolean isRefundTeachingAssistantsFee) {
 
-            // 判断乐器是否是租赁
-            StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
-            if (studentRegistration == null) {
-                throw new BizException("用户注册信息不存在");
-            }
-            // 退团
-            studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
-            studentRegistration.setUpdateTime(date);
+		SysUser sysUser = sysUserFeignService.queryUserById(userId);
+		if (sysUser == null) {
+			throw new BizException("获取用户信息失败");
+		}
 
-            studentRegistrationDao.update(studentRegistration);
+		Date date = new Date();
 
-            Integer subjectId = studentRegistration.getActualSubjectId();
-            MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
-            if (musicGroupSubjectPlan == null) {
-                throw new BizException("乐团声部费用设置不存在");
-            }
-            if (musicGroupSubjectPlan.getDepositFee().doubleValue() > 0) {
-                // 增加交易流水
-                sysUserCashAccountDetailService.addCashAccountDetail(userId, musicGroupSubjectPlan.getDepositFee(),
-                        SysUserCashAccountDetailService.MUSIC_GROUP + musicGroupId, "", PlatformCashAccountDetailTypeEnum.REFUNDS, null,
-                        DealStatusEnum.SUCCESS, "退出乐团");
-            }
-        }
-        return true;
-    }
+		MusicGroupQuit musicGroupQuit = new MusicGroupQuit();
+		musicGroupQuit.setCreateTime(date);
+		musicGroupQuit.setJoinDate(sysUser.getCreateTime());
+		musicGroupQuit.setMusicGroupId(musicGroupId);
+		musicGroupQuit.setUserId(sysUser.getId());
+		musicGroupQuit.setStatus(ApprovalStatus.APPROVED);
+		musicGroupQuit.setReason(reason);
+		musicGroupQuit.setQuitDate(date);
 
-    @Override
-    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-    public boolean directQuitMusicGroup(String musicGroupId, Integer userId, String reason) {
+		musicGroupQuitDao.insert(musicGroupQuit);
 
-        SysUser sysUser = sysUserFeignService.queryUserById(userId);
-        if (sysUser == null) {
-            throw new BizException("获取用户信息失败");
-        }
+		classGroupStudentMapperDao.deleteStudentByMusicGroupId(musicGroupId, userId);
 
-        Date date = new Date();
+		// 判断乐器是否是租赁
+		StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
+		if (studentRegistration == null) {
+			throw new BizException("用户注册信息不存在");
+		}
+		// 退团
+		studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
+		studentRegistration.setUpdateTime(date);
 
-        MusicGroupQuit musicGroupQuit = new MusicGroupQuit();
-        musicGroupQuit.setCreateTime(date);
-        musicGroupQuit.setJoinDate(sysUser.getCreateTime());
-        musicGroupQuit.setMusicGroupId(musicGroupId);
-        musicGroupQuit.setUserId(sysUser.getId());
-        musicGroupQuit.setStatus(ApprovalStatus.APPROVED);
-        musicGroupQuit.setReason(reason);
-        musicGroupQuit.setQuitDate(date);
+		studentRegistrationDao.update(studentRegistration);
 
-        musicGroupQuitDao.insert(musicGroupQuit);
+		BigDecimal amount = new BigDecimal(0);
 
-        classGroupStudentMapperDao.deleteStudentByMusicGroupId(musicGroupId, userId);
+		// 判断乐器是否是租赁
+		// MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
 
-        // 判断乐器是否是租赁
-        StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
-        if (studentRegistration == null) {
-            throw new BizException("用户注册信息不存在");
-        }
-        // 退团
-        studentRegistration.setMusicGroupStatus(ClassGroupStudentStatusEnum.QUIT);
-        studentRegistration.setUpdateTime(date);
+		StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, DealStatusEnum.SUCCESS);
 
-        studentRegistrationDao.update(studentRegistration);
+		if (studentPaymentOrder == null) {
+			throw new BizException("报名订单找不到");
+		}
 
-        Integer subjectId = studentRegistration.getActualSubjectId();
-        MusicGroupSubjectPlan musicGroupSubjectPlan = musicGroupSubjectPlanDao.getMusicOneSubjectClassPlan(musicGroupId, subjectId);
-        if (musicGroupSubjectPlan == null) {
-            throw new BizException("乐团声部费用设置不存在");
-        }
-        if (musicGroupSubjectPlan.getDepositFee().doubleValue() > 0) {
-            // 增加交易流水
-            sysUserCashAccountDetailService.addCashAccountDetail(userId, musicGroupSubjectPlan.getDepositFee(), SysUserCashAccountDetailService.MUSIC_GROUP
-                    + musicGroupId, "", PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "退出乐团");
-        }
+		List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.findApplyOrderGoods(studentPaymentOrder.getId());
+
+		for (StudentPaymentOrderDetail detail : orderDetailList) {
+			if (isRefundCourseFee) {
+				// 退课程费用
+				if (detail.getType() == OrderDetailTypeEnum.COURSE) {
+					amount = amount.add(detail.getPrice());
+				}
+			}
+			if (isRefundInstrumentFee) {
+				// 退乐器费用
+				if (detail.getType() == OrderDetailTypeEnum.MUSICAL) {
+					amount = amount.add(detail.getPrice());
+				}
+
+			}
+			if (isRefundTeachingAssistantsFee) {
+				// 退教辅费用
+				if (detail.getType() == OrderDetailTypeEnum.ACCESSORIES || detail.getType() == OrderDetailTypeEnum.TEACHING) {
+					amount = amount.add(detail.getPrice());
+				}
+			}
+		}
+		if (amount.doubleValue() > 0) {
+			// 增加交易流水
+			sysUserCashAccountDetailService.addCashAccountDetail(userId, amount, SysUserCashAccountDetailService.MUSIC_GROUP + musicGroupId, "",
+					PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "退出乐团");
+		}
 
-        return true;
-    }
+		return true;
+	}
 
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)

+ 3 - 2
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -542,6 +542,7 @@
         <result column="give_teach_mode_" property="giveTeachMode" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="is_salary_" property="isSalary" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="student_num_" property="attendanceNum"/>
+        <result column="school_name_" property="schoolName"/>
     </resultMap>
 
     <sql id="teachingRecordQueryCondition">
@@ -565,11 +566,11 @@
             CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
             cs.status_,
             cs.teach_mode_,
-            cs.student_num_,
+            cs.student_num_,s.name_ school_name_,
             csts.actual_salary_ IS NOT NULL is_salary_
         FROM
             course_schedule cs
-            LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
+            LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_ left join school s on cs.schoole_id_ = s.id_
         <include refid="teachingRecordQueryCondition"/>
         ORDER BY start_class_time_
         <include refid="global.limit"/>

+ 2 - 2
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -220,7 +220,7 @@ public class MusicGroupController extends BaseController {
         BigDecimal orderAmount = new BigDecimal("0");
 
         //获取课程价格
-        MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId());
+        MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
         BigDecimal courseFee = musicOneSubjectClassPlan.getFee();
         if (studentRegistration.getTemporaryCourseFee() != null) {
             courseFee = studentRegistration.getTemporaryCourseFee();
@@ -328,7 +328,7 @@ public class MusicGroupController extends BaseController {
         BigDecimal orderAmount = new BigDecimal("0");
 
         //获取课程价格
-        MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId());
+        MusicGroupSubjectPlan musicOneSubjectClassPlan = musicGroupSubjectPlanService.getMusicOneSubjectClassPlan(studentRegistration.getMusicGroupId(), studentRegistration.getActualSubjectId());
         BigDecimal courseFee = musicOneSubjectClassPlan.getFee();
         if (studentRegistration.getTemporaryCourseFee() != null) {
             courseFee = studentRegistration.getTemporaryCourseFee();

+ 15 - 6
mec-web/src/main/java/com/ym/mec/web/controller/MusicGroupQuitController.java

@@ -67,9 +67,13 @@ public class MusicGroupQuitController extends BaseController {
 	@PreAuthorize("@pcs.hasPermissions('musicGroupQuit/quitMusicGroup')")
 	@ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "退团申请id", required = true, dataType = "Long"),
 			@ApiImplicitParam(name = "status", value = "审批状态(APPROVED, DENIED, PROCESSING)", required = true, dataType = "String"),
-			@ApiImplicitParam(name = "reason", value = "原因", required = true, dataType = "String") })
-	public HttpResponseResult quitMusicGroup(Long id, ApprovalStatus status, String reason) throws Exception {
-		return succeed(musicGroupService.approveQuitMusicGroup(id, status, reason));
+			@ApiImplicitParam(name = "reason", value = "原因", required = true, dataType = "String"),
+			@ApiImplicitParam(name = "isRefundCourseFee", value = "是否退还课程费用", required = true, dataType = "Boolean"),
+			@ApiImplicitParam(name = "isRefundInstrumentFee", value = "是否退还乐器费用(租金)", required = true, dataType = "Boolean"),
+			@ApiImplicitParam(name = "isRefundTeachingAssistantsFee", value = "是否退还教辅费用", required = true, dataType = "Boolean") })
+	public HttpResponseResult quitMusicGroup(Long id, ApprovalStatus status, String reason, boolean isRefundCourseFee, boolean isRefundInstrumentFee,
+			boolean isRefundTeachingAssistantsFee) throws Exception {
+		return succeed(musicGroupService.approveQuitMusicGroup(id, status, reason, isRefundCourseFee, isRefundInstrumentFee, isRefundTeachingAssistantsFee));
 	}
 
 	@ApiOperation(value = "一键退团")
@@ -77,8 +81,13 @@ public class MusicGroupQuitController extends BaseController {
 	@PreAuthorize("@pcs.hasPermissions('musicGroupQuit/directQuitMusicGroup')")
 	@ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String"),
 			@ApiImplicitParam(name = "userId", value = "用户编号", required = true, dataType = "Integer"),
-			@ApiImplicitParam(name = "reason", value = "原因", required = true, dataType = "String") })
-	public HttpResponseResult directQuitMusicGroup(String musicGroupId, Integer userId, String reason) throws Exception {
-		return succeed(musicGroupService.directQuitMusicGroup(musicGroupId, userId, reason));
+			@ApiImplicitParam(name = "reason", value = "原因", required = true, dataType = "String"),
+			@ApiImplicitParam(name = "isRefundCourseFee", value = "是否退还课程费用", required = true, dataType = "Boolean"),
+			@ApiImplicitParam(name = "isRefundInstrumentFee", value = "是否退还乐器费用(租金)", required = true, dataType = "Boolean"),
+			@ApiImplicitParam(name = "isRefundTeachingAssistantsFee", value = "是否退还教辅费用", required = true, dataType = "Boolean") })
+	public HttpResponseResult directQuitMusicGroup(String musicGroupId, Integer userId, String reason, boolean isRefundCourseFee,
+			boolean isRefundInstrumentFee, boolean isRefundTeachingAssistantsFee) throws Exception {
+		return succeed(musicGroupService.directQuitMusicGroup(musicGroupId, userId, reason, isRefundCourseFee, isRefundInstrumentFee,
+				isRefundTeachingAssistantsFee));
 	}
 }