Prechádzať zdrojové kódy

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

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
#	mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
#	mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
zouxuan 5 rokov pred
rodič
commit
db5e4c6707

+ 31 - 7
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -1,11 +1,8 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
-import com.ym.mec.biz.dal.entity.CourseScheduleTeacherSalary;
-import com.ym.mec.biz.dal.entity.StudentAttendance;
-import com.ym.mec.biz.dal.entity.StudentCourseScheduleRecordDto;
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.common.dal.BaseDAO;
@@ -13,7 +10,10 @@ import com.ym.mec.common.page.PageInfo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
-import java.util.*;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 
@@ -556,7 +556,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @param params
      * @return
      */
-    List<String> queryMusicGroupIds(Map<String, Object> params);
+    List<Group> queryMusicGroupIds(Map<String, Object> params);
 
     /**
      * count学员购买的所有乐团和vip编号分页列表
@@ -573,7 +573,7 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
      * @param params: 参数
      * @return java.util.List<java.lang.String>
      */
-    List<String> queryMusicGroupIdsWithoutOverGroup(Map<String, Object> params);
+    List<Group> queryMusicGroupIdsWithoutOverGroup(Map<String, Object> params);
 
     /**
      * @describe count学员购买的所有乐团和vip编号分页列表,排除已结束的乐团
@@ -1047,6 +1047,19 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
                                                           @Param("endTime") Date endTime);
 
     /**
+     * @describe 获取教师在指定时间段内的课程
+     * @author Joburgess
+     * @date 2020/2/2
+     * @param userId: 教师编号列表
+     * @param startTime: 开始时间
+     * @param endTime: 结束时间
+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+     */
+    List<CourseSchedule> findTeacherCoursesWithDateRange(@Param("userId") Integer userId,
+                                                          @Param("startTime") Date startTime,
+                                                          @Param("endTime") Date endTime);
+
+    /**
      * @describe 获取指定学员的陪练课
      * @author Joburgess
      * @date 2020/2/3
@@ -1107,9 +1120,20 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
     List<Map<Long, Integer>> countGroupOverCourse(@Param("groupIds") List<String> groupIds,@Param("groupType")String groupType);
 
     /**
+     * @describe 获取学生相关的课程
+     * @author Joburgess
+     * @date 2020/2/10
+     * @param userId:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
+     */
+    List<CourseSchedule> findUserCourses(@Param("userId") Integer userId,
+                                         @Param("teacherIds") List<Integer> teacherIds);
+
+    /**
      * 获取课程实际上课老师
      * @param courseScheduleIds
      * @return
      */
     List<Map<Long, String>> queryTeacherName(@Param("courseScheduleIds") List<Long> courseScheduleIds);
+
 }

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

@@ -75,6 +75,15 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
     List<TeacherBasicDto> findTeachers(@Param("userIds") List<Integer> userIds);
 
     /**
+     * @describe
+     * @author Joburgess
+     * @date 2020/2/10
+     * @param userIds:
+     * @return java.util.List<com.ym.mec.biz.dal.dto.SimpleUserDto>
+     */
+    List<SimpleUserDto> findSimpleTeachers(@Param("userIds") List<Integer> userIds);
+
+    /**
      * @describe 获取指定声部和分部下的全职老师
      * @author Joburgess
      * @date 2020/2/2

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/SimpleUserDto.java

@@ -10,6 +10,11 @@ public class SimpleUserDto {
 
     private String userName;
 
+    public SimpleUserDto(Integer userId, String userName) {
+        this.userId = userId;
+        this.userName = userName;
+    }
+
     public Integer getUserId() {
         return userId;
     }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherQueryInfo.java

@@ -24,6 +24,9 @@ public class TeacherQueryInfo extends QueryInfo {
 
     @ApiModelProperty(value = "账号状态")
     private String lockFlag;
+    
+    @ApiModelProperty(value = "是否支持额外陪练课授课")
+    private Boolean isSupportExtraPracticeLesson;
 
     public List<Integer> getTeacherId() {
         return teacherId;
@@ -72,4 +75,12 @@ public class TeacherQueryInfo extends QueryInfo {
     public void setLockFlag(String lockFlag) {
         this.lockFlag = lockFlag;
     }
+
+	public Boolean getIsSupportExtraPracticeLesson() {
+		return isSupportExtraPracticeLesson;
+	}
+
+	public void setIsSupportExtraPracticeLesson(Boolean isSupportExtraPracticeLesson) {
+		this.isSupportExtraPracticeLesson = isSupportExtraPracticeLesson;
+	}
 }

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

@@ -57,7 +57,18 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
      * @param subjectId: 声部编号
      * @return java.util.List<com.ym.mec.biz.dal.dto.SimpleUserDto>
      */
-	List<TeacherBasicDto> getEnableApplyTeachers(Integer userId, Integer subjectId);
+	List<SimpleUserDto> getEnableApplyTeachers(Integer userId, Integer subjectId);
+
+	/**
+	 * @describe 获取指定教师的空闲时间
+	 * @author Joburgess
+	 * @date 2020/2/10
+	 * @param userId: 用户编号
+	 * @param teacherId: 教师编号
+	 * @param firstClassTime: 第一节课开始时间
+	 * @return java.util.Map
+	 */
+	Map getTeacherFreeTimes(Integer userId, Integer teacherId, Date firstClassTime);
 
     /**
      * @describe 获取指定学员所在分部下的教师空闲时间
@@ -68,13 +79,14 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
      * @param firstClassTime: 第一节课开始时间
      * @return java.util.Map
      */
-    Map getTeacherFreeTimes(Integer userId, Integer subjectId, Date firstClassTime);
+    Map getTeachersFreeTimes(Integer userId, Integer subjectId, Date firstClassTime);
 
     /**
      * @describe 获取指定日期内课一预约课程的时间
      * @author Joburgess
      * @date 2020/2/2
-     * @param days: 天数
+     * @param startDay: 天数
+     * @param endDay: 天数
      * @return java.util.Map
      */
 	List<Date> getEnableApplyDates(Date startDay,Date endDay);
@@ -89,6 +101,15 @@ public interface PracticeGroupService extends BaseService<Long, PracticeGroup> {
     Map practiceApply(PracticeGroup practiceGroup);
 
 	/**
+	 * @describe 陪练课预约2
+	 * @author Joburgess
+	 * @date 2020/1/31
+	 * @param practiceGroup: 预约信息
+	 * @return java.util.Map
+	 */
+	Map practiceApply2(PracticeGroup practiceGroup);
+
+	/**
 	 * 获取陪练课列表
 	 * @param queryInfo
 	 * @return

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

@@ -562,21 +562,41 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //获取分页前的所有的乐团编号和vip编号
         params.put("offset", pageInfo.getOffset());
         List<String> musicGroupIds = null;
+        List<Group> groups=new ArrayList<>();
         if (queryInfo.isHideOverGroup()) {
-            musicGroupIds = courseScheduleDao.queryMusicGroupIdsWithoutOverGroup(params);
+            groups = courseScheduleDao.queryMusicGroupIdsWithoutOverGroup(params);
             pageInfo.setTotal(courseScheduleDao.countMusicGroupIdsWithoutOverGroup(params));
         }else {
-            musicGroupIds = courseScheduleDao.queryMusicGroupIds(params);
+            groups = courseScheduleDao.queryMusicGroupIds(params);
             pageInfo.setTotal(courseScheduleDao.countMusicGroupIds(params));
         }
+        Map<GroupType, List<Group>> typeGroupMap=new HashMap<>();
+        if(!CollectionUtils.isEmpty(groups)){
+            typeGroupMap = groups.stream().collect(Collectors.groupingBy(Group::getGroupType));
+        }
         courseListDtos = new ArrayList<>();
+        if(!CollectionUtils.isEmpty(typeGroupMap.get(GroupType.VIP))){
+            musicGroupIds=typeGroupMap.get(GroupType.VIP).stream().map(Group::getId).collect(Collectors.toList());
+        }
         //获取学员所购买的vip课列表详情
         List<CourseListDto> vipCourses = classGroupDao.queryStudentVipCourses(StringUtils.join(musicGroupIds, ","), userId);
         //获取vip课的学生列表
         Set<String> vipIds = vipCourses.stream().map(CourseListDto::getVipId).collect(Collectors.toSet());
         Map<String, String> vipStuNames = MapUtil.convertIntegerMap(classGroupDao.findVipStuNames(StringUtils.join(vipIds, ","),"VIP"));
+
+        if(!CollectionUtils.isEmpty(typeGroupMap.get(GroupType.MUSIC))){
+            musicGroupIds=typeGroupMap.get(GroupType.MUSIC).stream().map(Group::getId).collect(Collectors.toList());
+        }else{
+            musicGroupIds=null;
+        }
         //获取学员的乐团列表详情
         List<CourseListDto> musicCourse = classGroupDao.queryStudentMusicGroupCourses(StringUtils.join(musicGroupIds, ","), userId);
+
+        if(!CollectionUtils.isEmpty(typeGroupMap.get(GroupType.PRACTICE))){
+            musicGroupIds=typeGroupMap.get(GroupType.PRACTICE).stream().map(Group::getId).collect(Collectors.toList());
+        }else{
+            musicGroupIds=null;
+        }
         //获取学员购买的陪练课列表
         List<CourseListDto> practiceCourse = classGroupDao.queryStudentPracticeCourses(StringUtils.join(musicGroupIds, ","));
         Set<String> practiceGroupId = practiceCourse.stream().map(e -> e.getPracticeId()).collect(Collectors.toSet());
@@ -603,6 +623,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         courseListDtos.addAll(practiceCourse);
         //检测对应乐团是否已申请退费
         List<Map<String, Integer>> isApplyMaps;
+        if(!CollectionUtils.isEmpty(typeGroupMap.get(GroupType.MUSIC))){
+            musicGroupIds=typeGroupMap.get(GroupType.MUSIC).stream().map(Group::getId).collect(Collectors.toList());
+        }else{
+            musicGroupIds=null;
+        }
         if (musicGroupIds != null && musicGroupIds.size() > 0) {
             isApplyMaps = studentApplyRefundsDao.checkIsApplyRefund(musicGroupIds, userId);
         } else {

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 786 - 150
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java


+ 56 - 12
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -1314,8 +1314,8 @@
             LEFT JOIN class_group cg ON cs.class_group_id_=cg.id_
         WHERE cs.id_=#{courseScheduleId}
     </select>
-    <select id="queryMusicGroupIds" resultType="java.lang.String">
-        SELECT DISTINCT cgsm.music_group_id_ FROM class_group_student_mapper cgsm
+    <select id="queryMusicGroupIds" resultMap="com.ym.mec.biz.dal.dao.GroupDao.Group">
+        SELECT DISTINCT cgsm.music_group_id_ id_,cgsm.group_type_ FROM class_group_student_mapper cgsm
         LEFT JOIN music_group mg ON mg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'MUSIC'
         LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'VIP'
         LEFT JOIN practice_group pg ON pg.id_ = cgsm.music_group_id_ AND cgsm.group_type_ = 'PRACTICE'
@@ -1332,8 +1332,8 @@
         WHERE cgsm.user_id_ = #{userId} AND cgsm.status_ != 'QUIT'
         AND (mg.status_ = 'PROGRESS' OR vg.group_status_  = 2 OR vg.group_status_ = 4 OR pg.id_ IS NOT NULL)
     </select>
-    <select id="queryMusicGroupIdsWithoutOverGroup" resultType="java.lang.String">
-        SELECT DISTINCT spo.music_group_id_ FROM student_payment_order spo
+    <select id="queryMusicGroupIdsWithoutOverGroup" resultMap="com.ym.mec.biz.dal.dao.GroupDao.Group">
+        SELECT DISTINCT spo.music_group_id_ id_,cgsm.group_type_ FROM student_payment_order spo
         LEFT JOIN class_group_student_mapper cgsm ON spo.music_group_id_ = cgsm.music_group_id_
         LEFT JOIN vip_group vg ON vg.id_=spo.music_group_id_ AND spo.group_type_='VIP'
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
@@ -2107,15 +2107,15 @@
     </select>
     <select id="findTeachersCoursesWithDateRange" resultMap="CourseSchedule">
         SELECT
-            cs.id_,
-            cs.class_date_,
-            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
-            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
-            csts.user_id_ actual_teacher_id_,
-            cs.group_type_
+        cs.id_,
+        cs.class_date_,
+        CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+        CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+        csts.user_id_ actual_teacher_id_,
+        cs.group_type_
         FROM
-            course_schedule_teacher_salary csts
-            LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
+        course_schedule_teacher_salary csts
+        LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
         WHERE
         (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
         AND cs.class_date_ BETWEEN DATE_FORMAT(#{startTime},"%Y-%m-%d") AND DATE_FORMAT(#{endTime},"%Y-%m-%d")
@@ -2124,6 +2124,22 @@
             #{userId}
         </foreach>
     </select>
+    <select id="findTeacherCoursesWithDateRange" resultMap="CourseSchedule">
+        SELECT
+        cs.id_,
+        cs.class_date_,
+        CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+        CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+        csts.user_id_ actual_teacher_id_,
+        cs.group_type_
+        FROM
+        course_schedule_teacher_salary csts
+        LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
+        WHERE
+        (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
+        AND cs.class_date_ BETWEEN DATE_FORMAT(#{startTime},"%Y-%m-%d") AND DATE_FORMAT(#{endTime},"%Y-%m-%d")
+        AND csts.user_id_ = #{userId}
+    </select>
     <select id="findStudentPracticeCourses" resultMap="courseScheduleDto">
         SELECT
             cs.id_ seal_class_id_,
@@ -2238,6 +2254,34 @@
         </foreach>
         GROUP BY cs.music_group_id_
     </select>
+    <select id="findUserCourses" resultMap="CourseSchedule">
+        SELECT
+            cs.id_,
+            cs.class_group_id_,
+            cs.group_type_,
+            cs.music_group_id_,
+            cs.status_,
+            CONCAT(cs.class_date_,' ',cs.start_class_time_) start_class_time_,
+            CONCAT(cs.class_date_,' ',cs.end_class_time_) end_class_time_,
+            cs.teacher_id_,
+            cs.teach_mode_,
+            cs.type_
+        FROM
+          course_schedule_student_payment cssp
+          LEFT JOIN course_schedule cs ON cs.id_ = cssp.course_schedule_id_
+          LEFT JOIN class_group_student_mapper cgsm ON cgsm.user_id_ = cssp.user_id_
+          AND cssp.class_group_id_ = cgsm.class_group_id_
+        WHERE
+          ( cs.del_flag_ != 1 OR cs.del_flag_ IS NULL )
+          AND cssp.user_id_ = #{userId}
+          AND cgsm.status_ = 'NORMAL'
+          AND cs.type_ IN ('SINGLE','HIGH','VIP')
+          AND cs.teacher_id_ IN
+          <foreach collection="teacherIds" item="teacherId" open="(" close=")" separator=",">
+              #{teacherId}
+          </foreach>
+    </select>
+
     <select id="queryTeacherName" resultType="java.util.Map">
         SELECT cs.id_ 'key',su.real_name_ 'value' FROM course_schedule cs
         LEFT JOIN sys_user su ON cs.actual_teacher_id_ = su.id_

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

@@ -216,7 +216,7 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="Teacher" parameterType="map">
-        SELECT t.id_,su.real_name_,su.lock_flag_,t.subject_id_,su.phone_,t.organ_id_ teacher_organ_id_,t.organ_id_,
+        SELECT t.id_,su.real_name_,su.lock_flag_,t.subject_id_,su.phone_,t.organ_id_ teacher_organ_id_,t.organ_id_,t.is_support_extra_practice_lesson_,
         t.job_nature_,t.is_probation_period_,GROUP_CONCAT(s.name_) subject_name_,su.del_flag_
         FROM teacher t LEFT JOIN sys_user su ON t.id_ = su.id_
         LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
@@ -247,6 +247,9 @@
         <if test="search != null">
             AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%') OR t.id_ = #{search})
         </if>
+        <if test="isSupportExtraPracticeLesson != null">
+            AND is_support_extra_practice_lesson_ = #{isSupportExtraPracticeLesson}
+        </if>
     </sql>
 
     <!-- 根据证件号查询老师 -->
@@ -298,6 +301,18 @@
             </if>
         </where>
     </select>
+    <select id="findSimpleTeachers" resultType="com.ym.mec.biz.dal.dto.SimpleUserDto">
+        SELECT su.id_ userId,su.real_name_ userName FROM sys_user su
+        LEFT JOIN teacher t ON su.id_=t.id_
+        <where>
+            <if test="userIds != null">
+                su.id_ IN
+                <foreach collection="userIds" separator="," open="(" close=")" item="item">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
     <select id="findTeaTeachersByOrganAndSubject" resultMap="TeacherBasicDto">
         SELECT
             su.id_,
@@ -622,6 +637,9 @@
             <if test="isProbationPeriod != null">
                 AND t.is_probation_period_ = #{isProbationPeriod}
             </if>
+            <if test="isSupportExtraPracticeLesson != null">
+                AND t.is_support_extra_practice_lesson_ = #{isSupportExtraPracticeLesson}
+            </if>
         </where>
     </select>
 

+ 13 - 3
mec-student/src/main/java/com/ym/mec/student/controller/PracticeGroupController.java

@@ -67,12 +67,22 @@ public class PracticeGroupController extends BaseController {
 
     @ApiOperation("获取指定学员所在分部下的教师空闲时间")
     @GetMapping(value = "/getTeacherFreeTimes")
-    public Object getTeacherFreeTimes(Integer subjectId, Date firstClassTime){
+    public Object getTeacherFreeTimes(Integer teacherId, Date firstClassTime){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        return succeed(practiceGroupService.getTeacherFreeTimes(sysUser.getId(),subjectId,firstClassTime));
+        return succeed(practiceGroupService.getTeacherFreeTimes(sysUser.getId(),teacherId,firstClassTime));
+    }
+
+    @ApiOperation("获取指定学员所在分部下的教师空闲时间")
+    @GetMapping(value = "/getTeachersFreeTimes")
+    public Object getTeachersFreeTimes(Integer subjectId, Date firstClassTime){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return succeed(practiceGroupService.getTeachersFreeTimes(sysUser.getId(),subjectId,firstClassTime));
     }
 
     @ApiOperation("陪练课预约")
@@ -86,7 +96,7 @@ public class PracticeGroupController extends BaseController {
             throw new BizException("请联系老师确认您的所属分部");
         }
         practiceGroup.setStudentId(sysUser.getId());
-        return succeed(practiceGroupService.practiceApply(practiceGroup));
+        return succeed(practiceGroupService.practiceApply2(practiceGroup));
     }
 
 }

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov