zouxuan 5 سال پیش
والد
کامیت
b957c4e82d

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleStudentPaymentDao.java

@@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Param;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseScheduleStudentPayment> {
 
@@ -120,4 +121,13 @@ public interface CourseScheduleStudentPaymentDao extends BaseDAO<Long, CourseSch
      * @return
      */
     int deleteByMusicGroupId(@Param("musicGroupId")String musicGroupId, @Param("groupType")GroupType groupType);
+
+    /**
+     * 根据乐团编号,和groupTYpe获取学员剩余课程数
+     * @param musicGroupIds
+     * @param userId
+     * @param groupType
+     * @return
+     */
+    List<Map<String, Integer>> findStudentCourseNum(@Param("musicGroupIds") Set<String> musicGroupIds, @Param("userId")Integer userId, @Param("groupType")String groupType);
 }

+ 25 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java

@@ -9,9 +9,15 @@ public class CourseListDto {
     @ApiModelProperty(value = "班级类型", required = true)
     private ClassGroupTypeEnum type;
 
-    @ApiModelProperty(value = "乐团、vip编号",required = true)
+    @ApiModelProperty(value = "乐团、vip编号",required = true)
     private String musicGroupId;
 
+    @ApiModelProperty(value = "乐团编号",required = true)
+    private String musicId;
+
+    @ApiModelProperty(value = "vip课编号",required = true)
+    private String vipId;
+
     @ApiModelProperty(value = "班级编号",required = true)
     private Integer classGroupId;
 
@@ -59,6 +65,24 @@ public class CourseListDto {
 
     private Integer isApply;
 
+    public String getMusicId() {
+        return musicId;
+    }
+
+    public void setMusicId(String musicId) {
+        this.musicId = musicId;
+        this.musicGroupId = musicId;
+    }
+
+    public String getVipId() {
+        return vipId;
+    }
+
+    public void setVipId(String vipId) {
+        this.vipId = vipId;
+        this.musicGroupId = vipId;
+    }
+
     public Integer getIsApply() {
         return isApply;
     }

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

@@ -571,7 +571,18 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         Set<String> vipIds = vipCourses.stream().map(CourseListDto::getMusicGroupId).collect(Collectors.toSet());
         Map<String, String> vipStuNames = MapUtil.convertIntegerMap(classGroupDao.findVipStuNames(StringUtils.join(vipIds, ",")));
         //获取学员的乐团列表详情
-        courseListDtos.addAll(classGroupDao.queryStudentMusicGroupCourses(StringUtils.join(musicGroupIds, ","), userId));
+        List<CourseListDto> musicCourse = classGroupDao.queryStudentMusicGroupCourses(StringUtils.join(musicGroupIds, ","), userId);
+        Set<String> musicGroupId = musicCourse.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
+        Set<String> vipGroupId = vipCourses.stream().map(e -> e.getMusicGroupId()).collect(Collectors.toSet());
+        Map<String,Long> musicCourseNumMap = new HashMap<>();
+        if(musicGroupId != null && musicGroupId.size() > 0){
+            musicCourseNumMap = MapUtil.convertIntegerMap(courseScheduleStudentPaymentDao.findStudentCourseNum(musicGroupId,userId,"MUSIC"));
+        }
+        Map<String,Long> vipCourseNumMap = new HashMap<>();
+        if(vipGroupId != null && vipGroupId.size() > 0){
+            vipCourseNumMap = MapUtil.convertIntegerMap(courseScheduleStudentPaymentDao.findStudentCourseNum(vipGroupId,userId,"VIP"));
+        }
+        courseListDtos.addAll(musicCourse);
         courseListDtos.addAll(vipCourses);
         //检测对应乐团是否已申请退费
         List<Map<String, Integer>> isApplyMaps;
@@ -585,7 +596,17 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         Set<Integer> schoolIds = courseListDtos.stream().map(CourseListDto::getTeacherSchoolId).collect(Collectors.toSet());
         Map<Integer, String> schoolNames = MapUtil.convertMybatisMap(schoolDao.queryNameByIds(StringUtils.join(schoolIds, ",")));
 
-        courseListDtos.forEach(e -> {
+        Long classTimes = null;
+        for (CourseListDto e:courseListDtos) {
+            if(StringUtils.isEmpty(e.getMusicId())){
+                classTimes = vipCourseNumMap.get(e.getVipId());
+                e.setTotalClassTimes(classTimes == null?0:classTimes.intValue());
+                e.setCurrentClassTimes(0);
+            }else {
+                classTimes = musicCourseNumMap.get(e.getMusicId());
+                e.setTotalClassTimes(classTimes == null?0:classTimes.intValue());
+                e.setCurrentClassTimes(0);
+            }
             e.setAddress(schoolNames.get(e.getTeacherSchoolId()));
             e.setIsApply(isApplyMap.get(e.getMusicGroupId()));
             if (ClassGroupTypeEnum.VIP == e.getType()) {
@@ -600,7 +621,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     e.setClassMode(1);
                 }
             }
-        });
+        }
         pageInfo.setRows(courseListDtos);
         return pageInfo;
     }

+ 5 - 3
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -611,7 +611,9 @@
         <result column="class_group_id_" property="classGroupId"/>
         <result column="music_group_name_" property="musicGroupName"/>
         <result column="real_name_" property="teacherName"/>
-        <result column="music_group_id_" property="musicGroupId"/>
+        <!--<result column="music_group_id_" property="musicGroupId"/>-->
+        <result column="music_id_" property="musicId"/>
+        <result column="vip_id_" property="vipId"/>
         <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="total_class_times_" property="totalClassTimes"/>
         <!--<result column="teach_mode_" property="teachMode"/>-->
@@ -629,14 +631,14 @@
         cg.current_class_times_,cg.total_class_times_,vg.single_class_minutes_,
         IF(vg.online_classes_num_ IS NULL,0,vg.online_classes_num_) online_classes_num_,
         IF(vg.offline_classes_num_ IS NULL,0,vg.offline_classes_num_) offline_classes_num_,
-        vg.teacher_school_id_,vg.id_ music_group_id_,cg.type_
+        vg.teacher_school_id_,vg.id_ vip_id_,cg.type_
         FROM vip_group vg
         LEFT JOIN class_group cg ON cg.music_group_id_ = vg.id_
         LEFT JOIN sys_user su ON vg.user_id_ = su.id_
         WHERE cg.group_type_ = 'VIP' AND FIND_IN_SET(vg.id_,#{musicGroupIds})
     </select>
     <select id="queryStudentMusicGroupCourses" resultMap="CourseListDto">
-        SELECT mg.id_ music_group_id_,mg.name_ music_group_name_,mgsf.payment_status_,
+        SELECT mg.id_ music_id_,mg.name_ music_group_name_,mgsf.payment_status_,
         SUM(cg.current_class_times_) current_class_times_,
         SUM(cg.total_class_times_) total_class_times_,mg.school_id_ teacher_school_id_
         FROM music_group mg

+ 10 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -179,6 +179,16 @@
 			AND cssp.expect_price_ IS NOT NULL
 		ORDER BY CONCAT(cs.class_date_,' ',cs.start_class_time_) DESC LIMIT 1
 	</select>
+    <select id="findStudentCourseNum" resultType="java.util.Map">
+		SELECT COUNT(DISTINCT cssp.id_) 'value',cssp.music_group_id_ 'key' FROM course_schedule cs
+		LEFT JOIN course_schedule_student_payment cssp ON cs.music_group_id_ = cssp.music_group_id_
+		WHERE cs.music_group_id_ IN
+		<foreach collection="musicGroupIds" separator="," item="item" open="(" close=")">
+			#{item}
+		</foreach>
+		AND cs.group_type_ = #{groupType} AND cssp.user_id_ = #{userId} AND cs.status_ = 'NOT_START'
+		GROUP BY cssp.music_group_id_
+	</select>
 
     <delete id="deleteStudentCourseSchedule">
 		DELETE FROM course_schedule_student_payment WHERE user_id_ = #{userId} AND course_schedule_id_ IN