Browse Source

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

zouxuan 5 years ago
parent
commit
a00abe3728

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

@@ -44,6 +44,15 @@ public interface CourseScheduleTeacherSalaryDao extends BaseDAO<Long, CourseSche
 	int countVipGroupSalarys(Map<String, Object> params);
 
 	/**
+	 * @describe 统计课程对应学生实际缴费金额
+	 * @author Joburgess
+	 * @date 2019/12/2
+	 * @param courseScheduleIds:
+	 * @return java.util.List<java.util.Map<java.lang.Integer,java.math.BigDecimal>>
+	 */
+	List<Map<Integer,BigDecimal>> countActualAmount(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
+	/**
 	 * @return java.util.List<com.ym.mec.biz.dal.entity.TeacherDefaultVipGroupSalary>
 	 * @Author: Joburgess
 	 * @Date: 2019/10/15

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/ClassGroup4MixDto.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dto;
 
 import com.ym.mec.biz.dal.entity.ClassGroupTeacherMapper;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.List;
@@ -41,6 +42,9 @@ public class ClassGroup4MixDto {
     @ApiModelProperty(value = "排课方式", required = true)
     private List<CourseTimeDto> courseTimeDtoList;
 
+    @ApiModelProperty(value = "班级类型", required = true)
+    private ClassGroupTypeEnum type;
+
     public String getMusicGroupId() {
         return musicGroupId;
     }
@@ -128,4 +132,12 @@ public class ClassGroup4MixDto {
     public void setCourseType(CourseSchedule.CourseScheduleType courseType) {
         this.courseType = courseType;
     }
+
+    public ClassGroupTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(ClassGroupTypeEnum type) {
+        this.type = type;
+    }
 }

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

@@ -723,6 +723,15 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         classGroupStudentMapperDao.deleteByClassId(classGroupId);
         //删除班级关系
         classGroupRelationDao.deleteByClassId(classGroupId);
+        //删除班级未开始课程
+        List<CourseSchedule> courseScheduleList = courseScheduleService.findNoStartCoursesByClassGroupId(classGroupId);
+        if (courseScheduleList.size() > 0) {
+            List<Long> courseScheduleIds = courseScheduleList.stream().map(courseSchedule -> courseSchedule.getId()).collect(Collectors.toList());
+            courseScheduleDao.batchDeleteCourseSchedules(courseScheduleIds);
+            courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(courseScheduleIds);
+            teacherAttendanceDao.batchDeleteByCourseSchedules(courseScheduleIds);
+            courseScheduleStudentPaymentDao.deleteByCourseSchedule(courseScheduleIds);
+        }
         //删除合奏班
         classGroupDao.delete(classGroupId);
         //删除im群组
@@ -978,6 +987,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         String subjectIds = subjectList.stream().map(subject -> subject.getId().toString()).collect(Collectors.joining(","));
         String subjectNames = subjectList.stream().map(subject -> subject.getName()).collect(Collectors.joining("/"));
 
+        if(classGroup4MixDto.getType() == null){
+            classGroup4MixDto.setType(ClassGroupTypeEnum.NORMAL);
+        }
         //1、新建班级
         ClassGroup classGroup = new ClassGroup();
         classGroup.setMusicGroupId(classGroup4MixDto.getMusicGroupId());
@@ -985,7 +997,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         classGroup.setName(classGroup4MixDto.getClassGroupName());
         classGroup.setExpectStudentNum(studentList.size());
         classGroup.setStudentNum(studentList.size());
-        classGroup.setType(ClassGroupTypeEnum.NORMAL);
+        classGroup.setType(classGroup4MixDto.getType());
         classGroup.setDelFlag(0);
         classGroup.setGroupType(GroupType.MUSIC);
         classGroup.setCurrentClassTimes(0);
@@ -999,8 +1011,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         List<ClassGroupStudentMapper> classGroupStudentMapperList = new ArrayList<>();
         List<Integer> userIds = new ArrayList<>(); //用户ids
         for (StudentRegistration studentRegistration : studentList) {
-            studentRegistration.setClassGroupId(classGroup.getId());
-            studentRegistrationService.update(studentRegistration);
+            if (classGroup4MixDto.getType().equals(ClassGroupTypeEnum.NORMAL)) {
+                studentRegistration.setClassGroupId(classGroup.getId());
+                studentRegistrationService.update(studentRegistration);
+            }
 
             ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
             classGroupStudentMapper.setMusicGroupId(musicGroupId);

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -154,7 +154,7 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
         while (iterator.hasNext()) {
         	Integer userId = Integer.parseInt(iterator.next());
             List<ClassGroupStudentMapper> highClassGroupHasUser = classGroupStudentMapperDao.findHighClassGroupHasUser(classGroup.getMusicGroupId(), userId, classGroup.getType());
-            if (highClassGroupHasUser != null && highClassGroupHasUser.size() > 0) {
+            if (!classGroup.getType().equals(ClassGroupTypeEnum.SNAP) && highClassGroupHasUser != null && highClassGroupHasUser.size() > 0) {
             	iterator.remove();
                 continue;
             }

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

@@ -352,6 +352,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 	@Override
 	public void checkNewCourseSchedules(List<CourseSchedule> courseSchedules,boolean checkExistCourseSchedule){
+		if(CollectionUtils.isEmpty(courseSchedules)){
+			return;
+		}
 		//第一节课
 		CourseSchedule firstCourseSchedule;
 		//最后一节课

+ 35 - 18
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -168,6 +168,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
 
         int days = Integer.parseInt(sysConfigDao.findByParamName(SysConfigService.VIP_APPEAL_DAYS_RANGE).getParanValue());
 
+        BigDecimal percent = new BigDecimal(10);
+
         //获取教师未结算课程记录
         List<CourseScheduleTeacherSalary> someDayAgoTeacherCourseSalaryNoSettlement = courseScheduleTeacherSalaryDao.findSomeDayAgoTeacherCourseSalaryNoSettlement(days);
         if (CollectionUtils.isEmpty(someDayAgoTeacherCourseSalaryNoSettlement)) {
@@ -227,7 +229,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 }
                 //计算教师责任总占比
                 double teacherLiabilityRatioSum = courseStudentComplaints.stream().mapToDouble(courseScheduleComplaint -> Objects.isNull(courseScheduleComplaint.getTeacherLiabilityRatio()) ? 0 : courseScheduleComplaint.getTeacherLiabilityRatio()).sum();
-                teacherLiabilityAllratio = new BigDecimal(teacherLiabilityRatioSum);
+                teacherLiabilityAllratio = new BigDecimal(teacherLiabilityRatioSum).divide(percent,CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN);
             } else {
                 //如果没有投诉,则教师和学生的责任占比为0
                 teacherLiabilityAllratio = new BigDecimal(0);
@@ -256,7 +258,11 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
             teacherCashAccountDetail.setType(PlatformCashAccountDetailTypeEnum.WAGE);
             teacherCashAccountDetail.setStatus(DealStatusEnum.SUCCESS);
             teacherCashAccountDetail.setAmount(actualSalary);
-            teacherCashAccountDetail.setBalance(teacherCashAccount.getBalance());
+            if(Objects.isNull(teacherCashAccount)){
+                teacherCashAccountDetail.setBalance(new BigDecimal(0));
+            }else{
+                teacherCashAccountDetail.setBalance(teacherCashAccount.getBalance());
+            }
             teacherCashAccountDetail.setAttribute(courseScheduleTeacherSalary.getCourseScheduleId().toString());
 
             userCashAccountDetails.add(teacherCashAccountDetail);
@@ -267,6 +273,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 complainsGroupByStudent = courseStudentComplaints.stream().collect(Collectors.groupingBy(CourseScheduleComplaints::getUserId));
             }
 
+            BigDecimal zero=new BigDecimal(0);
+
             //计算学生当前课程应缴费用
             for (CourseScheduleStudentPayment studentPayment : studentPaymentsWithCourse) {
                 //当前课程学生应缴费用
@@ -285,7 +293,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     if (Objects.isNull(temp)) {
                         temp = 0.0;
                     }
-                    studentLiabilityRatio = new BigDecimal(temp);
+                    studentLiabilityRatio = new BigDecimal(temp).divide(percent,CommonConstants.DECIMAL_PLACE,BigDecimal.ROUND_DOWN);
                 } else {
                     studentLiabilityRatio = new BigDecimal(0);
                 }
@@ -293,25 +301,28 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 //当前课程学生应退费用
                 BigDecimal returnPrice = studentExpectPrice.multiply(studentLiabilityRatio);
                 //当前课程学生实际缴费
-                BigDecimal actualPrice = expectSalary.subtract(returnPrice);
+                BigDecimal actualPrice = studentExpectPrice.subtract(returnPrice);
                 //更新学生结算信息
                 studentPayment.setActualPrice(actualPrice);
                 studentPayment.setSettlementTime(now);
                 courseScheduleStudentPaymentDao.update(studentPayment);
                 updateStudentPayments.add(studentPayment);
 
-                //生成学生账户资金变动记录
-                sysUserCashAccountService.updateBalance(studentPayment.getUserId(), returnPrice);
-                SysUserCashAccount studentCashAccount = sysUserCashAccountService.get(studentPayment.getUserId().intValue());
-                SysUserCashAccountDetail studentAccountDetail = new SysUserCashAccountDetail();
-                studentAccountDetail.setUserId(studentPayment.getUserId());
-                studentAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
-                studentAccountDetail.setStatus(DealStatusEnum.SUCCESS);
-                studentAccountDetail.setAmount(returnPrice);
-                studentAccountDetail.setBalance(studentCashAccount.getBalance());
-                studentAccountDetail.setAttribute(courseScheduleTeacherSalary.getCourseScheduleId().toString());
-
-                userCashAccountDetails.add(studentAccountDetail);
+
+                if(returnPrice.compareTo(zero)!=0){
+                    //生成学生账户资金变动记录
+                    sysUserCashAccountService.updateBalance(studentPayment.getUserId(), returnPrice);
+                    SysUserCashAccount studentCashAccount = sysUserCashAccountService.get(studentPayment.getUserId().intValue());
+                    SysUserCashAccountDetail studentAccountDetail = new SysUserCashAccountDetail();
+                    studentAccountDetail.setUserId(studentPayment.getUserId());
+                    studentAccountDetail.setType(PlatformCashAccountDetailTypeEnum.REFUNDS);
+                    studentAccountDetail.setStatus(DealStatusEnum.SUCCESS);
+                    studentAccountDetail.setAmount(returnPrice);
+                    studentAccountDetail.setBalance(studentCashAccount.getBalance());
+                    studentAccountDetail.setAttribute(courseScheduleTeacherSalary.getCourseScheduleId().toString());
+
+                    userCashAccountDetails.add(studentAccountDetail);
+                }
             }
 
         });
@@ -444,7 +455,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     } else {
                         classTimeDuty = classTimeDuty.divide(new BigDecimal(30), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                     }
-                    BigDecimal teacherDefaultSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
+                    BigDecimal teacherDefaultSalary = new BigDecimal(0);
+                    if(Objects.nonNull(teacherDefaultMusicGroupSalaryWithTeacherId)){
+                        teacherDefaultSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher30MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher30MinSalary();
+                    }
                     teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
                 } else if (settlementType.equals(SalarySettlementTypeEnum.GRADIENT_SALARY.getCode())) {
                     //课程时长与结算单位时长占比
@@ -456,7 +470,10 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                     } else {
                         classTimeDuty = classTimeDuty.divide(new BigDecimal(90), CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN);
                     }
-                    BigDecimal teacherDefaultSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher90MinSalary();
+                    BigDecimal teacherDefaultSalary = new BigDecimal(0);
+                    if(Objects.nonNull(teacherDefaultMusicGroupSalaryWithTeacherId)){
+                        teacherDefaultSalary = courseScheduleTeacherSalary.getTeacherRole().equals(TeachTypeEnum.BISHOP) ? teacherDefaultMusicGroupSalaryWithTeacherId.getMainTeacher90MinSalary() : teacherDefaultMusicGroupSalaryWithTeacherId.getAssistantTeacher90MinSalary();
+                    }
                     teacherSalary = teacherDefaultSalary.multiply(classTimeDuty).setScale(2, BigDecimal.ROUND_HALF_UP);
                 }
             }else{

+ 15 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -902,14 +902,25 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     @Override
     public List<StudentRegistration> findMusicGroupStuNoClassType(String musicGroupId, ClassGroupTypeEnum type, Integer subjectId) {
         List<StudentRegistration> students = studentRegistrationDao.findMusicGroupStudent(musicGroupId, subjectId);
+        List<Subject> subjectList = subjectService.findAll(new HashMap<>());
+
         List<ClassGroupStudentMapper> classGroupStudentMappers = classGroupStudentMapperDao.findMusicGroupClassGroupByType(musicGroupId, type);
-        for (StudentRegistration student : students) {
+        Iterator<StudentRegistration> iterator = students.iterator();
+        while (iterator.hasNext()) {
+            StudentRegistration student = iterator.next();
+            for (Subject subject : subjectList) {
+                if (student.getActualSubjectId().equals(subject.getId())) {
+                    student.setSubjectName(subject.getName());
+                }
+            }
+            if (type.equals(ClassGroupTypeEnum.SNAP)) continue;
             for (ClassGroupStudentMapper classGroupStudentMapper : classGroupStudentMappers) {
-                if (classGroupStudentMapper.getUserId().equals(student.getUserId())) {
-                    students.remove(student);
+                if (student.getUserId().equals(classGroupStudentMapper.getUserId())) {
+                    iterator.remove();
                 }
             }
+
         }
-        return null;
+        return students;
     }
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -1289,6 +1289,9 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			pageInfo.setTotal(count);
 			params.put("offset", pageInfo.getOffset());
 			dataList = courseScheduleTeacherSalaryDao.findVipGroupSalarys(params);
+			List<Long> courseScheduleIds = dataList.stream().map(VipGroupSalaryDto::getCourseScheduleId).collect(Collectors.toList());
+			List<Map<Integer, BigDecimal>> courseAmountMapList = courseScheduleTeacherSalaryDao.countActualAmount(courseScheduleIds);
+			Map<Integer, BigDecimal> courseAmountMap = MapUtil.convertIntegerMap(courseAmountMapList);
 			if(!CollectionUtils.isEmpty(dataList)){
 				dataList.forEach(vipGroupSalaryDto -> {
 					if(Objects.isNull(vipGroupSalaryDto.getExpectSalary())){
@@ -1302,6 +1305,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 						vipGroupSalaryDto.setDeductionFee(vipGroupSalaryDto.getExpectSalary().subtract(vipGroupSalaryDto.getActualSalary()));
 						vipGroupSalaryDto.setIsSalary(YesOrNoEnum.YES);
 					}
+					BigDecimal actualAmount = courseAmountMap.get(vipGroupSalaryDto.getCourseScheduleId());
+					if(Objects.nonNull(actualAmount)){
+						vipGroupSalaryDto.setDeductionFee(actualAmount);
+					}
 				});
 			}
 		}

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

@@ -782,7 +782,6 @@
         <foreach collection="classGroupIds" item="classGroupId" open="(" close=")" separator=",">
             #{classGroupId}
         </foreach>
-        AND group_type_ = 'MUSIC'
     </delete>
 
     <select id="findClassGroupByType" resultMap="ClassGroupTeachers">

+ 5 - 2
mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml

@@ -58,7 +58,7 @@
 		DELETE FROM class_group_student_mapper WHERE id_ = #{id} 
 	</delete>
     <delete id="deleteByClassId">
-        UPDATE class_group_student_mapper SET status_='QUIT' WHERE class_group_id_ = #{classGroupId} AND status_='NORMAL' AND group_type_='MUSIC'
+        UPDATE class_group_student_mapper SET status_='QUIT' WHERE class_group_id_ = #{classGroupId} AND status_='NORMAL'
     </delete>
 
     <!-- 分页查询 -->
@@ -234,7 +234,10 @@
             </foreach>
     </select>
     <select id="countUserGroups" resultType="int">
-      SELECT COUNT(1) FROM class_group_student_mapper WHERE user_id_=#{userId} AND group_type_=#{groupType} AND status_!='QUIT'
+      SELECT COUNT(1)
+      FROM class_group_student_mapper cgsm
+      LEFT JOIN class_group cg ON cgsm.class_group_id_=cg.id_
+      WHERE cgsm.user_id_=#{userId} AND cgsm.group_type_=#{groupType} AND cgsm.status_!='QUIT' AND cg.del_flag_!=1
     </select>
     
     <select id="queryClassGroupIdList" resultType="int" parameterType="map">

+ 0 - 1
mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherMapperMapper.xml

@@ -134,7 +134,6 @@
         <foreach collection="classGroupTeacherMapperList" item="item" index="index" open="(" close=")" separator=",">
             #{item.classGroupId}
         </foreach>
-        AND group_type_ = 'MUSIC'
     </delete>
 
     <!-- 获取班级老师关联关系 -->

+ 1 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -1052,6 +1052,7 @@
             COUNT(DISTINCT sa.class_group_id_)
         FROM
             student_attendance sa
+            LEFT JOIN course_schedule cs ON sa.course_schedule_id_=cs.id_
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND sa.class_group_id_=#{classGroupId} AND sa.teacher_id_=#{userId}

+ 14 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml

@@ -212,7 +212,7 @@
 		course_schedule_teacher_salary csts
 		LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
 		WHERE
-		CONCAT( cs.class_date_, ' ', cs.start_class_time_ ) &lt;= DATE_ADD( NOW( ), INTERVAL - #{days} DAY )
+		cs.class_date_ &lt;= DATE_FORMAT(DATE_ADD( NOW( ), INTERVAL - 1 DAY ),'%Y-%m-%d')
 		AND cs.type_='VIP'
 		AND csts.settlement_time_ IS NULL
     </select>
@@ -332,4 +332,17 @@
 	<select id="findCourseScheduleTeacherSalaryByMusicGroupId" resultMap="CourseScheduleTeacherSalary">
 		SELECT * FROM course_schedule_teacher_salary WHERE music_group_id_=#{musicGroupId} AND group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 	</select>
+	<select id="countActualAmount" resultType="java.util.Map">
+		SELECT
+			course_schedule_id_ AS 'key',
+			SUM( actual_price_ ) AS 'value'
+		FROM
+			course_schedule_student_payment
+		WHERE course_schedule_id_ IN
+			<foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+				#{courseScheduleId}
+			</foreach>
+		GROUP BY
+			course_schedule_id_
+	</select>
 </mapper>

+ 9 - 8
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -750,18 +750,19 @@
     <select id="countStudentPaymentNum" resultType="int">
         SELECT
             COUNT(*)
-        FROM
-            course_schedule cs
-            LEFT JOIN course_schedule_student_payment cssp ON cs.id_=cssp.user_id_
-            WHERE cssp.settlement_time_ IS NOT NULL AND cs.class_group_id_=#{classGroupId}
+        FROM course_schedule_student_payment cssp
+        WHERE
+            cssp.settlement_time_ IS NOT NULL
+            AND cssp.class_group_id_ = #{classGroupId}
     </select>
     <select id="countStudentPaymentFee" resultType="java.math.BigDecimal">
         SELECT
-            SUM(actual_price_)
+            SUM( actual_price_ )
         FROM
-            course_schedule cs
-            LEFT JOIN course_schedule_student_payment cssp ON cs.id_=cssp.user_id_
-            WHERE cssp.settlement_time_ IS NOT NULL AND cs.class_group_id_=#{classGroupId}
+            course_schedule_student_payment cssp
+        WHERE
+            cssp.settlement_time_ IS NOT NULL
+            AND cssp.class_group_id_ = #{classGroupId}
     </select>
     
     <select id="queryByIds" resultMap="VipGroup" parameterType="string">