|
@@ -109,6 +109,7 @@ import com.ym.mec.biz.dal.entity.MusicGroupQuit;
|
|
import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermCourseDetail;
|
|
import com.ym.mec.biz.dal.entity.MusicGroupSchoolTermCourseDetail;
|
|
import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
|
|
import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
|
|
import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
|
|
import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
|
|
|
|
+import com.ym.mec.biz.dal.entity.MusicGroupReturnFeeDto;
|
|
import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
|
|
import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
|
|
import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
|
|
import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
|
|
import com.ym.mec.biz.dal.entity.MusicMemberDto;
|
|
import com.ym.mec.biz.dal.entity.MusicMemberDto;
|
|
@@ -186,6 +187,7 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
import com.ym.mec.util.collection.MapUtil;
|
|
import com.ym.mec.util.date.DateUtil;
|
|
import com.ym.mec.util.date.DateUtil;
|
|
import com.ym.mec.util.http.HttpUtil;
|
|
import com.ym.mec.util.http.HttpUtil;
|
|
|
|
+import com.ym.mec.util.json.JsonUtil;
|
|
|
|
|
|
@Service
|
|
@Service
|
|
public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> implements MusicGroupService {
|
|
public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> implements MusicGroupService {
|
|
@@ -1900,11 +1902,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
- public boolean applyQuitMusicGroup(String musicGroupId, String reason,Integer studentId) {
|
|
|
|
- SysUser sysUser = sysUserFeignService.queryUserById(studentId);
|
|
|
|
- if (sysUser == null) {
|
|
|
|
- throw new BizException("用户信息获取失败");
|
|
|
|
- }
|
|
|
|
|
|
+ public boolean applyQuitMusicGroup(List<Integer> currentOperatorRoleIds, MusicGroupQuit reqMusicGroupQuit, Integer operatorId) {
|
|
|
|
+
|
|
|
|
+ Integer userId = reqMusicGroupQuit.getUserId();
|
|
|
|
+ String musicGroupId = reqMusicGroupQuit.getMusicGroupId();
|
|
|
|
+ String reason = reqMusicGroupQuit.getReason();
|
|
|
|
+
|
|
MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
|
|
MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
|
|
if (musicGroup == null) {
|
|
if (musicGroup == null) {
|
|
throw new BizException("乐团不存在");
|
|
throw new BizException("乐团不存在");
|
|
@@ -1913,7 +1916,6 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
if (musicGroup.getStatus() == MusicGroupStatusEnum.CANCELED || musicGroup.getStatus() == MusicGroupStatusEnum.PAUSE) {
|
|
if (musicGroup.getStatus() == MusicGroupStatusEnum.CANCELED || musicGroup.getStatus() == MusicGroupStatusEnum.PAUSE) {
|
|
throw new BizException("申请失败,乐团状态[已取消]或[已暂停]");
|
|
throw new BizException("申请失败,乐团状态[已取消]或[已暂停]");
|
|
}
|
|
}
|
|
- Integer userId = sysUser.getId();
|
|
|
|
|
|
|
|
StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
|
|
StudentRegistration studentRegistration = studentRegistrationDao.queryByUserIdAndMusicGroupId(userId, musicGroupId);
|
|
if (studentRegistration == null) {
|
|
if (studentRegistration == null) {
|
|
@@ -1931,27 +1933,84 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
musicGroupQuit.setCreateTime(new Date());
|
|
musicGroupQuit.setCreateTime(new Date());
|
|
musicGroupQuit.setJoinDate(studentRegistration.getCreateTime());
|
|
musicGroupQuit.setJoinDate(studentRegistration.getCreateTime());
|
|
musicGroupQuit.setMusicGroupId(musicGroupId);
|
|
musicGroupQuit.setMusicGroupId(musicGroupId);
|
|
- musicGroupQuit.setUserId(sysUser.getId());
|
|
|
|
- musicGroupQuit.setUserComment(reason);
|
|
|
|
|
|
+ musicGroupQuit.setUserId(userId);
|
|
|
|
+ musicGroupQuit.setUserComment(reqMusicGroupQuit.getUserComment());
|
|
|
|
+ musicGroupQuit.setApplyUserId(userId);
|
|
|
|
+ musicGroupQuit.setReason(reason);
|
|
|
|
+
|
|
|
|
+ MusicGroupReturnFeeDto returnFeeDto = reqMusicGroupQuit.getReturnFeeDto();
|
|
|
|
+ if(returnFeeDto != null) {
|
|
|
|
+ musicGroupQuit.setFeeJson(JsonUtil.toJSONString(returnFeeDto));
|
|
|
|
+ musicGroupQuit.setReturnFeeDto(returnFeeDto);
|
|
|
|
+ }
|
|
|
|
+ musicGroupQuit.setIsVisit(reqMusicGroupQuit.getIsVisit());
|
|
|
|
+ musicGroupQuit.setVisitTime(reqMusicGroupQuit.getVisitTime());
|
|
musicGroupQuit.setStatus(PROCESSING);
|
|
musicGroupQuit.setStatus(PROCESSING);
|
|
-
|
|
|
|
|
|
+ musicGroupQuit.setCurrentApproveRole(SysUserRole.EDUCATIONAL_TEACHER + "");
|
|
|
|
+
|
|
|
|
+ if(currentOperatorRoleIds != null){
|
|
|
|
+ if (!currentOperatorRoleIds.contains(SysUserRole.SECTION_MANAGER) && currentOperatorRoleIds.contains(SysUserRole.EDUCATIONAL_TEACHER)) {
|
|
|
|
+
|
|
|
|
+ if(musicGroupQuit.getStatus() == ApprovalStatus.APPROVED){
|
|
|
|
+ throw new BizException("只能分部经理操作退团");
|
|
|
|
+ }
|
|
|
|
+ musicGroupQuit.setCurrentApproveRole(SysUserRole.SECTION_MANAGER + "");
|
|
|
|
+ }
|
|
|
|
+ if (currentOperatorRoleIds.contains(SysUserRole.SECTION_MANAGER) && !currentOperatorRoleIds.contains(SysUserRole.EDUCATIONAL_TEACHER)) {
|
|
|
|
+
|
|
|
|
+ throw new BizException("只能乐团主管操作退团申请");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ BigDecimal returnTotalFee = BigDecimal.ZERO;
|
|
|
|
+
|
|
|
|
+ if(returnFeeDto.getIsReturnAccessoriesFee()){
|
|
|
|
+ returnTotalFee = returnTotalFee.add(returnFeeDto.getAccessoriesFee());
|
|
|
|
+ }
|
|
|
|
+ if(returnFeeDto.getIsReturnCourseFee()){
|
|
|
|
+ returnTotalFee = returnTotalFee.add(returnFeeDto.getCourseFee());
|
|
|
|
+ }
|
|
|
|
+ if(returnFeeDto.getIsReturnMaintenanceFee()){
|
|
|
|
+ returnTotalFee = returnTotalFee.add(returnFeeDto.getMaintenanceFee());
|
|
|
|
+ }
|
|
|
|
+ if(returnFeeDto.getIsReturnMemberFee()){
|
|
|
|
+ returnTotalFee = returnTotalFee.add(returnFeeDto.getMemberFee());
|
|
|
|
+ }
|
|
|
|
+ if(returnFeeDto.getIsReturnMusicalFee()){
|
|
|
|
+ returnTotalFee = returnTotalFee.add(returnFeeDto.getMusicalFee());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ musicGroupQuit.setReturnTotalFee(returnTotalFee);
|
|
|
|
+ }
|
|
|
|
+
|
|
musicGroupQuitDao.insert(musicGroupQuit);
|
|
musicGroupQuitDao.insert(musicGroupQuit);
|
|
- Set<Integer> roleIds = new HashSet<>(1);
|
|
|
|
- roleIds.add(SysUserRole.SECTION_MANAGER);
|
|
|
|
- Set<Integer> integers = musicGroupDao.queryUserIdByRoleId(roleIds, musicGroup.getOrganId());
|
|
|
|
- integers.add(musicGroup.getEducationalTeacherId());
|
|
|
|
- Map<String, Object> memo = new HashMap<>(2);
|
|
|
|
- memo.put("Id", musicGroupQuit.getId());
|
|
|
|
- memo.put("type", "MUSICGROUP");
|
|
|
|
|
|
+
|
|
|
|
+ if (reqMusicGroupQuit.getStatus() == PROCESSING) {
|
|
|
|
+ Set<Integer> roleIds = new HashSet<>(1);
|
|
|
|
+ roleIds.add(SysUserRole.SECTION_MANAGER);
|
|
|
|
+ Set<Integer> integers = musicGroupDao.queryUserIdByRoleId(roleIds, musicGroup.getOrganId());
|
|
|
|
+
|
|
|
|
+ if(currentOperatorRoleIds == null || currentOperatorRoleIds.size() == 0){
|
|
|
|
+ integers.add(musicGroup.getEducationalTeacherId());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Map<String, Object> memo = new HashMap<>(2);
|
|
|
|
+ memo.put("Id", musicGroupQuit.getId());
|
|
|
|
+ memo.put("type", "MUSICGROUP");
|
|
|
|
|
|
- sysMessageService.batchSeoMessage(integers,
|
|
|
|
- MessageTypeEnum.BACKSTAGE_STUDENT_APPLY_QUIT_GROUP, JSONObject.toJSONString(memo), sysUser.getUsername());
|
|
|
|
- Map<Integer, String> receivers = new HashMap<>(integers.size());
|
|
|
|
- for (Integer integer : integers) {
|
|
|
|
- receivers.put(integer, integer.toString());
|
|
|
|
- }
|
|
|
|
- sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.SYSTEM_PUSH_STUDENT_COMMIT_QUIT_MUSIC_APPLY,
|
|
|
|
- receivers, null, 0, null, "SYSTEM", musicGroup.getName(), sysUser.getUsername());
|
|
|
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserById(userId);
|
|
|
|
+
|
|
|
|
+ sysMessageService.batchSeoMessage(integers, MessageTypeEnum.BACKSTAGE_STUDENT_APPLY_QUIT_GROUP, JSONObject.toJSONString(memo),
|
|
|
|
+ sysUser.getUsername());
|
|
|
|
+ Map<Integer, String> receivers = new HashMap<>(integers.size());
|
|
|
|
+ for (Integer integer : integers) {
|
|
|
|
+ receivers.put(integer, integer.toString());
|
|
|
|
+ }
|
|
|
|
+ sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.SYSTEM_PUSH_STUDENT_COMMIT_QUIT_MUSIC_APPLY, receivers, null, 0, null,
|
|
|
|
+ "SYSTEM", musicGroup.getName(), sysUser.getUsername());
|
|
|
|
+ } else {
|
|
|
|
+ musicGroupQuit.setStatus(reqMusicGroupQuit.getStatus());
|
|
|
|
+ approveQuitMusicGroup(currentOperatorRoleIds, musicGroupQuit);
|
|
|
|
+ }
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1986,14 +2045,37 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
- public boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason, boolean isRefundCourseFee, boolean isRefundInstrumentFee,
|
|
|
|
- boolean isRefundTeachingAssistantsFee,boolean isRefundMemberFee, BigDecimal maintenanceFee, BigDecimal cloudTeacherAmount) {
|
|
|
|
-
|
|
|
|
|
|
+ public boolean approveQuitMusicGroup(List<Integer> currentOperatorRoleIds, MusicGroupQuit reqMusicGroupQuit) {
|
|
|
|
+
|
|
|
|
+ Long id = reqMusicGroupQuit.getId();
|
|
|
|
+ ApprovalStatus status = reqMusicGroupQuit.getStatus();
|
|
|
|
+ String reason = reqMusicGroupQuit.getReason();
|
|
|
|
+ Date visitDate = reqMusicGroupQuit.getVisitTime();
|
|
|
|
+ MusicGroupReturnFeeDto returnFeeDto = reqMusicGroupQuit.getReturnFeeDto();
|
|
|
|
+
|
|
MusicGroupQuit musicGroupQuit = musicGroupQuitDao.get(id);
|
|
MusicGroupQuit musicGroupQuit = musicGroupQuitDao.get(id);
|
|
if (musicGroupQuit == null) {
|
|
if (musicGroupQuit == null) {
|
|
throw new BizException("数据不存在");
|
|
throw new BizException("数据不存在");
|
|
}
|
|
}
|
|
|
|
+
|
|
Date date = new Date();
|
|
Date date = new Date();
|
|
|
|
+
|
|
|
|
+ if (!currentOperatorRoleIds.contains(SysUserRole.SECTION_MANAGER) && currentOperatorRoleIds.contains(SysUserRole.EDUCATIONAL_TEACHER)) {
|
|
|
|
+
|
|
|
|
+ if(!StringUtils.equals(musicGroupQuit.getCurrentApproveRole(), SysUserRole.EDUCATIONAL_TEACHER + "")){
|
|
|
|
+ throw new BizException("只有分部经理才能审核");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(status == ApprovalStatus.APPROVED){
|
|
|
|
+ throw new BizException("只能分部经理操作退团");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(currentOperatorRoleIds.contains(SysUserRole.SECTION_MANAGER) && !currentOperatorRoleIds.contains(SysUserRole.EDUCATIONAL_TEACHER)){
|
|
|
|
+ if(!StringUtils.equals(musicGroupQuit.getCurrentApproveRole(), SysUserRole.SECTION_MANAGER + "")){
|
|
|
|
+ throw new BizException("先需乐团主管审核");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
String musicGroupId = musicGroupQuit.getMusicGroupId();
|
|
String musicGroupId = musicGroupQuit.getMusicGroupId();
|
|
Integer userId = musicGroupQuit.getUserId();
|
|
Integer userId = musicGroupQuit.getUserId();
|
|
@@ -2029,10 +2111,45 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
musicGroupQuit.setStatus(status);
|
|
musicGroupQuit.setStatus(status);
|
|
musicGroupQuit.setReason(reason);
|
|
musicGroupQuit.setReason(reason);
|
|
musicGroupQuit.setQuitDate(date);
|
|
musicGroupQuit.setQuitDate(date);
|
|
|
|
+ musicGroupQuit.setFeeJson(JsonUtil.toJSONString(returnFeeDto));
|
|
|
|
+ if (visitDate != null) {
|
|
|
|
+ musicGroupQuit.setVisitTime(visitDate);
|
|
|
|
+ musicGroupQuit.setIsVisit(true);
|
|
|
|
+ } else {
|
|
|
|
+ musicGroupQuit.setIsVisit(false);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(StringUtils.isBlank(musicGroupQuit.getUserComment())){
|
|
|
|
+ musicGroupQuit.setUserComment(reqMusicGroupQuit.getUserComment());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ BigDecimal returnTotalFee = BigDecimal.ZERO;
|
|
|
|
+
|
|
|
|
+ if(returnFeeDto.getIsReturnAccessoriesFee()){
|
|
|
|
+ returnTotalFee = returnTotalFee.add(returnFeeDto.getAccessoriesFee());
|
|
|
|
+ }
|
|
|
|
+ if(returnFeeDto.getIsReturnCourseFee()){
|
|
|
|
+ returnTotalFee = returnTotalFee.add(returnFeeDto.getCourseFee());
|
|
|
|
+ }
|
|
|
|
+ if(returnFeeDto.getIsReturnMaintenanceFee()){
|
|
|
|
+ returnTotalFee = returnTotalFee.add(returnFeeDto.getMaintenanceFee());
|
|
|
|
+ }
|
|
|
|
+ if(returnFeeDto.getIsReturnMemberFee()){
|
|
|
|
+ returnTotalFee = returnTotalFee.add(returnFeeDto.getMemberFee());
|
|
|
|
+ }
|
|
|
|
+ if(returnFeeDto.getIsReturnMusicalFee()){
|
|
|
|
+ returnTotalFee = returnTotalFee.add(returnFeeDto.getMusicalFee());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ musicGroupQuit.setReturnTotalFee(returnTotalFee);
|
|
|
|
+
|
|
|
|
+ if(status != ApprovalStatus.PROCESSING){
|
|
|
|
+ courseScheduleStudentPaymentService.updateCourseActualPrice(Arrays.asList(musicGroupId), Arrays.asList(userId), GroupType.MUSIC);
|
|
|
|
+ }else {
|
|
|
|
+ musicGroupQuit.setCurrentApproveRole(SysUserRole.SECTION_MANAGER + "");
|
|
|
|
+ }
|
|
musicGroupQuitDao.update(musicGroupQuit);
|
|
musicGroupQuitDao.update(musicGroupQuit);
|
|
|
|
|
|
- courseScheduleStudentPaymentService.updateCourseActualPrice(Arrays.asList(musicGroupId), Arrays.asList(userId), GroupType.MUSIC);
|
|
|
|
-
|
|
|
|
if (status == ApprovalStatus.APPROVED) {
|
|
if (status == ApprovalStatus.APPROVED) {
|
|
|
|
|
|
List<Integer> classGroupIdList = classGroupStudentMapperDao.queryClassGroupIdList(musicGroupId, userId, GroupType.MUSIC);
|
|
List<Integer> classGroupIdList = classGroupStudentMapperDao.queryClassGroupIdList(musicGroupId, userId, GroupType.MUSIC);
|
|
@@ -2142,14 +2259,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
groupEventSource.musicGroupStudentChangeEvent(musicGroupId, StudentMusicGroupStatusEnum.QUIT, new ArrayList<>(Arrays.asList(userId)));
|
|
groupEventSource.musicGroupStudentChangeEvent(musicGroupId, StudentMusicGroupStatusEnum.QUIT, new ArrayList<>(Arrays.asList(userId)));
|
|
|
|
|
|
}
|
|
}
|
|
- if (isRefundMemberFee){
|
|
|
|
|
|
+ if (returnFeeDto.getIsReturnMemberFee()){
|
|
if(musicGroup.getCourseViewType() != CourseViewTypeEnum.MEMBER_FEE){
|
|
if(musicGroup.getCourseViewType() != CourseViewTypeEnum.MEMBER_FEE){
|
|
throw new BizException("非会员乐团不允许退云教练");
|
|
throw new BizException("非会员乐团不允许退云教练");
|
|
}
|
|
}
|
|
//删除乐团会员时长
|
|
//删除乐团会员时长
|
|
studentRegistrationDao.cleanMusicMember(userId,null);
|
|
studentRegistrationDao.cleanMusicMember(userId,null);
|
|
//退云教练费用
|
|
//退云教练费用
|
|
- if (cloudTeacherAmount != null) {
|
|
|
|
|
|
+ if (returnFeeDto.getMemberFee() != null) {
|
|
Date nowDate = new Date();
|
|
Date nowDate = new Date();
|
|
List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderService.getStudentCloudTeacherOrder(userId);
|
|
List<CloudTeacherOrder> cloudTeacherOrders = cloudTeacherOrderService.getStudentCloudTeacherOrder(userId);
|
|
BigDecimal orderAmount = BigDecimal.ZERO;
|
|
BigDecimal orderAmount = BigDecimal.ZERO;
|
|
@@ -2162,12 +2279,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
orderAmount = orderAmount.add(cloudTeacherOrder.getAmount());
|
|
orderAmount = orderAmount.add(cloudTeacherOrder.getAmount());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- cloudTeacherOrderService.quitCloudTeacherOrders(quitCloudTeacherOrders, cloudTeacherAmount);
|
|
|
|
|
|
+ cloudTeacherOrderService.quitCloudTeacherOrders(quitCloudTeacherOrders, returnFeeDto.getMemberFee());
|
|
}
|
|
}
|
|
- if (cloudTeacherAmount.compareTo(orderAmount) > 0) {
|
|
|
|
|
|
+ if (returnFeeDto.getMemberFee().compareTo(orderAmount) > 0) {
|
|
throw new BizException("云教练退费金额不能大于原始订单金额");
|
|
throw new BizException("云教练退费金额不能大于原始订单金额");
|
|
}
|
|
}
|
|
- amount = amount.add(cloudTeacherAmount);
|
|
|
|
|
|
+ amount = amount.add(returnFeeDto.getMemberFee());
|
|
//清除学员云教练
|
|
//清除学员云教练
|
|
studentService.cleanMember(userId);
|
|
studentService.cleanMember(userId);
|
|
//如果有试用会员,不清除
|
|
//如果有试用会员,不清除
|
|
@@ -2184,7 +2301,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
studentRegistrationDao.cleanMusicMember(userId,musicGroupId);
|
|
studentRegistrationDao.cleanMusicMember(userId,musicGroupId);
|
|
}
|
|
}
|
|
|
|
|
|
- if (isRefundCourseFee) {
|
|
|
|
|
|
+ if (returnFeeDto.getIsReturnCourseFee()) {
|
|
// 退课程费用
|
|
// 退课程费用
|
|
amount = amount.add(surplusCourseFee);
|
|
amount = amount.add(surplusCourseFee);
|
|
}
|
|
}
|
|
@@ -2198,12 +2315,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.getWithIds(paymentOrderIdList);
|
|
List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.getWithIds(paymentOrderIdList);
|
|
|
|
|
|
SubjectChange studentLastChange = null;
|
|
SubjectChange studentLastChange = null;
|
|
- if (isRefundInstrumentFee || isRefundTeachingAssistantsFee) {
|
|
|
|
|
|
+ if (returnFeeDto.getIsReturnMusicalFee() || returnFeeDto.getIsReturnAccessoriesFee()) {
|
|
studentLastChange = subjectChangeDao.getStudentLastChange(userId, musicGroupId);
|
|
studentLastChange = subjectChangeDao.getStudentLastChange(userId, musicGroupId);
|
|
}
|
|
}
|
|
|
|
|
|
if (studentLastChange != null && minPaymentOrderId <= studentLastChange.getOriginalOrderId()) {
|
|
if (studentLastChange != null && minPaymentOrderId <= studentLastChange.getOriginalOrderId()) {
|
|
- if (isRefundInstrumentFee) {
|
|
|
|
|
|
+ if (returnFeeDto.getIsReturnMusicalFee()) {
|
|
amount = amount.add(studentLastChange.getChangeMusicalPrice());
|
|
amount = amount.add(studentLastChange.getChangeMusicalPrice());
|
|
|
|
|
|
StudentInstrument studentMaintenance = studentInstrumentDao.getByOrderId(studentLastChange.getOrderId().longValue());
|
|
StudentInstrument studentMaintenance = studentInstrumentDao.getByOrderId(studentLastChange.getOrderId().longValue());
|
|
@@ -2213,14 +2330,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- if (isRefundTeachingAssistantsFee) {
|
|
|
|
|
|
+ if (returnFeeDto.getIsReturnAccessoriesFee()) {
|
|
amount = amount.add(studentLastChange.getChangeAccessoriesPrice());
|
|
amount = amount.add(studentLastChange.getChangeAccessoriesPrice());
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
for (StudentPaymentOrderDetail detail : orderDetailList) {
|
|
for (StudentPaymentOrderDetail detail : orderDetailList) {
|
|
|
|
|
|
// 退乐器费用
|
|
// 退乐器费用
|
|
- if (isRefundInstrumentFee && detail.getType() == OrderDetailTypeEnum.MUSICAL) {
|
|
|
|
|
|
+ if (returnFeeDto.getIsReturnMusicalFee() && detail.getType() == OrderDetailTypeEnum.MUSICAL) {
|
|
amount = amount.add(detail.getPrice()).subtract(detail.getRemitFee());
|
|
amount = amount.add(detail.getPrice()).subtract(detail.getRemitFee());
|
|
|
|
|
|
StudentInstrument studentMaintenance = studentInstrumentDao.getStudentMaintenance(userId, musicGroupId);
|
|
StudentInstrument studentMaintenance = studentInstrumentDao.getStudentMaintenance(userId, musicGroupId);
|
|
@@ -2231,29 +2348,52 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
|
|
}
|
|
}
|
|
|
|
|
|
// 退教辅费用
|
|
// 退教辅费用
|
|
- if (isRefundTeachingAssistantsFee
|
|
|
|
|
|
+ if (returnFeeDto.getIsReturnAccessoriesFee()
|
|
&& (detail.getType() == OrderDetailTypeEnum.ACCESSORIES || detail.getType() == OrderDetailTypeEnum.TEACHING)) {
|
|
&& (detail.getType() == OrderDetailTypeEnum.ACCESSORIES || detail.getType() == OrderDetailTypeEnum.TEACHING)) {
|
|
amount = amount.add(detail.getPrice()).subtract(detail.getRemitFee());
|
|
amount = amount.add(detail.getPrice()).subtract(detail.getRemitFee());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- //退乐保费用
|
|
|
|
- if (maintenanceFee != null) {
|
|
|
|
- StudentInstrument studentMaintenance = studentInstrumentDao.getStudentMaintenance(userId, musicGroupId);
|
|
|
|
- if (maintenanceFee.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
- if (studentMaintenance == null) {
|
|
|
|
- throw new BizException("学生没有有效期内的乐保,不能退乐保费用");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- amount = amount.add(maintenanceFee);
|
|
|
|
- if (maintenanceFee.compareTo(BigDecimal.ZERO) > 0 && studentMaintenance != null) {
|
|
|
|
- studentMaintenance.setStatus(0);
|
|
|
|
- studentMaintenance.setStartTime(null);
|
|
|
|
- studentMaintenance.setEndTime(null);
|
|
|
|
- studentInstrumentDao.update(studentMaintenance);
|
|
|
|
- }
|
|
|
|
|
|
+ //退乐保费用
|
|
|
|
+ if (returnFeeDto.getIsReturnMaintenanceFee()) {
|
|
|
|
+
|
|
|
|
+ Map<Long, StudentPaymentOrderDetail> maintenanceMap = orderDetailList.stream()
|
|
|
|
+ .filter(t -> (t.getType() == OrderDetailTypeEnum.MAINTENANCE))
|
|
|
|
+ .collect(Collectors.toMap(t -> t.getStudentInstrumentId(), StudentPaymentOrderDetail -> StudentPaymentOrderDetail));
|
|
|
|
+
|
|
|
|
+ List<Long> instrumentIdList = new ArrayList<Long>(maintenanceMap.keySet());
|
|
|
|
+ List<StudentInstrument> updateStudentInstrumentList = new ArrayList<StudentInstrument>();
|
|
|
|
+
|
|
|
|
+ if (instrumentIdList != null && instrumentIdList.size() > 0) {
|
|
|
|
+ List<StudentInstrument> studentInstrumentList = studentInstrumentDao.queryById(instrumentIdList);
|
|
|
|
+
|
|
|
|
+ for (StudentInstrument si : studentInstrumentList) {
|
|
|
|
+ if (si.getDelFlag() == 1) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ((si.getStatus() == 0 && si.getStartTime() == null) || si.getEndTime().after(date)) {
|
|
|
|
+ updateStudentInstrumentList.add(si);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /*if (updateStudentInstrumentList.size() == 0) {
|
|
|
|
+ throw new BizException("学生没有有效期内的乐保,不能退乐保费用");
|
|
|
|
+ }*/
|
|
|
|
+
|
|
|
|
+ amount = amount.add(returnFeeDto.getMaintenanceFee());
|
|
|
|
+
|
|
|
|
+ if (updateStudentInstrumentList.size() > 0) {
|
|
|
|
+ for (StudentInstrument studentMaintenance : updateStudentInstrumentList) {
|
|
|
|
+ studentMaintenance.setStatus(0);
|
|
|
|
+ studentMaintenance.setStartTime(null);
|
|
|
|
+ studentMaintenance.setEndTime(null);
|
|
|
|
+ studentInstrumentDao.update(studentMaintenance);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
if (amount.doubleValue() > 0) {
|
|
if (amount.doubleValue() > 0) {
|