瀏覽代碼

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

yonge 4 年之前
父節點
當前提交
6f5f79abf9

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

@@ -59,6 +59,8 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
 
     List<Map<Integer, String>> queryNameByIdList(@Param("userIds") List<Integer> userIds);
 
+    List<Map<Integer, String>> querySubjectNameByIdList(@Param("userIds") List<Integer> userIds);
+
     /**
      * 根据用户编号列表获取手机号
      *
@@ -344,7 +346,7 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
      * @param studentId
      * @return
      */
-    Set<Integer> findMusicTeacherIds(Integer studentId);
+    Set<Integer> findMusicTeacherIds(@Param("studentId") Integer studentId);
 
     /**
      * 获取和学员相关的VIP老师列表

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/IndexBaseDto.java

@@ -6,6 +6,7 @@ import com.ym.mec.common.constant.CommonConstants;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
+import java.util.Comparator;
 import java.util.List;
 
 /**
@@ -80,7 +81,7 @@ public class IndexBaseDto {
                     this.percent = activateNum.divide(total, CommonConstants.DECIMAL_PLACE, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).setScale(CommonConstants.DECIMAL_FINAL_PLACE, BigDecimal.ROUND_DOWN);
                 }
             }else{
-                this.percent = total;
+                this.percent = indexMonthData.stream().max(Comparator.comparing(IndexBaseMonthData::getMonth)).get().getPercent();
             }
         }
     }

+ 0 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/Student.java

@@ -44,8 +44,6 @@ public class Student extends SysUser {
 	public Student(Integer userId, String subjectIdList) {
 		this.userId = userId;
 		this.subjectIdList = subjectIdList;
-		this.operatingTag = 1;
-		this.serviceTag = 1;
 	}
 
 	public Boolean getIsNewUser() {

+ 12 - 12
mec-biz/src/main/java/com/ym/mec/biz/event/listener/CourseEventListener.java

@@ -42,18 +42,18 @@ public class CourseEventListener {
     @Async
     @EventListener
     public void courseStatusChangeMonitor(CourseStatusChangeEvent courseStatusChangeEvent){
-        if(redisCache.getRedisTemplate().opsForValue().size(KEY)>0){
-            logger.info("课程状态变更(未执行,任务执行中):{}", courseStatusChangeEvent.getCourseIds());
-            return;
-        }
-
-        Boolean success = redisCache.getRedisTemplate().opsForValue().setIfAbsent(KEY, Thread.currentThread().getId(), 1, TimeUnit.HOURS);
-        if(!success){
-            logger.info("课程状态变更(未执行,任务执行中):{}", courseStatusChangeEvent.getCourseIds());
-            return;
-        }
-
-        logger.info("课程状态变更(执行开始):{}", courseStatusChangeEvent.getCourseIds());
+//        if(redisCache.getRedisTemplate().opsForValue().size(KEY)>0){
+//            logger.info("课程状态变更(未执行,任务执行中):{}", courseStatusChangeEvent.getCourseIds());
+//            return;
+//        }
+//
+//        Boolean success = redisCache.getRedisTemplate().opsForValue().setIfAbsent(KEY, Thread.currentThread().getId(), 1, TimeUnit.HOURS);
+//        if(!success){
+//            logger.info("课程状态变更(未执行,任务执行中):{}", courseStatusChangeEvent.getCourseIds());
+//            return;
+//        }
+//
+//        logger.info("课程状态变更(执行开始):{}", courseStatusChangeEvent.getCourseIds());
 
         try{
             courseScheduleStudentPaymentService.updateCourseActualPrice(null, null, null);

+ 10 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.SalarySettlementTypeEnum;
 import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.page.PageInfo;
@@ -533,7 +534,7 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      * @param mergeClassSplitClassAffirmDto
      * @return
      */
-    void spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto);
+    String spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto);
 
     /**
      * 跨团合班缴费项目审核通过后
@@ -544,4 +545,12 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      */
     void spanGroupClassAdjustPass(Integer masterClassGroupId,List<Integer> studentIds,List<Long> courseIds,List<Map<String,
             String>> classGroupStudents,List<Long> allLockCourseIds,String batchNo,BigDecimal masterTotalPrice);
+
+    /**
+     * 班级新增学员后相关通讯录的修改
+     * @param classGroupId
+     * @param studentId
+     * @param groupType
+     */
+    void classGroupAddStudent(Integer classGroupId,Integer studentId,GroupType groupType);
 }

+ 106 - 12
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java

@@ -32,6 +32,7 @@ import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.service.*;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.util.collection.ListUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -135,6 +136,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
     @Autowired
     private ImGroupService imGroupService;
     @Autowired
+    private ImUserFriendService imUserFriendService;
+    @Autowired
     private CourseScheduleService courseScheduleService;
     @Autowired
     private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
@@ -1255,6 +1258,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 }
             }
             courseScheduleStudentPaymentService.batchInsert(courseScheduleStudentPayments);
+            studentDao.updateStudentServiceTag(studentId,null,YesOrNoEnum.YES.getCode());
         }
 
         return true;
@@ -3699,7 +3703,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
+    public String spanGroupMergeClassSplitClassAffirm(MergeClassSplitClassAffirmDto mergeClassSplitClassAffirmDto) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         //缴费项目
         MusicGroupPaymentCalenderDto paymentCalenderDto = mergeClassSplitClassAffirmDto.getMusicGroupPaymentCalenderDtos().get(0);
@@ -3707,7 +3711,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         Integer masterClassGroupId = mergeClassSplitClassAffirmDto.getMasterClassGroupId();
         //学员列表
         List<Integer> studentIds = mergeClassSplitClassAffirmDto.getStudentIds();
-        //主班是否包含所选学员学员
+        //主班是否包含所选学员列表
         Boolean hasStudent = classGroupStudentMapperDao.hasStudent(masterClassGroupId,studentIds);
         if(hasStudent){
             throw new BizException("操作失败: 主班包含部分已选学员");
@@ -3785,11 +3789,13 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         if (paymentCalenderDto.getStatus() != AUDITING) {
             List<Map<String,String>> classGroupStudents1 = (List<Map<String,String>>)JSON.parse(musicGroupStudentClassAdjust.getClassGroupStudents());
             spanGroupClassAdjustPass(masterClassGroupId,studentIds,courseIds,classGroupStudents1,allLockCourseIds,paymentCalenderDto.getBatchNo(),masterTotalPrice);
+            return "操作成功:学员班级调整完成";
         }else {
 //                冻结班级
             classGroupDao.batchUpdateLockByClassGroupIds(classGroupIds, 1);
 //                冻结所选班级的课程
             courseScheduleDao.batchUpdateLockByCourseIds(allLockCourseIds, 1);
+            return "操作成功:学员班级调整申请已提交,缴费项目审核中";
         }
     }
 
@@ -3804,7 +3810,9 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //将学员加进班级未开始的课程,以及班级关联、加群
         classGroupStudentMapperService.updateClassGroupStudents1(masterClassGroupId.longValue(),studentIds,allLockCourseIds,batchNo,masterTotalPrice);
         //删除学员课程
-        courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds, studentIds);
+        if(courseIds.size() > 0){
+            courseScheduleDao.deleteMusicGroupCourseSchedulesWithStudents(courseIds, studentIds);
+        }
         //删除班级关联的学员
         List<Integer> classGroupIds = new ArrayList<>();
         if (classGroupStudents != null && classGroupStudents.size() > 0) {
@@ -3821,15 +3829,101 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         //解冻班级
         classGroupIds.add(masterClassGroupId);
         classGroupDao.batchUpdateLockByClassGroupIds(classGroupIds,0);
-        //获取没有学员的课程
-        List<Long> delCourseIds = courseScheduleDao.findNoStudentCourseIds(courseIds);
-        if (delCourseIds != null && delCourseIds.size() > 0) {
-            //删除课程
-            courseScheduleDao.deleteCourseSchedulesByClassGroupIds(delCourseIds);
-            //删除教师考勤
-            teacherAttendanceDao.batchDeleteByCourseSchedules(delCourseIds);
-            //删除教师课酬
-            courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(delCourseIds);
+        if(courseIds.size() > 0){
+            //获取没有学员的课程
+            List<Long> delCourseIds = courseScheduleDao.findNoStudentCourseIds(courseIds);
+            if (delCourseIds != null && delCourseIds.size() > 0) {
+                //删除课程
+                courseScheduleDao.deleteCourseSchedulesByClassGroupIds(delCourseIds);
+                //删除教师考勤
+                teacherAttendanceDao.batchDeleteByCourseSchedules(delCourseIds);
+                //删除教师课酬
+                courseScheduleTeacherSalaryDao.batchDeleteByCourseScheduleIds(delCourseIds);
+            }
+        }
+    }
+
+    @Override
+    public void classGroupAddStudent(Integer classGroupId, Integer studentId,GroupType groupType) {
+        //获取相关课程,班级老师列表
+        Set<Integer> teacherIds = teacherDao.findMusicTeacherIds(studentId);
+        //获取学员所在乐团列表
+        List<String> musicGroupIds = studentRegistrationDao.queryStudentMusicGroup(studentId);
+        if (musicGroupIds != null && musicGroupIds.size() > 0) {
+            List<MusicGroup> musicGroups = musicGroupDao.queryListByIds(StringUtils.join(musicGroupIds, ","));
+            musicGroups.forEach(e -> {
+                teacherIds.add(e.getDirectorUserId());
+                teacherIds.add(e.getEducationalTeacherId());
+                teacherIds.add(e.getTeamTeacherId());
+            });
+        }
+        //获取相关vip课老师列表
+        teacherIds.addAll(teacherDao.findVipTeacherIds(studentId));
+        //获取陪练课老师列表
+        teacherIds.addAll(teacherDao.findPracticeTeacherIds(studentId));
+        //获取对外课程老师列表
+        teacherIds.addAll(teacherDao.findCloseCourseTeacherIds(studentId));
+        //获取陪练课课程教务老师
+        teacherIds.addAll(teacherDao.findPracticeEducationalTeacherId(studentId));
+        //获取VIP课程教务老师
+        teacherIds.addAll(teacherDao.findVipEducationalTeacherId(studentId));
+        //获取对外课程务老师
+        teacherIds.addAll(teacherDao.findCommEducationalTeacherId(studentId));
+        //获取关联的指导老师
+        Student student = studentDao.get(studentId);
+        if (student != null && student.getTeacherId() != null) {
+            teacherIds.add(student.getTeacherId());
+        }
+        if (teacherIds.size() > 0) {
+//            return teacherDao.queryTeacherBaseInfo(teacherIds, search);
+        }
+        ClassGroup classGroup = classGroupDao.get(classGroupId);
+        List<ImUserFriend> imUserFriends = new ArrayList<>();
+        List<ImUserFriend> teacherUserFriends = new ArrayList<>();
+        //获取班级关联的老师
+        List<ClassGroupTeacherMapper> classGroupTeacherMappers = classGroupTeacherMapperDao.findByClassGroup(classGroupId);
+        //学员好友编号列表
+        Set<Integer> studentFriendIds = new HashSet<>();
+        switch (groupType){
+        case MUSIC:
+            ////学员关联乐团管理人员通讯录
+            MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
+            teacherIds.add(musicGroup.getDirectorUserId());
+            teacherIds.add(musicGroup.getEducationalTeacherId());
+            teacherIds.add(musicGroup.getTeamTeacherId());
+            //学员关联的班级上的老师
+            teacherIds.addAll(classGroupTeacherMappers.stream().map(e->e.getUserId()).collect(Collectors.toSet()));
+            //获取通讯录名称
+            Map<Integer, String> nameIdMap=MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(teacherIds)));
+            //获取老师声部
+            Map<Integer, String> subjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(teacherIds)));
+
+            for (Integer teacherId : teacherIds) {
+                ImUserFriend imUserFriend = new ImUserFriend();
+                imUserFriend.setUserId(studentId);
+                imUserFriend.setFriendId(teacherId);
+                imUserFriend.setFriendNickname(nameIdMap.get(teacherId));
+                imUserFriend.setMemo(musicGroup.getName());
+                imUserFriend.setTags(subjectNameMap.get(teacherId));
+                imUserFriends.add(imUserFriend);
+
+                ImUserFriend imUserFriend1 = new ImUserFriend();
+                imUserFriend1.setUserId(studentId);
+                imUserFriend1.setFriendId(teacherId);
+                imUserFriend1.setFriendNickname(nameIdMap.get(teacherId));
+                imUserFriend1.setMemo(musicGroup.getName());
+                imUserFriend1.setTags(subjectNameMap.get(teacherId));
+                imUserFriends.add(imUserFriend1);
+
+//            imUserFriendService.batchInsert();
+            }
+            //乐团管理人员关联学员
+            break;
+        case VIP:
+            break;
+        case COMM:
+            break;
+        default:
         }
     }
 }

+ 14 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -560,23 +560,26 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
         Date now = new Date();
         List<ClassGroupStudentMapper> classGroupStudentMappers = new ArrayList<>();
-        //获取分布默认的课程类型单价
-//        MusicGroup musicGroup = musicGroupDao.findByClassGroupId(classGroupId.intValue());
-//        Map<String, BigDecimal> unitPriceMap = MapUtil.convertIntegerMap(organizationCourseUnitPriceSettingsDao.queryMapByOrganIdAndChargeTypeId(musicGroup.getChargeTypeId(), musicGroup.getOrganId()));
 
         BigDecimal divide = masterTotalPrice.divide(new BigDecimal(classGroupNotStartCourse.size()), 2, BigDecimal.ROUND_HALF_UP);
         BigDecimal decimal = divide.multiply(new BigDecimal(classGroupNotStartCourse.size()));
 
         //生成班级关联
         for (Integer studentId : studentIds) {
-            ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
-            classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
-            classGroupStudentMapper.setClassGroupId(classGroupId.intValue());
-            classGroupStudentMapper.setUserId(studentId);
-            classGroupStudentMapper.setCreateTime(now);
-            classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
-            classGroupStudentMapper.setGroupType(GroupType.MUSIC);
-            classGroupStudentMappers.add(classGroupStudentMapper);
+            ClassGroupStudentMapper classGroupStudent = classGroupStudentMapperDao.findClassGroupStudent(classGroupId.intValue(), studentId);
+            if(classGroupStudent != null){
+                classGroupStudent.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+                classGroupStudentMapperDao.update(classGroupStudent);
+            }else {
+                ClassGroupStudentMapper classGroupStudentMapper = new ClassGroupStudentMapper();
+                classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
+                classGroupStudentMapper.setClassGroupId(classGroupId.intValue());
+                classGroupStudentMapper.setUserId(studentId);
+                classGroupStudentMapper.setCreateTime(now);
+                classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+                classGroupStudentMapper.setGroupType(GroupType.MUSIC);
+                classGroupStudentMappers.add(classGroupStudentMapper);
+            }
             //生成课程关联
             for (int i = 0; i < classGroupNotStartCourse.size(); i++) {
                 CourseSchedule courseSchedule = classGroupNotStartCourse.get(i);

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

@@ -3957,8 +3957,6 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
             courseScheduleDao.batchUpdate(updateList);
         }
 
-		courseEventSource.courseStatusChange(null);
-
         // 更新班级已上课次
         if (classGroupIds.size() > 0) {
             classGroupService.batchIncreaseClassTimes(classGroupIds);

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleStudentPaymentServiceImpl.java

@@ -714,6 +714,9 @@ public class CourseScheduleStudentPaymentServiceImpl extends BaseServiceImpl<Lon
 			for (CourseScheduleStudentPaymentDto notStartCourse : notStartCourses) {
 				BigDecimal actualPrice = Objects.isNull(notStartCourse.getActualPrice())?BigDecimal.ZERO:notStartCourse.getActualPrice();
 				BigDecimal deductAmount = studentRegistrationService.updateUserSurplusCourseFee(notStartCourse.getUserId(), notStartCourse.getMusicGroupId(), (notStartCourse.getExpectPrice().subtract(actualPrice)).negate(), StringUtils.join("课程结束,扣除课程费用:", notStartCourse.getCourseScheduleId()), null);
+				if(actualPrice.compareTo(actualPrice.add(deductAmount.abs()))==0){
+					continue;
+				}
 				notStartCourse.setActualPrice(actualPrice.add(deductAmount.abs()));
 				needUpdates.add(notStartCourse);
 			}

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

@@ -793,6 +793,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             if(oldMusicGroupId == newMusicGroupId){
                 continue;
             }
+            courseScheduleStudentPaymentService.updateCourseActualPrice(Arrays.asList(oldMusicGroupId),null, GroupType.MUSIC);
             //记录课程余额消费日志
             if(studentRegistration.getSurplusCourseFee().doubleValue() > 0d && masterTotalPrice.doubleValue() > 0d){
                 StudentCourseFeeDetail studentCourseFeeDetail = new StudentCourseFeeDetail();

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

@@ -583,7 +583,7 @@
 
     <select id="hasStudent" resultType="java.lang.Boolean">
         SELECT COUNT(DISTINCT class_group_id_) FROM class_group_student_mapper
-        WHERE class_group_id_ = #{masterClassGroupId} AND user_id_ IN
+        WHERE class_group_id_ = #{masterClassGroupId} AND status_ != 'QUIT' AND user_id_ IN
         <foreach collection="studentIds" separator="," open="(" close=")" item="item">
             #{item}
         </foreach>

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

@@ -117,7 +117,8 @@
 	</select>
 	
 	<select id="queryMemberById" resultMap="ImGroupMemberDto">
-		SELECT igm.*,u.avatar_,case when find_in_set('STUDENT',u.user_type_) then u.username_ else u.real_name_ end username_ FROM im_group_member igm left join sys_user u on igm.user_id_ = u.id_
+		SELECT igm.*,u.avatar_,case when find_in_set('STUDENT',u.user_type_) then u.username_ else u.real_name_ end username_
+		FROM im_group_member igm left join sys_user u on igm.user_id_ = u.id_
 		where igm.im_group_id_ = #{imGroupId}
 	</select>
 	

+ 4 - 3
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -195,7 +195,7 @@
 			COUNT( id_ ) activate_num_,
 			COUNT( id_ ) percent_
 		FROM
-			school
+			cooperation_organ
 		WHERE
 			del_flag_ = 0
 		  	AND organ_id_ IS NOT NULL
@@ -296,12 +296,13 @@
 		WHERE
 			m.del_flag_ = 0
 			AND m.is_lock_ = 0
+		  	AND m.status_ = 'OVER'
 			AND m.organ_id_ IS NOT NULL
 			<if test="groupType!=null">
 				AND m.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
 			</if>
 			<if test="month!=null and month!=''">
-				AND (DATE_FORMAT(m.create_time_, '%Y-%m') &lt;= #{month} OR YEAR(m.create_time_)=3000)
+				AND DATE_FORMAT(m.class_date_, '%Y-%m') &lt;= #{month}
 			</if>
 		GROUP BY
 			m.organ_id_
@@ -336,7 +337,7 @@
 	<select id="getStudentConversionData" resultMap="IndexBaseMonthData">
 		SELECT
 			mg.organ_id_,
-			CONCAT( DATE_FORMAT( NOW(), '%Y-%m' ), '-01' ) month_,
+			CONCAT( #{month}, '-01' ) month_,
 			COUNT( DISTINCT sr.user_id_ ) total_num_,
 			COUNT( DISTINCT IF((cssp.group_type_='PRACTICE' AND pg.type_='CHARGE') OR cssp.group_type_='VIP', cssp.user_id_, NULL) ) activate_num_,
 			TRUNCATE(COUNT( DISTINCT IF((cssp.group_type_='PRACTICE' AND pg.type_='CHARGE') OR cssp.group_type_='VIP', cssp.user_id_, NULL) )/COUNT( DISTINCT sr.user_id_ )*100, 2) percent_

+ 13 - 2
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -364,15 +364,26 @@
         GROUP BY su.id_,s.id_,sr.id_
     </select>
     <select id="queryNameByIds" resultType="java.util.Map" parameterType="list">
-        select id_ `key`,IF(real_name_ IS NUll,'',real_name_) `value` FROM sys_user s WHERE FIND_IN_SET(id_,#{userIds})
+        select id_ `key`,IF(real_name_ IS NUll,username_,real_name_) `value` FROM sys_user s WHERE FIND_IN_SET(id_,#{userIds})
     </select>
     <select id="queryNameByIdList" resultType="java.util.Map">
-        select id_ `key`,IF(real_name_ IS NUll,'',real_name_) `value` FROM sys_user s WHERE id_ IN
+        select id_ `key`,IF(real_name_ IS NUll,username_,real_name_) `value` FROM sys_user s WHERE id_ IN
         <foreach collection="userIds" item="userId" separator="," open="(" close=")">
             #{userId}
         </foreach>
     </select>
 
+    <select id="querySubjectNameByIdList" resultType="java.util.Map">
+        select t.id_ `key`,GROUP_CONCAT(s.name_) `value`
+        FROM teacher t
+        LEFT JOIN subject s ON FIND_IN_SET(s.id_,t.subject_id_)
+        WHERE t.id_ IN
+        <foreach collection="userIds" item="userId" separator="," open="(" close=")">
+            #{userId}
+        </foreach>
+        GROUP BY t.id_
+    </select>
+
     <select id="queryPhoneByIds" resultType="java.util.Map" parameterType="list">
         select id_ `key`,phone_ `value` FROM sys_user s WHERE FIND_IN_SET(id_,#{userIds}) AND s.phone_ IS NOT NULL
     </select>

+ 1 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java

@@ -156,6 +156,7 @@ public class TaskController extends BaseController {
 	public void updateCourseScheduleToOverStatus() {
 		courseScheduleService.updateCourseScheduleToOverStatus();
 		courseScheduleService.updateCourseScheduleToUnderway();
+		courseEventSource.courseStatusChange(null);
 	}
 
 	@GetMapping("/updateVipGroupToFinishedStatus")