|  | @@ -1,15 +1,106 @@
 | 
	
		
			
				|  |  |  package com.ym.mec.biz.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import java.math.BigDecimal;
 | 
	
		
			
				|  |  | +import java.util.ArrayList;
 | 
	
		
			
				|  |  | +import java.util.Comparator;
 | 
	
		
			
				|  |  | +import java.util.Date;
 | 
	
		
			
				|  |  | +import java.util.HashMap;
 | 
	
		
			
				|  |  | +import java.util.HashSet;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  | +import java.util.Map;
 | 
	
		
			
				|  |  | +import java.util.Objects;
 | 
	
		
			
				|  |  | +import java.util.stream.Collectors;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | +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 org.springframework.util.CollectionUtils;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  |  import com.ym.mec.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dao.*;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dto.*;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.entity.*;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.ClassGroupDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.ClassGroupTeacherMapperDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.ClassGroupTeacherSalaryDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.CourseScheduleStudentPaymentDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.CourseScheduleTeacherSalaryDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.StudentApplyRefundsDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.SubjectDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.SysConfigDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.SysUserCashAccountDetailDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.TeacherDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.TeacherDefaultVipGroupSalaryDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.VipGroupActivityDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.VipGroupCategoryDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.VipGroupClassGroupMapperDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.VipGroupDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.VipGroupDefaultClassesCycleDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.VipGroupDefaultClassesUnitPriceDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.StudentVipGroupDetailDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.TeachingRecordBaseInfo;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.VipGroupApplyBaseInfoDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.VipGroupBuyParamsDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.VipGroupCostCountDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.VipGroupCostCountParamsDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.VipGroupManageDetailDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.VipGroupSalaryBaseInfo;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.VipGroupSalaryDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dto.VipGroupSalarySettlementDto;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.ClassGroup;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.CourseSchedule;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.enums.*;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.page.*;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.*;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.School;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.StudentApplyRefunds;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.StudentApplyRefunds.StudentApplyRefundsStatus;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.Teacher;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.VipGroup;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.VipGroupActivity;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.VipGroupCategory;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.VipGroupClassGroupMapper;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.VipGroupDefaultClassesCycle;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.VipGroupDefaultClassesUnitPrice;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.DealStatusEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.TeachModeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.TeachTypeEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.VipGroupStatusEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.page.StudentVipGroupQueryInfo;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.page.VipGroupAttendanceQueryInfo;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.page.VipGroupQueryInfo;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.page.VipGroupSalaryQueryInfo;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.page.VipGroupTeachingRecordQueryInfo;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.ContractService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.CourseScheduleRewardsRulesService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.CourseScheduleService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.CourseScheduleTeacherSalaryService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.PayService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.SysConfigService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.SysMessageService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.SysUserCashAccountDetailService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.SysUserCashAccountService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.VipGroupService;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.dal.BaseDAO;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.entity.ImGroupMember;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.entity.ImGroupModel;
 | 
	
	
		
			
				|  | @@ -20,16 +111,6 @@ import com.ym.mec.im.ImFeignService;
 | 
	
		
			
				|  |  |  import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.collection.MapUtil;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.date.DateUtil;
 | 
	
		
			
				|  |  | -import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | -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 org.springframework.util.CollectionUtils;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import java.math.BigDecimal;
 | 
	
		
			
				|  |  | -import java.util.*;
 | 
	
		
			
				|  |  | -import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> implements VipGroupService {
 | 
	
	
		
			
				|  | @@ -922,7 +1003,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  				new BigDecimal(Objects.isNull(surplusClassTimes.get(TeachModeEnum.OFFLINE.getCode()))?"0":surplusClassTimes.get(TeachModeEnum.OFFLINE.getCode()).toString()),
 | 
	
		
			
				|  |  |  				true,
 | 
	
		
			
				|  |  |  				false).get("totalPrice"));
 | 
	
		
			
				|  |  | -		studentApplyRefunds.setStatus(AuditStatusEnum.ING);
 | 
	
		
			
				|  |  | +		studentApplyRefunds.setStatus(StudentApplyRefundsStatus.ING);
 | 
	
		
			
				|  |  |  		String orderNo=StringUtils.join(new String[]{studentId.toString(),String.valueOf(System.currentTimeMillis())});
 | 
	
		
			
				|  |  |  		studentApplyRefunds.setOrderNo(orderNo);
 | 
	
		
			
				|  |  |  		studentApplyRefunds.setOrigPaymentOrderId(studentPaymentOrder.getId());
 | 
	
	
		
			
				|  | @@ -932,7 +1013,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  | -	public void applyRefundAudit(Long id, AuditStatusEnum status, String remark,BigDecimal amount) {
 | 
	
		
			
				|  |  | +	public void applyRefundAudit(Long id, StudentApplyRefundsStatus status, String remark,BigDecimal amount) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		StudentApplyRefunds studentApplyRefunds = studentApplyRefundsDao.get(id);
 | 
	
		
			
				|  |  |  		if (studentApplyRefunds == null) {
 | 
	
	
		
			
				|  | @@ -943,17 +1024,24 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  		if (null == studentPaymentOrder) {
 | 
	
		
			
				|  |  |  			throw new BizException("未找到原订单信息!");
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | +		
 | 
	
		
			
				|  |  | +		if(status ==StudentApplyRefundsStatus.ING){
 | 
	
		
			
				|  |  | +			throw new BizException("状态不正确");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		studentApplyRefunds.setStatus(status);
 | 
	
		
			
				|  |  | -		if (studentApplyRefunds.getStatus() == AuditStatusEnum.PASS) {
 | 
	
		
			
				|  |  | +		if (studentApplyRefunds.getStatus() == StudentApplyRefundsStatus.DONE) {
 | 
	
		
			
				|  |  |  			studentApplyRefunds.setActualAmount(amount);
 | 
	
		
			
				|  |  | -		} else {
 | 
	
		
			
				|  |  | +		} else if (studentApplyRefunds.getStatus() == StudentApplyRefundsStatus.WAIT_PAYMENT){
 | 
	
		
			
				|  |  | +			studentApplyRefunds.setExpectAmount(amount);
 | 
	
		
			
				|  |  | +		}else{
 | 
	
		
			
				|  |  |  			studentApplyRefunds.setActualAmount(new BigDecimal(0));
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		studentApplyRefunds.setRemark(remark);
 | 
	
		
			
				|  |  | +		studentApplyRefunds.setUpdateTime(new Date());
 | 
	
		
			
				|  |  |  		studentApplyRefundsDao.update(studentApplyRefunds);
 | 
	
		
			
				|  |  |  		switch (studentApplyRefunds.getStatus()) {
 | 
	
		
			
				|  |  | -			case PASS:
 | 
	
		
			
				|  |  | +			case DONE:
 | 
	
		
			
				|  |  |  				sysUserCashAccountService.updateBalance(studentApplyRefunds.getUserId(), studentApplyRefunds.getActualAmount());
 | 
	
		
			
				|  |  |  				SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentApplyRefunds.getUserId().intValue());
 | 
	
		
			
				|  |  |  				SysUserCashAccountDetail sysUserCashAccountDetail = new SysUserCashAccountDetail();
 | 
	
	
		
			
				|  | @@ -978,6 +1066,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 | 
	
		
			
				|  |  |  			case REJECT:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  				break;
 | 
	
		
			
				|  |  | +			case WAIT_PAYMENT:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				break;
 | 
	
		
			
				|  |  |  			default:
 | 
	
		
			
				|  |  |  				throw new BizException("审核状态错误!");
 | 
	
		
			
				|  |  |  		}
 |