Bläddra i källkod

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

zouxuan 5 år sedan
förälder
incheckning
d01adcca50

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CoursesGroupDao.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.CourseGroupExtendDto;
 import com.ym.mec.biz.dal.entity.CoursesGroup;
 import com.ym.mec.biz.dal.enums.GroupStatusEnum;
 import com.ym.mec.common.dal.BaseDAO;
@@ -21,6 +22,13 @@ public interface CoursesGroupDao extends BaseDAO<Long, CoursesGroup> {
     List<CoursesGroup> findTeacherCourseGroups(Map<String, Object> params);
     int countTeacherGroups(Map<String,Object> params);
 
+
+    List<CourseGroupExtendDto> findTeacherCourseGroupsWithWeb(Map<String, Object> params);
+    int countTeacherGroupsWithWeb(Map<String,Object> params);
+
+    List<CourseGroupExtendDto> findStudentCourseGroupsWithWeb(Map<String, Object> params);
+    int countStudentGroupsWithWeb(Map<String,Object> params);
+
     /**
      * @describe 获取指定教师的课程组列表
      * @author Joburgess

+ 36 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/GroupDao.java

@@ -1,6 +1,8 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.GroupBaseCourseInfoDto;
 import com.ym.mec.biz.dal.entity.Group;
+import com.ym.mec.biz.dal.enums.GroupType;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -34,4 +36,38 @@ public interface GroupDao {
      */
     List<Group> findByClassGroupIds(@Param("classGroupIds") List<Integer> classGroupIds);
 
+    /**
+     * @describe 统计团体学生数量
+     * @author Joburgess
+     * @date 2020/4/6
+     * @param groupIds:
+     * @param groupType:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.BaseMapDto>
+     */
+    List<GroupBaseCourseInfoDto> countGroupStudentNum(@Param("groupIds") List<String> groupIds,
+                                                      @Param("groupType") GroupType groupType);
+
+    /**
+     * @describe 统计团体的总课次
+     * @author Joburgess
+     * @date 2020/4/6
+     * @param groupIds:
+     * @param groupType:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.BaseMapDto>
+     */
+    List<GroupBaseCourseInfoDto> countGroupTotalClassesTimes(@Param("groupIds") List<String> groupIds,
+                                                 @Param("groupType") GroupType groupType);
+
+    /**
+     * @describe 统计团体已上课次
+     * @author Joburgess
+     * @date 2020/4/6
+     * @param groupIds:
+     * @param groupType:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.BaseMapDto>
+     */
+    List<GroupBaseCourseInfoDto> countGroupFinishedClassesTimes(@Param("groupIds") List<String> groupIds,
+                                                  @Param("groupType") GroupType groupType);
+
+
 }

+ 28 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/BaseMapDto.java

@@ -0,0 +1,28 @@
+package com.ym.mec.biz.dal.dto;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/4/6
+ */
+public class BaseMapDto<K, V> {
+
+    private K key;
+
+    private V value;
+
+    public K getKey() {
+        return key;
+    }
+
+    public void setKey(K key) {
+        this.key = key;
+    }
+
+    public V getValue() {
+        return value;
+    }
+
+    public void setValue(V value) {
+        this.value = value;
+    }
+}

+ 92 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseGroupExtendDto.java

@@ -0,0 +1,92 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.CoursesGroup;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/4/6
+ */
+public class CourseGroupExtendDto extends CoursesGroup {
+
+    private Integer studentNum;
+
+    private Integer groupClassesTotalDuration;
+
+    private Integer groupClassesConsumeDuration;
+
+    private Integer totalClassTimes;
+
+    private Integer currentClassTimes;
+
+    private Date firstClassesStartTime;
+
+    private Date lastClassesEndTime;
+
+    private String teacherName;
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public Integer getStudentNum() {
+        return studentNum;
+    }
+
+    public void setStudentNum(Integer studentNum) {
+        this.studentNum = studentNum;
+    }
+
+    public Integer getGroupClassesTotalDuration() {
+        return groupClassesTotalDuration;
+    }
+
+    public void setGroupClassesTotalDuration(Integer groupClassesTotalDuration) {
+        this.groupClassesTotalDuration = groupClassesTotalDuration;
+    }
+
+    public Integer getGroupClassesConsumeDuration() {
+        return groupClassesConsumeDuration;
+    }
+
+    public void setGroupClassesConsumeDuration(Integer groupClassesConsumeDuration) {
+        this.groupClassesConsumeDuration = groupClassesConsumeDuration;
+    }
+
+    public Integer getTotalClassTimes() {
+        return totalClassTimes;
+    }
+
+    public void setTotalClassTimes(Integer totalClassTimes) {
+        this.totalClassTimes = totalClassTimes;
+    }
+
+    public Integer getCurrentClassTimes() {
+        return currentClassTimes;
+    }
+
+    public void setCurrentClassTimes(Integer currentClassTimes) {
+        this.currentClassTimes = currentClassTimes;
+    }
+
+    public Date getFirstClassesStartTime() {
+        return firstClassesStartTime;
+    }
+
+    public void setFirstClassesStartTime(Date firstClassesStartTime) {
+        this.firstClassesStartTime = firstClassesStartTime;
+    }
+
+    public Date getLastClassesEndTime() {
+        return lastClassesEndTime;
+    }
+
+    public void setLastClassesEndTime(Date lastClassesEndTime) {
+        this.lastClassesEndTime = lastClassesEndTime;
+    }
+}

+ 62 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/GroupBaseCourseInfoDto.java

@@ -0,0 +1,62 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.Group;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/4/6
+ */
+public class GroupBaseCourseInfoDto extends Group {
+
+    private Integer studentNum;
+
+    private Integer totalClassTimes;
+
+    private Integer currentClassTimes;
+
+    private Date firstClassesStartTime;
+
+    private Date lastClassesEndTime;
+
+    public Integer getStudentNum() {
+        return studentNum;
+    }
+
+    public void setStudentNum(Integer studentNum) {
+        this.studentNum = studentNum;
+    }
+
+    public Integer getTotalClassTimes() {
+        return totalClassTimes;
+    }
+
+    public void setTotalClassTimes(Integer totalClassTimes) {
+        this.totalClassTimes = totalClassTimes;
+    }
+
+    public Integer getCurrentClassTimes() {
+        return currentClassTimes;
+    }
+
+    public void setCurrentClassTimes(Integer currentClassTimes) {
+        this.currentClassTimes = currentClassTimes;
+    }
+
+    public Date getFirstClassesStartTime() {
+        return firstClassesStartTime;
+    }
+
+    public void setFirstClassesStartTime(Date firstClassesStartTime) {
+        this.firstClassesStartTime = firstClassesStartTime;
+    }
+
+    public Date getLastClassesEndTime() {
+        return lastClassesEndTime;
+    }
+
+    public void setLastClassesEndTime(Date lastClassesEndTime) {
+        this.lastClassesEndTime = lastClassesEndTime;
+    }
+}

+ 52 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/GroupQueryInfo.java

@@ -0,0 +1,52 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.biz.dal.enums.GroupStatusEnum;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.common.page.QueryInfo;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/4/6
+ */
+public class GroupQueryInfo extends QueryInfo {
+
+    private Integer teacherId;
+
+    private Integer studentId;
+
+    private GroupType groupType;
+
+    private GroupStatusEnum groupStatus;
+
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public GroupType getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(GroupType groupType) {
+        this.groupType = groupType;
+    }
+
+    public GroupStatusEnum getGroupStatus() {
+        return groupStatus;
+    }
+
+    public void setGroupStatus(GroupStatusEnum groupStatus) {
+        this.groupStatus = groupStatus;
+    }
+}

+ 19 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CoursesGroupService.java

@@ -5,6 +5,7 @@ import com.ym.mec.biz.dal.dto.GroupHeadInfoDto;
 import com.ym.mec.biz.dal.entity.CoursesGroup;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.page.GroupCourseScheduleQueryInfo;
+import com.ym.mec.biz.dal.page.GroupQueryInfo;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
@@ -32,6 +33,24 @@ public interface CoursesGroupService extends BaseService<Long, CoursesGroup> {
     PageInfo findTeacherCourseGroups(Integer teacherId, GroupCourseScheduleQueryInfo queryInfo);
 
     /**
+     * @describe
+     * @author Joburgess
+     * @date 2020/4/6
+     * @param queryInfo:
+     * @return com.ym.mec.common.page.PageInfo
+     */
+    PageInfo findTeacherCourseGroupsWithWeb(GroupQueryInfo queryInfo);
+
+    /**
+     * @describe
+     * @author Joburgess
+     * @date 2020/4/6
+     * @param queryInfo:
+     * @return com.ym.mec.common.page.PageInfo
+     */
+    PageInfo findStudentCourseGroupsWithWeb(GroupQueryInfo queryInfo);
+
+    /**
      * @describe 获取课程对应班级头部信息
      * @author Joburgess
      * @date 2020/3/10

+ 102 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java

@@ -7,6 +7,7 @@ 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.GroupCourseScheduleQueryInfo;
+import com.ym.mec.biz.dal.page.GroupQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.controller.BaseController;
@@ -86,6 +87,8 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
     private StudentDao studentDao;
     @Autowired
     private SysMessageService sysMessageService;
+    @Autowired
+    private GroupDao groupDao;
 
     private static final Logger LOGGER = LoggerFactory
             .getLogger(PracticeGroupService.class);
@@ -315,6 +318,105 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
     }
 
     @Override
+    public PageInfo findTeacherCourseGroupsWithWeb(GroupQueryInfo queryInfo) {
+        PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<CourseGroupExtendDto> teacherCourseGroups=new ArrayList<>();
+        int count = coursesGroupDao.countTeacherGroupsWithWeb(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            teacherCourseGroups = coursesGroupDao.findTeacherCourseGroupsWithWeb(params);
+            List<String> groupIds = teacherCourseGroups.stream().map(e -> String.valueOf(e.getId())).collect(Collectors.toList());
+            List<GroupBaseCourseInfoDto> groupStudentNums = groupDao.countGroupStudentNum(groupIds, GroupType.COMM);
+            Map<String, Integer> groupStudentNumMap = groupStudentNums.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, GroupBaseCourseInfoDto::getStudentNum));
+
+            List<GroupBaseCourseInfoDto> groupTotalClassesTimes = groupDao.countGroupTotalClassesTimes(groupIds, GroupType.COMM);
+            Map<String, GroupBaseCourseInfoDto> groupBaseCourseInfoMap = groupTotalClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e));
+
+            List<GroupBaseCourseInfoDto> groupFinishedClassesTimes = groupDao.countGroupFinishedClassesTimes(groupIds, GroupType.COMM);
+            Map<String, Integer> groupFinishedClassesTimesMap = groupFinishedClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e.getCurrentClassTimes()));
+
+            for (CourseGroupExtendDto teacherCourseGroup : teacherCourseGroups) {
+                if(Objects.nonNull(groupStudentNumMap.get(teacherCourseGroup.getId().toString()))) {
+                    teacherCourseGroup.setStudentNum(groupStudentNumMap.get(teacherCourseGroup.getId().toString()).intValue());
+                }
+                GroupBaseCourseInfoDto groupBaseCourseInfo = groupBaseCourseInfoMap.get(teacherCourseGroup.getId().toString());
+                if(Objects.nonNull(groupBaseCourseInfo)){
+                    teacherCourseGroup.setTotalClassTimes(groupBaseCourseInfo.getTotalClassTimes());
+                    teacherCourseGroup.setFirstClassesStartTime(groupBaseCourseInfo.getFirstClassesStartTime());
+                    teacherCourseGroup.setLastClassesEndTime(groupBaseCourseInfo.getLastClassesEndTime());
+                }
+                if(Objects.nonNull(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()))) {
+                    teacherCourseGroup.setCurrentClassTimes(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()).intValue());
+                }
+                if(Objects.nonNull(teacherCourseGroup.getTotalClassTimes())){
+                    teacherCourseGroup.setGroupClassesTotalDuration(teacherCourseGroup.getSingleClassMinutes()*teacherCourseGroup.getTotalClassTimes());
+                }
+                if(Objects.nonNull(teacherCourseGroup.getCurrentClassTimes())){
+                    teacherCourseGroup.setGroupClassesConsumeDuration(teacherCourseGroup.getSingleClassMinutes()*teacherCourseGroup.getCurrentClassTimes());
+                }
+            }
+        }
+        pageInfo.setRows(teacherCourseGroups);
+        return pageInfo;
+    }
+
+    @Override
+    public PageInfo findStudentCourseGroupsWithWeb(GroupQueryInfo queryInfo) {
+        PageInfo pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<CourseGroupExtendDto> teacherCourseGroups=new ArrayList<>();
+        int count = coursesGroupDao.countStudentGroupsWithWeb(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            teacherCourseGroups = coursesGroupDao.findStudentCourseGroupsWithWeb(params);
+            List<Integer> teacherIds = teacherCourseGroups.stream().map(CourseGroupExtendDto::getTeacherId).collect(Collectors.toList());
+            List<String> groupIds = teacherCourseGroups.stream().map(e -> String.valueOf(e.getId())).collect(Collectors.toList());
+            List<GroupBaseCourseInfoDto> groupStudentNums = groupDao.countGroupStudentNum(groupIds, GroupType.COMM);
+            Map<String, Integer> groupStudentNumMap = groupStudentNums.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, GroupBaseCourseInfoDto::getStudentNum));
+
+            List<GroupBaseCourseInfoDto> groupTotalClassesTimes = groupDao.countGroupTotalClassesTimes(groupIds, GroupType.COMM);
+            Map<String, GroupBaseCourseInfoDto> groupBaseCourseInfoMap = groupTotalClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e));
+
+            List<GroupBaseCourseInfoDto> groupFinishedClassesTimes = groupDao.countGroupFinishedClassesTimes(groupIds, GroupType.COMM);
+            Map<String, Integer> groupFinishedClassesTimesMap = groupFinishedClassesTimes.stream().collect(Collectors.toMap(GroupBaseCourseInfoDto::getId, e->e.getCurrentClassTimes()));
+
+            List<SimpleUserDto> teachers = teacherDao.findSimpleTeachers(teacherIds);
+            Map<Integer, String> idNameMap = teachers.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, SimpleUserDto::getUserName));
+
+            for (CourseGroupExtendDto teacherCourseGroup : teacherCourseGroups) {
+                if(Objects.nonNull(groupStudentNumMap.get(teacherCourseGroup.getId().toString()))) {
+                    teacherCourseGroup.setStudentNum(groupStudentNumMap.get(teacherCourseGroup.getId().toString()).intValue());
+                }
+                GroupBaseCourseInfoDto groupBaseCourseInfo = groupBaseCourseInfoMap.get(teacherCourseGroup.getId().toString());
+                if(Objects.nonNull(groupBaseCourseInfo)){
+                    teacherCourseGroup.setTotalClassTimes(groupBaseCourseInfo.getTotalClassTimes());
+                    teacherCourseGroup.setFirstClassesStartTime(groupBaseCourseInfo.getFirstClassesStartTime());
+                    teacherCourseGroup.setLastClassesEndTime(groupBaseCourseInfo.getLastClassesEndTime());
+                }
+                if(Objects.nonNull(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()))) {
+                    teacherCourseGroup.setCurrentClassTimes(groupFinishedClassesTimesMap.get(teacherCourseGroup.getId().toString()).intValue());
+                }
+                if(Objects.nonNull(teacherCourseGroup.getTotalClassTimes())){
+                    teacherCourseGroup.setGroupClassesTotalDuration(teacherCourseGroup.getSingleClassMinutes()*teacherCourseGroup.getTotalClassTimes());
+                }
+                if(Objects.nonNull(teacherCourseGroup.getCurrentClassTimes())){
+                    teacherCourseGroup.setGroupClassesConsumeDuration(teacherCourseGroup.getSingleClassMinutes()*teacherCourseGroup.getCurrentClassTimes());
+                }
+                teacherCourseGroup.setTeacherName(idNameMap.get(teacherCourseGroup.getTeacherId()));
+            }
+        }
+        pageInfo.setRows(teacherCourseGroups);
+        return pageInfo;
+    }
+
+    @Override
     public GroupHeadInfoDto getGroupHeadInfo(Long courseScheduleId) {
         if(Objects.isNull(courseScheduleId)){
             throw new BizException("请选择课程");

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkReplyServiceImpl.java

@@ -87,10 +87,10 @@ public class StudentCourseHomeworkReplyServiceImpl extends BaseServiceImpl<Long,
 		CourseSchedule courseSchedule = courseScheduleDao.get(studentCourseHomework.getCourseScheduleId());
 		Map<Integer, String> userMap = new HashMap<>();
 		userMap.put(studentCourseHomework.getUserId(),studentCourseHomework.getUserId().toString());
-		SysUser user = teacherDao.get(courseSchedule.getTeacherId());
+		SysUser user = teacherDao.get(courseSchedule.getActualTeacherId());
 		String notifyUrl = "3?courseScheduleID=" + courseSchedule.getId() + "&studentCourseHomeworkId=" + studentCourseHomework.getId() + "&extra=0";
 		String courseDate = DateUtil.dateToString(courseSchedule.getClassDate(), "yyyy年MM月dd日");
-		sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_TEACHER_REPLY_PUSH,courseSchedule.getTeacherId().toString(),
+		sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_TEACHER_REPLY_PUSH,courseSchedule.getActualTeacherId().toString(),
 				new String[]{studentCourseHomework.getUserId().toString()},
 				null, courseDate,courseSchedule.getName(),bean.getContent());
 		sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.HOMEWORK_TEACHER_REPLY_PUSH,

+ 52 - 0
mec-biz/src/main/resources/config/mybatis/CoursesGroupMapper.xml

@@ -28,6 +28,10 @@
 		<result column="update_time_" property="updateTime" />
 		<result column="educational_teacher_id_" property="educationalTeacherId" />
 	</resultMap>
+
+	<resultMap id="CourseGroupExtendDto" type="com.ym.mec.biz.dal.dto.CourseGroupExtendDto" extends="CoursesGroup">
+
+	</resultMap>
 	
 	<!-- 根据主键查询一条记录 -->
 	<select id="get" resultMap="CoursesGroup" >
@@ -156,6 +160,31 @@
 		</if>
 	</select>
 
+	<sql id="teacherCourseGroupsQueryCondition">
+		<where>
+			<if test="teacherId!=null">
+				AND teacher_id_=#{teacherId}
+			</if>
+			<if test="search!=null">
+				AND (name_ LIKE CONCAT('%', #{search}, '%') OR id_ LIKE CONCAT('%', #{search}, '%'))
+			</if>
+			<if test="groupStatus!=null">
+				AND status_ = #{groupStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			</if>
+		</where>
+	</sql>
+	<select id="findTeacherCourseGroupsWithWeb" resultMap="CourseGroupExtendDto">
+		SELECT * FROM courses_group
+		<include refid="teacherCourseGroupsQueryCondition"/>
+		ORDER BY id_ DESC
+		<include refid="global.limit"/>
+	</select>
+
+	<select id="countTeacherGroupsWithWeb" resultType="int">
+		SELECT COUNT(id_) FROM courses_group
+		<include refid="teacherCourseGroupsQueryCondition"/>
+	</select>
+
     <select id="queryTeacherCourseGroups" resultMap="CoursesGroup">
 		SELECT * FROM courses_group
 		WHERE teacher_id_=#{userId} AND status_ IN ('NOT_START', 'NORMAL', 'FINISH','CANCEL')
@@ -215,4 +244,27 @@
 			HAVING
 			COUNT( cs.id_ ) &lt;=0
 	</select>
+	<select id="findStudentCourseGroupsWithWeb" resultMap="CourseGroupExtendDto">
+		SELECT csg.* FROM class_group_student_mapper cgsm LEFT JOIN courses_group csg ON csg.id_=cgsm.music_group_id_
+		WHERE cgsm.user_id_=#{studentId} AND cgsm.group_type_='COMM'
+		<if test="search!=null">
+			AND (csg.name_ LIKE CONCAT('%', #{search}, '%') OR csg.id_ LIKE CONCAT('%', #{search}, '%'))
+		</if>
+		<if test="groupStatus!=null">
+			AND csg.status_ = #{groupStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+		</if>
+		ORDER BY id_ DESC
+		<include refid="global.limit"/>
+	</select>
+	<select id="countStudentGroupsWithWeb" resultType="int">
+		SELECT COUNT(csg.id_) FROM class_group_student_mapper cgsm LEFT JOIN courses_group csg ON csg.id_=cgsm.music_group_id_
+		WHERE
+		cgsm.user_id_=#{studentId} AND cgsm.group_type_='COMM'
+		<if test="search!=null">
+			AND (csg.name_ LIKE CONCAT('%', #{search}, '%') OR csg.id_ LIKE CONCAT('%', #{search}, '%'))
+		</if>
+		<if test="groupStatus!=null">
+			AND csg.status_ = #{groupStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+		</if>
+	</select>
 </mapper>

+ 46 - 0
mec-biz/src/main/resources/config/mybatis/GroupMapper.xml

@@ -16,6 +16,14 @@
         <result column="class_group_name_" property="classGroupName"/>
     </resultMap>
 
+    <resultMap id="GroupBaseCourseInfoDto" type="com.ym.mec.biz.dal.dto.GroupBaseCourseInfoDto" extends="Group">
+        <result column="student_num_" property="studentNum" javaType="java.lang.Integer"/>
+        <result column="total_class_times_" property="totalClassTimes" javaType="java.lang.Integer"/>
+        <result column="current_class_times_" property="currentClassTimes" javaType="java.lang.Integer"/>
+        <result column="first_classes_start_time_" property="firstClassesStartTime"/>
+        <result column="last_classes_end_time_" property="lastClassesEndTime"/>
+    </resultMap>
+
     <sql id="searchMusicGroupsCondition">
         <where>
             <if test="search!=null">
@@ -160,4 +168,42 @@
         </foreach>
     </select>
 
+    <select id="countGroupTotalClassesTimes" resultMap="GroupBaseCourseInfoDto">
+        SELECT
+            music_group_id_ group_id_,
+            COUNT(id_) total_class_times_,
+            MIN( CONCAT( class_date_, ' ', start_class_time_ ) ) first_classes_start_time_,
+            MAX(CONCAT(class_date_, ' ', end_class_time_)) last_classes_end_time_
+        FROM course_schedule
+        WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        AND music_group_id_ IN
+        <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
+            #{groupId}
+        </foreach>
+        GROUP BY music_group_id_;
+    </select>
+
+    <select id="countGroupFinishedClassesTimes" resultMap="GroupBaseCourseInfoDto">
+        SELECT music_group_id_ group_id_,COUNT(id_) current_class_times_ FROM course_schedule
+        WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        AND music_group_id_ IN
+        <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
+            #{groupId}
+        </foreach>
+        AND CONCAT(class_date_, ' ', start_class_time_)&lt;NOW()
+        GROUP BY music_group_id_;
+    </select>
+
+    <select id="countGroupStudentNum" resultMap="GroupBaseCourseInfoDto">
+        SELECT  music_group_id_ group_id_,COUNT(id_) student_num_
+        FROM class_group_student_mapper
+        WHERE group_type_=#{groupType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        AND status_='NORMAL'
+        AND music_group_id_ IN
+        <foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
+            #{groupId}
+        </foreach>
+        GROUP BY music_group_id_;
+    </select>
+
 </mapper>

+ 41 - 0
mec-web/src/main/java/com/ym/mec/web/controller/CoursesGroupController.java

@@ -0,0 +1,41 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.biz.dal.page.GroupQueryInfo;
+import com.ym.mec.biz.service.CoursesGroupService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author Joburgess
+ * @Date 2020/4/6
+ */
+@RequestMapping("coursesGroupController")
+@Api(tags = "对外课程组服务")
+@RestController
+public class CoursesGroupController extends BaseController {
+
+    @Autowired
+    private CoursesGroupService coursesGroupService;
+
+    @ApiOperation(value = "获取老师对外课程组")
+    @GetMapping("/findTeacherCourseGroupsWithWeb")
+    @PreAuthorize("@pcs.hasPermissions('coursesGroupController/findTeacherCourseGroupsWithWeb')")
+    public HttpResponseResult findTeacherCourseGroupsWithWeb(GroupQueryInfo queryInfo){
+        return succeed(coursesGroupService.findTeacherCourseGroupsWithWeb(queryInfo));
+    }
+
+    @ApiOperation(value = "获取学生对外课程组")
+    @GetMapping("/findStudentCourseGroupsWithWeb")
+    @PreAuthorize("@pcs.hasPermissions('coursesGroupController/findStudentCourseGroupsWithWeb')")
+    public HttpResponseResult findStudentCourseGroupsWithWeb(GroupQueryInfo queryInfo){
+        return succeed(coursesGroupService.findStudentCourseGroupsWithWeb(queryInfo));
+    }
+
+}