Procházet zdrojové kódy

缴费项目改造

zouxuan před 2 roky
rodič
revize
8465b98aad

+ 12 - 4
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentStudentCourseDetail.java

@@ -2,7 +2,6 @@ package com.ym.mec.biz.dal.entity;
 
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
 import com.ym.mec.common.entity.BaseEntity;
-
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
@@ -16,7 +15,6 @@ public class MusicGroupPaymentStudentCourseDetail extends BaseEntity {
 	@ApiModelProperty(value = "乐团编号,改版后每个乐团每个学员只有一条记录", required = false)
 	private String musicGroupId;
 
-	/**  */
 	private Long id;
 
 	@ApiModelProperty(value = "缴费项目编号", required = false)
@@ -24,8 +22,7 @@ public class MusicGroupPaymentStudentCourseDetail extends BaseEntity {
 
 	@ApiModelProperty(value = "缴费项目详情编号", required = false)
 	private Long musicGroupPaymentCalenderDetailId;
-	
-	/**  */
+
 	private Integer userId;
 
 	@ApiModelProperty(value = "课程类型", required = false)
@@ -43,9 +40,20 @@ public class MusicGroupPaymentStudentCourseDetail extends BaseEntity {
 	@ApiModelProperty(value = "已消耗时长", required = false)
 	private Integer usedCourseMinutes;
 
+	@ApiModelProperty(value = "剩余课程时长", required = false)
+	private Integer subCourseMinutes;
+
 	@ApiModelProperty(value = "标记是否云教练缴费项目",required = false)
 	private Boolean cloudTeacherPaymentFlag = false;
 
+	public Integer getSubCourseMinutes() {
+		return subCourseMinutes;
+	}
+
+	public void setSubCourseMinutes(Integer subCourseMinutes) {
+		this.subCourseMinutes = subCourseMinutes;
+	}
+
 	public String getMusicGroupId() {
 		return musicGroupId;
 	}

+ 0 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/StudentAttendanceService.java

@@ -108,19 +108,6 @@ public interface StudentAttendanceService extends BaseService<Long, StudentAtten
 	 */
 	void repairStudentAttendance(Integer month);
 
-	/**
-	 * 获取签到数据
-	 * @param courseId
-	 * @param userId
-	 */
-	StudentAttendance findByStatusAndCourseScheduleId(Long courseId, Integer userId);
-
-	/**
-	 * 清除当前学生签退信息
-	 * @param courseId
-	 * @param userId
-	 */
-	void cleanCourseStudentSignOut(Long courseId, Integer userId);
 
 	/**
 	 * 学员考勤导出列表

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

@@ -1967,12 +1967,12 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             return classGroup;
         }
 
-        List<Integer> allTeacherIds = classGroupTeacherMapperList.stream()
-                .map(ClassGroupTeacherMapper::getUserId)
-                .collect(Collectors.toList());
+//        List<Integer> allTeacherIds = classGroupTeacherMapperList.stream()
+//                .map(ClassGroupTeacherMapper::getUserId)
+//                .collect(Collectors.toList());
 
         //所有教师列表
-        List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds);
+//        List<Teacher> teachers = teacherDao.findByTeacherIds(allTeacherIds);
         Map<String, Integer> courseTypeMinutesMap = musicGroupPaymentCalenderCourseSettingsService.getMusicCourseSettingsWithStudents(musicGroupId, studentIdList);
 
         //计算每节课的课酬

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

@@ -440,8 +440,8 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 							String batchNo = musicGroupPaymentStudentCourseDetailDao.getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes(musicGroupId, studentId, courseScheduleTypeListEntry.getKey(),null);
 
 							List<MusicGroupPaymentStudentCourseDetail> musicGroupPaymentStudentCourseDetails = musicGroupPaymentStudentCourseDetailDao.getUnUseWithStudentAndCourseTypeAndCourseMinutes(studentId, courseScheduleTypeListEntry.getKey(),musicGroupId);
-							int totalCourseMinutes = musicGroupPaymentStudentCourseDetails.stream().mapToInt(MusicGroupPaymentStudentCourseDetail::getTotalCourseMinutes).reduce(0, Integer::sum);
-							if(CollectionUtils.isEmpty(musicGroupPaymentStudentCourseDetails) || totalCourseMinutes < typeCourseDuration){
+							int subCourseMinutes = musicGroupPaymentStudentCourseDetails.stream().mapToInt(MusicGroupPaymentStudentCourseDetail::getSubCourseMinutes).reduce(0, Integer::sum);
+							if(CollectionUtils.isEmpty(musicGroupPaymentStudentCourseDetails) || subCourseMinutes < typeCourseDuration){
 								SysUser user = teacherDao.getUser(studentId);
 								throw new BizException("{}在{}课程类型上的课程时长不足", user.getUsername(), courseScheduleTypeListEntry.getKey().getMsg());
 							}
@@ -455,7 +455,7 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 
 							List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettings = musicGroupPaymentCalenderCourseSettingsDao.getWithPaymentCalendersAndCourseType(calenderIds, courseScheduleTypeListEntry.getKey());
 							int originalCourseTotalMinutes = musicGroupPaymentCalenderCourseSettings.stream().mapToInt(MusicGroupPaymentCalenderCourseSettings::getCourseTotalMinuties).reduce(0, Integer::sum);
-							if(Objects.isNull(musicGroupPaymentCalenderCourseSettings)||originalCourseTotalMinutes!=totalCourseMinutes){
+							if(Objects.isNull(musicGroupPaymentCalenderCourseSettings) || originalCourseTotalMinutes != subCourseMinutes){
 								throw new BizException("缴费设置异常");
 							}
 

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

@@ -73,7 +73,7 @@ public class MusicGroupPaymentCalenderCourseSettingsServiceImpl extends BaseServ
 			for (Map.Entry<Integer, List<MusicGroupPaymentStudentCourseDetail>> userDetailsEntry : userDetailsMap.entrySet()) {
 				details.add(userDetailsEntry.getValue().stream().min(Comparator.comparing(MusicGroupPaymentStudentCourseDetail::getId)).get());
 			}
-			result.put(courseTypeDetailsEntry.getKey().getCode(), details.stream().min(Comparator.comparing(MusicGroupPaymentStudentCourseDetail::getTotalCourseMinutes)).get().getTotalCourseMinutes());
+			result.put(courseTypeDetailsEntry.getKey().getCode(), details.stream().min(Comparator.comparing(MusicGroupPaymentStudentCourseDetail::getSubCourseMinutes)).get().getSubCourseMinutes());
 		}
 		//校验剩余时长是否一致
 		List<CourseSchedule.CourseScheduleType> courseTypes = mgpscds.stream().map(e -> e.getCourseType()).distinct().collect(Collectors.toList());

+ 5 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -241,9 +241,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
             throw new BizException("请登录");
         });
 
-        if (musicGroup.getStatus() != MusicGroupStatusEnum.DRAFT) {
-            throw new BizException("只有‘草稿’状态才能创建报名缴费");
-        }
+//        if (musicGroup.getStatus() != MusicGroupStatusEnum.DRAFT) {
+//            throw new BizException("只有‘草稿’状态才能创建报名缴费");
+//        }
         // 所有缴费项目已完成排课才能创建下一个缴费项目
         /*String orignBatchNo = musicGroupPaymentStudentCourseDetailDao.getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes(musicGroupId, null, null, null);
         if (!musicGroupPaymentBaseCalender.getConfirmCreate() && StringUtils.isNoneBlank(orignBatchNo)) {
@@ -320,9 +320,9 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
         }
 
         PaymentCalenderStatusEnum status;
-        if (musicGroupPaymentBaseCalender.getPaymentType() == MUSIC_APPLY || musicGroupPaymentBaseCalender.getPayUserType() == SCHOOL) {
+        if (musicGroupPaymentCalender.getPaymentType() == MUSIC_APPLY || musicGroupPaymentCalender.getPayUserType() == SCHOOL) {
             status = AUDITING;
-            if(musicGroupPaymentBaseCalender.getPaymentType() == MUSIC_APPLY){
+            if(musicGroupPaymentCalender.getPaymentType() == MUSIC_APPLY){
                 status = DRAFT;
             }
         } else {

+ 18 - 54
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -1,66 +1,40 @@
 package com.ym.mec.biz.service.impl;
 
-import java.util.ArrayList;
-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.Set;
-import java.util.stream.Collectors;
-
 import com.alibaba.fastjson.JSON;
-import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.service.SysTenantConfigService;
-import com.ym.mec.common.tenant.TenantContextHolder;
-import com.ym.mec.util.encode.AES;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Isolation;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
-import org.springframework.util.CollectionUtils;
-
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.ClassGroupDao;
-import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
-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.MusicGroupPaymentCalenderDao;
-import com.ym.mec.biz.dal.dao.MusicGroupQuitDao;
-import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
-import com.ym.mec.biz.dal.dao.SchoolDao;
-import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
-import com.ym.mec.biz.dal.dao.StudentDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
-import com.ym.mec.biz.dal.enums.CourseStatusEnum;
-import com.ym.mec.biz.dal.enums.GroupType;
-import com.ym.mec.biz.dal.enums.MessageTypeEnum;
-import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
-import com.ym.mec.biz.dal.enums.TeachModeEnum;
-import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+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.enums.*;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.biz.dal.page.ExportStudentAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.biz.service.SysTenantConfigService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.common.tenant.TenantContextHolder;
 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.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.util.CollectionUtils;
+
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentAttendance> implements StudentAttendanceService {
@@ -779,16 +753,6 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
     }
 
     @Override
-    public StudentAttendance findByStatusAndCourseScheduleId(Long courseId, Integer userId) {
-        return studentAttendanceDao.findByStatusAndCourseScheduleId(userId, courseId.intValue());
-    }
-
-    @Override
-    public void cleanCourseStudentSignOut(Long courseId, Integer userId) {
-        studentAttendanceDao.cleanCourseStudentSignOut(courseId, userId);
-    }
-
-    @Override
     public PageInfo<ExportStudentAttendanceDto> exportStudentAttendancesQueryPage(ExportStudentAttendanceQueryInfo queryInfo) {
         PageInfo<ExportStudentAttendanceDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Map<String, Object> params = new HashMap<>();

+ 26 - 45
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentStudentCourseDetailMapper.xml

@@ -17,6 +17,7 @@
         <result column="course_current_price_" property="courseCurrentPrice"/>
         <result column="total_course_minutes_" property="totalCourseMinutes"/>
         <result column="used_course_minutes_" property="usedCourseMinutes"/>
+        <result column="sub_course_minutes_" property="subCourseMinutes"/>
         <result column="cloud_teacher_payment_flag_" property="cloudTeacherPaymentFlag"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
@@ -44,11 +45,11 @@
             useGeneratedKeys="true" keyColumn="id" keyProperty="id">
         INSERT INTO music_group_payment_student_course_detail
         (music_group_id_,music_group_payment_calender_id_, music_group_payment_calender_detail_id_, user_id_, course_type_,
-         total_course_minutes_, used_course_minutes_, create_time_, update_time_, course_original_price_,
+         total_course_minutes_, used_course_minutes_,sub_course_minutes_, create_time_, update_time_, course_original_price_,
          course_current_price_, tenant_id_,cloud_teacher_payment_flag_)
         VALUES (#{musicGroupId}, #{musicGroupPaymentCalenderId}, #{musicGroupPaymentCalenderDetailId}, #{userId},
                 #{courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{totalCourseMinutes},
-                #{usedCourseMinutes},
+                #{usedCourseMinutes},#{subCourseMinutes},
                 NOW(), NOW(), #{courseOriginalPrice}, #{courseCurrentPrice}, #{tenantId},#{cloudTeacherPaymentFlag})
     </insert>
 
@@ -56,13 +57,13 @@
             keyProperty="id">
         INSERT INTO music_group_payment_student_course_detail
         (music_group_id_,music_group_payment_calender_id_,music_group_payment_calender_detail_id_,user_id_,
-        course_type_,total_course_minutes_,used_course_minutes_,create_time_,update_time_,course_original_price_,
+        course_type_,total_course_minutes_,used_course_minutes_,sub_course_minutes_,create_time_,update_time_,course_original_price_,
          course_current_price_,tenant_id_,cloud_teacher_payment_flag_)
         VALUES
         <foreach collection="list" item="item" separator=",">
             (#{item.musicGroupId},#{item.musicGroupPaymentCalenderId},#{item.musicGroupPaymentCalenderDetailId},
             #{item.userId},#{item.courseType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
-            #{item.totalCourseMinutes},#{item.usedCourseMinutes},NOW(),NOW(),#{item.courseOriginalPrice},
+            #{item.totalCourseMinutes},#{item.usedCourseMinutes},#{item.subCourseMinutes},NOW(),NOW(),#{item.courseOriginalPrice},
              #{item.courseCurrentPrice},#{item.tenantId},#{item.cloudTeacherPaymentFlag})
         </foreach>
     </insert>
@@ -78,6 +79,9 @@
             <if test="courseCurrentPrice != null">
                 course_current_price_ = #{courseCurrentPrice},
             </if>
+            <if test="subCourseMinutes != null">
+                used_course_minutes_ = #{subCourseMinutes},
+            </if>
             <if test="usedCourseMinutes != null">
                 used_course_minutes_ = #{usedCourseMinutes},
             </if>
@@ -112,6 +116,9 @@
                 <if test="paymentCourseDetail.courseCurrentPrice != null">
                     course_current_price_ = #{paymentCourseDetail.courseCurrentPrice},
                 </if>
+                <if test="paymentCourseDetail.subCourseMinutes != null">
+                    used_course_minutes_ = #{paymentCourseDetail.subCourseMinutes},
+                </if>
                 <if test="paymentCourseDetail.usedCourseMinutes != null">
                     used_course_minutes_ = #{paymentCourseDetail.usedCourseMinutes},
                 </if>
@@ -199,31 +206,10 @@
         FROM music_group_payment_student_course_detail mgpscd
         WHERE mgpscd.user_id_ = #{studentId}
         AND mgpscd.course_type_ = #{courseType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-        AND mgpscd.total_course_minutes_ > mgpscd.used_course_minutes_ AND mgpscd.music_group_id_ = #{musicGroupId}
+        AND mgpscd.sub_course_minutes_ > 0 AND mgpscd.music_group_id_ = #{musicGroupId}
         ORDER BY mgpscd.id_
     </select>
 
-    <select id="getUnUseBatchNoWithStudentAndCourseTypeAndCourseMinutes" resultType="string">
-        SELECT
-        mgpc.batch_no_
-        FROM music_group_payment_calender mgpc
-        LEFT JOIN music_group_payment_student_course_detail mgpscd ON mgpscd.music_group_payment_calender_id_ = mgpc.id_
-        WHERE mgpc.music_group_id_ = #{musicGroupId}
-        <if test="studentId != null">
-            AND mgpscd.user_id_ = #{studentId}
-        </if>
-        <if test="batchNos != null">
-            AND mgpc.batch_no_ NOT IN
-            <foreach collection="batchNos" item="item" open="(" close=")" separator=",">
-                #{item}
-            </foreach>
-        </if>
-        <if test="courseType != null">
-            AND mgpscd.course_type_ = #{courseType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-        </if>
-        GROUP BY mgpc.batch_no_ HAVING min(mgpscd.used_course_minutes_) &lt;=0 ORDER BY MIN(mgpc.id_) LIMIT 1;
-    </select>
-
     <select id="getUnUseWithStudents" resultMap="MusicGroupPaymentStudentCourseDetail">
         SELECT
         MIN(mgpscd.id_) id_,
@@ -231,16 +217,16 @@
         mgpscd.user_id_,
         mgpscd.course_type_,
         SUM(mgpscd.total_course_minutes_) total_course_minutes_,
-        SUM(mgpscd.used_course_minutes_) used_course_minutes_
+        SUM(mgpscd.used_course_minutes_) used_course_minutes_,
+        SUM(mgpscd.sub_course_minutes_) sub_course_minutes_
         FROM music_group_payment_student_course_detail mgpscd
-        LEFT JOIN music_group_payment_calender mgpc ON mgpscd.music_group_payment_calender_id_ = mgpc.id_
-        WHERE mgpc.music_group_id_ = #{musicGroupId}
-        AND user_id_ IN
+        WHERE mgpscd.music_group_id_ = #{musicGroupId}
+        AND mgpscd.user_id_ IN
         <foreach collection="studentIds" item="studentId" open="(" close=")" separator=",">
             #{studentId}
         </foreach>
-        GROUP BY mgpscd.user_id_,mgpscd.course_type_,mgpc.batch_no_
-        HAVING used_course_minutes_ &lt;= 0
+        GROUP BY mgpscd.user_id_,mgpscd.course_type_
+        HAVING mgpscd.sub_course_minutes_ > 0
     </select>
 
     <delete id="deleteByUserIdAndMusicGroupId">
@@ -274,14 +260,13 @@
                                                   WHEN mgpscd.used_course_minutes_ = 0 THEN mgpscd.total_course_minutes_
                                                   ELSE 0 END) 'value'
         FROM music_group_payment_student_course_detail mgpscd
-                 LEFT JOIN music_group_payment_calender mgpc ON mgpc.id_ = mgpscd.music_group_payment_calender_id_
                  LEFT JOIN sys_user su ON su.id_ = mgpscd.user_id_
-        WHERE mgpc.music_group_id_ = #{musicGroupId}
+        WHERE mgpscd.music_group_id_ = #{musicGroupId}
         GROUP BY mgpscd.user_id_, mgpscd.course_type_
     </select>
 
     <sql id="sqlStudentSubTotalCourseTimes">
-        WHERE mgpc.music_group_id_ = #{musicGroupId}
+        WHERE mgpscd.music_group_id_ = #{musicGroupId}
         <if test="search != null and search != ''">
             and (
             mgpscd.user_id_ like CONCAT('%',#{search},'%')
@@ -290,10 +275,10 @@
             )
         </if>
         <if test="hastimer != null and hastimer == true">
-            and (mgpscd.used_course_minutes_ is null or mgpscd.used_course_minutes_ = 0)
+            and mgpscd.sub_course_minutes_ > 0
         </if>
         <if test="hastimer != null and hastimer == false">
-            and mgpscd.used_course_minutes_ &gt; 0
+            and mgpscd.used_course_minutes_ = 0
         </if>
         <if test="courseType != null and courseType != ''">
             and mgpscd.course_type_ = #{courseType}
@@ -308,7 +293,6 @@
     select count(*) from (
         SELECT mgpscd.user_id_ FROM music_group_payment_student_course_detail mgpscd
         LEFT JOIN sys_user su ON su.id_ = mgpscd.user_id_
-        LEFT JOIN music_group_payment_calender mgpc ON mgpc.id_ = mgpscd.music_group_payment_calender_id_
         left join (
             SELECT
                 user_id_ ,GROUP_CONCAT(class_group_id_) as class_group_id_
@@ -329,7 +313,6 @@
                 SUM(CASE WHEN mgpscd.used_course_minutes_ = 0 THEN mgpscd.total_course_minutes_ ELSE 0 END) 'value'
             FROM music_group_payment_student_course_detail mgpscd
             LEFT JOIN sys_user su ON su.id_ = mgpscd.user_id_
-            LEFT JOIN music_group_payment_calender mgpc ON mgpc.id_ = mgpscd.music_group_payment_calender_id_
             left join (
                 SELECT
                     user_id_ ,GROUP_CONCAT(class_group_id_) as class_group_id_
@@ -351,8 +334,7 @@
         SELECT SUM(c.a) >= SUM(c.b) FROM (
         SELECT COUNT(DISTINCT mgpscd.course_type_) a,COUNT(DISTINCT mgpscd.total_course_minutes_) b FROM
         music_group_payment_student_course_detail mgpscd
-        LEFT JOIN music_group_payment_calender mgpc ON mgpscd.music_group_payment_calender_id_ = mgpc.id_
-        WHERE mgpc.music_group_id_ = #{musicGroupId} AND mgpscd.used_course_minutes_ = 0
+        WHERE mgpscd.music_group_id_ = #{musicGroupId} AND mgpscd.sub_course_minutes_ > 0
         AND mgpscd.course_type_ IN
         <foreach collection="courseTypes" item="courseType" open="(" close=")" separator=",">
             #{courseType}
@@ -362,10 +344,9 @@
             #{studentId}
         </foreach>)c
     </select>
-    
+
     <update id="clearRemainCourseMinutesByMusicGroupId">
-    	update `music_group_payment_student_course_detail` cd LEFT JOIN `music_group_payment_calender` pc on cd.`music_group_payment_calender_id_` = pc.`id_` 
-		set cd.`used_course_minutes_` = 1
-		WHERE cd.`used_course_minutes_` = 0 and pc.`music_group_id_` = #{musicGroupId}  
+    	update music_group_payment_student_course_detail
+		set sub_course_minutes_ = 0 WHERE sub_course_minutes_ > 0 and music_group_id_ = #{musicGroupId}
     </update>
 </mapper>