Forráskód Böngészése

Merge remote-tracking branch 'origin/master'

Joburgess 5 éve
szülő
commit
e24b03dded

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

@@ -368,4 +368,12 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @return
      */
     BasicUserDto findTeacherInfo(Integer id);
+
+    /**
+     * 获取管理员通讯录
+     * @param userId
+     * @param search
+     * @return
+     */
+    List<BasicUserDto> queryEducationIpa(@Param("userId") Integer userId, @Param("search") String search);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/VipGroupActivityQueryInfo.java

@@ -10,6 +10,16 @@ public class VipGroupActivityQueryInfo extends QueryInfo {
 
     private String organId;
 
+    private Boolean enable;
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
     public String getOrganId() {
         return organId;
     }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherService.java

@@ -151,4 +151,12 @@ public interface TeacherService extends BaseService<Integer, Teacher> {
      * @return
      */
     CourseHomework getCourseScheduleHomework(Integer courseScheduleId);
+
+    /**
+     * 获取教务端通讯录
+     * @param id
+     * @param search
+     * @return
+     */
+    List<BasicUserDto> queryEducationIpa(Integer id, String search);
 }

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

@@ -1415,6 +1415,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
         int singleClassMinutes = 0;
         int courseNum = 0;
+        Date coursesExpireDate = null;
+        Date coursesStartDate = null;
         GroupType groupType = vipGroupCourseAdjustInfo.getGroupType();
         switch (vipGroupCourseAdjustInfo.getGroupType()){
             case PRACTICE:
@@ -1424,6 +1426,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
                 }
                 singleClassMinutes = practiceGroup.getSingleClassMinutes();
                 courseNum = courseScheduleDao.countVipGroupCourses(practiceGroup.getId().intValue(),groupType.getCode());
+                coursesExpireDate = practiceGroup.getCoursesExpireDate();
+                coursesStartDate = practiceGroup.getCoursesStartDate();
                 break;
             default:
                 VipGroup vipGroup = vipGroupDao.get(vipGroupCourseAdjustInfo.getVipGroupId().longValue());
@@ -1562,6 +1566,26 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             calendar.add(Calendar.DATE, 1);
         }
         checkNewCourseSchedules(courseSchedules, false);
+        //如果是陪练课,调整时间不允许超过有效期
+        if(groupType == GroupType.PRACTICE){
+            for (CourseSchedule e:courseSchedules) {
+                //已点名的不允许调整
+                List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseId(e.getId());
+                if(studentAttendances != null && studentAttendances.size() > 0){
+                    throw new BizException("调整失败: 课程已点名");
+                }
+                String classDate = DateUtil.format(e.getClassDate(), DateUtil.DEFAULT_PATTERN);
+                String startClassTime = DateUtil.format(e.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+                Date startDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
+                Date endDateTime = DateUtil.addMinutes(startDateTime,singleClassMinutes);
+                if(DateUtil.minutesBetween(startDateTime,coursesStartDate) > 0){
+                    throw new BizException("调整失败: 课程{}调整时间早于有效期",e.getId());
+                }
+                if(DateUtil.minutesBetween(coursesExpireDate,endDateTime) > 0){
+                    throw new BizException("调整失败: 课程{}截止时间超过课程有效期",e.getId());
+                }
+            }
+        }
         courseScheduleDao.batchUpdate(courseSchedules);
         classGroupService.updateClassGroupInfo(classGroup.getId());
         if(vipGroupCourseAdjustInfo.getCourseCreateStartTime().after(now)){
@@ -3175,13 +3199,18 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         if(Objects.isNull(courseSchedule.getStartClassTime())){
             throw new BizException("请指定上课时间");
         }
-        CourseSchedule oldCourseSchedule = courseScheduleDao.getSurplusCourseWithGroup(courseScheduleId);
+        CourseSchedule oldCourseSchedule = courseScheduleDao.get(courseScheduleId);
         if(Objects.isNull(oldCourseSchedule)){
-            throw new BizException("调整失败: 课程状态异常");
+            throw new BizException("课程不存在");
         }
         if(!oldCourseSchedule.getGroupType().equals(GroupType.PRACTICE)){
             throw new BizException("请选择网管课");
         }
+        //已点名的不允许调整
+        List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseId(courseScheduleId);
+        if(studentAttendances != null && studentAttendances.size() > 0){
+            throw new BizException("调整失败: 课程已点名");
+        }
         //已结算的课酬不能调整
         CourseScheduleTeacherSalary teacherSalary = courseScheduleTeacherSalaryDao.queryByCourseScheduleIdAndUserId(oldCourseSchedule.getId(), oldCourseSchedule.getActualTeacherId());
         if(teacherSalary != null && teacherSalary.getSettlementTime() != null){
@@ -3192,6 +3221,9 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
         Date startDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
         Date endDateTime = DateUtil.addMinutes(startDateTime,practiceGroup.getSingleClassMinutes());
+        if(DateUtil.minutesBetween(startDateTime,practiceGroup.getCoursesStartDate()) > 0){
+            throw new BizException("调整失败: 调整时间不得早于开课时间");
+        }
         if(DateUtil.minutesBetween(practiceGroup.getCoursesExpireDate(),endDateTime) > 0){
             throw new BizException("调整失败: 截止时间超过课程有效期");
         }
@@ -3253,7 +3285,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         }
         CourseSchedule oldCourseSchedule = courseScheduleDao.getSurplusCourseWithGroup(courseScheduleId);
         if(Objects.isNull(oldCourseSchedule)){
-            throw new BizException("调整失败: 课程状态异常");
+            throw new BizException("调整失败: 课程已结束");
         }
         if(!oldCourseSchedule.getGroupType().equals(GroupType.PRACTICE)){
             throw new BizException("请选择网管课");
@@ -3261,7 +3293,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         if(teacherId.equals(oldCourseSchedule.getActualTeacherId())){
             throw new BizException("请选择不同的老师");
         }
-
         //保存修改记录
         Date date = new Date();
         CourseScheduleModifyLog scheduleModifyLog = new CourseScheduleModifyLog();
@@ -3279,6 +3310,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         checkNewCourseSchedules(courseSchedules,false);
 
         courseScheduleDao.update(oldCourseSchedule);
+        List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
+        if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
+            throw new BizException("请设置老师默认课酬");
+        }
         teacherAttendanceDao.batchUpdateTeacher(courseScheduleIds,teacherId);
         courseScheduleTeacherSalaryDao.batchUpdateTeacher(courseScheduleIds,teacherId);
         courseScheduleModifyLogDao.insert(scheduleModifyLog);
@@ -3338,6 +3373,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         Set<Long> courseScheduleIds = courseSchedules.stream().map(e -> e.getId()).collect(Collectors.toSet());
         courseScheduleTeacherSalaryDao.batchUpdateTeacher(courseScheduleIds,teacherId);
 
+        List<TeacherDefaultPracticeGroupSalary> teacherDefaultPracticeGroupSalaries = teacherDefaultPracticeGroupSalaryDao.queryByUserId(teacherId);
+        if(teacherDefaultPracticeGroupSalaries == null || teacherDefaultPracticeGroupSalaries.size() == 0){
+            throw new BizException("请设置老师默认课酬");
+        }
         teacherAttendanceDao.batchUpdateTeacher(courseScheduleIds,teacherId);
         courseScheduleModifyLogDao.batchInsert(scheduleModifyLogs);
 

+ 17 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -26,6 +26,9 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Function;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 @Service
@@ -355,6 +358,20 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	}
 
 	@Override
+	public List<BasicUserDto> queryEducationIpa(Integer userId, String search) {
+		List<BasicUserDto> basicUserDtos = queryGroupStudents(userId, search);
+		//获取当前管理人员所在分部,所有老师,以及没有乐团的学生
+		List<BasicUserDto> userDtos = teacherDao.queryEducationIpa(userId, search);
+		userDtos.addAll(basicUserDtos);
+		userDtos.parallelStream().filter(distinctByKey(BasicUserDto::getUserId)).forEach(System.out::println);
+		return userDtos;
+	}
+	public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
+		Set<Object> seen = ConcurrentHashMap.newKeySet();
+		return t -> seen.add(keyExtractor.apply(t));
+	}
+
+	@Override
 	public List<BasicUserDto> queryMusicGroupTeacher(String musicGroupId) {
 		if(Objects.isNull(musicGroupId)){
 			throw new BizException("请指定乐团");

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

@@ -359,7 +359,9 @@
 		</foreach>
 	</update>
     <update id="batchUpdateTeacher">
-		UPDATE course_schedule_teacher_salary csts SET csts.user_id_ = #{teacherId},csts.update_time_ = NOW()
+		UPDATE course_schedule_teacher_salary csts SET csts.user_id_ = #{teacherId},csts.update_time_ = NOW(),
+		csts.expect_salary_ =
+		(SELECT main_teacher_salary_ FROM teacher_default_practice_group_salary WHERE user_id_ = #{teacherId} LIMIT 1)
 		WHERE csts.course_schedule_id_ IN
 		<foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
 			#{courseScheduleId}

+ 23 - 0
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -837,4 +837,27 @@
         LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
         WHERE su.id_ = #{id}
     </select>
+    <select id="queryEducationIpa" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
+        SELECT su.real_name_ username_,su.id_ user_id_,su.avatar_ head_url_,su.gender_,GROUP_CONCAT(s.name_) subject_name_,su.user_type_
+        FROM employee e
+        LEFT JOIN teacher t ON INTE_ARRAY(e.organ_id_list_,t.flow_organ_range_) OR FIND_IN_SET(t.organ_id_,e.organ_id_list_)
+        LEFT JOIN sys_user su ON t.id_ = su.id_
+        LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
+        WHERE e.user_id_ = #{userId}
+        <if test="search != null and search != ''">
+            AND su.real_name_ LIKE CONCAT('%',#{search},'%')
+        </if>
+        GROUP BY t.id_
+        UNION ALL
+        SELECT su.username_,su.id_ user_id_,su.avatar_ head_url_,su.gender_,NULL subject_name_,su.user_type_
+        FROM employee e
+        LEFT JOIN sys_user su ON FIND_IN_SET(su.organ_id_,e.organ_id_list_)
+        LEFT JOIN student_registration sr ON su.id_ = sr.user_id_ AND sr.music_group_status_ != 'QUIT'
+        LEFT JOIN music_group mg ON mg.id_ = sr.music_group_id_ AND mg.status_ = 'PROGRESS'
+        WHERE e.user_id_ = #{userId} AND sr.id_ IS NULL AND mg.id_ IS NULL
+        <if test="search != null and search != ''">
+            AND su.username_ LIKE CONCAT('%',#{search},'%')
+        </if>
+        GROUP BY su.id_
+    </select>
 </mapper>

+ 8 - 3
mec-biz/src/main/resources/config/mybatis/VipGroupActivityMapper.xml

@@ -135,7 +135,13 @@
 		<where>
 			vga.del_flag_=0
 			<if test="organId != null">
-			AND INTE_ARRAY(organ_id_,#{organId})
+				AND INTE_ARRAY(organ_id_,#{organId})
+			</if>
+			<if test="enable != null and enable == true">
+				AND ((NOW() &lt; end_time_ AND NOW() > start_time_) OR end_time_ IS NULL)
+			</if>
+			<if test="enable != null and enable == false">
+				AND (NOW() >= end_time_ OR NOW() &lt;= start_time_)
 			</if>
 		</where>
 	</sql>
@@ -143,8 +149,7 @@
 	<!-- 分页查询 -->
 	<select id="queryPage" resultMap="VipGroupActivity" parameterType="map">
 		SELECT
-		vga.*,
-		((NOW() &lt; end_time_ AND NOW() > start_time_) OR end_time_ IS NULL) enable,
+		vga.*,((NOW() &lt; end_time_ AND NOW() > start_time_) OR end_time_ IS NULL) enable,
 		GROUP_CONCAT(vgc.name_) vip_group_category_names_
 		FROM vip_group_activity vga
 		LEFT JOIN vip_group_category vgc ON FIND_IN_SET(vgc.id_,vga.vip_group_category_id_list_)

+ 4 - 1
mec-web/src/main/java/com/ym/mec/web/controller/education/ImController.java

@@ -2,6 +2,7 @@ package com.ym.mec.web.controller.education;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.service.ClassGroupService;
 import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.common.controller.BaseController;
@@ -13,6 +14,8 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 @Api(tags = "即时通讯相关服务")
 @RequestMapping("im")
 @RestController
@@ -44,7 +47,7 @@ public class ImController extends BaseController {
         if(sysUser == null){
             return failed("获取用户信息失败");
         }
-        return succeed(teacherService.queryGroupStudents(sysUser.getId(),search));
+        return succeed(teacherService.queryEducationIpa(sysUser.getId(),search));
     }
 
     @ApiOperation(value = "根据群编号,获取群组基本信息")