|
@@ -27,6 +27,7 @@ import java.util.Objects;
|
|
|
import java.util.Set;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import com.ym.mec.biz.dal.dto.*;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
@@ -82,20 +83,6 @@ import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
|
|
|
import com.ym.mec.biz.dal.dao.SysUserCashAccountLogDao;
|
|
|
import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
|
|
|
import com.ym.mec.biz.dal.dao.TeacherDao;
|
|
|
-import com.ym.mec.biz.dal.dto.BasicUserDto;
|
|
|
-import com.ym.mec.biz.dal.dto.CloseMusicGroupDto;
|
|
|
-import com.ym.mec.biz.dal.dto.CourseScheduleTeachersDto;
|
|
|
-import com.ym.mec.biz.dal.dto.HighClassGroupDto;
|
|
|
-import com.ym.mec.biz.dal.dto.MusicCardDto;
|
|
|
-import com.ym.mec.biz.dal.dto.MusicGroupApplyGoodsDto;
|
|
|
-import com.ym.mec.biz.dal.dto.MusicGroupBasicDto;
|
|
|
-import com.ym.mec.biz.dal.dto.RegisterPayDto;
|
|
|
-import com.ym.mec.biz.dal.dto.SporadicPayDto;
|
|
|
-import com.ym.mec.biz.dal.dto.StudentApplyInstrumentDto;
|
|
|
-import com.ym.mec.biz.dal.dto.StudentImportDto;
|
|
|
-import com.ym.mec.biz.dal.dto.SubFeeSettingDto;
|
|
|
-import com.ym.mec.biz.dal.dto.SubjectRegisterDto;
|
|
|
-import com.ym.mec.biz.dal.dto.UpdateExpectedNumDto;
|
|
|
import com.ym.mec.biz.dal.entity.ApprovalStatus;
|
|
|
import com.ym.mec.biz.dal.entity.ChargeType;
|
|
|
import com.ym.mec.biz.dal.entity.ClassGroup;
|
|
@@ -2348,6 +2335,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
musicGroupQuit.setUserComment(reqMusicGroupQuit.getUserComment());
|
|
|
musicGroupQuit.setApplyUserId(userId);
|
|
|
musicGroupQuit.setReason(reason);
|
|
|
+ musicGroupQuit.setReasonEnum(reqMusicGroupQuit.getReasonEnum());
|
|
|
|
|
|
MusicGroupReturnFeeDto returnFeeDto = reqMusicGroupQuit.getReturnFeeDto();
|
|
|
if (returnFeeDto != null) {
|
|
@@ -2761,11 +2749,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
- public boolean directQuitMusicGroup(String musicGroupId, Integer userId, String reason, boolean isRefundCourseFee, boolean isRefundInstrumentFee,
|
|
|
- boolean isRefundTeachingAssistantsFee, boolean isRefundMemberFee, BigDecimal maintenanceFee) {
|
|
|
-
|
|
|
- SysUser sysUser = sysUserFeignService.queryUserById(userId);
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public boolean directQuitMusicGroup(MusicGroupQuitDto musicGroupQuitDto) {
|
|
|
+ Integer userId = musicGroupQuitDto.getUserId();
|
|
|
+ String musicGroupId = musicGroupQuitDto.getMusicGroupId();
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserById(userId);
|
|
|
if (sysUser == null) {
|
|
|
throw new BizException("获取用户信息失败");
|
|
|
}
|
|
@@ -2815,21 +2803,20 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
MusicGroupQuit musicGroupQuit = musicGroupQuitDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
|
|
|
if (musicGroupQuit != null && musicGroupQuit.getStatus() == PROCESSING) {
|
|
|
musicGroupQuit.setStatus(ApprovalStatus.APPROVED);
|
|
|
- musicGroupQuit.setReason(reason);
|
|
|
+ musicGroupQuit.setReason(musicGroupQuitDto.getReason());
|
|
|
+ musicGroupQuit.setReasonEnum(musicGroupQuitDto.getReasonEnum());
|
|
|
musicGroupQuit.setQuitDate(date);
|
|
|
-
|
|
|
musicGroupQuitDao.update(musicGroupQuit);
|
|
|
} else {
|
|
|
-
|
|
|
musicGroupQuit = new MusicGroupQuit();
|
|
|
musicGroupQuit.setCreateTime(date);
|
|
|
musicGroupQuit.setJoinDate(studentRegistration.getCreateTime());
|
|
|
musicGroupQuit.setMusicGroupId(musicGroupId);
|
|
|
musicGroupQuit.setUserId(sysUser.getId());
|
|
|
musicGroupQuit.setStatus(ApprovalStatus.APPROVED);
|
|
|
- musicGroupQuit.setReason(reason);
|
|
|
+ musicGroupQuit.setReason(musicGroupQuitDto.getReason());
|
|
|
+ musicGroupQuit.setReasonEnum(musicGroupQuitDto.getReasonEnum());
|
|
|
musicGroupQuit.setQuitDate(date);
|
|
|
-
|
|
|
musicGroupQuitDao.insert(musicGroupQuit);
|
|
|
}
|
|
|
|
|
@@ -2854,20 +2841,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
studentRegistration.setUpdateTime(date);
|
|
|
studentRegistrationDao.update(studentRegistration);
|
|
|
|
|
|
- //更新服务指标、运营指标
|
|
|
- /*int remainCourseNum = courseScheduleStudentPaymentDao.countStudentNotStartCourseNumWithCourseType(userId, null);
|
|
|
- if (remainCourseNum == 0) {
|
|
|
- Student student = studentDao.get(userId);
|
|
|
- if (student == null) {
|
|
|
- throw new BizException("学生信息查询失败");
|
|
|
- }
|
|
|
- student.setServiceTag(0);
|
|
|
- student.setOperatingTag(0);
|
|
|
- student.setOperatingTempTag(0);
|
|
|
- student.setUpdateTime(date);
|
|
|
- studentDao.update(student);
|
|
|
- }*/
|
|
|
-
|
|
|
//删除进行中加学生,且在审批中或拒绝的缴费
|
|
|
List<Long> paymentCalenderIdList = musicGroupPaymentCalenderDao.findStudentNoPaymentCalender(userId, musicGroupId);
|
|
|
if (paymentCalenderIdList != null && paymentCalenderIdList.size() > 0) {
|
|
@@ -2935,64 +2908,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
//统计变更学员数
|
|
|
groupEventSource.musicGroupStudentChangeEvent(musicGroupId, StudentMusicGroupStatusEnum.QUIT, new ArrayList<>(Arrays.asList(userId)));
|
|
|
}
|
|
|
-/*
|
|
|
- if (isRefundMemberFee){
|
|
|
- if(musicGroup.getCourseViewType() != CourseViewTypeEnum.MEMBER_FEE){
|
|
|
- throw new BizException("非会员乐团不允许退云教练");
|
|
|
- }
|
|
|
- //删除乐团会员时长
|
|
|
- studentRegistrationDao.cleanMusicMember(userId,musicGroupId);
|
|
|
- //退云教练费用
|
|
|
- if (cloudTeacherAmount != null) {
|
|
|
- Date nowDate = new Date();
|
|
|
- List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderService.getStudentCloudTeacherOrder(userId,musicGroupId);
|
|
|
- BigDecimal orderAmount = BigDecimal.ZERO;
|
|
|
- Student student = studentDao.get(userId);
|
|
|
- if(cloudTeacherOrders.size() > 0){
|
|
|
- Integer subMemberDay = 0;
|
|
|
- List<CloudTeacherOrder> quitCloudTeacherOrders = new ArrayList<>();
|
|
|
- for (CloudTeacherOrder cloudTeacherOrder : cloudTeacherOrders) {
|
|
|
- if (cloudTeacherOrder.getEndTime() == null || DateUtil.stringToDate(DateUtil.format(cloudTeacherOrder.getEndTime(),DateUtil.ISO_EXPANDED_DATE_FORMAT),DateUtil.ISO_EXPANDED_DATE_FORMAT).compareTo(
|
|
|
- DateUtil.stringToDate(DateUtil.format(nowDate,DateUtil.ISO_EXPANDED_DATE_FORMAT),DateUtil.ISO_EXPANDED_DATE_FORMAT)) >= 0) {
|
|
|
- quitCloudTeacherOrders.add(cloudTeacherOrder);
|
|
|
- orderAmount = orderAmount.add(cloudTeacherOrder.getAmount());
|
|
|
- subMemberDay = subMemberDay + DateUtil.daysBetween(cloudTeacherOrder.getStartTime(), cloudTeacherOrder.getEndTime());
|
|
|
- }
|
|
|
- }
|
|
|
- cloudTeacherOrderService.quitCloudTeacherOrders(quitCloudTeacherOrders, cloudTeacherAmount);
|
|
|
- Date memberEndTime = DateUtil.addDays(studentRegistration.getMembershipEndTime(), subMemberDay);
|
|
|
- if(memberEndTime.compareTo(nowDate) < 0){
|
|
|
- //清除学员云教练
|
|
|
- studentService.cleanMember(userId);
|
|
|
- //如果有试用会员,不清除
|
|
|
- if(student.getExperienceMemberRankSettingId() != null){
|
|
|
- student.setMemberRankSettingId(student.getExperienceMemberRankSettingId());
|
|
|
- student.setMembershipStartTime(student.getExperienceMembershipStartTime());
|
|
|
- student.setMembershipEndTime(student.getExperienceMembershipEndTime());
|
|
|
- studentDao.update(student);
|
|
|
- }
|
|
|
- }else {
|
|
|
- if(student.getExperienceMemberRankSettingId() != null){
|
|
|
- if(memberEndTime.compareTo(student.getExperienceMembershipEndTime()) > 0){
|
|
|
- student.setMembershipEndTime(memberEndTime);
|
|
|
- }else {
|
|
|
- student.setMembershipEndTime(student.getExperienceMembershipEndTime());
|
|
|
- }
|
|
|
- studentDao.update(student);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (cloudTeacherAmount.compareTo(orderAmount) > 0) {
|
|
|
- throw new BizException("云教练退费金额不能大于原始订单金额");
|
|
|
- }
|
|
|
- amount = amount.add(cloudTeacherAmount);
|
|
|
- }
|
|
|
- }else {
|
|
|
- //删除乐团会员时长
|
|
|
- studentRegistrationDao.cleanMusicMember(userId,musicGroupId);
|
|
|
- }*/
|
|
|
-
|
|
|
- if (isRefundCourseFee) {
|
|
|
+ if (musicGroupQuitDto.getIsRefundCourseFee()) {
|
|
|
// 退课程费用
|
|
|
amount = amount.add(surplusCourseFee);
|
|
|
}
|
|
@@ -3006,12 +2922,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.getWithIds(paymentOrderIdList);
|
|
|
|
|
|
SubjectChange studentLastChange = null;
|
|
|
- if (isRefundInstrumentFee || isRefundTeachingAssistantsFee) {
|
|
|
+ if (musicGroupQuitDto.getIsRefundInstrumentFee() || musicGroupQuitDto.getIsRefundTeachingAssistantsFee()) {
|
|
|
studentLastChange = subjectChangeDao.getStudentLastChange(userId, musicGroupId);
|
|
|
}
|
|
|
|
|
|
if (studentLastChange != null && minPaymentOrderId <= studentLastChange.getOriginalOrderId()) {
|
|
|
- if (isRefundInstrumentFee) {
|
|
|
+ if (musicGroupQuitDto.getIsRefundInstrumentFee()) {
|
|
|
amount = amount.add(studentLastChange.getChangeMusicalPrice());
|
|
|
|
|
|
StudentInstrument studentMaintenance = studentInstrumentDao.getByOrderId(studentLastChange.getOrderId().longValue());
|
|
@@ -3021,14 +2937,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (isRefundTeachingAssistantsFee) {
|
|
|
+ if (musicGroupQuitDto.getIsRefundTeachingAssistantsFee()) {
|
|
|
amount = amount.add(studentLastChange.getChangeAccessoriesPrice());
|
|
|
}
|
|
|
} else {
|
|
|
for (StudentPaymentOrderDetail detail : orderDetailList) {
|
|
|
|
|
|
// 退乐器费用
|
|
|
- if (isRefundInstrumentFee && detail.getType() == MUSICAL) {
|
|
|
+ if (musicGroupQuitDto.getIsRefundInstrumentFee() && detail.getType() == MUSICAL) {
|
|
|
amount = amount.add(detail.getPrice()).subtract(detail.getRemitFee());
|
|
|
|
|
|
StudentInstrument studentMaintenance = studentInstrumentDao.getStudentMaintenance(userId, musicGroupId);
|
|
@@ -3039,7 +2955,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
}
|
|
|
|
|
|
// 退教辅费用
|
|
|
- if (isRefundTeachingAssistantsFee
|
|
|
+ if (musicGroupQuitDto.getIsRefundTeachingAssistantsFee()
|
|
|
&& (detail.getType() == ACCESSORIES || detail.getType() == TEACHING)) {
|
|
|
amount = amount.add(detail.getPrice()).subtract(detail.getRemitFee());
|
|
|
}
|
|
@@ -3049,15 +2965,15 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
}
|
|
|
|
|
|
//退乐保费用
|
|
|
- if (maintenanceFee != null) {
|
|
|
+ if (musicGroupQuitDto.getMaintenanceFee() != null) {
|
|
|
StudentInstrument studentMaintenance = studentInstrumentDao.getStudentMaintenance(userId, musicGroupId);
|
|
|
- if (maintenanceFee.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ if (musicGroupQuitDto.getMaintenanceFee().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
if (studentMaintenance == null) {
|
|
|
throw new BizException("学生没有有效期内的乐保,不能退乐保费用");
|
|
|
}
|
|
|
}
|
|
|
- amount = amount.add(maintenanceFee);
|
|
|
- if (maintenanceFee.compareTo(BigDecimal.ZERO) > 0 && studentMaintenance != null) {
|
|
|
+ amount = amount.add(musicGroupQuitDto.getMaintenanceFee());
|
|
|
+ if (musicGroupQuitDto.getMaintenanceFee().compareTo(BigDecimal.ZERO) > 0 && studentMaintenance != null) {
|
|
|
studentMaintenance.setStatus(0);
|
|
|
studentMaintenance.setStartTime(null);
|
|
|
studentMaintenance.setEndTime(null);
|