|  | @@ -1,13 +1,12 @@
 | 
	
		
			
				|  |  |  package com.ym.mec.biz.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.math.BigDecimal;
 | 
	
		
			
				|  |  | -import java.util.ArrayList;
 | 
	
		
			
				|  |  | -import java.util.Collections;
 | 
	
		
			
				|  |  | -import java.util.HashMap;
 | 
	
		
			
				|  |  | -import java.util.List;
 | 
	
		
			
				|  |  | -import java.util.Map;
 | 
	
		
			
				|  |  | +import java.util.*;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.page.RewardsRulesQueryInfo;
 | 
	
		
			
				|  |  | +import com.ym.mec.common.exception.BizException;
 | 
	
		
			
				|  |  | +import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -23,6 +22,7 @@ import com.ym.mec.common.page.QueryInfo;
 | 
	
		
			
				|  |  |  import com.ym.mec.common.service.impl.BaseServiceImpl;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.collection.MapUtil;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.json.JsonUtil;
 | 
	
		
			
				|  |  | +import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class CourseScheduleRewardsRulesServiceImpl extends BaseServiceImpl<Integer, CourseScheduleRewardsRules> implements CourseScheduleRewardsRulesService {
 | 
	
	
		
			
				|  | @@ -124,6 +124,85 @@ public class CourseScheduleRewardsRulesServiceImpl extends BaseServiceImpl<Integ
 | 
	
		
			
				|  |  |  		return result;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	@Override
 | 
	
		
			
				|  |  | +	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +	public int add(CourseScheduleRewardsRules courseScheduleRewardsRules) {
 | 
	
		
			
				|  |  | +		String teacherId = courseScheduleRewardsRules.getTeacherId();
 | 
	
		
			
				|  |  | +		String vipGroupCategoryIdList = courseScheduleRewardsRules.getVipGroupCategoryIdList();
 | 
	
		
			
				|  |  | +		if(StringUtils.isEmpty(teacherId) || StringUtils.isEmpty(vipGroupCategoryIdList)){
 | 
	
		
			
				|  |  | +			throw new BizException("参数校验异常");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(StringUtils.isEmpty(courseScheduleRewardsRules.getRewardsRulesJson())){
 | 
	
		
			
				|  |  | +			throw new BizException("请设置梯度");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		//同一种课程形式,只能有一个老师
 | 
	
		
			
				|  |  | +		List<CourseScheduleRewardsRules> scheduleRewardsRules = courseScheduleRewardsDao.findByTeacherAndCategory(teacherId,vipGroupCategoryIdList);
 | 
	
		
			
				|  |  | +		if(scheduleRewardsRules != null && scheduleRewardsRules.size() > 0){
 | 
	
		
			
				|  |  | +			throw new BizException("同一种课程类型,只能对应一个老师");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		courseScheduleRewardsDao.insert(courseScheduleRewardsRules);
 | 
	
		
			
				|  |  | +		return courseScheduleRewardsRules.getId();
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Override
 | 
	
		
			
				|  |  | +	public PageInfo<CourseScheduleRewardsRules> queryDetailPage(RewardsRulesQueryInfo queryInfo) {
 | 
	
		
			
				|  |  | +		PageInfo<CourseScheduleRewardsRules> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 | 
	
		
			
				|  |  | +		Map<String, Object> params = new HashMap<>();
 | 
	
		
			
				|  |  | +		MapUtil.populateMap(params, queryInfo);
 | 
	
		
			
				|  |  | +		List<CourseScheduleRewardsRules> dataList = null;
 | 
	
		
			
				|  |  | +		int count = courseScheduleRewardsDao.findDetailPage(params);
 | 
	
		
			
				|  |  | +		if (count > 0) {
 | 
	
		
			
				|  |  | +			pageInfo.setTotal(count);
 | 
	
		
			
				|  |  | +			params.put("offset", pageInfo.getOffset());
 | 
	
		
			
				|  |  | +			dataList = courseScheduleRewardsDao.queryDetailPage(params);
 | 
	
		
			
				|  |  | +			List<Integer> rewardsIds = dataList.stream().map(e -> e.getId()).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +			//获取教师列表
 | 
	
		
			
				|  |  | +			if(rewardsIds != null && rewardsIds.size() > 0){
 | 
	
		
			
				|  |  | +				Map<Integer,String> teacherNameMap = MapUtil.convertIntegerMap(courseScheduleRewardsDao.findTeacherNames(rewardsIds));
 | 
	
		
			
				|  |  | +				Map<Integer,String> vipCategoryNameMap = MapUtil.convertIntegerMap(courseScheduleRewardsDao.findVipCategoryNames(rewardsIds));
 | 
	
		
			
				|  |  | +				dataList.forEach(e->{
 | 
	
		
			
				|  |  | +					e.setTeacherNames(teacherNameMap.get(e.getId()));
 | 
	
		
			
				|  |  | +					e.setVipGroupCategoryNameList(vipCategoryNameMap.get(e.getId()));
 | 
	
		
			
				|  |  | +				});
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if (count == 0) {
 | 
	
		
			
				|  |  | +			dataList = new ArrayList<>();
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		pageInfo.setRows(dataList);
 | 
	
		
			
				|  |  | +		return pageInfo;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Override
 | 
	
		
			
				|  |  | +	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +	public int updateDetail(CourseScheduleRewardsRules courseScheduleRewardsRules) {
 | 
	
		
			
				|  |  | +		String teacherId = courseScheduleRewardsRules.getTeacherId();
 | 
	
		
			
				|  |  | +		String vipGroupCategoryIdList = courseScheduleRewardsRules.getVipGroupCategoryIdList();
 | 
	
		
			
				|  |  | +		if(StringUtils.isEmpty(teacherId) || StringUtils.isEmpty(vipGroupCategoryIdList)){
 | 
	
		
			
				|  |  | +			throw new BizException("参数校验异常");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(StringUtils.isEmpty(courseScheduleRewardsRules.getRewardsRulesJson())){
 | 
	
		
			
				|  |  | +			throw new BizException("请设置梯度");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(courseScheduleRewardsRules.getId() == null){
 | 
	
		
			
				|  |  | +			throw new BizException("参数校验异常");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		//同一种课程形式,只能有一个老师
 | 
	
		
			
				|  |  | +		List<CourseScheduleRewardsRules> scheduleRewardsRules = courseScheduleRewardsDao.findByTeacherAndCategory(teacherId,vipGroupCategoryIdList);
 | 
	
		
			
				|  |  | +		if(scheduleRewardsRules.size() > 1){
 | 
	
		
			
				|  |  | +			throw new BizException("同一种课程类型,只能对应一个老师");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		if(scheduleRewardsRules.size() == 1){
 | 
	
		
			
				|  |  | +			CourseScheduleRewardsRules rewardsRules = scheduleRewardsRules.get(0);
 | 
	
		
			
				|  |  | +			if(!rewardsRules.getId().equals(courseScheduleRewardsRules.getId())){
 | 
	
		
			
				|  |  | +				throw new BizException("同一种课程类型,只能对应一个老师");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		courseScheduleRewardsRules.setUpdateTime(new Date());
 | 
	
		
			
				|  |  | +		courseScheduleRewardsDao.update(courseScheduleRewardsRules);
 | 
	
		
			
				|  |  | +		return courseScheduleRewardsRules.getId();
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	class RewardsRules implements Comparable<RewardsRules> {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		private int min;
 |