| 
					
				 | 
			
			
				@@ -1,14 +1,60 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.ym.mec.biz.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.dao.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Calendar; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Collections; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Set; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.transaction.annotation.Propagation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.auth.api.entity.SysUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.ChargeTypeDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.MusicGroupBuildLogDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.MusicGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.MusicGroupPaymentEntitiesDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.MusicGroupQuitDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.MusicGroupSubjectGoodsGroupDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.SchoolDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.dao.TeacherDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dto.BasicUserDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dto.MusicCardDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.dto.MusicGroupsDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.dto.SubFeeSettingDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.entity.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.biz.dal.enums.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.ApprovalStatus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.MusicGroup; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.MusicGroupBuildLog; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.MusicGroupPaymentEntities; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.MusicGroupQuit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.StudentPaymentOrder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.entity.StudentRegistration; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.DealStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.OrderTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.service.MusicGroupService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.service.PayService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.service.StudentRegistrationService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ym.mec.biz.service.SysUserCashAccountDetailService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.biz.service.SysUserCashAccountService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.dal.BaseDAO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.entity.ImGroupMember; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -19,13 +65,6 @@ import com.ym.mec.common.service.IdGeneratorService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.service.impl.BaseServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.im.ImFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.util.collection.MapUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.transaction.annotation.Propagation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> implements MusicGroupService { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -55,16 +94,28 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private MusicGroupStudentFeeDao musicGroupStudentFeeDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private ClassGroupStudentMapperDao classGroupStudentMapperDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private StudentPaymentOrderDao studentPaymentOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private SysUserCashAccountService sysUserCashAccountService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private SysUserCashAccountDetailService sysUserCashAccountDetailService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private MusicGroupQuitDao musicGroupQuitDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private StudentRegistrationService studentRegistrationService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private PayService payService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public BaseDAO<String, MusicGroup> getDAO() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return musicGroupDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -77,7 +128,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<MusicGroupPaymentEntities> musicGroupPaymentEntities = subFeeSettingDto.getMusicGroupPaymentEntities(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<MusicGroupSubjectGoodsGroup> musicGroupSubjectGoodsGroups = subFeeSettingDto.getMusicGroupSubjectGoodsGroups(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<MusicGroupSubjectPlan> musicGroupSubjectPlans = subFeeSettingDto.getMusicGroupSubjectPlans(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		String musicGroupId = idGeneratorService.generatorId()+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String musicGroupId = idGeneratorService.generatorId() + ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroup.setId(musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 保存乐团基本信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		musicGroupDao.insert(musicGroup); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -114,7 +165,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			musicGroupSubjectGoodsGroupDao.insert(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 新增聊天群 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//			ImGroupModel imGroupModel = new ImGroupModel(musicGroupId, musicGroup.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// ImGroupModel imGroupModel = new ImGroupModel(musicGroupId, musicGroup.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 教务老师和运营主管加入群组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		ImGroupMember[] imGroupMembers = { new ImGroupMember(musicGroup.getTeamTeacherId().toString()), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				new ImGroupMember(musicGroup.getEducationalTeacherId().toString()) }; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -158,22 +209,25 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("乐团当前状态是{},不能取消", musicGroup.getStatus().getMsg()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//查询是否有中间状态的缴费信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 查询是否有中间状态的缴费信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<StudentPaymentOrder> studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(musicGroupId, OrderTypeEnum.APPLY, DealStatusEnum.ING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(studentPaymentOrders != null && studentPaymentOrders.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (studentPaymentOrders != null && studentPaymentOrders.size() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("缴费存在交易中的数据,不能取消乐团"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//查询已缴费信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 查询已缴费信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		studentPaymentOrders = studentPaymentOrderDao.queryByDealStatus(musicGroupId, OrderTypeEnum.APPLY, DealStatusEnum.SUCCESS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 退费 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		for(StudentPaymentOrder order : studentPaymentOrders){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (StudentPaymentOrder order : studentPaymentOrders) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			sysUserCashAccountService.updateBalance(order.getUserId(), order.getActualAmount()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 增加交易流水 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserCashAccountDetailService.addCashAccountDetail(order.getUserId(), order.getActualAmount(), "", "", PlatformCashAccountDetailTypeEnum.REFUNDS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					null, DealStatusEnum.SUCCESS, "取消乐团"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -265,59 +319,130 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public boolean quitMusicGroup(String musicGroupId, Integer userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public boolean applyQuitMusicGroup(String musicGroupId, SysUser sysUser) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		MusicGroup musicGroup = musicGroupDao.get(musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (musicGroup == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new BizException("乐团不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		classGroupStudentMapperDao.updateUserStatusByMusicGroupId(musicGroupId, userId, ClassGroupStudentStatusEnum.QUIT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		MusicGroupQuit musicGroupQuit = new MusicGroupQuit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		musicGroupQuit.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		musicGroupQuit.setJoinDate(sysUser.getCreateTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		musicGroupQuit.setMusicGroupId(musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		musicGroupQuit.setUserId(sysUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		musicGroupQuit.setStatus(ApprovalStatus.PROCESSING); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		musicGroupQuitDao.insert(musicGroupQuit); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public boolean renew(String musicGroupId, Integer userId, double amount) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		MusicGroupQuit musicGroupQuit = musicGroupQuitDao.get(id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (musicGroupQuit != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			String musicGroupId = musicGroupQuit.getMusicGroupId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Integer userId = musicGroupQuit.getUserId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			musicGroupQuit.setStatus(status); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			musicGroupQuit.setReason(reason); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			musicGroupQuit.setQuitDate(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			musicGroupQuitDao.update(musicGroupQuit); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (status == ApprovalStatus.APPROVED) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				classGroupStudentMapperDao.updateUserStatusByMusicGroupId(musicGroupId, userId, ClassGroupStudentStatusEnum.QUIT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 判断乐器是否是租赁 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				StudentRegistration studentRegistration = studentRegistrationService.queryByUserIdAndMusicGroupId(userId, musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (studentRegistration == 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(), "", "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							PlatformCashAccountDetailTypeEnum.REFUNDS, null, DealStatusEnum.SUCCESS, "退出乐团"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public Map renew(String musicGroupId, Integer userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		MusicGroup musicGroup = this.get(musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (musicGroup == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("乐团不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, musicGroupId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (musicGroupStudentFee == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("个人信息不存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 判断当前是否是续费状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (musicGroupStudentFee.getPaymentStatus() != PaymentStatus.NON_PAYMENT) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("已缴费"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		BigDecimal amount = musicGroupStudentFee.getTemporaryCourseFee(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (amount == null || amount.doubleValue() == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			amount = musicGroupStudentFee.getCourseFee(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return payService.getPayMap(amount, idGeneratorService.generatorId("payment") + "", "https://pay.dayaedu.com/api/yqpay/notify", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					"http://dev.dayaedu.com", "测试订单", "测试订单"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			throw new BizException("调用支付接口出错", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public PageInfo<MusicGroup> queryMusicGroupPage(MusicGroupQueryInfo queryInfo) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		PageInfo<MusicGroup> musicGroupPageInfo = queryPage(queryInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<MusicGroup> musicGroupList = musicGroupPageInfo.getRows(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//获取学校编号列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取学校编号列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Set<Integer> schoolIds = musicGroupList.stream().map(e -> e.getSchoolId()).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		List<Map<Integer,String>> schoolNames =  schoolDao.queryNameByIds(schoolIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//获取相关学校名称map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map<Integer,String> schoolNameMap = MapUtil.convertMybatisMap(schoolNames); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<Map<Integer, String>> schoolNames = schoolDao.queryNameByIds(schoolIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取相关学校名称map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<Integer, String> schoolNameMap = MapUtil.convertMybatisMap(schoolNames); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//获取教务老师编号列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取教务老师编号列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Set<Integer> educationalTeacherIds = musicGroupList.stream().map(e -> e.getEducationalTeacherId()).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//获取相关老师的名字 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		List<Map<Integer,String>> educationalTeacherNames =  teacherDao.queryNameByIds(educationalTeacherIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map<Integer,String> educationalTeacherNameMap = MapUtil.convertMybatisMap(educationalTeacherNames); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取相关老师的名字 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<Map<Integer, String>> educationalTeacherNames = teacherDao.queryNameByIds(educationalTeacherIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<Integer, String> educationalTeacherNameMap = MapUtil.convertMybatisMap(educationalTeacherNames); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//获取运营主管编号列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取运营主管编号列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Set<Integer> teamTeacherIds = musicGroupList.stream().map(e -> e.getTeamTeacherId()).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		List<Map<Integer,String>> teamTeacherNames =  teacherDao.queryNameByIds(teamTeacherIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map<Integer,String> teamTeacherNameMap = MapUtil.convertMybatisMap(teamTeacherNames); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<Map<Integer, String>> teamTeacherNames = teacherDao.queryNameByIds(teamTeacherIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<Integer, String> teamTeacherNameMap = MapUtil.convertMybatisMap(teamTeacherNames); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//获取乐团编号列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取乐团编号列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Set<String> musicGroupIds = musicGroupList.stream().map(e -> e.getId()).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//统计乐团在读人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		List<Map<String,Long>> payNums =  musicGroupDao.countPayNum(musicGroupIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map<String,Long> payNumMap = MapUtil.convertMybatisMap(payNums); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 统计乐团在读人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<Map<String, Long>> payNums = musicGroupDao.countPayNum(musicGroupIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<String, Long> payNumMap = MapUtil.convertMybatisMap(payNums); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		//获取收费类型编号列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 获取收费类型编号列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Set<Integer> chargeTypeIds = musicGroupList.stream().map(e -> e.getChargeTypeId()).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		List<Map<Integer,String>> chargeTypeNames =  chargeTypeDao.queryNameByIds(chargeTypeIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Map<Integer,String> chargeTypeNameMap = MapUtil.convertMybatisMap(chargeTypeNames); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		List<Map<Integer, String>> chargeTypeNames = chargeTypeDao.queryNameByIds(chargeTypeIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<Integer, String> chargeTypeNameMap = MapUtil.convertMybatisMap(chargeTypeNames); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		musicGroupList.forEach(e->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		musicGroupList.forEach(e -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			e.setSchoolName(schoolNameMap.get(e.getSchoolId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			e.setEducationalTeacherName(educationalTeacherNameMap.get(e.getEducationalTeacherId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			e.setTeamTeacherName(teamTeacherNameMap.get(e.getTeamTeacherId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			e.setPayNum(payNumMap.get(e.getId())==null?0:payNumMap.get(e.getId()).intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			e.setPayNum(payNumMap.get(e.getId()) == null ? 0 : payNumMap.get(e.getId()).intValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			e.setChargeTypeName(chargeTypeNameMap.get(e.getChargeTypeId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return musicGroupPageInfo; 
			 |