Browse Source

Merge remote-tracking branch 'origin/master'

周箭河 5 years ago
parent
commit
325b0c5091
36 changed files with 616 additions and 82 deletions
  1. 2 2
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java
  2. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java
  3. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CoursesGroupDao.java
  4. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupNoticeDao.java
  5. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseGroupTeacherCardDto.java
  6. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroup.java
  7. 103 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupNotice.java
  8. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/GroupCourseScheduleQueryInfo.java
  9. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java
  10. 11 2
      mec-biz/src/main/java/com/ym/mec/biz/service/CoursesGroupService.java
  11. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupNoticeService.java
  12. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java
  13. 6 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  14. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  15. 17 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java
  16. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/GroupClassServiceImpl.java
  17. 21 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupNoticeServiceImpl.java
  18. 8 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  19. 12 4
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  20. 0 1
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  21. 34 6
      mec-biz/src/main/resources/config/mybatis/CoursesGroupMapper.xml
  22. 85 0
      mec-biz/src/main/resources/config/mybatis/ImGroupNoticeMapper.xml
  23. 2 0
      mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java
  24. 5 0
      mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java
  25. 1 1
      mec-common/common-core/src/main/java/com/ym/mec/common/config/LocalFastJsonHttpMessageConverter.java
  26. 35 29
      mec-common/common-core/src/main/java/com/ym/mec/common/filters/EmojiEncodingFilter.java
  27. 3 2
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  28. 22 0
      mec-student/src/main/java/com/ym/mec/student/StudentApplication.java
  29. 19 0
      mec-task/src/main/java/com/ym/mec/task/jobs/UpdateCourseGroupToFinishTask.java
  30. 22 1
      mec-teacher/src/main/java/com/ym/mec/teacher/TeacherApplication.java
  31. 1 2
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/CourseGroupController.java
  32. 16 20
      mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java
  33. 22 0
      mec-web/src/main/java/com/ym/mec/web/WebApplication.java
  34. 5 0
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java
  35. 11 0
      mec-web/src/main/java/com/ym/mec/web/controller/education/ImController.java
  36. 61 0
      mec-web/src/main/java/com/ym/mec/web/controller/education/ImGroupNoticeController.java

+ 2 - 2
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -143,7 +143,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		if(StringUtils.isNotEmpty(isLessee) && StringUtils.equalsIgnoreCase(clientId,"TEACHER")){
 			SysUser sysUser = new SysUser();
 			sysUser.setPhone(phone);
-			sysUser.setRealName(phone);
+			sysUser.setRealName("老师" + phone.substring(phone.length() - 6));
 			sysUser.setUserType("TEACHER");
 			sysUserDao.insert(sysUser);
 			//添加用户现金账户
@@ -157,7 +157,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		}else if(StringUtils.isNotEmpty(isLessee) && StringUtils.equalsIgnoreCase(clientId,"STUDENT")){
 			SysUser sysUser = new SysUser();
 			sysUser.setPhone(phone);
-			sysUser.setUsername(phone);
+			sysUser.setUsername("学生" + phone.substring(phone.length() - 6));
 			sysUser.setUserType("STUDENT");
 			sysUser.setOrganId(lesseeOrganId);
 			sysUserDao.insert(sysUser);

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupDao.java

@@ -683,4 +683,11 @@ public interface ClassGroupDao extends BaseDAO<Integer, ClassGroup> {
      * @return
      */
     Set<Integer> queryClassGroupIds(@Param("vipGroupIds") Set<Long> vipGroupIds);
+
+    /**
+     * 根据群编号,修改群名称
+     * @param groupId
+     * @param groupName
+     */
+    void updateGroupName(@Param("groupId") Integer groupId, @Param("groupName") String groupName);
 }

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

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.CoursesGroup;
+import com.ym.mec.biz.dal.enums.GroupStatusEnum;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
@@ -58,5 +59,25 @@ public interface CoursesGroupDao extends BaseDAO<Long, CoursesGroup> {
      */
     List<CoursesGroup> findNoStudentsGroups(@Param("startDate")Date startDate);
 
+    /**
+     * @describe 获取无课时的课程组
+     * @author Joburgess
+     * @date 2020/3/18
+     * @param :
+     * @return java.util.List<com.ym.mec.biz.dal.entity.CoursesGroup>
+     */
+    List<CoursesGroup> findNoCoursesGroups();
+
     CoursesGroup lockGroup(@Param("groupId") Long groupId);
+
+    /**
+     * @describe 更新课程组状态
+     * @author Joburgess
+     * @date 2020/3/18
+     * @param groupIds:
+     * @param status:
+     * @return int
+     */
+    int updateGroupStatus(@Param("groupIds") List<Long> groupIds,
+                          @Param("status")GroupStatusEnum status);
 }

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

@@ -0,0 +1,9 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.ImGroupNotice;
+import com.ym.mec.common.dal.BaseDAO;
+
+public interface ImGroupNoticeDao extends BaseDAO<Long, ImGroupNotice> {
+
+	
+}

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/CourseGroupTeacherCardDto.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dto;
 
+import com.ym.mec.biz.dal.enums.GroupStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 
 import java.util.Date;
@@ -36,6 +37,16 @@ public class CourseGroupTeacherCardDto {
 
     private String studentNames;
 
+    private GroupStatusEnum groupStatus;
+
+    public GroupStatusEnum getGroupStatus() {
+        return groupStatus;
+    }
+
+    public void setGroupStatus(GroupStatusEnum groupStatus) {
+        this.groupStatus = groupStatus;
+    }
+
     public Integer getClassGroupId() {
         return classGroupId;
     }

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ClassGroup.java

@@ -40,6 +40,10 @@ public class ClassGroup {
 	@ApiModelProperty(value = "班级名称", required = true)
 	private String name;
 
+	/** 群名称 */
+	@ApiModelProperty(value = "群名称", required = true)
+	private String groupName;
+
 	/** 子班级名称列表 */
 	@ApiModelProperty(value = "子班班级名称")
 	private String classNames;
@@ -75,6 +79,14 @@ public class ClassGroup {
 	@ApiModelProperty(value = "班级图标",required = false)
 	private String img;
 
+	public String getGroupName() {
+		return groupName;
+	}
+
+	public void setGroupName(String groupName) {
+		this.groupName = groupName;
+	}
+
 	public String getTeachMode() {
 		return teachMode;
 	}

+ 103 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/ImGroupNotice.java

@@ -0,0 +1,103 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.biz.dal.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 对应数据库表(im_group_notice):
+ */
+public class ImGroupNotice {
+	private Long id;
+
+	private Long imGroupId;
+
+	private String title;
+
+	private String content;
+
+	private YesOrNoEnum isTop;
+
+	private YesOrNoEnum isSentToNewMember;
+
+	private Date createTime;
+
+	private Date updateTime;
+
+	private YesOrNoEnum delFlag;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getImGroupId() {
+		return imGroupId;
+	}
+
+	public void setImGroupId(Long imGroupId) {
+		this.imGroupId = imGroupId;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public String getContent() {
+		return content;
+	}
+
+	public void setContent(String content) {
+		this.content = content;
+	}
+
+	public YesOrNoEnum getIsTop() {
+		return isTop;
+	}
+
+	public void setIsTop(YesOrNoEnum isTop) {
+		this.isTop = isTop;
+	}
+
+	public YesOrNoEnum getIsSentToNewMember() {
+		return isSentToNewMember;
+	}
+
+	public void setIsSentToNewMember(YesOrNoEnum isSentToNewMember) {
+		this.isSentToNewMember = isSentToNewMember;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public Date getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(Date updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public YesOrNoEnum getDelFlag() {
+		return delFlag;
+	}
+
+	public void setDelFlag(YesOrNoEnum delFlag) {
+		this.delFlag = delFlag;
+	}
+}

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

@@ -1,5 +1,6 @@
 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;
 
@@ -12,6 +13,15 @@ public class GroupCourseScheduleQueryInfo extends QueryInfo {
     private Integer teacherId;
     private String groupId;
     private GroupType groupType;
+    private GroupStatusEnum groupStatus;
+
+    public GroupStatusEnum getGroupStatus() {
+        return groupStatus;
+    }
+
+    public void setGroupStatus(GroupStatusEnum groupStatus) {
+        this.groupStatus = groupStatus;
+    }
 
     public Integer getTeacherId() {
         return teacherId;

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupService.java

@@ -413,4 +413,10 @@ public interface ClassGroupService extends BaseService<Integer, ClassGroup> {
      */
     Map<String,Object> getUserInfoWithUserId(Integer groupId, Integer userId);
 
+    /**
+     * 根据群编号,修改群名称
+     * @param groupId
+     * @param groupName
+     */
+    void updateGroupName(Integer groupId, String groupName);
 }

+ 11 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/CoursesGroupService.java

@@ -4,9 +4,9 @@ import com.ym.mec.biz.dal.dto.CourseGroupCreateDto;
 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.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
-import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.Map;
@@ -29,7 +29,7 @@ public interface CoursesGroupService extends BaseService<Long, CoursesGroup> {
      * @param teacherId: 教师编号
      * @return java.util.List<com.ym.mec.biz.dal.dto.CourseGroupTeacherCardDto>
      */
-    PageInfo findTeacherCourseGroups(Integer teacherId, QueryInfo queryInfo);
+    PageInfo findTeacherCourseGroups(Integer teacherId, GroupCourseScheduleQueryInfo queryInfo);
 
     /**
      * @describe 获取课程对应班级头部信息
@@ -69,4 +69,13 @@ public interface CoursesGroupService extends BaseService<Long, CoursesGroup> {
      * @return void
      */
     void noStudentsCourseGroupRemind();
+
+    /**
+     * @describe 结束已完成的课程组
+     * @author Joburgess
+     * @date 2020/3/18
+     * @param :
+     * @return void
+     */
+    void finishCourseGroup();
 }

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImGroupNoticeService.java

@@ -0,0 +1,7 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.ImGroupNotice;
+import com.ym.mec.common.service.BaseService;
+
+public interface ImGroupNoticeService extends BaseService<Long, ImGroupNotice> {
+}

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -172,6 +172,10 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      */
     String TEACHER_BASE_URL = "teacher_base_url";
 
+    String COURSE_BEFORE_BUFFER_TIME = "course_before_buffer_time";
+
+    String COURSE_AFTER_BUFFER_TIME = "course_after_buffer_time";
+
     /**
      * @return com.ym.mec.biz.dal.entity.SysConfig
      * @params paramName

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

@@ -2589,6 +2589,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         return map;
     }
 
+    @Override
+    public void updateGroupName(Integer groupId, String groupName) {
+        classGroupDao.updateGroupName(groupId,groupName);
+    }
+
 
     @Override
     public ClassGroup findGroupById(Integer groupId) {
@@ -2597,7 +2602,7 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             if(classGroup.getGroupType() == GroupType.MUSIC){
                 MusicGroup musicGroup = musicGroupDao.get(classGroup.getMusicGroupId());
                 if(musicGroup != null){
-                    classGroup.setName(musicGroup.getName() + " " + classGroup.getName());
+                    classGroup.setName(musicGroup.getName() + " " + (StringUtils.isEmpty(classGroup.getGroupName())?classGroup.getName():classGroup.getGroupName()));
                 }
             }
         }

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

@@ -746,10 +746,14 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         }
         Date now = new Date();
         SysConfig studentAttendanceAfterTimeConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_BEFOR_COURSE_START_TIME_RANGE_VIP);
+		SysConfig courseBeforeBufferTime = sysConfigService.findByParamName(SysConfigService.COURSE_BEFORE_BUFFER_TIME);
+		SysConfig courseAfterBufferTime = sysConfigService.findByParamName(SysConfigService.COURSE_AFTER_BUFFER_TIME);
         Map<String, Object> result = new HashMap<>(3);
         result.put("vipAppealDaysRange", sysConfigDao.findConfigValue(SysConfigService.VIP_APPEAL_DAYS_RANGE));
         result.put("advanceLeaveHours", Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_LEAVE_HOURS)));
         result.put("joinRoomBeforeTime",studentAttendanceAfterTimeConfig.getParanValue(Integer.class));
+		result.put("courseBeforeBufferTime", courseBeforeBufferTime.getParanValue(Integer.class));
+		result.put("courseAfterBufferTime", courseAfterBufferTime.getParanValue(Integer.class));
 //		List<Integer> quitClassGroupIds=classGroupStudentMapperDao.findClassGroupIdByUserAndCourseDateAndStatus(user.getId(),classDate, ClassGroupStudentStatusEnum.QUIT.getCode());
         List<CourseScheduleDto> studentCourseSchedulesWithDate = courseScheduleDao.getStudentCourseSchedulesWithDate(classDate, user.getId().longValue(), null);
         List<Long> courseScheduleIds = studentCourseSchedulesWithDate.stream()

+ 17 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursesGroupServiceImpl.java

@@ -6,6 +6,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.dal.enums.*;
+import com.ym.mec.biz.dal.page.GroupCourseScheduleQueryInfo;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.constant.CommonConstants;
 import com.ym.mec.common.controller.BaseController;
@@ -15,7 +16,6 @@ import com.ym.mec.common.entity.ImGroupMember;
 import com.ym.mec.common.entity.ImGroupModel;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
-import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
@@ -221,7 +221,7 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
     }
 
     @Override
-    public PageInfo findTeacherCourseGroups(Integer teacherId, QueryInfo queryInfo) {
+    public PageInfo findTeacherCourseGroups(Integer teacherId, GroupCourseScheduleQueryInfo queryInfo) {
         if(Objects.isNull(teacherId)){
             throw new BizException("请指定老师");
         }
@@ -261,11 +261,14 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
                 groupCard.setName(teacherCourseGroup.getName());
                 groupCard.setSingleClassMinutes(teacherCourseGroup.getSingleClassMinutes());
                 groupCard.setSubjectId(teacherCourseGroup.getSubjectId());
+                groupCard.setGroupStatus(teacherCourseGroup.getStatus());
                 groupCard.setSubjectName(idSubjectMap.get(teacherCourseGroup.getSubjectId()).getName());
                 GroupCourseTimesDto groupCourseTimesInfo = groupCourseTimesInfoMap.get(String.valueOf(teacherCourseGroup.getId()));
                 GroupValidDateDto groupValidDate = groupValidateMap.get(String.valueOf(teacherCourseGroup.getId()));
-                groupCard.setCoursesStartDate(groupValidDate.getStartDate());
-                groupCard.setCoursesEndDate(groupValidDate.getEndDate());
+                if(Objects.nonNull(groupValidDate)){
+                    groupCard.setCoursesStartDate(groupValidDate.getStartDate());
+                    groupCard.setCoursesEndDate(groupValidDate.getEndDate());
+                }
                 groupCard.setClassGroupId(groupCourseTimesInfo.getClassGroupId());
                 groupCard.setTotalCourseTimes(groupCourseTimesInfo.getTotalCourseTimes());
                 groupCard.setSurplusClassTimes(groupCourseTimesInfo.getSurplusClassTimes());
@@ -614,4 +617,14 @@ public class CoursesGroupServiceImpl extends BaseServiceImpl<Long, CoursesGroup>
                     userMap, null, 0, null, "TEACHER", noStudentsGroup.getName());
         }
     }
+
+    @Override
+    public void finishCourseGroup() {
+        List<CoursesGroup> noCoursesGroups = coursesGroupDao.findNoCoursesGroups();
+        if(CollectionUtils.isEmpty(noCoursesGroups)){
+            return;
+        }
+        List<Long> groupIds = noCoursesGroups.stream().map(CoursesGroup::getId).collect(Collectors.toList());
+        coursesGroupDao.updateGroupStatus(groupIds, GroupStatusEnum.FINISH);
+    }
 }

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

@@ -94,7 +94,7 @@ public class GroupClassServiceImpl implements GroupClassService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean cleanGroupInfo(String groupId, GroupType groupType) {
-//        classGroupDao.deleteByGroupWithLogic(groupId,groupType);
+        classGroupDao.deleteByGroupWithLogic(groupId,groupType);
         classGroupStudentMapperDao.deleteByGroupWithLogic(groupId,groupType);
         List<CourseSchedule> groupNotStartCourses = courseScheduleDao.findGroupNotStartCourses(groupId, groupType);
         if(CollectionUtils.isEmpty(groupNotStartCourses)){

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupNoticeServiceImpl.java

@@ -0,0 +1,21 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.ImGroupNoticeDao;
+import com.ym.mec.biz.dal.entity.ImGroupNotice;
+import com.ym.mec.biz.service.ImGroupNoticeService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ImGroupNoticeServiceImpl extends BaseServiceImpl<Long, ImGroupNotice>  implements ImGroupNoticeService {
+
+	@Autowired
+	private ImGroupNoticeDao imGroupNoticeDao;
+
+	@Override
+	public BaseDAO<Long, ImGroupNotice> getDAO() {
+		return imGroupNoticeDao;
+	}
+}

+ 8 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -499,7 +499,7 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 					//获取当前课程的所有连堂课列表
 					String courseClassDate = DateUtil.format(cs.getClassDate(), DateUtil.DEFAULT_PATTERN);
 					String courseEndDateTime = DateUtil.format(cs.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
-					cs = courseScheduleDao.queryContinueCourse(cs,continueCourseTime,courseClassDate + " " + courseEndDateTime);
+					cs = courseScheduleDao.queryRepairContinueCourse(cs,continueCourseTime,courseClassDate + " " + courseEndDateTime);
 					//存在连堂课
 					if(cs != null){
 						courseSchedules.add(cs);
@@ -535,14 +535,17 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 									byStatusAndCourseScheduleId.setUpdateTime(date);
 									studentAttendanceDao.update(byStatusAndCourseScheduleId);
 								}else {
+                                    byStatusAndCourseScheduleId = new StudentAttendance();
 									byStatusAndCourseScheduleId.setSignOutTime(endDateTime);
 									byStatusAndCourseScheduleId.setStatus(statusEnum);
 									byStatusAndCourseScheduleId.setSignInTime(startDateTime);
 									byStatusAndCourseScheduleId.setUpdateTime(date);
 									byStatusAndCourseScheduleId.setUserId(userId);
 									byStatusAndCourseScheduleId.setTeacherId(courseSchedule.getActualTeacherId());
-									byStatusAndCourseScheduleId.setClassGroupId(classGroup.getId());
-									byStatusAndCourseScheduleId.setCourseScheduleId(courseScheduleId.longValue());
+									byStatusAndCourseScheduleId.setClassGroupId(e.getClassGroupId());
+									byStatusAndCourseScheduleId.setCourseScheduleId(e.getId());
+                                    byStatusAndCourseScheduleId.setMusicGroupId(e.getMusicGroupId());
+                                    byStatusAndCourseScheduleId.setGroupType(e.getGroupType());
 									byStatusAndCourseScheduleId.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
 									studentAttendanceDao.insert(byStatusAndCourseScheduleId);
 								}
@@ -552,10 +555,9 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 						}
 					}
 				}
-			}else {
-				studentAttendance.setStatus(statusEnum);
-				studentAttendance.setSignOutTime(date);
 			}
+			studentAttendance.setStatus(statusEnum);
+			studentAttendance.setSignOutTime(date);
 		}
 		studentAttendanceDao.update(studentAttendance);
 	}

+ 12 - 4
mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml

@@ -12,6 +12,7 @@
         <result column="subject_id_list_" property="subjectIdList"/>
         <result column="subject_name_" property="subjectName"/>
         <result column="name_" property="name"/>
+        <result column="group_name_" property="groupName"/>
         <result column="student_num_" property="studentNum"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time_" property="updateTime"/>
@@ -268,7 +269,8 @@
         <result column="group_name_" property="groupName"/>
     </resultMap>
     <select id="queryUserMusicGroups" resultMap="imGroupModel">
-        SELECT cg.id_,cg.name_,cg.student_num_,cg.img_,mg.name_ group_name_
+        SELECT cg.id_,CASE WHEN cg.group_name_ IS NULL OR cg.group_name_ = '' THEN cg.name_ ELSE cg.group_name_ END name_,
+        cg.student_num_,cg.img_,mg.name_ group_name_
         FROM class_group_student_mapper cgsm
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         LEFT JOIN music_group mg ON mg.id_ = cg.music_group_id_
@@ -285,7 +287,8 @@
     </select>
 
     <select id="queryUserVipGroups" resultMap="imGroupModel">
-        SELECT cg.id_,cg.name_,cg.student_num_,cg.img_
+        SELECT cg.id_,CASE WHEN cg.group_name_ IS NULL OR cg.group_name_ = '' THEN cg.name_ ELSE cg.group_name_ END name_,
+        cg.student_num_,cg.img_
         FROM class_group_student_mapper cgsm
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         LEFT JOIN vip_group vg ON vg.id_ = cg.music_group_id_
@@ -301,7 +304,8 @@
         GROUP BY cg.id_
     </select>
     <select id="queryUserCommGroups" resultMap="imGroupModel">
-        SELECT cg.id_,cg.name_,cg.student_num_,cg.img_
+        SELECT cg.id_,CASE WHEN cg.group_name_ IS NULL OR cg.group_name_ = '' THEN cg.name_ ELSE cg.group_name_ END name_,
+        cg.student_num_,cg.img_
         FROM class_group_student_mapper cgsm
         LEFT JOIN class_group cg ON cgsm.class_group_id_ = cg.id_
         LEFT JOIN courses_group vg ON vg.id_ = cg.music_group_id_
@@ -395,7 +399,8 @@
     </select>
 
     <select id="queryTeacherGroups" resultMap="imGroupModel">
-        SELECT cg.id_,cg.name_,cg.student_num_,cg.img_,mg.name_ group_name_
+        SELECT cg.id_,CASE WHEN cg.group_name_ IS NULL OR cg.group_name_ = '' THEN cg.name_ ELSE cg.group_name_ END name_,
+        cg.student_num_,cg.img_,mg.name_ group_name_
         FROM class_group_teacher_mapper cgtm
         LEFT JOIN class_group cg ON cgtm.class_group_id_ = cg.id_
         LEFT JOIN music_group mg ON mg.id_ = cg.music_group_id_ AND cg.group_type_ = 'MUSIC'
@@ -1079,6 +1084,9 @@
             WHERE id_ = #{classGroup.id}
         </foreach>
     </update>
+    <update id="updateGroupName">
+        UPDATE class_group SET group_name_ = #{groupName} WHERE id_ = #{groupId}
+    </update>
 
     <resultMap id="SuperClassGroupInfo" type="com.ym.mec.biz.dal.dto.SuperClassGroupDto" extends="ClassGroup">
 

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

@@ -664,7 +664,6 @@
         <if test="type!=null and type!=''">
             AND cs.group_type_ = #{groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         </if>
-        AND cg.del_flag_ = 0
         ORDER BY start_class_time_
     </select>
 

+ 34 - 6
mec-biz/src/main/resources/config/mybatis/CoursesGroupMapper.xml

@@ -118,7 +118,13 @@
 			update_time_ = NOW()
 		</set> WHERE id_ = #{id}
 	</update>
-	
+	<update id="updateGroupStatus">
+		UPDATE courses_group SET status_=#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} WHERE id_ IN
+		<foreach collection="groupIds" item="groupId" open="(" close=")" separator=",">
+			#{groupId}
+		</foreach>
+	</update>
+
 	<!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
 		DELETE FROM courses_group WHERE id_ = #{id} 
@@ -135,23 +141,30 @@
 	</select>
 
     <select id="findTeacherCourseGroups" resultMap="CoursesGroup">
-		SELECT * FROM courses_group WHERE teacher_id_=#{teacherId} AND status_ IN ('APPLYING', 'NORMAL') ORDER BY id_ DESC
+		SELECT * FROM courses_group WHERE teacher_id_=#{teacherId}
+		<if test="groupStatus!=null">
+			AND status_ = #{groupStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+		</if>
+		ORDER BY id_ DESC
 		<include refid="global.limit"/>
     </select>
 
 	<select id="countTeacherGroups" resultType="int">
-		SELECT COUNT(id_) FROM courses_group WHERE teacher_id_=#{teacherId} AND status_ IN ('APPLYING', 'NORMAL')
-    </select>
+		SELECT COUNT(id_) FROM courses_group WHERE teacher_id_=#{teacherId}
+		<if test="groupStatus!=null">
+			AND status_ = #{groupStatus, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+		</if>
+	</select>
 
     <select id="queryTeacherCourseGroups" resultMap="CoursesGroup">
 		SELECT * FROM courses_group
-		WHERE teacher_id_=#{userId} AND status_ IN ('NOT_START', 'NORMAL', 'FINISH')
+		WHERE teacher_id_=#{userId} AND status_ IN ('NOT_START', 'NORMAL', 'FINISH','CANCEL')
 		ORDER BY id_ DESC
 		<include refid="global.limit"/>
     </select>
     <select id="countTeacherCourseGroups" resultType="int">
 		SELECT COUNT(0) FROM courses_group
-		WHERE teacher_id_ = #{userId} AND status_ IN ('NOT_START', 'NORMAL', 'FINISH')
+		WHERE teacher_id_ = #{userId} AND status_ IN ('NOT_START', 'NORMAL', 'FINISH','CANCEL')
     </select>
     <select id="findFreezeMinutes" resultType="java.util.Map">
 		SELECT COUNT(DISTINCT cs.id_) * cg.single_class_minutes_ 'value',cg.id_ 'key' FROM courses_group cg
@@ -186,4 +199,19 @@
 			AND cg.student_num_ = 0
 		GROUP BY csg.id_ HAVING MAX(cs.class_date_)&lt;=DATE_FORMAT(#{startDate}, '%Y-%m-%d')
     </select>
+    <select id="findNoCoursesGroups" resultMap="CoursesGroup">
+		SELECT
+			cg.*
+		FROM
+			courses_group cg
+			LEFT JOIN course_schedule cs ON cs.music_group_id_ = cg.id_
+			AND cs.group_type_ = 'COMM'
+			AND CONCAT( cs.class_date_, ' ', cs.end_class_time_ ) > NOW( )
+		WHERE
+			cg.status_ = 'NORMAL'
+			GROUP BY
+			cg.id_
+			HAVING
+			COUNT( cs.id_ ) &lt;=0
+	</select>
 </mapper>

+ 85 - 0
mec-biz/src/main/resources/config/mybatis/ImGroupNoticeMapper.xml

@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!--
+这个文件是自动生成的。
+不要修改此文件。所有改动将在下次重新自动生成时丢失。
+-->
+<mapper namespace="com.ym.mec.biz.dal.dao.ImGroupNoticeDao">
+
+    <resultMap type="com.ym.mec.biz.dal.entity.ImGroupNotice" id="ImGroupNotice">
+        <result column="id_" property="id"/>
+        <result column="im_group_id_" property="imGroupId"/>
+        <result column="title_" property="title"/>
+        <result column="content_" property="content"/>
+        <result column="is_top_" property="isTop" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="is_sent_to_new_member_" property="isSentToNewMember" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="del_flag_" property="delFlag" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="create_time_" property="createTime"/>
+        <result column="update_time_" property="updateTime"/>
+    </resultMap>
+
+    <!-- 根据主键查询一条记录 -->
+    <select id="get" resultMap="ImGroupNotice">
+		SELECT * FROM im_group_notice WHERE id_ = #{id}
+	</select>
+
+    <!-- 全查询 -->
+    <select id="findAll" resultMap="ImGroupNotice">
+		SELECT * FROM im_group_notice ORDER BY id_
+	</select>
+
+    <!-- 向数据库增加一条记录 -->
+    <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.ImGroupNotice" useGeneratedKeys="true" keyColumn="id"
+            keyProperty="id">
+        INSERT INTO im_group_notice (im_group_id_,title_,content_,is_top_,is_sent_to_new_member_,
+        del_flag_,create_time_,update_time_)
+        VALUES(#{imGroupId},#{title},#{content},#{isTop, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+        #{isSentToNewMember, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+        #{delFlag, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),now())
+    </insert>
+
+    <!-- 根据主键查询一条记录 -->
+    <update id="update" parameterType="com.ym.mec.biz.dal.entity.ImGroupNotice">
+        UPDATE im_group_notice
+        <set>
+            <if test="delFlag != null">
+                del_flag_ = #{delFlag, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="title != null">
+                title_ = #{title},
+            </if>
+            <if test="content != null">
+                content_ = content,
+            </if>
+            <if test="isTop != null">
+                is_top_ = #{isTop, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="isSentToNewMember != null">
+                is_sent_to_new_member_ = #{isSentToNewMember, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+            </if>
+            <if test="updateTime != null">
+                update_time_ = NOW()
+            </if>
+        </set>
+        WHERE id_ = #{id}
+    </update>
+
+    <!-- 根据主键删除一条记录 -->
+    <update id="delete">
+		UPDATE im_group_notice SET del_flag_ = 1 WHERE id_ = #{id}
+	</update>
+
+    <!-- 分页查询 -->
+    <select id="queryPage" resultMap="ImGroupNotice" parameterType="map">
+        SELECT * FROM im_group_notice
+        WHERE del_flag_ != 1
+        ORDER BY update_time_ DESC
+        <include refid="global.limit"/>
+    </select>
+
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM im_group_notice
+		WHERE del_flag_ != 1
+	</select>
+</mapper>

+ 2 - 0
mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java

@@ -100,4 +100,6 @@ public interface TaskRemoteService {
 	@GetMapping("task/noStudentsCourseGroupRemind")
 	void noStudentsCourseGroupRemind();
 
+	@GetMapping("task/finishCourseGroup")
+	void finishCourseGroup();
 }

+ 5 - 0
mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java

@@ -125,4 +125,9 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 	public void noStudentsCourseGroupRemind() {
 		logger.info("对外课程组无学生推送失败");
 	}
+
+	@Override
+	public void finishCourseGroup() {
+		logger.info("更新对外课程组至已结束失败");
+	}
 }

+ 1 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/config/LocalFastJsonHttpMessageConverter.java

@@ -35,7 +35,7 @@ public class LocalFastJsonHttpMessageConverter extends FastJsonHttpMessageConver
 
 		OutputStream out = outputMessage.getBody();
 		JsonUtil.getConfig().put(Date.class, new SimpleDateFormatSerializer(FORMAT));
-		JsonUtil.getConfig().put(String.class, new EmojiSerializer());
+		//JsonUtil.getConfig().put(String.class, new EmojiSerializer());
 		String text = JsonUtil.toJSONString(obj, EnumFilter.instance, getFeatures());
 		byte[] bytes = text.getBytes(getCharset());
 		out.write(bytes);

+ 35 - 29
mec-common/common-core/src/main/java/com/ym/mec/common/filters/EmojiEncodingFilter.java

@@ -4,49 +4,55 @@ import java.io.IOException;
 
 import javax.servlet.Filter;
 import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
 import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
-import javax.servlet.annotation.WebFilter;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequestWrapper;
 
-import org.springframework.core.annotation.Order;
+import org.apache.commons.lang3.StringUtils;
 
 import com.vdurmont.emoji.EmojiParser;
 
-@Order(1)
-//执行的顺序,值越小,越先执行
-@WebFilter(urlPatterns = "/*")
-public class EmojiEncodingFilter  implements Filter {
+public class EmojiEncodingFilter implements Filter {
+
+	@Override
+	public void init(FilterConfig filterConfig) throws ServletException {
+		Filter.super.init(filterConfig);
+	}
 
 	@Override
 	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
 		request = new HttpServletRequestWrapper((HttpServletRequest) request) {
 
-            @Override
-            public String getParameter(String name) {
-                // 参数名
-                // 返回值之前 先进行 Emoji 转化
-                return EmojiParser.parseToAliases(super.getParameter(name));
-            }
-
-            @Override
-            public String[] getParameterValues(String name) {
-                // 参数值
-                // 返回值之前 先进行 Emoji 转化
-                String[] values = super.getParameterValues(name);
-                if (values != null) {
-                    for (int i = 0; i < values.length; i++) {
-                        values[i] = EmojiParser.parseToAliases(values[i]);
-                    }
-                }
-                return values;
-            }
-
-        };
-
-        chain.doFilter(request, response);
+			@Override
+			public String getParameter(String name) {
+				// 参数名
+				String value = super.getParameter(name);
+				if (StringUtils.isNotBlank(value)) {
+					// 返回值之前 先进行 Emoji 转化
+					return EmojiParser.parseToAliases(value);
+				}
+				return value;
+			}
+
+			@Override
+			public String[] getParameterValues(String name) {
+				// 参数值
+				// 返回值之前 先进行 Emoji 转化
+				String[] values = super.getParameterValues(name);
+				if (values != null) {
+					for (int i = 0; i < values.length; i++) {
+						values[i] = EmojiParser.parseToAliases(values[i]);
+					}
+				}
+				return values;
+			}
+
+		};
+
+		chain.doFilter(request, response);
 	}
 
 }

+ 3 - 2
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -99,7 +99,8 @@ public class RoomServiceImpl implements RoomService {
 
         log.info("joinRoom: roomId={}, userName={}, isAudience={}, isDisableCamera={}", roomId, userName, isAudience, isDisableCamera);
 
-        String userId = sysUserFeignService.queryUserInfo().getId().toString();
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        String userId = sysUser.getId().toString();
         Teacher teacher = teacherDao.get(Integer.parseInt(userId));
         CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId));
         try {
@@ -112,7 +113,7 @@ public class RoomServiceImpl implements RoomService {
                 }
             }else {
                 studentAttendanceService.addStudentAttendanceRecord(Integer.parseInt(roomId),Integer.parseInt(userId), StudentAttendanceStatusEnum.NORMAL,SignStatusEnum.SIGN_IN);
-                if(teacher.getOrganId() == lesseeOrganId){
+                if(sysUser.getOrganId() == lesseeOrganId){
                     roomId = "I" + roomId;
                 }else {
                     roomId = "S" + roomId;

+ 22 - 0
mec-student/src/main/java/com/ym/mec/student/StudentApplication.java

@@ -1,8 +1,11 @@
 package com.ym.mec.student;
 
+import javax.servlet.Filter;
+
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.client.loadbalancer.LoadBalanced;
 import org.springframework.cloud.openfeign.EnableFeignClients;
@@ -13,6 +16,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.web.client.RestTemplate;
 
 import com.spring4all.swagger.EnableSwagger2Doc;
+import com.ym.mec.common.filters.EmojiEncodingFilter;
 
 @SpringBootApplication
 @EnableDiscoveryClient
@@ -34,4 +38,22 @@ public class StudentApplication {
 		return new RestTemplate();
 	}
 
+	/**
+	 * 注册filter
+	 * @return
+	 */
+	//@Bean
+	public FilterRegistrationBean<Filter> filterRegistrationBean() {
+		FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<Filter>();
+		// 注入过滤器
+		registration.setFilter(new EmojiEncodingFilter());
+		// 过滤器名称
+		registration.setName("emojiEncodingFilter");
+		// 拦截规则
+		registration.addUrlPatterns("/*");
+		// 过滤器顺序(值越小,优先级越高)
+		registration.setOrder(1);
+		return registration;
+	}
+
 }

+ 19 - 0
mec-task/src/main/java/com/ym/mec/task/jobs/UpdateCourseGroupToFinishTask.java

@@ -0,0 +1,19 @@
+package com.ym.mec.task.jobs;
+
+import com.ym.mec.task.TaskRemoteService;
+import com.ym.mec.task.core.BaseTask;
+import com.ym.mec.task.core.TaskException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UpdateCourseGroupToFinishTask extends BaseTask {
+
+	@Autowired
+	private TaskRemoteService taskRemoteService;
+
+	@Override
+	public void execute() throws TaskException {
+		taskRemoteService.finishCourseGroup();
+	}
+}

+ 22 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/TeacherApplication.java

@@ -1,8 +1,11 @@
 package com.ym.mec.teacher;
 
+import javax.servlet.Filter;
+
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.client.loadbalancer.LoadBalanced;
 import org.springframework.cloud.openfeign.EnableFeignClients;
@@ -13,6 +16,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.web.client.RestTemplate;
 
 import com.spring4all.swagger.EnableSwagger2Doc;
+import com.ym.mec.common.filters.EmojiEncodingFilter;
 
 @SpringBootApplication
 @EnableDiscoveryClient
@@ -23,7 +27,7 @@ import com.spring4all.swagger.EnableSwagger2Doc;
 @EnableSwagger2Doc
 @EnableAsync
 public class TeacherApplication {
-	
+
 	public static void main(String[] args) {
 		SpringApplication.run(TeacherApplication.class, args);
 	}
@@ -34,4 +38,21 @@ public class TeacherApplication {
 		return new RestTemplate();
 	}
 
+	/**
+	 * 注册filter
+	 * @return
+	 */
+	//@Bean
+	public FilterRegistrationBean<Filter> filterRegistrationBean() {
+		FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<Filter>();
+		// 注入过滤器
+		registration.setFilter(new EmojiEncodingFilter());
+		// 过滤器名称
+		registration.setName("emojiEncodingFilter");
+		// 拦截规则
+		registration.addUrlPatterns("/*");
+		// 过滤器顺序(值越小,优先级越高)
+		registration.setOrder(1);
+		return registration;
+	}
 }

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

@@ -12,7 +12,6 @@ import com.ym.mec.biz.service.GroupClassService;
 import com.ym.mec.biz.service.GroupCourseScheduleService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.page.QueryInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -60,7 +59,7 @@ public class CourseGroupController extends BaseController {
 
     @ApiOperation(value = "获取课程组列表")
     @GetMapping("/findTeacherCourseGroups")
-    public HttpResponseResult findTeacherCourseGroups(QueryInfo queryInfo){
+    public HttpResponseResult findTeacherCourseGroups(GroupCourseScheduleQueryInfo queryInfo){
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if(Objects.isNull(sysUser)){
             return failed(HttpStatus.FORBIDDEN,"请登录");

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

@@ -1,31 +1,12 @@
 package com.ym.mec.teacher.controller;
 
-import com.ym.mec.biz.dal.dto.TeacherRemarkCommitDto;
-
-import com.ym.mec.common.page.QueryInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
-
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ClassGroupStudentMapperDao;
 import com.ym.mec.biz.dal.dao.StudentAttendanceDao;
 import com.ym.mec.biz.dal.dto.ClassDateAdjustDto;
 import com.ym.mec.biz.dal.dto.CourseScheduleDto;
+import com.ym.mec.biz.dal.dto.TeacherRemarkCommitDto;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
@@ -41,8 +22,19 @@ import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * @Author Joburgess
@@ -93,6 +85,8 @@ public class TeacherCourseScheduleController extends BaseController {
         }
         SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
         SysConfig sysConfigVip = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP);
+        SysConfig courseBeforeBufferTime = sysConfigService.findByParamName(SysConfigService.COURSE_BEFORE_BUFFER_TIME);
+        SysConfig courseAfterBufferTime = sysConfigService.findByParamName(SysConfigService.COURSE_AFTER_BUFFER_TIME);
         SysConfig studentAttendanceAfterTimeConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_BEFOR_COURSE_START_TIME_RANGE_VIP);
         List<CourseScheduleDto> teacherCourseSchedulesWithDate = scheduleService.getTeacherCourseSchedulesWithDate(user.getId(),date,type);
         Map<String,Object> result = new HashMap<>();
@@ -101,6 +95,8 @@ public class TeacherCourseScheduleController extends BaseController {
         result.put("enableStudentAttendanceTimeRange",sysConfig.getParanValue(Integer.class));
         result.put("enableStudentAttendanceTimeRangeVip",sysConfigVip.getParanValue(Integer.class));
         result.put("joinRoomBeforeTime",studentAttendanceAfterTimeConfig.getParanValue(Integer.class));
+        result.put("courseBeforeBufferTime", courseBeforeBufferTime.getParanValue(Integer.class));
+        result.put("courseAfterBufferTime", courseAfterBufferTime.getParanValue(Integer.class));
         return succeed(result);
     }
 

+ 22 - 0
mec-web/src/main/java/com/ym/mec/web/WebApplication.java

@@ -1,8 +1,11 @@
 package com.ym.mec.web;
 
+import javax.servlet.Filter;
+
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.client.loadbalancer.LoadBalanced;
 import org.springframework.cloud.openfeign.EnableFeignClients;
@@ -13,6 +16,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.web.client.RestTemplate;
 
 import com.spring4all.swagger.EnableSwagger2Doc;
+import com.ym.mec.common.filters.EmojiEncodingFilter;
 
 @SpringBootApplication
 @EnableDiscoveryClient
@@ -33,4 +37,22 @@ public class WebApplication {
 	public RestTemplate restTemplate() {
 		return new RestTemplate();
 	}
+
+	/**
+	 * 注册filter
+	 * @return
+	 */
+	//@Bean
+	public FilterRegistrationBean<Filter> filterRegistrationBean() {
+		FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<Filter>();
+		// 注入过滤器
+		registration.setFilter(new EmojiEncodingFilter());
+		// 过滤器名称
+		registration.setName("emojiEncodingFilter");
+		// 拦截规则
+		registration.addUrlPatterns("/*");
+		// 过滤器顺序(值越小,优先级越高)
+		registration.setOrder(1);
+		return registration;
+	}
 }

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

@@ -199,4 +199,9 @@ public class TaskController extends BaseController {
 		coursesGroupService.noStudentsCourseGroupRemind();
 	}
 
+	//更新对外课程组状态至已结束
+	@GetMapping("/finishCourseGroup")
+	public void finishCourseGroup(){
+		coursesGroupService.finishCourseGroup();
+	}
 }

+ 11 - 0
mec-web/src/main/java/com/ym/mec/web/controller/education/ImController.java

@@ -8,6 +8,7 @@ import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -60,6 +61,16 @@ public class ImController extends BaseController {
         return succeed(classGroupService.findGroupById(groupId));
     }
 
+    @ApiOperation(value = "根据群编号,修改群名称")
+    @GetMapping("/updateGroupName")
+    public Object updateGroupName(Integer groupId,String groupName){
+        if(null == groupId || StringUtils.isEmpty(groupName)){
+            return failed("参数校验错误");
+        }
+        classGroupService.updateGroupName(groupId,groupName);
+        return succeed();
+    }
+
     @ApiOperation(value = "根据群编号,获取群组所有成员基本信息")
     @GetMapping("/findGroupUsers")
     @PreAuthorize("@pcs.hasPermissions('im/findGroupUsers','system')")

+ 61 - 0
mec-web/src/main/java/com/ym/mec/web/controller/education/ImGroupNoticeController.java

@@ -0,0 +1,61 @@
+package com.ym.mec.web.controller.education;
+
+import com.ym.mec.biz.dal.entity.ImGroupNotice;
+import com.ym.mec.biz.service.ImGroupNoticeService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.page.QueryInfo;
+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.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+
+/**
+ * @Author Joburgess
+ * @Date 2019/9/18
+ */
+@RequestMapping("imGroupNotice")
+@Api(tags = "即时通讯群公告")
+@RestController
+public class ImGroupNoticeController extends BaseController {
+
+    @Autowired
+    private ImGroupNoticeService imGroupNoticeService;
+
+    @ApiOperation(value = "新增")
+    @PostMapping("/add")
+    @PreAuthorize("@pcs.hasPermissions('imGroupNotice/add','system')")
+    public Object add(ImGroupNotice imGroupNotice ) {
+        return succeed(imGroupNoticeService.insert(imGroupNotice));
+    }
+
+    @ApiOperation(value = "修改")
+    @PostMapping("/update")
+    @PreAuthorize("@pcs.hasPermissions('imGroupNotice/update','system')")
+    public Object update(ImGroupNotice imGroupNotice ) {
+        imGroupNotice.setUpdateTime(new Date());
+        imGroupNoticeService.update(imGroupNotice);
+        return succeed();
+    }
+
+    @ApiOperation(value = "删除")
+    @PostMapping("/del")
+    @PreAuthorize("@pcs.hasPermissions('imGroupNotice/del','system')")
+    public Object del(Long id) {
+        imGroupNoticeService.delete(id);
+        return succeed();
+    }
+
+    @ApiOperation(value = "分页查询作业列表")
+    @GetMapping(value = "/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('imGroupNotice/queryPage','system')")
+    public Object queryPage(QueryInfo queryInfo){
+        return succeed(imGroupNoticeService.queryPage(queryInfo));
+    }
+
+}