ソースを参照

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

yonge 5 年 前
コミット
149a536072

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -235,4 +235,13 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      */
     List<Map<Integer, Integer>> countTeacherNums(@Param("classGroupIds") String classGroupIds);
 
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/17
+     * @params [teacherId]
+     * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassGroupDto>
+     * @describe 获取老师乐团班级
+     */
+    List<TeacherClassGroupDto> findTeacherMusicClassGroup(@Param("teacherId") Long teacherId);
+
 }

+ 12 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java

@@ -1,11 +1,10 @@
 package com.ym.mec.biz.dal.dao;
 
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
-
 import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStudentMapper> {
 
@@ -37,4 +36,13 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
 	 * @param classGroupId
 	 */
 	void deleteByClassId(Integer classGroupId);
+
+	/**
+	 * @Author: Joburgess
+	 * @Date: 2019/10/17
+	 * @params [classGroupId, userId]
+	 * @return int
+	 * @describe 删除班级上的指定学生
+	 */
+	int deleteStudentByClassGroupId(@Param("classGroupId") Long classGroupId,@Param("userId") Long userId);
 }

+ 142 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/TeacherClassGroupDto.java

@@ -0,0 +1,142 @@
+package com.ym.mec.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/10/17
+ */
+public class TeacherClassGroupDto {
+
+    @ApiModelProperty(value = "班级编号")
+    private Long classGroupId;
+
+    @ApiModelProperty(value = "班级名称")
+    private String classGroupName;
+
+    @ApiModelProperty(value = "学生数量")
+    private Integer studentNum;
+
+    @ApiModelProperty(value = "当前课时")
+    private Integer currentClassTimes;
+
+    @ApiModelProperty(value = "课程总数")
+    private Integer totalClassTimes;
+
+    @ApiModelProperty(value = "乐团编号")
+    private Long musicGroupId;
+
+    @ApiModelProperty(value = "乐团名称")
+    private String musicGroupName;
+
+    @ApiModelProperty(value = "学校编号")
+    private Long schoolId;
+
+    @ApiModelProperty(value = "学校名称")
+    private String schoolName;
+
+    @ApiModelProperty(value = "科目编号列表")
+    private String subjectIdList;
+
+    @ApiModelProperty(value = "科目名称")
+    private String subjectNames;
+
+    @ApiModelProperty(value = "连续3节课未签到人数")
+    private Integer threeClassNoAttendanceStudentNum;
+
+    public String getSubjectIdList() {
+        return subjectIdList;
+    }
+
+    public void setSubjectIdList(String subjectIdList) {
+        this.subjectIdList = subjectIdList;
+    }
+
+    public Long getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Long classGroupId) {
+        this.classGroupId = classGroupId;
+    }
+
+    public String getClassGroupName() {
+        return classGroupName;
+    }
+
+    public void setClassGroupName(String classGroupName) {
+        this.classGroupName = classGroupName;
+    }
+
+    public Integer getStudentNum() {
+        return studentNum;
+    }
+
+    public void setStudentNum(Integer studentNum) {
+        this.studentNum = studentNum;
+    }
+
+    public Integer getCurrentClassTimes() {
+        return currentClassTimes;
+    }
+
+    public void setCurrentClassTimes(Integer currentClassTimes) {
+        this.currentClassTimes = currentClassTimes;
+    }
+
+    public Integer getTotalClassTimes() {
+        return totalClassTimes;
+    }
+
+    public void setTotalClassTimes(Integer totalClassTimes) {
+        this.totalClassTimes = totalClassTimes;
+    }
+
+    public Long getMusicGroupId() {
+        return musicGroupId;
+    }
+
+    public void setMusicGroupId(Long musicGroupId) {
+        this.musicGroupId = musicGroupId;
+    }
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public String getSchoolName() {
+        return schoolName;
+    }
+
+    public void setSchoolName(String schoolName) {
+        this.schoolName = schoolName;
+    }
+
+    public String getSubjectNames() {
+        return subjectNames;
+    }
+
+    public void setSubjectNames(String subjectNames) {
+        this.subjectNames = subjectNames;
+    }
+
+    public Integer getThreeClassNoAttendanceStudentNum() {
+        return threeClassNoAttendanceStudentNum;
+    }
+
+    public void setThreeClassNoAttendanceStudentNum(Integer threeClassNoAttendanceStudentNum) {
+        this.threeClassNoAttendanceStudentNum = threeClassNoAttendanceStudentNum;
+    }
+}

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -200,4 +200,13 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param musicGroupId
      */
     void addMusicGroupTeam(Integer teacherId, String musicGroupId) throws Exception;
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/17
+     * @params []
+     * @return java.util.List<com.ym.mec.biz.dal.dto.TeacherClassGroupDto>
+     * @describe 获取老师所在班级列表
+     */
+    List<TeacherClassGroupDto> findTeacherClassGroups();
 }

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.service.impl;
 
+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.*;
@@ -58,6 +60,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     private ClassGroupTeacherSalaryService classGroupTeacherSalaryService;
     @Autowired
     private MusicGroupStudentFeeDao musicGroupStudentFeeDao;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
 
     @Override
     public BaseDAO<Integer, ClassGroup> getDAO() {
@@ -473,6 +477,19 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     }
 
     @Override
+    public List<TeacherClassGroupDto> findTeacherClassGroups() {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if(Objects.isNull(user)){
+            throw new BizException("请登录");
+        }
+
+        List<TeacherClassGroupDto> teacherMusicClassGroup = classGroupDao.findTeacherMusicClassGroup(user.getId().longValue());
+
+
+        return null;
+    }
+
+    @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public boolean updateClassStudentNum(Long classGroupId, Integer num) {
         ClassGroup classGroup=classGroupDao.lockClassGroup(classGroupId);

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -24,6 +24,7 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.time.DateUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -461,6 +462,22 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	public void courseScheduleCommplaint(CourseScheduleComplaints courseScheduleComplaints) {
 		SysUser user = sysUserFeignService.queryUserInfo();
 
+		if(Objects.isNull(user)){
+			throw new BizException("请登录");
+		}
+
+		if(Objects.isNull(courseScheduleComplaints.getCourseScheduleId())){
+			throw new BizException("请指定需要投诉的课程");
+		}
+
+		if(StringUtils.isBlank(courseScheduleComplaints.getReason())){
+			throw new BizException("请说明投诉原因");
+		}
+
+		if(StringUtils.length(courseScheduleComplaints.getReason())>150){
+			throw new BizException("字符长度超限");
+		}
+
 		courseScheduleComplaints.setUserId(user.getId());
 
 		CourseScheduleComplaints byUserAndCourse = courseScheduleComplaintsDao.findByUserAndCourse(courseScheduleComplaints.getUserId().longValue(), courseScheduleComplaints.getCourseScheduleId());

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -39,6 +39,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 	private SysUserCashAccountService sysUserCashAccountService;
 	@Autowired
 	private SysUserCashAccountDetailService sysUserCashAccountDetailService;
+	@Autowired
+	private StudentPaymentOrderDao studentPaymentOrderDao;
 
 	private static final Logger LOGGER = LoggerFactory
 			.getLogger(CourseScheduleTeacherSalaryServiceImpl.class);
@@ -235,6 +237,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 				sysUserCashAccountService.updateBalance(studentPayment.getUserId(),returnPrice);
 				SysUserCashAccount studentCashAccount = sysUserCashAccountService.get(studentPayment.getUserId().intValue());
 				SysUserCashAccountDetail studentAccountDetail=new SysUserCashAccountDetail();
+//				studentAccountDetail.setTransNo(studentPayment.getT());
 				studentAccountDetail.setUserId(studentPayment.getUserId());
 				studentAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
 				studentAccountDetail.setStatus(DealStatusEnum.SUCCESS);

+ 313 - 293
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -95,10 +95,19 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+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 {
-
+	
 	@Autowired
 	private VipGroupDao vipGroupDao;
 	@Autowired
@@ -119,37 +128,39 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	private VipGroupActivityDao vipGroupActivityDao;
 	@Autowired
 	private VipGroupCategoryDao vipGroupCategoryDao;
-	@Autowired
-	private SysUserFeignService sysUserFeignService;
-	@Autowired
-	private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
-	@Autowired
-	private StudentPaymentOrderDao studentPaymentOrderDao;
-	@Autowired
-	private StudentVipGroupPaymentDao studentVipGroupPaymentDao;
-	@Autowired
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private TeacherDefaultVipGroupSalaryDao teacherDefaultVipGroupSalaryDao;
+    @Autowired
+    private StudentPaymentOrderDao studentPaymentOrderDao;
+    @Autowired
+    private StudentVipGroupPaymentDao studentVipGroupPaymentDao;
+    @Autowired
 	private StudentApplyRefundsDao studentApplyRefundsDao;
-
+	
 	@Autowired
 	private SysUserCashAccountService sysUserCashAccountService;
 
-	@Autowired
+    @Autowired
 	private SysUserCashAccountDetailDao sysUserCashAccountDetailDao;
-	@Autowired
+    @Autowired
 	private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao;
 
-	@Autowired
+    @Autowired
 	private CourseScheduleTeacherSalaryDao courseScheduleTeacherSalaryDao;
-	@Autowired
+    @Autowired
 	private ImFeignService imFeignService;
-	@Autowired
+    @Autowired
 	private SubjectDao subjectDao;
-	@Autowired
+    @Autowired
 	private CourseScheduleTeacherSalaryService courseScheduleTeacherSalaryService;
-	@Autowired
+    @Autowired
 	private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
 	@Autowired
 	private PayService payService;
+	@Autowired
+	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
 
 	@Autowired
 	private CourseScheduleRewardsRulesService courseScheduleRewardsRulesService;
@@ -165,101 +176,99 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	@Override
 	public void createVipGroup(VipGroupApplyDto vipGroup) {
 
-		if (Objects.isNull(vipGroup.getVipGroupApplyBaseInfo().getUserId())) {
+		if (Objects.isNull(vipGroup.getVipGroupApplyBaseInfo().getUserId())){
 			throw new BizException("请选择指导老师");
 		}
 
-		if (vipGroup.getCourseSchedules().size() != (vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum() + vipGroup.getVipGroupApplyBaseInfo()
-				.getOnlineClassesNum())) {
-			throw new BizException("课时总数不匹配!");
-		}
+	    if(vipGroup.getCourseSchedules().size()!=(vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum()+vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum())){
+	        throw new BizException("课时总数不匹配!");
+        }
 
-		Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroup = vipGroup.getCourseSchedules().stream()
-				.collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
+        Map<TeachModeEnum, List<CourseSchedule>> courseScheduleGroup = vipGroup.getCourseSchedules().stream().collect(Collectors.groupingBy(CourseSchedule::getTeachMode));
 
-		if ((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE)) && vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum() != 0)
-				|| (!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE)) && (courseScheduleGroup.get(TeachModeEnum.OFFLINE).size() < vipGroup
-						.getVipGroupApplyBaseInfo().getOfflineClassesNum()))) {
-			throw new BizException("线下课课时数量安排有误!");
-		}
-		if ((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE)) && vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum() != 0)
-				|| (!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE)) && (courseScheduleGroup.get(TeachModeEnum.ONLINE).size() < vipGroup
-						.getVipGroupApplyBaseInfo().getOnlineClassesNum()))) {
-			throw new BizException("线上课课时数量安排有误!");
-		}
+	    if((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE))&&vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum()!=0)
+				||(!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.OFFLINE))&&(courseScheduleGroup.get(TeachModeEnum.OFFLINE).size()<vipGroup.getVipGroupApplyBaseInfo().getOfflineClassesNum()))){
+	        throw new BizException("线下课课时数量安排有误!");
+        }
+        if((Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE))&&vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum()!=0)
+				||(!Objects.isNull(courseScheduleGroup.get(TeachModeEnum.ONLINE))&&(courseScheduleGroup.get(TeachModeEnum.ONLINE).size()<vipGroup.getVipGroupApplyBaseInfo().getOnlineClassesNum()))){
+            throw new BizException("线上课课时数量安排有误!");
+        }
 
-		// 获取活动信息
-		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupActivityId().intValue());
+        //获取活动信息
+        VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupActivityId().intValue());
 
-		// 生成vip课信息
-		VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto = vipGroup.getVipGroupApplyBaseInfo();
+		//生成vip课信息
+		VipGroupApplyBaseInfoDto vipGroupApplyBaseInfoDto=vipGroup.getVipGroupApplyBaseInfo();
 		List<String> bySubIds = subjectDao.findBySubIds(vipGroupApplyBaseInfoDto.getSubjectIdList());
-		StringBuffer className = new StringBuffer(StringUtils.join(bySubIds, ","));
+		StringBuffer className=new StringBuffer(StringUtils.join(bySubIds,","));
 		className.append("•");
 		className.append(vipGroupApplyBaseInfoDto.getName());
 		vipGroupApplyBaseInfoDto.setName(className.toString());
-		vipGroupApplyBaseInfoDto.setTotalPrice(countVipGroupPredictFee(vipGroupApplyBaseInfoDto, vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice(),
+		vipGroupApplyBaseInfoDto.setTotalPrice(countVipGroupPredictFee(vipGroupApplyBaseInfoDto,
+				vipGroupApplyBaseInfoDto.getOnlineClassesUnitPrice(),
 				vipGroupApplyBaseInfoDto.getOfflineClassesUnitPrice()).get("totalPrice"));
 		vipGroupApplyBaseInfoDto.setStatus(VipGroupStatusEnum.APPLYING);
 		vipGroupDao.insert(vipGroupApplyBaseInfoDto);
 
-		// 获取vip课类型信息
+		//获取vip课类型信息
 		VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupCategoryId().intValue());
 
-		// 创建班级信息
-		ClassGroup classGroup = new ClassGroup();
+		//创建班级信息
+		ClassGroup classGroup=new ClassGroup();
 		classGroup.setSubjectIdList(vipGroupApplyBaseInfoDto.getSubjectIdList());
 		classGroup.setExpectStudentNum(vipGroupCategory.getStudentNum());
 		classGroup.setName(vipGroupApplyBaseInfoDto.getName());
 		classGroup.setExpectStudentNum(vipGroupApplyBaseInfoDto.getExpectStudentNum());
-		classGroup.setTotalClassTimes(vipGroupApplyBaseInfoDto.getOnlineClassesNum() + vipGroupApplyBaseInfoDto.getOfflineClassesNum());
+		classGroup.setTotalClassTimes(vipGroupApplyBaseInfoDto.getOnlineClassesNum()+vipGroupApplyBaseInfoDto.getOfflineClassesNum());
 		classGroup.setType(ClassGroupTypeEnum.VIP);
 		classGroup.setDelFlag(YesOrNoEnum.NO);
 		classGroupDao.insert(classGroup);
 
-		// 创建vip课班级关联记录
-		VipGroupClassGroupMapper vipGroupClassGroupMapper = new VipGroupClassGroupMapper();
+		//创建vip课班级关联记录
+		VipGroupClassGroupMapper vipGroupClassGroupMapper=new VipGroupClassGroupMapper();
 		vipGroupClassGroupMapper.setVipGroupId(vipGroupApplyBaseInfoDto.getId());
 		vipGroupClassGroupMapper.setClassGroupId(classGroup.getId());
 		vipGroupClassGroupMapperDao.insert(vipGroupClassGroupMapper);
 
-		// 创建融云班级群
+		//创建融云班级群
 		// 指导老师加入群组
-		ImGroupMember[] imGroupMembers = { new ImGroupMember(vipGroup.getVipGroupApplyBaseInfo().getUserId().toString()) };
+		ImGroupMember[] imGroupMembers = { new ImGroupMember(vipGroup.getVipGroupApplyBaseInfo().getUserId().toString())};
 		// 创建群组
 		imFeignService.groupCreate(new ImGroupModel(classGroup.getId().toString(), imGroupMembers, classGroup.getName()));
 
-		// 创建班级老师关联记录
-		ClassGroupTeacherMapper classGroupTeacherMapper = new ClassGroupTeacherMapper();
+		//创建班级老师关联记录
+		ClassGroupTeacherMapper classGroupTeacherMapper=new ClassGroupTeacherMapper();
 		classGroupTeacherMapper.setTeacherRole(TeachTypeEnum.BISHOP);
 		classGroupTeacherMapper.setUserId(vipGroupApplyBaseInfoDto.getUserId());
 		classGroupTeacherMapperDao.insert(classGroupTeacherMapper);
 
-		// 创建班级与老师课酬记录
-		ClassGroupTeacherSalary classGroupTeacherSalary = new ClassGroupTeacherSalary();
+		//创建班级与老师课酬记录
+		ClassGroupTeacherSalary classGroupTeacherSalary=new ClassGroupTeacherSalary();
 		classGroupTeacherSalary.setTeacherRole(TeachTypeEnum.BISHOP);
 		classGroupTeacherSalary.setUserId(vipGroupApplyBaseInfoDto.getUserId());
 		classGroupTeacherSalary.setSalary(vipGroupApplyBaseInfoDto.getOfflineTeacherSalary());
 		classGroupTeacherSalary.setOnlineClassesSalary(vipGroupApplyBaseInfoDto.getOnlineTeacherSalary());
 		classGroupTeacherSalaryDao.insert(classGroupTeacherSalary);
 
-		// 课程信息调整
-		vipGroup.getCourseSchedules().forEach(
-				courseSchedule -> {
-					if (courseSchedule.getEndClassTime().after(vipGroupActivity.getCoursesEndTime())
-							&& courseSchedule.getStartClassTime().before(vipGroupActivity.getCoursesStartTime())) {
-						throw new BizException("课时安排时间超出范围!");
-					}
-					courseSchedule.setTeacherId(vipGroupApplyBaseInfoDto.getUserId().longValue());
-					courseSchedule.setStatus(CourseStatusEnum.NOT_START);
-					courseSchedule.setType(CourseSchedule.CourseScheduleType.VIP);
-					courseSchedule.setClassGroupId(classGroup.getId());
-				});
+		//课程信息调整
+		vipGroup.getCourseSchedules().forEach(courseSchedule -> {
+		    if(courseSchedule.getEndClassTime().after(vipGroupActivity.getCoursesEndTime())
+                &&courseSchedule.getStartClassTime().before(vipGroupActivity.getCoursesStartTime())){
+		        throw new BizException("课时安排时间超出范围!");
+            }
+		    courseSchedule.setTeacherId(vipGroupApplyBaseInfoDto.getUserId().longValue());
+			courseSchedule.setStatus(CourseStatusEnum.NOT_START);
+		    courseSchedule.setType(CourseSchedule.CourseScheduleType.VIP);
+			courseSchedule.setClassGroupId(classGroup.getId());
+		});
 		courseScheduleService.batchAddCourseSchedule(vipGroup.getCourseSchedules());
 
-		// 创建老师单节课课酬信息
-		courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(vipGroupApplyBaseInfoDto, vipGroup.getCourseSchedules(),
-				vipGroupApplyBaseInfoDto.getOnlineTeacherSalary(), vipGroupApplyBaseInfoDto.getOfflineTeacherSalary());
+		//创建老师单节课课酬信息
+		courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(vipGroupApplyBaseInfoDto,
+				vipGroup.getCourseSchedules(),
+				vipGroupApplyBaseInfoDto.getOnlineTeacherSalary(),
+				vipGroupApplyBaseInfoDto.getOfflineTeacherSalary());
 	}
 
 	@Override
@@ -306,7 +315,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 	@Override
 	public Map<String, Object> findVipGroupTeachingRecord(VipGroupTeachingRecordQueryInfo queryInfo) {
-		if (Objects.isNull(queryInfo.getVipGroupId())) {
+		if(Objects.isNull(queryInfo.getVipGroupId())){
 			throw new BizException("请指定vip课程!");
 		}
 		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
@@ -327,18 +336,18 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		TeachingRecordBaseInfo classTimes = vipGroupDao.getClassTimes(queryInfo.getVipGroupId());
 		classTimes.setIsSalaryNum(vipGroupDao.countIsSalaryNum(queryInfo.getVipGroupId()));
 		classTimes.setComplaintsNum(vipGroupDao.countComplaintsNum(queryInfo.getVipGroupId()));
-		Map<String, Object> result = new HashMap<>();
-		result.put("pageInfo", pageInfo);
-		result.put("baseInfo", classTimes);
+		Map<String,Object> result=new HashMap<>();
+		result.put("pageInfo",pageInfo);
+		result.put("baseInfo",classTimes);
 		return result;
 	}
 
 	@Override
 	public TeachingRecordBaseInfo findTeachingRecordBaseInfo(Long vipGroupId) {
-		TeachingRecordBaseInfo classTimes = vipGroupDao.getClassTimes(vipGroupId);
-		classTimes.setIsSalaryNum(vipGroupDao.countIsSalaryNum(vipGroupId));
-		classTimes.setComplaintsNum(vipGroupDao.countComplaintsNum(vipGroupId));
-		return classTimes;
+        TeachingRecordBaseInfo classTimes = vipGroupDao.getClassTimes(vipGroupId);
+        classTimes.setIsSalaryNum(vipGroupDao.countIsSalaryNum(vipGroupId));
+        classTimes.setComplaintsNum(vipGroupDao.countComplaintsNum(vipGroupId));
+        return classTimes;
 	}
 
 	@Override
@@ -363,11 +372,11 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 	@Override
 	public VipGroupManageDetailDto getVipGroupDetail(Long vipGroupId) {
-		if (Objects.isNull(vipGroupId)) {
+		if(Objects.isNull(vipGroupId)){
 			throw new BizException("请指定vip课程");
 		}
 		VipGroupManageDetailDto vipGroupBaseInfo = vipGroupDao.getVipGroupBaseInfo(vipGroupId);
-		vipGroupBaseInfo.setSubjectName(StringUtils.join(subjectDao.findBySubIds(vipGroupBaseInfo.getSubjectIdList()), ","));
+		vipGroupBaseInfo.setSubjectName(StringUtils.join(subjectDao.findBySubIds(vipGroupBaseInfo.getSubjectIdList()),","));
 		return vipGroupBaseInfo;
 	}
 
@@ -393,167 +402,162 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 	@Override
 	public StudentVipGroupDetailDto getVipGroupShowDetail(Long vipGroupId) {
-		if (Objects.isNull(vipGroupId)) {
+		if(Objects.isNull(vipGroupId)){
 			throw new BizException("请指定vip课程");
 		}
-		StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(vipGroupId);
-		vipGroupDetail.setNumberOfClasses(vipGroupDao.countTeacherVipGroups(vipGroupDetail.getTeacherId().longValue()));
-		return vipGroupDetail;
+        StudentVipGroupDetailDto vipGroupDetail = vipGroupDao.getVipGroupDetail(vipGroupId);
+        vipGroupDetail.setNumberOfClasses(vipGroupDao.countTeacherVipGroups(vipGroupDetail.getTeacherId().longValue()));
+        return vipGroupDetail;
 	}
 
 	@Override
 	public VipGroupCostCountDto vipGroupCostCount(VipGroupCostCountParamsDto vipGroupCostCountParamsDto) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(user.getId().longValue(),
-				vipGroupCostCountParamsDto.getVipGroupCategoryId());
-		VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.get(vipGroupCostCountParamsDto
-				.getVipGroupDefaultClassesUnitPriceId().intValue());
+        SysUser user = sysUserFeignService.queryUserInfo();
+        TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(user.getId().longValue(), vipGroupCostCountParamsDto.getVipGroupCategoryId());
+        VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.get(vipGroupCostCountParamsDto.getVipGroupDefaultClassesUnitPriceId().intValue());
 		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroupCostCountParamsDto.getVipGroupActivityId().intValue());
-		VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(),
-				VipGroupSalarySettlementDto.class);
-		BigDecimal offlineClassNum = new BigDecimal(vipGroupCostCountParamsDto.getOfflineClassesNum());
-		BigDecimal onlineClassNum = new BigDecimal(vipGroupCostCountParamsDto.getOnlineClassesNum());
-
-		// 教师课酬
-		BigDecimal teacherOnlineSalary, teacherOfflineSalary, teacherSalary;
-		switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()) {
-		case TEACHER_DEFAULT:
-			teacherOnlineSalary = teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(onlineClassNum);
-			break;
-		case RATIO_DISCOUNT:
-			teacherOnlineSalary = vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice()
-					.multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()).multiply(onlineClassNum);
-			break;
-		case FIXED_SALARY:
-			teacherOnlineSalary = vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue().multiply(onlineClassNum);
-			break;
-		default:
-			throw new BizException("未指定课酬结算标准!");
-		}
-		switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()) {
-		case TEACHER_DEFAULT:
-			teacherOfflineSalary = teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(offlineClassNum);
-			break;
-		case RATIO_DISCOUNT:
-			teacherOfflineSalary = vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice()
-					.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).multiply(offlineClassNum);
-			break;
-		case FIXED_SALARY:
-			teacherOfflineSalary = vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue().multiply(offlineClassNum);
-			break;
-		default:
-			throw new BizException("未指定课酬结算标准!");
-		}
-		teacherSalary = teacherOnlineSalary.add(teacherOfflineSalary);
-		return new VipGroupCostCountDto(null, teacherSalary);
-	}
-
-	/**
-	 * @Author: Joburgess
-	 * @Date: 2019/10/2
-	 * 计算VIP课程预计收费
-	 */
-	@Override
-	public Map<String, BigDecimal> countVipGroupPredictFee(VipGroup vipGroup, BigDecimal onlineClassesUnitPrice, BigDecimal offlineClassesUnitPrice) {
-		if (Objects.isNull(vipGroup.getUserId())) {
+        VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
+        BigDecimal offlineClassNum=new BigDecimal(vipGroupCostCountParamsDto.getOfflineClassesNum());
+        BigDecimal onlineClassNum=new BigDecimal(vipGroupCostCountParamsDto.getOnlineClassesNum());
+
+
+        //教师课酬
+        BigDecimal teacherOnlineSalary,teacherOfflineSalary,teacherSalary;
+        switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
+            case TEACHER_DEFAULT:
+                teacherOnlineSalary=teacherDefaultVipGroupSalary.getOnlineClassesSalary().multiply(onlineClassNum);
+                break;
+            case RATIO_DISCOUNT:
+                teacherOnlineSalary=vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice().multiply(vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue()).multiply(onlineClassNum);
+                break;
+            case FIXED_SALARY:
+                teacherOnlineSalary=vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue().multiply(onlineClassNum);
+                break;
+             default:
+                 throw new BizException("未指定课酬结算标准!");
+        }
+        switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
+            case TEACHER_DEFAULT:
+                teacherOfflineSalary=teacherDefaultVipGroupSalary.getOfflineClassesSalary().multiply(offlineClassNum);
+                break;
+            case RATIO_DISCOUNT:
+                teacherOfflineSalary=vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice().multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()).multiply(offlineClassNum);
+                break;
+            case FIXED_SALARY:
+                teacherOfflineSalary=vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue().multiply(offlineClassNum);
+                break;
+            default:
+                throw new BizException("未指定课酬结算标准!");
+        }
+        teacherSalary=teacherOnlineSalary.add(teacherOfflineSalary);
+        return new VipGroupCostCountDto(null,teacherSalary);
+    }
+
+    /**
+     * @Author: Joburgess
+     * @Date: 2019/10/2
+     * 计算VIP课程预计收费
+     */
+    @Override
+    public Map<String,BigDecimal> countVipGroupPredictFee(VipGroup vipGroup,BigDecimal onlineClassesUnitPrice,BigDecimal offlineClassesUnitPrice){
+		if(Objects.isNull(vipGroup.getUserId())){
 			throw new BizException("请指定教师");
 		}
 
-		if (Objects.isNull(vipGroup.getVipGroupCategoryId())) {
+		if(Objects.isNull(vipGroup.getVipGroupCategoryId())){
 			throw new BizException("请指定课程形式");
 		}
 
-		TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId().longValue(),
+    	TeacherDefaultVipGroupSalary teacherDefaultVipGroupSalary = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(vipGroup.getUserId().longValue(),
 				vipGroup.getVipGroupCategoryId());
 
 		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
 
-		if (Objects.isNull(vipGroupActivity)) {
+		if(Objects.isNull(vipGroupActivity)){
 			throw new BizException("指定的活动方案不存在");
 		}
 
-		VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(),
-				VipGroupSalarySettlementDto.class);
+		VipGroupSalarySettlementDto vipGroupSalarySettlementDto = JSON.parseObject(vipGroupActivity.getSalarySettlementJson(), VipGroupSalarySettlementDto.class);
 
-		if (Objects.isNull(vipGroupSalarySettlementDto)) {
+		if(Objects.isNull(vipGroupSalarySettlementDto)){
 			throw new BizException("课酬结算方案错误");
 		}
 
-		Map<String, BigDecimal> results = new HashMap<>(1);
+		Map<String,BigDecimal> results=new HashMap<>(1);
 
-		BigDecimal offlineClassNum = new BigDecimal(vipGroup.getOfflineClassesNum());
-		BigDecimal onlineClassNum = new BigDecimal(vipGroup.getOnlineClassesNum());
+		BigDecimal offlineClassNum=new BigDecimal(vipGroup.getOfflineClassesNum());
+		BigDecimal onlineClassNum=new BigDecimal(vipGroup.getOnlineClassesNum());
 		BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
 		BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
 
-		// 教师课酬线上单课酬计算
-		switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()) {
-		case TEACHER_DEFAULT:
-			if (Objects.isNull(teacherDefaultVipGroupSalary)) {
-				throw new BizException("未设置教师默认课酬");
-			}
-			results.put("onlineTeacherSalary", teacherDefaultVipGroupSalary.getOfflineClassesSalary());
-			break;
-		case RATIO_DISCOUNT:
-			results.put("onlineTeacherSalary", onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())));
-			break;
-		case FIXED_SALARY:
-			results.put("onlineTeacherSalary", vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue());
-			break;
-		default:
-			throw new BizException("未指定课酬结算标准!");
-		}
-		// 教师线下单课酬计算
-		switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()) {
-		case TEACHER_DEFAULT:
-			if (Objects.isNull(teacherDefaultVipGroupSalary)) {
-				throw new BizException("未设置教师默认课酬");
-			}
-			results.put("offlineTeacherSalary", teacherDefaultVipGroupSalary.getOfflineClassesSalary());
-			break;
-		case RATIO_DISCOUNT:
-			results.put("offlineTeacherSalary", offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()));
-			break;
-		case FIXED_SALARY:
-			results.put("offlineTeacherSalary", vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue());
-			break;
-		default:
-			throw new BizException("未指定课酬结算标准!");
-		}
-
-		// 课程购买费用计算
-		BigDecimal totalPrice;
-		switch (vipGroupActivity.getType()) {
-		case BASE_ACTIVITY:
-			totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
-			break;
-		case DISCOUNT:
-			BigDecimal discount = new BigDecimal(vipGroupActivity.getAttribute1());
-			totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
-			totalPrice = totalPrice.multiply(discount);
-			break;
-		case GIVE_CLASS:
-			if (vipGroup.getGiveTeachMode() == TeachModeEnum.OFFLINE) {
-				if (offlineClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1())) > -1) {
-					offlineClassNum = offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
+		//教师课酬线上单课酬计算
+		switch (vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSalarySettlementType()){
+			case TEACHER_DEFAULT:
+				if(Objects.isNull(teacherDefaultVipGroupSalary)){
+					throw new BizException("未设置教师默认课酬");
 				}
-				offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
-			} else if (vipGroup.getGiveTeachMode() == TeachModeEnum.ONLINE) {
-				if (onlineClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1())) > -1) {
-					onlineClassNum = onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
+				results.put("onlineTeacherSalary",teacherDefaultVipGroupSalary.getOfflineClassesSalary());
+				break;
+			case RATIO_DISCOUNT:
+				results.put("onlineTeacherSalary",onlineClassesUnitPrice.multiply((vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue())));
+				break;
+			case FIXED_SALARY:
+				results.put("onlineTeacherSalary",vipGroupSalarySettlementDto.getOnlineSalarySettlement().getSettlementValue());
+				break;
+			default:
+				throw new BizException("未指定课酬结算标准!");
+		}
+		//教师线下单课酬计算
+		switch (vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSalarySettlementType()){
+			case TEACHER_DEFAULT:
+				if(Objects.isNull(teacherDefaultVipGroupSalary)){
+					throw new BizException("未设置教师默认课酬");
 				}
-				onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
-			} else {
-				throw new BizException("请指定赠送课程类型!");
-			}
-			totalPrice = onlineVipGroupCharge.add(offlineVipGroupCharge);
-			break;
-		default:
-			throw new BizException("活动类型错误!");
+				results.put("offlineTeacherSalary",teacherDefaultVipGroupSalary.getOfflineClassesSalary());
+				break;
+			case RATIO_DISCOUNT:
+				results.put("offlineTeacherSalary",offlineClassesUnitPrice.multiply(vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue()));
+				break;
+			case FIXED_SALARY:
+				results.put("offlineTeacherSalary",vipGroupSalarySettlementDto.getOfflineSalarySettlement().getSettlementValue());
+				break;
+			default:
+				throw new BizException("未指定课酬结算标准!");
+		}
+
+		//课程购买费用计算
+		BigDecimal totalPrice;
+		switch (vipGroupActivity.getType()){
+			case BASE_ACTIVITY:
+				totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
+				break;
+			case DISCOUNT:
+				BigDecimal discount=new BigDecimal(vipGroupActivity.getAttribute1());
+				totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
+				totalPrice=totalPrice.multiply(discount);
+				break;
+			case GIVE_CLASS:
+				if(vipGroup.getGiveTeachMode()==TeachModeEnum.OFFLINE){
+					if(offlineClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
+						offlineClassNum=offlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
+					}
+					offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
+				}else if(vipGroup.getGiveTeachMode()==TeachModeEnum.ONLINE){
+					if(onlineClassNum.compareTo(new BigDecimal(vipGroupActivity.getAttribute1()))>-1){
+						onlineClassNum=onlineClassNum.subtract(new BigDecimal(vipGroupActivity.getAttribute2()));
+					}
+					onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
+				}else{
+					throw new BizException("请指定赠送课程类型!");
+				}
+				totalPrice=onlineVipGroupCharge.add(offlineVipGroupCharge);
+				break;
+			default:
+				throw new BizException("活动类型错误!");
 		}
-		results.put("totalPrice", totalPrice);
-		return results;
-	}
+		results.put("totalPrice",totalPrice);
+        return results;
+    }
 
 	@Transactional(rollbackFor = Exception.class)
 	@Override
@@ -562,46 +566,51 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		StudentPaymentOrder byStudentVipGroup = studentPaymentOrderDao.findByStudentVipGroup(vipGroupBuyParams.getVipGroupId(), user.getId().longValue());
 
-		if (Objects.nonNull(byStudentVipGroup)) {
+		if(Objects.nonNull(byStudentVipGroup)){
 			throw new BizException("订单已存在!");
 		}
 
 		VipGroup vipGroup = vipGroupDao.get(vipGroupBuyParams.getVipGroupId());
 
-		if (vipGroup.getStatus() != VipGroupStatusEnum.APPLYING) {
+		if(vipGroup.getStatus()!=VipGroupStatusEnum.APPLYING){
 			throw new BizException("该课程已结束报名!");
 		}
 
 		VipGroupClassGroupMapper vipGroupClassGroupMapper = vipGroupClassGroupMapperDao.findByVipGroupId(vipGroup.getId());
 
 		VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId().intValue());
-		StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
+		StudentPaymentOrder studentPaymentOrder=new StudentPaymentOrder();
 		studentPaymentOrder.setUserId(user.getId());
-		String orderNo = StringUtils.join(new String[] { user.getId().toString(), String.valueOf(System.currentTimeMillis()) });
+		String orderNo=StringUtils.join(new String[]{user.getId().toString(),String.valueOf(System.currentTimeMillis())});
 		studentPaymentOrder.setOrderNo(orderNo);
 		studentPaymentOrder.setType(OrderTypeEnum.SMALL_CLASS_TO_BUY);
 		studentPaymentOrder.setExpectAmount(vipGroup.getTotalPrice());
-		if (vipGroupActivity.getType() == VipGroupActivityTypeEnum.DISCOUNT) {
+		if(vipGroupActivity.getType()==VipGroupActivityTypeEnum.DISCOUNT){
 			studentPaymentOrder.setActualAmount(studentPaymentOrder.getExpectAmount().multiply(new BigDecimal(vipGroupActivity.getAttribute1())));
-		} else {
+		}else{
 			studentPaymentOrder.setActualAmount(studentPaymentOrder.getExpectAmount());
 		}
 		studentPaymentOrder.setMusicGroupId(vipGroup.getId().toString());
 		studentPaymentOrder.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
 		studentPaymentOrderDao.insert(studentPaymentOrder);
 
-		StudentVipGroupPayment studentVipGroupPayment = new StudentVipGroupPayment();
+		StudentVipGroupPayment studentVipGroupPayment=new StudentVipGroupPayment();
 		studentVipGroupPayment.setUserId(user.getId());
 		studentVipGroupPayment.setVipGroupId(vipGroup.getId());
 		studentVipGroupPayment.setClassGroupId(vipGroupClassGroupMapper.getClassGroupId());
 		studentVipGroupPayment.setStudentPaymentOrderId(studentPaymentOrder.getId());
 		studentVipGroupPaymentDao.insert(studentVipGroupPayment);
 
-		// 更新班级人数,如果订单支付失败则减少
-		classGroupService.updateClassStudentNum(vipGroupClassGroupMapper.getClassGroupId().longValue(), 1);
+		//更新班级人数,如果订单支付失败则减少
+		classGroupService.updateClassStudentNum(vipGroupClassGroupMapper.getClassGroupId().longValue(),1);
 
-		// 生成回调地址
-		Map payMap = payService.getPayMap(vipGroup.getTotalPrice(), orderNo, "https://pay.dayaedu.com/api/yqpay/notify", "http://dev.dayaedu.com", "vip课购买",
+		//生成回调地址
+		Map payMap = payService.getPayMap(
+				vipGroup.getTotalPrice(),
+				orderNo,
+				"https://pay.dayaedu.com/api/yqpay/notify",
+				"http://dev.dayaedu.com",
+				"vip课购买",
 				vipGroup.getName());
 
 		return payMap;
@@ -612,53 +621,54 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	@Transactional(rollbackFor = Exception.class)
 	public void orderCallback(String callbackParams) {
 		/*
-		 * 根据回调信息调整订单状态及vip课程状态等相关信息
+		根据回调信息调整订单状态及vip课程状态等相关信息
 		 */
-		Long vipGroupId = 1L, userId = 1L;
+		Long vipGroupId=1L,userId=1L;
 
 		VipGroup vipGroup = vipGroupDao.get(vipGroupId);
 
-		// 生成学生单课缴费信息
-		courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId, userId);
+		//生成学生单课缴费信息
+		courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId,userId);
 
 		VipGroupClassGroupMapper vipGroupClassGroupMapper = vipGroupClassGroupMapperDao.findByVipGroupId(vipGroupId);
 
-		// 更新订单状态
-		StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, userId);
+		//更新订单状态
+		StudentPaymentOrder studentPaymentOrder=studentPaymentOrderDao.findByStudentVipGroup(vipGroupId,userId);
 		studentPaymentOrder.setStatus(DealStatusEnum.SUCCESS);
 		studentPaymentOrderDao.update(studentPaymentOrder);
 
-		// 将学生加入到班级,更新班级报名状态及人数信息
+		//将学生加入到班级,更新班级报名状态及人数信息
 		ClassGroup classGroup = classGroupDao.get(vipGroupClassGroupMapper.getClassGroupId());
 		int classStudents = classGroupDao.countClassStudent(vipGroupClassGroupMapper.getClassGroupId().longValue());
-		if (classGroup.getExpectStudentNum() == classStudents) {
+		if(classGroup.getExpectStudentNum()==classStudents){
 			vipGroup.setStatus(VipGroupStatusEnum.FINISH);
 			vipGroupDao.update(vipGroup);
 		}
-		classGroup.setStudentNum(classGroup.getStudentNum() + 1);
+		classGroup.setStudentNum(classGroup.getStudentNum()+1);
 		classGroupDao.update(classGroup);
 
 	}
 
 	@Transactional(rollbackFor = Exception.class)
 	@Override
-	public void applyRefund(Long vipGroupId, Long studentId) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (null == studentId) {
-			studentId = sysUser.getId().longValue();
-		}
-		StudentApplyRefunds studentApplyRefunds = new StudentApplyRefunds();
-		StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, studentId);
-		if (null == studentPaymentOrder) {
+	public void applyRefund(Long vipGroupId,Long studentId) {
+		SysUser sysUser=sysUserFeignService.queryUserInfo();
+    	if(null==studentId){
+    		studentId=sysUser.getId().longValue();
+		}
+		StudentApplyRefunds studentApplyRefunds=new StudentApplyRefunds();
+		StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId,studentId);
+		if(null==studentPaymentOrder){
 			throw new BizException("未找到相关订单信息!");
 		}
-		VipGroup vipGroup = vipGroupDao.get(vipGroupId);
-		// 剩余课时数
-		Map surplusClassTimes = MapUtil.convertMybatisMap(vipGroupDao.countSurplusClassTimes(vipGroupId));
-		studentApplyRefunds.setExpectAmount(countVipGroupPredictFee(vipGroup, new BigDecimal(surplusClassTimes.get(TeachModeEnum.ONLINE.getCode()).toString()),
+		VipGroup vipGroup=vipGroupDao.get(vipGroupId);
+		//剩余课时数
+		Map surplusClassTimes=MapUtil.convertMybatisMap(vipGroupDao.countSurplusClassTimes(vipGroupId));
+		studentApplyRefunds.setExpectAmount(countVipGroupPredictFee(vipGroup,
+				new BigDecimal(surplusClassTimes.get(TeachModeEnum.ONLINE.getCode()).toString()),
 				new BigDecimal(surplusClassTimes.get(TeachModeEnum.OFFLINE.getCode()).toString())).get("totalPrice"));
 		studentApplyRefunds.setStatus(AuditStatusEnum.ING);
-		String orderNo = StringUtils.join(new String[] { studentId.toString(), String.valueOf(System.currentTimeMillis()) });
+		String orderNo=StringUtils.join(new String[]{studentId.toString(),String.valueOf(System.currentTimeMillis())});
 		studentApplyRefunds.setOrderNo(orderNo);
 		studentApplyRefunds.setOrigPaymentOrderId(studentPaymentOrder.getId());
 		studentApplyRefunds.setUserId(studentId.intValue());
@@ -668,44 +678,54 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	@Transactional(rollbackFor = Exception.class)
 	@Override
 	public void applyRefundAudit(StudentApplyRefunds studentApplyRefunds) {
-		if (Objects.isNull(studentApplyRefunds.getId())) {
-			throw new BizException("请指定退费订单!");
+    	if(Objects.isNull(studentApplyRefunds.getId())){
+    		throw new BizException("请指定退费订单!");
+		}
+
+		StudentApplyRefunds oldStudentApplyRefunds=studentApplyRefundsDao.get(studentApplyRefunds.getId());
+
+		StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.get(oldStudentApplyRefunds.getOrigPaymentOrderId());
+		if(null==studentPaymentOrder){
+			throw new BizException("未找到原订单信息!");
 		}
-		StudentApplyRefunds oldStudentApplyRefunds = studentApplyRefundsDao.get(studentApplyRefunds.getId());
+
 		oldStudentApplyRefunds.setStatus(studentApplyRefunds.getStatus());
-		if (null == studentApplyRefunds.getActualAmount()) {
+		if(null==studentApplyRefunds.getActualAmount()){
 			oldStudentApplyRefunds.setActualAmount(oldStudentApplyRefunds.getExpectAmount());
-		} else {
+		}else{
 			oldStudentApplyRefunds.setActualAmount(studentApplyRefunds.getActualAmount());
 		}
 		oldStudentApplyRefunds.setRemark(studentApplyRefunds.getRemark());
 		studentApplyRefundsDao.update(oldStudentApplyRefunds);
-		switch (studentApplyRefunds.getStatus()) {
-		case PASS:
-			sysUserCashAccountService.updateBalance(oldStudentApplyRefunds.getUserId(), oldStudentApplyRefunds.getActualAmount());
-			SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentApplyRefunds.getUserId().intValue());
-			SysUserCashAccountDetail sysUserCashAccountDetail = new SysUserCashAccountDetail();
-			sysUserCashAccountDetail.setUserId(studentApplyRefunds.getUserId());
-			sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
-			sysUserCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
-			sysUserCashAccountDetail.setAmount(oldStudentApplyRefunds.getActualAmount());
-			sysUserCashAccountDetail.setBalance(sysUserCashAccount.getBalance());
-			sysUserCashAccountDetail.setAttribute(oldStudentApplyRefunds.getId().toString());
-			sysUserCashAccountDetailDao.insert(sysUserCashAccountDetail);
-			break;
-		case REJECT:
-
-			break;
-		default:
-			throw new BizException("审核状态错误!");
+		switch (studentApplyRefunds.getStatus()){
+			case PASS:
+				sysUserCashAccountService.updateBalance(oldStudentApplyRefunds.getUserId(),oldStudentApplyRefunds.getActualAmount());
+				SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentApplyRefunds.getUserId().intValue());
+				SysUserCashAccountDetail sysUserCashAccountDetail=new SysUserCashAccountDetail();
+				sysUserCashAccountDetail.setUserId(studentApplyRefunds.getUserId());
+				sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
+				sysUserCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
+				sysUserCashAccountDetail.setAmount(oldStudentApplyRefunds.getActualAmount());
+				sysUserCashAccountDetail.setBalance(sysUserCashAccount.getBalance());
+				sysUserCashAccountDetail.setAttribute(oldStudentApplyRefunds.getId().toString());
+				sysUserCashAccountDetailDao.insert(sysUserCashAccountDetail);
+
+				classGroupStudentMapperDao.deleteStudentByClassGroupId(studentPaymentOrder.getClassGroupId().longValue(),
+						studentPaymentOrder.getUserId().longValue());
+				break;
+			case REJECT:
+
+				break;
+			default:
+				throw new BizException("审核状态错误!");
 		}
 	}
 
 	@Override
 	public Map<String, Object> findVipGroupSalarys(VipGroupSalaryQueryInfo queryInfo) {
 
-		if (Objects.isNull(queryInfo.getVipGroupId())) {
-			throw new BizException("请指定vip课程!");
+    	if(Objects.isNull(queryInfo.getVipGroupId())){
+    		throw new BizException("请指定vip课程!");
 		}
 
 		PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
@@ -719,13 +739,13 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			params.put("offset", pageInfo.getOffset());
 			dataList = courseScheduleTeacherSalaryDao.findVipGroupSalarys(params);
 			dataList.forEach(vipGroupSalaryDto -> {
-				if (Objects.isNull(vipGroupSalaryDto.getExpectSalary())) {
+				if(Objects.isNull(vipGroupSalaryDto.getExpectSalary())){
 					vipGroupSalaryDto.setExpectSalary(new BigDecimal(0));
 				}
-				if (Objects.isNull(vipGroupSalaryDto.getActualSalary())) {
+				if(Objects.isNull(vipGroupSalaryDto.getActualSalary())){
 					vipGroupSalaryDto.setActualSalary(new BigDecimal(0));
 					vipGroupSalaryDto.setIsSalary(YesOrNoEnum.NO);
-				} else {
+				}else{
 					vipGroupSalaryDto.setIsSalary(YesOrNoEnum.YES);
 				}
 				vipGroupSalaryDto.setDeductionFee(vipGroupSalaryDto.getExpectSalary().subtract(vipGroupSalaryDto.getActualSalary()));
@@ -737,28 +757,28 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 		pageInfo.setRows(dataList);
 
 		VipGroupSalaryBaseInfo vipGroupSalaryBaseInfo = vipGroupDao.getVipGroupSalaryInfo(queryInfo.getVipGroupId());
-		if (Objects.isNull(vipGroupSalaryBaseInfo)) {
-			vipGroupSalaryBaseInfo = new VipGroupSalaryBaseInfo();
+		if(Objects.isNull(vipGroupSalaryBaseInfo)){
+			vipGroupSalaryBaseInfo=new VipGroupSalaryBaseInfo();
 		}
-		if (Objects.isNull(vipGroupSalaryBaseInfo.getExpectTotalSalary())) {
+		if(Objects.isNull(vipGroupSalaryBaseInfo.getExpectTotalSalary())){
 			vipGroupSalaryBaseInfo.setExpectTotalSalary(new BigDecimal(0));
 		}
-		if (Objects.isNull(vipGroupSalaryBaseInfo.getTotalSalary())) {
+		if(Objects.isNull(vipGroupSalaryBaseInfo.getTotalSalary())){
 			vipGroupSalaryBaseInfo.setTotalSalary(new BigDecimal(0));
 		}
 		vipGroupSalaryBaseInfo.setTotalFeeDeduction(vipGroupSalaryBaseInfo.getExpectTotalSalary().subtract(vipGroupSalaryBaseInfo.getTotalSalary()));
 		vipGroupSalaryBaseInfo.setFeeDeductionNum(vipGroupDao.countVipGroupDeductionNum(queryInfo.getVipGroupId()));
 
-		Map<String, Object> result = new HashMap<>();
-		result.put("pageInfo", pageInfo);
-		result.put("baseInfo", vipGroupSalaryBaseInfo);
+		Map<String,Object> result=new HashMap<>();
+		result.put("pageInfo",pageInfo);
+		result.put("baseInfo",vipGroupSalaryBaseInfo);
 		return result;
 	}
 
 	@Override
 	public List<String> findVipGroupAttendanceStudents(Long courseScheduleId) {
-		if (Objects.isNull(courseScheduleId)) {
-			throw new BizException("请指定课程");
+    	if(Objects.isNull(courseScheduleId)){
+    		throw new BizException("请指定课程");
 		}
 		return courseScheduleDao.findStudentNamesByCourseSchedule(courseScheduleId);
 	}
@@ -766,36 +786,36 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void stopGroup(Long vipGroupId) {
-		if (Objects.isNull(vipGroupId)) {
-			throw new BizException("请指定vip课");
+    	if(Objects.isNull(vipGroupId)){
+    		throw new BizException("请指定vip课");
 		}
 		VipGroup vipGroup = vipGroupDao.get(vipGroupId);
-		if (Objects.isNull(vipGroup)) {
-			throw new BizException("该课程不存在");
+    	if(Objects.isNull(vipGroup)){
+    		throw new BizException("该课程不存在");
 		}
-		if (vipGroup.getStatus() == VipGroupStatusEnum.FINISH || vipGroup.getStatus() == VipGroupStatusEnum.CANCEL) {
-			throw new BizException("该课程已结束或者已被停止,无法进行此操作");
+    	if(vipGroup.getStatus()==VipGroupStatusEnum.FINISH||vipGroup.getStatus()==VipGroupStatusEnum.CANCEL){
+    		throw new BizException("该课程已结束或者已被停止,无法进行此操作");
 		}
-		if (vipGroup.getStatus() == VipGroupStatusEnum.NOT_START) {
+    	if(vipGroup.getStatus()==VipGroupStatusEnum.NOT_START){
 			vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
-			vipGroupDao.update(vipGroup);
-			return;
+    		vipGroupDao.update(vipGroup);
+    		return;
 		}
 		List<Map<Long, BigDecimal>> maps = vipGroupDao.countSurplusCourseFee(vipGroupId);
-		if (CollectionUtils.isEmpty(maps) || (maps.size() == 1 && Objects.isNull(maps.get(0)))) {
+    	if(CollectionUtils.isEmpty(maps)||(maps.size()==1&&Objects.isNull(maps.get(0)))){
 			vipGroup.setStatus(VipGroupStatusEnum.CANCEL);
 			vipGroupDao.update(vipGroup);
 			return;
 		}
 		Map<Long, BigDecimal> studentSurplusClassFees = MapUtil.convertMybatisMap(maps);
-		for (Long userId : studentSurplusClassFees.keySet()) {
-			StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId, userId);
-			if (null == studentPaymentOrder) {
+    	for(Long userId:studentSurplusClassFees.keySet()){
+			StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId,userId);
+			if(null==studentPaymentOrder){
 				throw new BizException("未找到相关订单信息!");
 			}
-			sysUserCashAccountService.updateBalance(userId.intValue(), studentSurplusClassFees.get(userId));
+			sysUserCashAccountService.updateBalance(userId.intValue(),studentSurplusClassFees.get(userId));
 			SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(userId.intValue());
-			SysUserCashAccountDetail sysUserCashAccountDetail = new SysUserCashAccountDetail();
+			SysUserCashAccountDetail sysUserCashAccountDetail=new SysUserCashAccountDetail();
 			sysUserCashAccountDetail.setUserId(userId.intValue());
 			sysUserCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
 			sysUserCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);

+ 33 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -449,6 +449,39 @@
             WHERE cg.id_=#{classGroupId} FOR UPDATE
     </select>
 
+    <resultMap id="TeacherClassGroupDto" type="com.ym.mec.biz.dal.dto.TeacherClassGroupDto">
+        <result property="classGroupId" column="class_group_id_"/>
+        <result property="classGroupName" column="class_group_name_"/>
+        <result property="studentNum" column="student_num_"/>
+        <result property="currentClassTimes" column="current_class_times_"/>
+        <result property="totalClassTimes" column="total_class_times_"/>
+        <result property="musicGroupId" column="music_group_id_"/>
+        <result property="musicGroupName" column="music_group_name_"/>
+        <result property="schoolId" column="school_id_"/>
+        <result property="schoolName" column="school_name_"/>
+        <result property="subjectIdList" column="subject_id_list_"/>
+    </resultMap>
+
+    <select id="findTeacherMusicClassGroup" resultType="com.ym.mec.biz.dal.dto.TeacherClassGroupDto">
+        SELECT
+            cg.id_ class_group_id_,
+            cg.name_ class_group_name_,
+            cg.student_num_,
+            cg.current_class_times_,
+            cg.total_class_times_,
+            cg.subject_id_list_,
+            mg.id_ music_group_id_,
+            mg.name_ music_group_name_,
+            s.id_ school_id_,
+            s.name_ school_name_
+        FROM
+            class_group_teacher_mapper cgtm
+            LEFT JOIN class_group cg ON cgtm.class_group_id_=cg.id_
+            LEFT JOIN music_group mg ON cg.music_group_id_=mg.id_
+            LEFT JOIN school s ON mg.school_id_=s.id_
+        WHERE cgtm.user_id_=#{teacherId} AND cg.type_!="VIP" AND cg.type_!="DEMO"
+    </select>
+
     <!-- 增加实际学生人数 -->
     <update id="addStudentNum" parameterType="com.ym.mec.biz.dal.entity.ClassGroup">
         UPDATE class_group SET student_num_ = student_num_+1,update_time_=#{updateTime} WHERE id_ = #{id} AND

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml

@@ -83,4 +83,8 @@
     <delete id="deleteStudentByMusicGroupId" parameterType="map">
         DELETE FROM class_group_student_mapper WHERE class_group_id_ in (select id_ from class_group where music_group_id_ = #{musicGroupId}) and user_id_ = #{userId}
     </delete>
+
+    <delete id="deleteStudentByClassGroupId">
+        DELETE FROM class_group_student_mapper WHERE class_group_id_=#{classGroupId} AND user_id_=#{userId}
+    </delete>
 </mapper>