zouxuan 5 years ago
parent
commit
c18bd93fc1

+ 30 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -115,10 +115,10 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
     /**
      * 获取vip课的学生名称列表
      *
-     * @param musicGroupId
+     * @param vipIds
      * @return
      */
-    List<String> findVipStuNames(String musicGroupId);
+    List<Map<String,String>> findVipStuNames(String vipIds);
 
     /**
      * 获取课程下的学员列表
@@ -337,4 +337,32 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @return
      */
     int batchIncreaseClassTimes(List<Integer> classGroupList);
+
+    /**
+     * 获取学生端,vip课程列表
+     * @param userId
+     * @return
+     */
+    List<CourseListDto> queryStudentVipCourses(Integer userId);
+
+    /**
+     * 获取学生端,vip课程列表
+     * @param userId
+     * @return
+     */
+    Integer countStudentVipCourses(Integer userId);
+
+    /**
+     * 获取学生端,学员乐团课列表详情
+     * @param userId
+     * @return
+     */
+    List<CourseListDto> queryStudentMusicGroupCourses(Integer userId);
+
+    /**
+     * 获取学生端,学员乐团课列表详情
+     * @param userId
+     * @return
+     */
+    Integer countStudentMusicGroupCourses(Integer userId);
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SchoolDao.java

@@ -24,7 +24,7 @@ public interface SchoolDao extends BaseDAO<Integer, School> {
      * @param schoolIds
      * @return
      */
-    List<Map<Integer, String>> queryNameByIds(@Param("schoolIds") Set<Integer> schoolIds);
+    List<Map<Integer, String>> queryNameByIds(@Param("schoolIds") String schoolIds);
     
     /**
      * 获取老师的教学点

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseListDto.java

@@ -12,6 +12,12 @@ public class CourseListDto {
     @ApiModelProperty(value = "乐团、vip课编号",required = true)
     private String musicGroupId;
 
+    @ApiModelProperty(value = "班级编号",required = true)
+    private Integer classGroupId;
+
+    @ApiModelProperty(value = "教学点编号",required = true)
+    private Integer teacherSchoolId;
+
     @ApiModelProperty(value = "学生姓名",required = true)
     private String studentNames;
 
@@ -51,6 +57,22 @@ public class CourseListDto {
     //续费状态
     private MusicGroupStudentFee.PaymentStatus paymentStatus;
 
+    public Integer getClassGroupId() {
+        return classGroupId;
+    }
+
+    public void setClassGroupId(Integer classGroupId) {
+        this.classGroupId = classGroupId;
+    }
+
+    public Integer getTeacherSchoolId() {
+        return teacherSchoolId;
+    }
+
+    public void setTeacherSchoolId(Integer teacherSchoolId) {
+        this.teacherSchoolId = teacherSchoolId;
+    }
+
     public Integer getOnlineClassesNum() {
         return onlineClassesNum;
     }

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

@@ -40,6 +40,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private ClassGroupDao classGroupDao;
     @Autowired
+    private SchoolDao schoolDao;
+    @Autowired
     private VipGroupDao vipGroupDao;
     @Autowired
     private VipGroupActivityDao vipGroupActivityDao;
@@ -381,18 +383,30 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
         List<CourseListDto> courseListDtos = null;
-        int count = classGroupDao.countCoursePage(params);
+//        int count = classGroupDao.countCoursePage(params);
+        Integer vipCoursesNum = classGroupDao.countStudentVipCourses(userId);
+        Integer coursesNum = classGroupDao.countStudentMusicGroupCourses(userId);
+        int count = vipCoursesNum == null?0:vipCoursesNum + (coursesNum==null?0:coursesNum);
         if (count > 0) {
             pageInfo.setTotal(count);
             params.put("offset", pageInfo.getOffset());
-            courseListDtos = classGroupDao.queryCoursePage(params);
+            courseListDtos = new ArrayList<>();
+            //获取学员所购买的vip课列表详情
+            List<CourseListDto> vipCourses = classGroupDao.queryStudentVipCourses(userId);
+            //获取vip课的学生列表
+            Set<String> vipIds = vipCourses.stream().map(CourseListDto::getMusicGroupId).collect(Collectors.toSet());
+            Map<String,String> vipStuNames = MapUtil.convertMybatisMap(classGroupDao.findVipStuNames(StringUtils.join(vipIds,",")));
+            //获取学员的乐团列表详情
+            courseListDtos.addAll(classGroupDao.queryStudentMusicGroupCourses(userId));
+            courseListDtos.addAll(vipCourses);
+            //获取所有教学点名称列表
+            Set<Integer> schoolIds = courseListDtos.stream().map(CourseListDto::getTeacherSchoolId).collect(Collectors.toSet());
+            Map<Integer,String> schoolNames = MapUtil.convertMybatisMap(schoolDao.queryNameByIds(StringUtils.join(schoolIds,",")));
+//            courseListDtos = classGroupDao.queryCoursePage(params);
             courseListDtos.forEach(e -> {
+                e.setAddress(schoolNames.get(e.getTeacherSchoolId()));
                 if (ClassGroupTypeEnum.VIP == e.getType()) {
-                    //获取vip课的学生名称列表
-                    List<String> vipStuNames = classGroupDao.findVipStuNames(e.getMusicGroupId());
-                    if (vipStuNames != null && vipStuNames.size() > 0) {
-                        e.setStudentNames(StringUtils.join(vipStuNames, ","));
-                    }
+                    e.setStudentNames(vipStuNames.get(e.getMusicGroupId()));
                     if (e.getOffLineClassesNum() > 0 && e.getOffLineClassesNum() <= 0) {
                         e.setClassMode(1);
                     } else if (e.getOffLineClassesNum() > 0 && e.getOffLineClassesNum() > 0) {
@@ -402,12 +416,6 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                     } else {
                         e.setClassMode(0);
                     }
-                } else {
-                    //获取学员乐团课的续费状态
-                    MusicGroupStudentFee musicGroupStudentFee = musicGroupStudentFeeDao.findByUser(userId, e.getMusicGroupId());
-                    if (musicGroupStudentFee != null) {
-                        e.setPaymentStatus(musicGroupStudentFee.getPaymentStatus());
-                    }
                 }
             });
         }

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

@@ -525,7 +525,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         List<MusicGroup> musicGroupList = musicGroupPageInfo.getRows();
         // 获取学校编号列表
         Set<Integer> schoolIds = musicGroupList.stream().map(e -> e.getSchoolId()).collect(Collectors.toSet());
-        List<Map<Integer, String>> schoolNames = schoolDao.queryNameByIds(schoolIds);
+        List<Map<Integer, String>> schoolNames = schoolDao.queryNameByIds(StringUtils.join(schoolIds,","));
         // 获取相关学校名称map
         Map<Integer, String> schoolNameMap = MapUtil.convertMybatisMap(schoolNames);
 

+ 65 - 20
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -233,20 +233,8 @@
         AND del_flag_ = 0
     </select>
 
-    <resultMap type="com.ym.mec.biz.dal.dto.CourseListDto" id="CourseListDto">
-        <result column="music_group_name_" property="musicGroupName"/>
-        <result column="music_group_id_" property="musicGroupId"/>
-        <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"/>
-        <result column="current_class_times_" property="currentClassTimes"/>
-        <result column="address_" property="address"/>
-        <result column="single_class_minutes_" property="singleClassMinutes"/>
-        <result column="online_classes_num_" property="onlineClassesNum"/>
-        <result column="offline_classes_num_" property="offLineClassesNum"/>
-    </resultMap>
     <select id="queryCoursePage" resultMap="CourseListDto">
-        SELECT * FROM (
+        <!--SELECT * FROM (
         SELECT cg.type_,s.address_,mg.name_ music_group_name_,
         cg.total_class_times_,cg.current_class_times_,'' single_class_minutes_,mg.id_
         music_group_id_,
@@ -272,7 +260,7 @@
         LEFT JOIN school ts ON vg.teacher_school_id_ = ts.id_
         WHERE cgsm.user_id_ = #{search} AND cg.type_ = 'VIP') a
         ORDER BY a.create_time_ DESC
-        <include refid="global.limit"/>
+        <include refid="global.limit"/>-->
     </select>
 
     <resultMap id="imGroupModel" type="com.ym.mec.common.entity.ImGroupModel">
@@ -294,11 +282,13 @@
             </if>
         </where>
     </select>
-    <select id="findVipStuNames" resultType="java.lang.String">
-        SELECT su.username_ FROM vip_group_class_group_mapper vgcgm
-        LEFT JOIN class_group_student_mapper cgsm ON vgcgm.class_group_id_ = cgsm.class_group_id_
+    <select id="findVipStuNames" resultType="map">
+        SELECT cg.music_group_id_ 'key',GROUP_CONCAT(su.real_name_) 'value'
+        FROM class_group cg
+        LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
         LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
-        WHERE vgcgm.vip_group_id_ = #{musicGroupId}
+        WHERE FIND_IN_SET(cg.music_group_id_,#{vipIds}) AND cg.type_ = 'VIP'
+        GROUP BY cg.music_group_id_
     </select>
     <select id="findGroupUsers" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.ImUserModel">
         SELECT su.id_,su.avatar_,su.username_ FROM class_group_student_mapper cgsm
@@ -351,7 +341,7 @@
         <include refid="global.limit"/>
     </select>
     <select id="countCoursePage" resultType="java.lang.Integer">
-        SELECT COUNT(id_) FROM (
+        /*SELECT COUNT(id_) FROM (
         SELECT cg.type_,s.address_,mg.name_ music_group_name_,
         cg.total_class_times_,cg.current_class_times_,'' single_class_minutes_,mg.id_
         music_group_id_,cg.create_time_,cg.id_
@@ -369,7 +359,7 @@
         LEFT JOIN vip_group_class_group_mapper vgcgm ON vgcgm.class_group_id_ = cgsm.class_group_id_
         LEFT JOIN vip_group vg ON vg.id_ = vgcgm.vip_group_id_
         LEFT JOIN school ts ON vg.teacher_school_id_ = ts.id_
-        WHERE cgsm.user_id_ = #{search} AND cg.type_ = 'VIP') a
+        WHERE cgsm.user_id_ = #{search} AND cg.type_ = 'VIP') a*/
     </select>
 
     <select id="countClassStudent" resultType="int">
@@ -648,6 +638,61 @@
         where cg.music_group_id_ = #{musicGroupId} AND cgsm.user_id_ = #{userId} AND cg.del_flag_ = 0
     </select>
 
+    <resultMap type="com.ym.mec.biz.dal.dto.CourseListDto" id="CourseListDto">
+        <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="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="total_class_times_" property="totalClassTimes"/>
+        <!--<result column="teach_mode_" property="teachMode"/>-->
+        <result column="current_class_times_" property="currentClassTimes"/>
+        <!--<result column="address_" property="address"/>-->
+        <result column="single_class_minutes_" property="singleClassMinutes"/>
+        <result column="online_classes_num_" property="onlineClassesNum"/>
+        <result column="offline_classes_num_" property="offLineClassesNum"/>
+        <result column="teacher_school_id_" property="teacherSchoolId"/>
+        <result column="payment_status_" property="paymentStatus" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+    </resultMap>
+    <select id="queryStudentVipCourses" resultMap="CourseListDto">
+        SELECT cg.id_ class_group_id_,vg.name_ music_group_name_,su.real_name_,
+        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_
+        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_
+        LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
+        WHERE cg.type_ = 'VIP' AND cgsm.user_id_ = #{userId}
+    </select>
+    <select id="queryStudentMusicGroupCourses" resultMap="CourseListDto">
+        SELECT mg.id_ music_group_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
+        LEFT JOIN class_group cg ON cg.music_group_id_ = mg.id_
+        LEFT JOIN music_group_student_fee_ mgsf ON mgsf.music_group_id_ = mg.id_
+        LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
+        WHERE cgsm.user_id_ = #{userId} AND (cg.type_ = 'NORMAL' OR cg.type_ = 'MIX')
+        GROUP BY mg.id_,mgsf.id_
+    </select>
+    <select id="countStudentVipCourses" resultType="java.lang.Integer">
+        SELECT COUNT(vg.id_)
+        FROM vip_group vg
+        LEFT JOIN class_group cg ON cg.music_group_id_ = vg.id_
+        LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
+        WHERE cg.type_ = 'VIP' AND cgsm.user_id_ = #{userId}
+    </select>
+    <select id="countStudentMusicGroupCourses" resultType="java.lang.Integer">
+        SELECT COUNT(DISTINCT mg.id_)
+        FROM music_group mg
+        LEFT JOIN class_group cg ON cg.music_group_id_ = mg.id_
+        LEFT JOIN class_group_student_mapper cgsm ON cg.id_ = cgsm.class_group_id_
+        WHERE cgsm.user_id_ = #{userId} AND (cg.type_ = 'NORMAL' OR cg.type_ = 'MIX')
+        GROUP BY mg.id_
+    </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

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

@@ -50,7 +50,7 @@
 		useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO music_group
 		(id_,name_,organ_id_,school_id_,apply_expire_date_,team_teacher_id_,educational_teacher_id_,charge_type_id_,course_form_,create_time_,update_time_,status_,
-		bill_start_date_,improvent_classes_num_,enroll_classes_,payment_expire_date_,is_extra_class_,cooperation_organ_id_,enlightenment_course_time_,parent_meeting_time_,img_,director_user_id_,)
+		bill_start_date_,improvent_classes_num_,enroll_classes_,payment_expire_date_,is_extra_class_,cooperation_organ_id_,enlightenment_course_time_,parent_meeting_time_,img_,director_user_id_)
 		VALUES(#{id},#{name},#{organId},#{schoolId},#{applyExpireDate},#{teamTeacherId},#{educationalTeacherId},#{chargeTypeId},#{courseForm},now(),now(),
 		#{status, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{billStartDate},#{improventClassesNum},#{enrollClasses},#{paymentExpireDate},
 		#{isExtraClass, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{cooperationOrganId},#{enlightenmentCourseTime},#{parentMeetingTime},#{img},#{directorUserId})

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

@@ -114,11 +114,8 @@
             </if>
         </where>
     </select>
-    <select id="queryNameByIds" resultType="java.util.Map" parameterType="list">
-        select id_ `key`,name_ `value` FROM school s WHERE id_ IN
-        <foreach item="item" index="index" collection="schoolIds" open="(" separator="," close=")">
-            #{item}
-        </foreach>
+    <select id="queryNameByIds" resultType="java.util.Map" >
+        select id_ `key`,name_ `value` FROM school s WHERE FIND_IN_SET(id_,#{schoolIds})
     </select>
     
     <select id="findByUserId" resultMap="School">

+ 1 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -71,7 +71,7 @@ public class TeacherCourseScheduleController extends BaseController {
     }
 
     @ApiOperation(value = "获取点名详情头部信息")
-    @GetMapping("/queryTeacherClassCourseSchedule")
+    @GetMapping("/findCourseAttendanceDetailHeadInfo")
     public Object findCourseAttendanceDetailHeadInfo(Long courseScheduleId){
         return succeed(scheduleService.findCourseAttendanceDetailHeadInfo(courseScheduleId));
     }