|  | @@ -43,14 +43,18 @@ 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;
 | 
	
	
		
			
				|  | @@ -90,22 +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 PayService payService;
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Autowired
 | 
	
		
			
				|  |  | +	private StudentRegistrationService studentRegistrationService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Autowired
 | 
	
		
			
				|  |  | +	private PayService payService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	public BaseDAO<String, MusicGroup> getDAO() {
 | 
	
		
			
				|  |  |  		return musicGroupDao;
 | 
	
	
		
			
				|  | @@ -118,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);
 | 
	
	
		
			
				|  | @@ -155,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()) };
 | 
	
	
		
			
				|  | @@ -199,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;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -312,14 +325,14 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |  		if (musicGroup == null) {
 | 
	
		
			
				|  |  |  			throw new BizException("乐团不存在");
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  		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;
 | 
	
		
			
				|  |  |  	}
 | 
	
	
		
			
				|  | @@ -328,13 +341,37 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |  	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |  	public boolean approveQuitMusicGroup(Long id, ApprovalStatus status, String reason) {
 | 
	
		
			
				|  |  |  		MusicGroupQuit musicGroupQuit = musicGroupQuitDao.get(id);
 | 
	
		
			
				|  |  | -		if(musicGroupQuit != null){
 | 
	
		
			
				|  |  | +		if (musicGroupQuit != null) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			String musicGroupId = musicGroupQuit.getMusicGroupId();
 | 
	
		
			
				|  |  | +			Integer userId = musicGroupQuit.getUserId();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  			musicGroupQuit.setStatus(status);
 | 
	
		
			
				|  |  |  			musicGroupQuit.setReason(reason);
 | 
	
		
			
				|  |  |  			musicGroupQuit.setQuitDate(new Date());
 | 
	
		
			
				|  |  | -			classGroupStudentMapperDao.updateUserStatusByMusicGroupId(musicGroupQuit.getMusicGroupId(), musicGroupQuit.getUserId(), ClassGroupStudentStatusEnum.QUIT);
 | 
	
		
			
				|  |  | +			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 false;
 | 
	
		
			
				|  |  | +		return true;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
	
		
			
				|  | @@ -373,39 +410,39 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 | 
	
		
			
				|  |  |  	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;
 |