Просмотр исходного кода

Merge branch 'feature/0427-school' of http://git.dayaedu.com/yonge/mec into master_saas

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
	mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
	mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
zouxuan 2 лет назад
Родитель
Сommit
4448727a84
37 измененных файлов с 880 добавлено и 35 удалено
  1. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupQuitDao.java
  3. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java
  4. 15 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysNewsInformationDao.java
  5. 139 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysNewsInformation.java
  6. 32 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java
  7. 37 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/NewsInformationDto.java
  8. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityWrapper.java
  9. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolStaffWrapper.java
  10. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/StudentWrapper.java
  11. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java
  12. 11 2
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  13. 24 0
      mec-biz/src/main/java/com/ym/mec/biz/service/SysNewsInformationService.java
  14. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  15. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CoursePatrolEvaluationServiceImpl.java
  16. 14 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  17. 73 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  18. 58 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolStaffServiceImpl.java
  19. 30 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  20. 9 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java
  21. 81 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysNewsInformationServiceImpl.java
  22. 63 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  23. 53 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherLeaveRecordServiceImpl.java
  24. 2 2
      mec-biz/src/main/resources/config/mybatis/CooperationOrganLinkmanMapper.xml
  25. 8 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  26. 7 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupQuitMapper.xml
  27. 8 0
      mec-biz/src/main/resources/config/mybatis/SchoolActivityMapper.xml
  28. 6 0
      mec-biz/src/main/resources/config/mybatis/SchoolStaffMapper.xml
  29. 2 4
      mec-biz/src/main/resources/config/mybatis/StudentPlusMapper.xml
  30. 17 0
      mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  31. 3 1
      mec-biz/src/main/resources/config/mybatis/SysMessageMapper.xml
  32. 5 0
      mec-biz/src/main/resources/config/mybatis/SysNewsInformationMapper.xml
  33. 1 1
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  34. 4 0
      mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java
  35. 83 0
      mec-web/src/main/java/com/ym/mec/web/controller/SchoolMessageController.java
  36. 13 4
      mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java
  37. 41 0
      mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolSysNewsInformationController.java

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java

@@ -2022,4 +2022,6 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
                                                                                                       @Param("endTerm") String endTerm);
 
     List<ClassesForDayDto> getListClassesForDay(@Param("musicGroupIds") List<String> musicGroupIds, @Param("classDate") String classDate, @Param("courseId") Long courseId);
+
+    List<CourseSchedule> getByTeacherAndTime(@Param("teacherId") Integer teacherId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupQuitDao.java

@@ -69,4 +69,6 @@ public interface MusicGroupQuitDao extends BaseDAO<Long, MusicGroupQuit> {
     * @date 2023/5/11 09:39
     */
     List<MusicGroupQuitPageDto> queryPageBySchool(Map<String, Object> params);
+
+    Boolean countRedPointBySchool(@Param("musicGroupIds") List<String> musicGroupIds);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectDao.java

@@ -171,4 +171,6 @@ public interface SubjectDao extends BaseDAO<Integer, Subject> {
 
     List<StudentSubjectDto> getSubjectByStudentId(@Param("studentIds") Set<Long> studentIds);
 
+
+    List<Subject> getSubjectListByIdAndCoopId(@Param("musicGroupId") String musicGroupId, @Param("coopId") Integer coopId);
 }

+ 15 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysNewsInformationDao.java

@@ -0,0 +1,15 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ym.mec.biz.dal.entity.SysNewsInformation;
+
+/**
+ * 新闻资讯表(SysNewsInformation)表数据库访问层
+ *
+ * @author zx
+ * @since 2023-05-11 16:08:25
+ */
+public interface SysNewsInformationDao extends BaseMapper<SysNewsInformation> {
+
+}
+

+ 139 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysNewsInformation.java

@@ -0,0 +1,139 @@
+package com.ym.mec.biz.dal.entity;
+
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.ym.mec.common.enums.BaseEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import org.springframework.web.bind.annotation.GetMapping;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 新闻资讯表(SysNewsInformation)表实体类
+ *
+ * @author zx
+ * @since 2023-05-11 16:08:27
+ */
+@Data
+@ApiModel(value = "sys_news_information-新闻资讯表")
+public class SysNewsInformation implements Serializable {
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Long id;
+
+    @TableField("title_")
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    @TableField("content_")
+    @ApiModelProperty(value = "内容")
+    private String content;
+
+    @TableField("cover_image_")
+    @ApiModelProperty(value = "封面图片")
+    private String coverImage;
+
+    @TableField("type_")
+    @ApiModelProperty(value = "类型")
+    private Integer type;
+
+    @TableField("sub_type_")
+    @ApiModelProperty(value = "子类型")
+    private Integer subType;
+
+    @TableField("status_")
+    @ApiModelProperty(value = "状态(1-可见 0-不可见)")
+    private String status;
+
+    @TableField("online_time_")
+    @ApiModelProperty(value = "上线时间")
+    private Date onlineTime;
+
+    @TableField("offline_time_")
+    @ApiModelProperty(value = "下线时间")
+    private Date offlineTime;
+
+    @TableField("memo_")
+    @ApiModelProperty(value = "备注")
+    private String memo;
+
+    @TableField("create_time_")
+    private Date createTime;
+
+    @TableField("update_time_")
+    private Date updateTime;
+
+    @TableField("link_url_")
+    @ApiModelProperty(value = "链接地址")
+    private String linkUrl;
+
+    @TableField("href_target_")
+    @ApiModelProperty(value = "跳转类型_bank,_slef")
+    private String hrefTarget;
+
+    @TableField("order_")
+    @ApiModelProperty(value = "顺序号")
+    private Integer order;
+
+    @TableField("del_flag_")
+    @ApiModelProperty(value = "${column.comment}")
+    private Integer delFlag;
+
+    @TableField("tenant_id_")
+    @ApiModelProperty(value = "1-对内;2-对外")
+    private Integer tenantId;
+
+    @TableField("video_cover_image_")
+    @ApiModelProperty(value = "视频封面")
+    private String videoCoverImage;
+
+    @TableField("attribute1_")
+    @ApiModelProperty(value = "${column.comment}")
+    private String attribute1;
+
+    @TableField("attribute2_")
+    @ApiModelProperty(value = "${column.comment}")
+    private String attribute2;
+
+    @TableField("subject_id_list_")
+    @ApiModelProperty(value = "声部列表")
+    private String subjectIdList;
+
+    @TableField("organ_id_list_")
+    @ApiModelProperty(value = "所属分部")
+    private String organIdList;
+
+    @TableField("red_point_")
+    @ApiModelProperty(value = "红点类型")
+    private ERedPointEnum redPoint;
+
+    @Getter
+    public enum ERedPointEnum implements BaseEnum<String, ERedPointEnum> {
+
+        BACKLOG("待办事项"),
+        SITE_MANAGE("场地管理"),
+        ;
+
+        private final String describe;
+
+        @EnumValue
+        private final String code;
+
+        ERedPointEnum(String describe) {
+            this.describe = describe;
+            this.code = this.name();
+        }
+
+        @Override
+        public String getCode() {
+            return this.name();
+        }
+    }
+}
+

+ 32 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -251,6 +251,38 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     //小小训练营-训练营开始训练推送
     JIGUANG_TEMP_LITTLE_ARTIST_START_TRAIN("JIGUANG_TEMP_LITTLE_ARTIST_START_TRAIN","训练营开始训练推送-极光推送"),
 
+
+    //  老师异常签到
+    JIGUANG_TEACHER_SIGN_IN_EXCEPTION("JIGUANG_TEACHER_SIGN_IN_EXCEPTION","老师异常签到-极光推送"),
+
+    // 老师异常签退
+    JIGUANG_TEACHER_SIGN_OUT_EXCEPTION("JIGUANG_TEACHER_SIGN_OUT_EXCEPTION","老师异常签退-极光推送"),
+
+    // 老师请假
+    JIGUANG_TEACHER_LEAVE("JIGUANG_TEACHER_LEAVE","老师请假-极光推送"),
+
+    // 学员退团申请消息
+    JIGUANG_STUDENT_QUIT_GROUP_APPLY("JIGUANG_STUDENT_QUIT_GROUP_APPLY","学员退团申请消息-极光推送"),
+    // 学员退团消息
+    JIGUANG_STUDENT_QUIT_GROUP("JIGUANG_STUDENT_QUIT_GROUP","学员退团消息-极光推送"),
+
+    // 学员请假消息
+    JIGUANG_STUDENT_LEAVE("JIGUANG_STUDENT_LEAVE","学员请假消息-极光推送"),
+
+    // 课程变更消息
+    JIGUANG_COURSE_CHANGE("JIGUANG_COURSE_CHANGE","课程变更消息-极光推送"),
+
+    // 课程安排
+    JIGUANG_COURSE_ARRANGE("JIGUANG_COURSE_ARRANGE","课程安排-极光推送"),
+
+    // 学校端账户注册
+    JIGUANG_SCHOOL_ACCOUNT_REGISTER("JIGUANG_SCHOOL_ACCOUNT_REGISTER","学校端账户注册-极光推送"),
+
+    // 学校端账户注册通知
+    JIGUANG_SCHOOL_ACCOUNT_REGISTER_NOTICE("JIGUANG_SCHOOL_ACCOUNT_REGISTER_NOTICE","学校端账户注册通知-极光推送"),
+
+    // 学校端注册短信通知
+    SMS_SCHOOL_ACCOUNT_REGISTER("SMS_SCHOOL_ACCOUNT_REGISTER","学校端注册短信通知-极光推送"),
     ;
 
     MessageTypeEnum(String code, String msg) {

+ 37 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/NewsInformationDto.java

@@ -0,0 +1,37 @@
+package com.ym.mec.biz.dal.school.dto;
+
+import com.ym.mec.biz.dal.entity.SysNewsInformation;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class NewsInformationDto {
+    private Long id;
+
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    @ApiModelProperty(value = "内容")
+    private String content;
+
+    @ApiModelProperty(value = "封面图片")
+    private String coverImage;
+
+    @ApiModelProperty(value = "类型")
+    private Integer type;
+
+    @ApiModelProperty(value = "子类型")
+    private Integer subType;
+
+    @ApiModelProperty(value = "链接地址")
+    private String linkUrl;
+
+    @ApiModelProperty(value = "跳转类型_bank,_slef")
+    private String hrefTarget;
+
+    @ApiModelProperty(value = "红点类型")
+    private SysNewsInformation.ERedPointEnum redPoint;
+
+    @ApiModelProperty(value = "是否有红点")
+    private Boolean redPointFlag = false;
+}

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolActivityWrapper.java

@@ -151,6 +151,10 @@ public class SchoolActivityWrapper {
     @ApiModel(" SchoolActivityStudentQuery-学校活动学生查询对象")
     public static class SchoolActivityStudentQuery {
 
+
+        @ApiModelProperty("活动节目编号")
+        private Integer activityDetailId;
+
         @ApiModelProperty("乐团ID")
         private String musicGroupId;
 
@@ -197,6 +201,9 @@ public class SchoolActivityWrapper {
         @ApiModelProperty("学生名")
         private String studentName;
 
+        @ApiModelProperty("是否已经选择")
+        private Boolean selected;
+
 
         @ApiModelProperty("学生头像")
         private String studentAvatar;

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolStaffWrapper.java

@@ -17,6 +17,7 @@ import org.joda.time.DateTime;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 import java.util.Optional;
 
 /**
@@ -45,6 +46,11 @@ public class SchoolStaffWrapper {
         @ApiModelProperty("合作单位编号")
         private Long schoolId;
 
+
+        @ApiModelProperty("合作单位编号")
+        private List<Long> schoolIds;
+
+
         @ApiModelProperty("机构编号")
         private Integer tenantId;
         

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/StudentWrapper.java

@@ -189,6 +189,8 @@ public class StudentWrapper {
         @ApiModelProperty(value = "在团状态 在团 IN 退团 OUT 申请退团 APPLY_OUT 报名:APPLY 休学:QUIT_SCHOOL")
         private EInGroupStatus inGroupStatus;
 
+        @ApiModelProperty(value = "退团时间")
+        private Date quitTime;
     }
 
 

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/CourseScheduleService.java

@@ -761,4 +761,14 @@ public interface CourseScheduleService extends BaseService<Long, CourseSchedule>
      * @param teachingPoint 教学点信息
      */
     Boolean teachingPoint(TeachingPointWrapper.TeachingPoint teachingPoint);
+
+
+    /**
+     * 时间段内的课程
+     *
+     * @param teacherId 老师ID
+     * @param startTime 开始时间
+     * @param endTime 结束时间
+     */
+    List<CourseSchedule> getByTeacherAndTime(Integer teacherId, Date startTime, Date endTime);
 }

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

@@ -29,7 +29,6 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 */
 	boolean importStudentToMusicGroup(String musicGroupId, Map<String, List<Map<String, Object>>> excelData);
 
-    @Transactional(rollbackFor = Exception.class)
     void importStudentToMusicGroup1(List<MusicGroupPaymentImportDto> importDtos, MusicGroupPaymentCalender calender) throws Exception;
 
     /**
@@ -76,7 +75,6 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
      */
     Map sporadicPay(SporadicPayDto sporadicPayDto) throws Exception;
 
-    @Transactional(rollbackFor = Exception.class)
     void importRenew(List<MusicGroupPaymentImportDto> importDtos) throws Exception;
 
     /**
@@ -176,6 +174,9 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
     boolean applyQuitMusicGroup(List<SysUserRoleEnum> currentOperatorRoleIds, MusicGroupQuit reqMusicGroupQuit);
 
 
+    @Transactional(rollbackFor = Exception.class)
+    boolean applyQuitMusicGroup(List<SysUserRoleEnum> currentOperatorRoleIds, MusicGroupQuit reqMusicGroupQuit, String client);
+
     /**
      * 取消退团
      *
@@ -470,4 +471,12 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
      * 获取乐团信息
      */
     Map<Long,MusicGroup> getMapByIds(List<Long> musicGroupIds);
+
+    /**
+     * 获取乐团信息
+     *
+     * @param musicGroupId 乐团id
+     * @param coopId 合作单位id
+     */
+    List<Subject> getSubjectListByIdAndCoopId(String musicGroupId, Integer coopId);
 }

+ 24 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysNewsInformationService.java

@@ -0,0 +1,24 @@
+package com.ym.mec.biz.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ym.mec.biz.dal.dao.SysNewsInformationDao;
+import com.ym.mec.biz.dal.entity.SysNewsInformation;
+import com.ym.mec.biz.dal.school.dto.NewsInformationDto;
+import com.ym.mec.common.exception.BizException;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+/**
+ * 新闻资讯表(SysNewsInformation)表服务接口
+ *
+ * @author zx
+ * @since 2023-05-11 16:08:27
+ */
+public interface SysNewsInformationService extends IService<SysNewsInformation> {
+
+    SysNewsInformationDao getDao();
+
+    List<NewsInformationDto> queryPage(Integer type,Integer coopId) throws Exception;
+}
+

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

@@ -2668,6 +2668,10 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
         if (musicGroup.getStatus() == PROGRESS) {
             imUserFriendService.refreshClassImUserFriend(classGroupId);
         }
+
+        // 通知学校端
+
+
         return BaseController.succeed(classGroup);
     }
 

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

@@ -21,6 +21,8 @@ import com.ym.mec.biz.dal.wrapper.CoursePatrolEvaluationWrapper;
 import com.ym.mec.biz.dal.mapper.CoursePatrolEvaluationMapper;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -159,6 +161,10 @@ public class CoursePatrolEvaluationServiceImpl extends ServiceImpl<CoursePatrolE
         if (courseSchedule.getStatus().equals(CourseStatusEnum.NOT_START)) {
             throw new BizException("课程未开始,不允许做巡堂评价");
         }
+        LocalDate localDate = courseSchedule.getClassDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        if (localDate.isBefore(LocalDate.now())) {
+            throw new BizException("不可添加昨天及昨天之前的课堂评价");
+        }
 
         CoursePatrolEvaluation one = this.lambdaQuery().eq(CoursePatrolEvaluation::getCourseScheduleId, coursePatrolEvaluation.getCourseScheduleId())
                 .last("limit 1")

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

@@ -3604,6 +3604,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 				sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_COURSE_SCHEDULE_CHANGE_RESULT, map, null, 0, "7",
 						"TEACHER");
 			}
+
+            // 推送消息到学校端
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -6039,11 +6041,15 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		LocalDate endDate = LocalDate.parse(endTerm, formatter);
 		Map<String, List<DailySummaryOfClassesForTheCurrentSemesterDto>> result = new LinkedHashMap<>(30);
 		LocalDate currentWeekStart = startDate.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+		DateTimeFormatter format = DateTimeFormatter.ofPattern("yy年MM月dd日");
 		StringBuffer sb;
 		while (!currentWeekStart.isAfter(endDate)) {
 			int currentWeekNumber = (int) ChronoUnit.WEEKS.between(startDate, currentWeekStart);
-			sb = new StringBuffer("第").append(toChineseNumber(currentWeekNumber)).append("周");
+			String weekStart = currentWeekStart.format(format);
+			sb = new StringBuffer("第").append(toChineseNumber(currentWeekNumber)).append("周 (").append(weekStart).append("-");
 			LocalDate currentWeekEnd = currentWeekStart.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
+			String endStart = currentWeekEnd.format(format);
+			sb.append(endStart).append(")");
 			List<DailySummaryOfClassesForTheCurrentSemesterDto> currentWeekDates = new ArrayList<>();
 			for (DailySummaryOfClassesForTheCurrentSemesterDto dto : summary) {
 				if (!dto.getCourseDate().isBefore(currentWeekStart) && dto.getCourseDate().isBefore(currentWeekEnd)) {
@@ -6196,8 +6202,14 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         return true;
     }
 
+    @Override
+    public List<CourseSchedule> getByTeacherAndTime(Integer teacherId, Date startTime, Date endTime) {
+        return courseScheduleDao.getByTeacherAndTime(teacherId,startTime,endTime);
+    }
 
-	@Override
+
+
+    @Override
 	public List<CourseStudentDto> queryCourseStudentList(Long courseId) {
 		List<CourseStudentDto> courseStudentDtos = studentAttendanceDao.queryCourseStudentList(courseId);
 		if(CollectionUtils.isNotEmpty(courseStudentDtos)){

+ 73 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
@@ -15,6 +17,7 @@ import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.MusicGroupQueryInfo;
 import com.ym.mec.biz.dal.page.MusicMemberQueryInfo;
 import com.ym.mec.biz.dal.vo.MusicGroupDeliveryVo;
+import com.ym.mec.biz.dal.wrapper.SchoolStaffWrapper;
 import com.ym.mec.biz.event.source.GroupEventSource;
 import com.ym.mec.biz.event.source.SendSeoMessageSource;
 import com.ym.mec.biz.service.*;
@@ -34,6 +37,7 @@ import com.ym.mec.util.excel.POIUtil;
 import com.ym.mec.util.http.HttpUtil;
 import com.ym.mec.util.ini.IniFileUtil;
 import com.ym.mec.util.json.JsonUtil;
+import com.ym.mec.util.string.MessageFormatter;
 import com.ym.mec.util.validator.CommonValidator;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -217,6 +221,12 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     @Autowired
     private MusicGroupPaymentCalenderActivityDao musicGroupPaymentCalenderActivityDao;
 
+    @Autowired
+    private SchoolStaffService schoolStaffService;
+
+    @Autowired
+    private SysMessageConfigDao sysMessageConfigDao;
+
     private SimpleDateFormat sdf_ymd = new SimpleDateFormat("yyyy-MM-dd");
 
     private SimpleDateFormat sdf_hms = new SimpleDateFormat("HH:mm:ss");
@@ -2238,6 +2248,11 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean applyQuitMusicGroup(List<SysUserRoleEnum> currentOperatorRoleIds, MusicGroupQuit reqMusicGroupQuit) {
+        return applyQuitMusicGroup(currentOperatorRoleIds, reqMusicGroupQuit, null);
+    }
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean applyQuitMusicGroup(List<SysUserRoleEnum> currentOperatorRoleIds, MusicGroupQuit reqMusicGroupQuit, String client) {
         Integer userId = reqMusicGroupQuit.getUserId();
         String musicGroupId = reqMusicGroupQuit.getMusicGroupId();
         String reason = reqMusicGroupQuit.getReason();
@@ -2329,6 +2344,36 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
         musicGroupQuitDao.insert(musicGroupQuit);
 
+
+        // 学生端提交退团申请推送
+        // 推送异常考勤消息
+        if("STUDENT".equals(client)){
+
+            // 乐团信息
+            SysUser student = sysUserFeignService.queryUserById(musicGroupQuit.getUserId());
+
+            IPage<SchoolStaffWrapper.SchoolStaff> page = schoolStaffService.selectPage(new Page<>(1, -1),
+                    SchoolStaffWrapper.SchoolStaffQuery.builder().schoolId(musicGroup.getCooperationOrganId().longValue()).build());
+            List<SchoolStaffWrapper.SchoolStaff> records = page.getRecords();
+            if (CollectionUtils.isNotEmpty(records)) {
+
+                Map<Integer, String> userMap = new HashMap<>();
+                records.forEach(o -> {
+                    userMap.put(o.getUserId().intValue(), o.getUserId().toString());
+                });
+
+                SysMessageConfig sysMessageConfig = sysMessageConfigDao.queryByType(MessageTypeEnum.JIGUANG_STUDENT_QUIT_GROUP_APPLY.getCode());
+                String url = sysMessageConfig.getUrl();
+
+                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_STUDENT_QUIT_GROUP_APPLY,
+                        userMap, null, 0, url,
+                        "SCHOOL",musicGroup.getName(),student.getUsername());
+            }
+        }
+
+        // 后台通过退团申请推送
+
+
         if (reqMusicGroupQuit.getStatus() == PROCESSING) {
             SysUser sysUser = sysUserFeignService.queryUserById(userId);
 
@@ -2694,6 +2739,22 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 //                        PlatformCashAccountDetailTypeEnum.REFUNDS, null, SUCCESS, "退出乐团", null);
             }
         }
+
+        // 推送退团消息
+        IPage<SchoolStaffWrapper.SchoolStaff> page = schoolStaffService.selectPage(new Page<>(1, -1),
+                SchoolStaffWrapper.SchoolStaffQuery.builder().schoolId(musicGroup.getCooperationOrganId().longValue()).build());
+        List<SchoolStaffWrapper.SchoolStaff> records = page.getRecords();
+        if (CollectionUtils.isNotEmpty(records)) {
+
+            SysUser sysUser = sysUserFeignService.queryUserById(userId);
+
+            Map<Integer, String> userMap = new HashMap<>();
+            records.forEach(o -> userMap.put(o.getUserId().intValue(), o.getUserId().toString()));
+
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_STUDENT_QUIT_GROUP,
+                    userMap, null, 0, null,
+                    "SCHOOL",musicGroup.getName(),sysUser.getUsername());
+        }
         return true;
     }
 
@@ -4207,4 +4268,16 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
         return musicGroupByIds.stream().collect(Collectors.toMap(o -> Long.parseLong(o.getId()), Function.identity()));
     }
+
+
+    /**
+     * 获取乐团信息
+     *
+     * @param musicGroupId 乐团id
+     * @param coopId 合作单位id
+     */
+    @Override
+    public List<Subject> getSubjectListByIdAndCoopId(String musicGroupId, Integer coopId) {
+        return subjectDao.getSubjectListByIdAndCoopId(musicGroupId,coopId);
+    }
 }

+ 58 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolStaffServiceImpl.java

@@ -2,17 +2,21 @@ package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
+import com.ym.mec.biz.dal.dao.SysMessageConfigDao;
 import com.ym.mec.biz.dal.dao.CooperationOrganDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
 import com.ym.mec.biz.dal.entity.SchoolStaff;
 import com.ym.mec.biz.dal.entity.SysConfig;
+import com.ym.mec.biz.dal.entity.SysMessageConfig;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
 import com.ym.mec.biz.dal.mapper.SchoolStaffMapper;
 import com.ym.mec.biz.dal.wrapper.SchoolStaffWrapper;
@@ -21,7 +25,10 @@ import com.ym.mec.biz.service.CooperationOrganService;
 import com.ym.mec.biz.service.SchoolStaffService;
 import com.ym.mec.biz.service.SmsCodeService;
 import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.exception.BizException;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
+import com.ym.mec.util.string.MessageFormatter;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -35,12 +42,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.text.MessageFormat;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -69,12 +71,21 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
     @Value("${message.debugMode:false}")
     private boolean debugMode;
 
-	/**
+    @Autowired
+    private SysMessageService sysMessageService;
+
+    @Autowired
+    private SchoolStaffService schoolStaffService;
+
+    @Autowired
+    private SysMessageConfigDao sysMessageConfigDao;
+
+    /**
      * 查询详情
      * @param id 详情ID
      * @return SchoolStaff
      */
-	@Override
+    @Override
     public SchoolStaff detail(Long id) {
         
         return baseMapper.selectById(id);
@@ -91,7 +102,7 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
         
         return page.setRecords(baseMapper.selectPage(page, query));
     }
-	
+
     /**
      * 添加
      * @param schoolStaff SchoolStaffWrapper.SchoolStaff
@@ -178,6 +189,44 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
         // 删除缓存锁
         redissonClient.getBucket(submitLockKey).delete();
 
+        // 消息推送
+
+        // 推送给自己
+
+        Map<Integer, String> userMap = new HashMap<>();
+        userMap.put(user.getId(), user.getId().toString());
+        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_SCHOOL_ACCOUNT_REGISTER_NOTICE,
+                userMap, null, 0, null,
+                "SCHOOL",cooperation.getName(),schoolStaff.getUserType().getDescribe());
+
+
+        // 推送给学校自己外的其他用户
+        IPage<SchoolStaffWrapper.SchoolStaff> page = schoolStaffService.selectPage(new Page<>(1, -1),
+                SchoolStaffWrapper.SchoolStaffQuery.builder().schoolId(schoolStaff.getSchoolId()).build());
+        List<SchoolStaffWrapper.SchoolStaff> records = page.getRecords();
+        if (CollectionUtils.isNotEmpty(records)) {
+
+            Map<Integer, String> usersMap = new HashMap<>();
+            records.stream()
+                    .filter( o -> !o.getUserId().equals(schoolStaff.getUserId()))
+                    .forEach(o -> usersMap.put(o.getUserId().intValue(), o.getUserId().toString()));
+
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_SCHOOL_ACCOUNT_REGISTER,
+                    usersMap, null, 0, null,
+                    "SCHOOL",schoolStaff.getUsername(),cooperation.getName(),schoolStaff.getUserType().getDescribe());
+        }
+
+        // 推送给自己的短信
+        Map<Integer, String> selfMap = new HashMap<>();
+        selfMap.put(user.getId(), user.getPhone());
+
+
+        SysMessageConfig sysMessageConfig = sysMessageConfigDao.queryByType(MessageTypeEnum.JIGUANG_TEACHER_SIGN_IN_EXCEPTION.getCode());
+        String url = sysMessageConfig.getUrl();
+
+        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.SMS_SCHOOL_ACCOUNT_REGISTER,
+                selfMap, null, 0, null,
+                "SCHOOL",cooperation.getName(),schoolStaff.getUserType().getDescribe(),url);
         return true;
     }
 

+ 30 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -1,6 +1,8 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
@@ -10,10 +12,8 @@ import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.CourseHomeworkQueryInfo;
 import com.ym.mec.biz.dal.page.ExportStudentAttendanceQueryInfo;
 import com.ym.mec.biz.dal.page.StudentAttendanceQueryInfo;
-import com.ym.mec.biz.service.StudentAttendanceService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysMessageService;
-import com.ym.mec.biz.service.SysTenantConfigService;
+import com.ym.mec.biz.dal.wrapper.SchoolStaffWrapper;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
@@ -74,6 +74,11 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
     @Autowired
     private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
 
+    @Autowired
+    private SchoolStaffService schoolStaffService;
+
+    @Autowired
+    private MusicGroupDao musicGroupDao;
     @Override
     public BaseDAO<Long, StudentAttendance> getDAO() {
         return studentAttendanceDao;
@@ -423,6 +428,27 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
                 new String[]{courseSchedule.getActualTeacherId().toString()},
                 null, DateUtil.dateToString(courseSchedule.getStartClassTime(), "yyyy年MM月dd日 HH点mm分"),
                 courseSchedule.getType().getMsg(), sysUser.getUsername(), remark);
+
+        // 发送消息到学校端
+        MusicGroup musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId());
+
+        IPage<SchoolStaffWrapper.SchoolStaff> page = schoolStaffService.selectPage(new Page<>(1, -1),
+                SchoolStaffWrapper.SchoolStaffQuery.builder().schoolId(musicGroup.getCooperationOrganId().longValue()).build());
+        List<SchoolStaffWrapper.SchoolStaff> records = page.getRecords();
+        if (org.apache.commons.collections.CollectionUtils.isNotEmpty(records)) {
+
+            Map<Integer, String> userMap = new HashMap<>();
+            records.forEach(o -> userMap.put(o.getUserId().intValue(), o.getUserId().toString()));
+
+            String classDate = DateUtil.format(courseSchedule.getClassDate(), DateUtil.DEFAULT_PATTERN);
+            String startClassTime = DateUtil.format(courseSchedule.getStartClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+            String endClassTime = DateUtil.format(courseSchedule.getEndClassTime(), DateUtil.EXPANDED_TIME_FORMAT);
+            String leaveTime = classDate + " " + startClassTime + "-" + endClassTime;
+
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_STUDENT_LEAVE,
+                    userMap, null, 0, null,
+                    "SCHOOL",musicGroup.getName(),sysUser.getUsername(),leaveTime,courseSchedule.getName());
+        }
         return true;
     }
 

+ 9 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentServiceImpl.java

@@ -1323,7 +1323,9 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
     @Override
     public IPage<StudentWrapper.StudentList> userPage(IPage<StudentWrapper.StudentList> page, StudentWrapper.StudentQuery queryInfo) {
 
-        queryInfo.setStatusList(Arrays.asList(StudentMusicGroupStatusEnum.NORMAL, StudentMusicGroupStatusEnum.QUIT, StudentMusicGroupStatusEnum.QUIT_SCHOOL));
+        if (CollectionUtils.isEmpty(queryInfo.getStatusList())) {
+            queryInfo.setStatusList(Arrays.asList(StudentMusicGroupStatusEnum.NORMAL, StudentMusicGroupStatusEnum.QUIT, StudentMusicGroupStatusEnum.QUIT_SCHOOL));
+        }
         List<StudentWrapper.StudentList> studentLists = studentPlusMapper.userPage(page, queryInfo);
 
         if (CollectionUtils.isEmpty(studentLists)) {
@@ -1364,7 +1366,6 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         // 查询作业
         studentHomeworkData(studentLists, studentAttendanceQuery);
 
-
         return page.setRecords(studentLists);
     }
 
@@ -1381,7 +1382,7 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
         StudentWrapper.StudentDetail studentDetail = JSON.parseObject(JSON.toJSONString(studentList), StudentWrapper.StudentDetail.class);
 
         // 查询学生信息
-        StudentRegistration studentRegister = studentRegistrationService.getStudentRegister(queryInfo.getMusicGroupId().toString(), queryInfo.getStudentId());
+        StudentRegistration studentRegister = studentRegistrationService.getStudentRegister(queryInfo.getMusicGroupId(), queryInfo.getStudentId());
         if (studentRegister == null) {
             return studentDetail;
         }
@@ -1402,8 +1403,9 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
                 .cooperationOrganId(queryInfo.getCooperationOrganId())
                 .studentId(queryInfo.getStudentId())
                 .musicGroupId(queryInfo.getMusicGroupId())
-                .startTime(DateUtil.toDate(DateUtil.getStartTerm(new Date())))
-                .endTime(DateUtil.toDateTime(DateUtil.getEndTerm(new Date()) + " 23:59:59"))
+                // 时间为本学期
+//                .startTime(DateUtil.toDate(DateUtil.getStartTerm(new Date())))
+//                .endTime(DateUtil.toDateTime(DateUtil.getEndTerm(new Date()) + " 23:59:59"))
                 .build();
         List<SchoolActivityWrapper.SchoolActivity> schoolActivities = schoolActivityMapper.selectPage(new Page<>(1, -1), build);
         if (!CollectionUtils.isEmpty(schoolActivities)) {
@@ -1412,12 +1414,13 @@ public class StudentServiceImpl extends BaseServiceImpl<Integer, Student> implem
 
         // 在团状态
         MusicGroupQuit musicGroupQuit = musicGroupQuitDao
-                .queryByUserIdAndMusicGroupId(queryInfo.getStudentId(), queryInfo.getMusicGroupId().toString());
+                .queryByUserIdAndMusicGroupId(queryInfo.getStudentId(), queryInfo.getMusicGroupId());
 
         if (StudentMusicGroupStatusEnum.APPLY.equals(studentRegister.getMusicGroupStatus())) {
             studentDetail.setInGroupStatus(EInGroupStatus.APPLY);
         } else if (StudentMusicGroupStatusEnum.QUIT.equals(studentRegister.getMusicGroupStatus())) {
             studentDetail.setInGroupStatus(EInGroupStatus.OUT);
+            studentDetail.setQuitTime(musicGroupQuit.getQuitDate());
         } else if (StudentMusicGroupStatusEnum.NORMAL.equals(studentRegister.getMusicGroupStatus())) {
             studentDetail.setInGroupStatus(EInGroupStatus.IN);
             if (musicGroupQuit != null && musicGroupQuit.getStatus().equals(ApprovalStatus.PROCESSING)) {

+ 81 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysNewsInformationServiceImpl.java

@@ -0,0 +1,81 @@
+package com.ym.mec.biz.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.gson.JsonObject;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupQuitDao;
+import com.ym.mec.biz.dal.dao.SysNewsInformationDao;
+import com.ym.mec.biz.dal.entity.SysNewsInformation;
+import com.ym.mec.biz.dal.school.dto.NewsInformationDto;
+import com.ym.mec.biz.service.SysNewsInformationService;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.tenant.TenantContextHolder;
+import org.apache.commons.beanutils.BeanUtils;
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * 新闻资讯表(SysNewsInformation)表服务实现类
+ *
+ * @author zx
+ * @since 2023-05-11 16:08:28
+ */
+@Service("sysNewsInformationService")
+public class SysNewsInformationServiceImpl extends ServiceImpl<SysNewsInformationDao, SysNewsInformation> implements SysNewsInformationService {
+
+    private final static Logger log = LoggerFactory.getLogger(SysNewsInformationServiceImpl.class);
+
+    @Override
+    public SysNewsInformationDao getDao(){
+            return this.baseMapper;
+    }
+
+    @Resource
+    private MusicGroupQuitDao musicGroupQuitDao;
+    @Resource
+    private MusicGroupDao musicGroupDao;
+
+    @Override
+    public List<NewsInformationDto> queryPage(Integer type,Integer coopId) throws Exception {
+        List<SysNewsInformation> dtos = this.lambdaQuery()
+                .eq(SysNewsInformation::getType, type)
+                .eq(SysNewsInformation::getStatus, 1)
+                .eq(SysNewsInformation::getDelFlag, false)
+                .orderByAsc(SysNewsInformation::getOrder).list();
+        List<NewsInformationDto> resultList = new ArrayList<>();
+        if(CollectionUtils.isNotEmpty(dtos)){
+            List<String> musicGroupIds = musicGroupDao.findNormalByCooperationId(coopId);
+            if(CollectionUtils.isNotEmpty(musicGroupIds)){
+                for (SysNewsInformation dto : dtos) {
+                    NewsInformationDto informationDto = JSON.parseObject(JSON.toJSONString(dto), NewsInformationDto.class);
+                    if(informationDto.getRedPoint() != null){
+                        //统计是否有红点
+                        switch (informationDto.getRedPoint()) {
+                            //待办事项
+                            case BACKLOG:
+                                informationDto.setRedPointFlag(musicGroupQuitDao.countRedPointBySchool(musicGroupIds));
+                                break;
+                            case SITE_MANAGE:
+                                //todo 场地管理
+                                break;
+                        }
+                    }
+                    resultList.add(informationDto);
+                }
+            }
+        }
+        return resultList;
+    }
+
+}
+

+ 63 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -2,6 +2,8 @@ package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
@@ -13,6 +15,7 @@ import com.ym.mec.biz.dal.page.TeacherCloseQueryInfo;
 import com.ym.mec.biz.dal.school.dto.TeacherAttendanceListDto;
 import com.ym.mec.biz.dal.school.dto.TeacherAttendanceSumDto;
 import com.ym.mec.biz.dal.school.page.TeacherAttendanceQueryInfo;
+import com.ym.mec.biz.dal.wrapper.SchoolStaffWrapper;
 import com.ym.mec.biz.event.source.SendMessageSource;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
@@ -25,6 +28,7 @@ import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import com.ym.mec.util.string.MessageFormatter;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -91,6 +95,12 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
     @Autowired
     private StudentLessonTrainingDetailService studentLessonTrainingDetailService;
 
+    @Autowired
+    private SchoolStaffService schoolStaffService;
+
+    @Autowired
+    private SysMessageConfigDao sysMessageConfigDao;
+
 	@Override
 	public BaseDAO<Long, TeacherAttendance> getDAO() {
 		return teacherAttendanceDao;
@@ -287,6 +297,33 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			}else{
 				teacherAttendanceDao.insert(teacherAttendance);
 			}
+            // 推送异常考勤消息
+            if(YesOrNoEnum.NO.equals(teacherAttendance.getSignInStatus())){
+
+                // 乐团信息
+                MusicGroup musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId());
+
+                IPage<SchoolStaffWrapper.SchoolStaff> page = schoolStaffService.selectPage(new Page<>(1, -1),
+                        SchoolStaffWrapper.SchoolStaffQuery.builder().schoolId(musicGroup.getCooperationOrganId().longValue()).build());
+                List<SchoolStaffWrapper.SchoolStaff> records = page.getRecords();
+                if (CollectionUtils.isNotEmpty(records)) {
+
+                    Map<Integer, String> userMap = new HashMap<>();
+                    records.forEach(o -> userMap.put(o.getUserId().intValue(), o.getUserId().toString()));
+
+                    SysMessageConfig sysMessageConfig = sysMessageConfigDao.queryByType(MessageTypeEnum.JIGUANG_TEACHER_SIGN_IN_EXCEPTION.getCode());
+                    String url = MessageFormatter.arrayFormat(sysMessageConfig.getUrl(),courseSchedule.getActualTeacherId(), courseSchedule.getClassGroupId());
+
+                    // 课程时间
+                    String courseTime = classDate +" " + startClassTime + "-" + endClassTime;
+                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_TEACHER_SIGN_IN_EXCEPTION,
+                            userMap, null, 0, url,
+                            "SCHOOL",musicGroup.getName(),user.getRealName(),courseTime,courseSchedule.getName());
+                }
+            }
+
+
+
 			return result;
 		}else if(teacherAttendance.getSignOutTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
 			int i = studentAttendanceDao.countByCourseSchedule(courseSchedule.getId());
@@ -488,6 +525,32 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
                 examinationSaveDto.setMusicGroupId(teacherAttendance.getMusicGroupId());
 				lessonExaminationService.publish(examinationSaveDto);
 			}
+
+
+            // 推送异常考勤消息
+            if(YesOrNoEnum.NO.equals(teacherAttendance.getSignOutStatus())){
+
+                // 乐团信息
+                MusicGroup musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId());
+
+                IPage<SchoolStaffWrapper.SchoolStaff> page = schoolStaffService.selectPage(new Page<>(1, -1),
+                        SchoolStaffWrapper.SchoolStaffQuery.builder().schoolId(musicGroup.getCooperationOrganId().longValue()).build());
+                List<SchoolStaffWrapper.SchoolStaff> records = page.getRecords();
+                if (CollectionUtils.isNotEmpty(records)) {
+
+                    Map<Integer, String> userMap = new HashMap<>();
+                    records.forEach(o -> userMap.put(o.getUserId().intValue(), o.getUserId().toString()));
+
+                    SysMessageConfig sysMessageConfig = sysMessageConfigDao.queryByType(MessageTypeEnum.JIGUANG_TEACHER_SIGN_OUT_EXCEPTION.getCode());
+                    String url = MessageFormatter.arrayFormat(sysMessageConfig.getUrl(),courseSchedule.getActualTeacherId(), courseSchedule.getClassGroupId());
+
+                    // 课程时间
+                    String courseTime = classDate +" " + startClassTime + "-" + endClassTime;
+                    sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_TEACHER_SIGN_OUT_EXCEPTION,
+                            userMap, null, 0,url,
+                            "SCHOOL",musicGroup.getName(),user.getRealName(),courseTime,courseSchedule.getName());
+                }
+            }
 			return result;
 		}
 

+ 53 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherLeaveRecordServiceImpl.java

@@ -1,20 +1,26 @@
 package com.ym.mec.biz.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dao.TeacherLeaveRecordDao;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.dal.entity.CourseSchedule.CourseScheduleType;
+import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.entity.TeacherLeaveRecord;
 import com.ym.mec.biz.dal.entity.TeacherLeaveRecord.CoursesScheduleHistory;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.SysUserRoleEnum;
+import com.ym.mec.biz.dal.wrapper.SchoolStaffWrapper;
 import com.ym.mec.biz.event.source.SendSeoMessageSource;
 import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.biz.service.SchoolStaffService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.biz.service.TeacherLeaveRecordService;
 import com.ym.mec.common.controller.BaseController;
@@ -55,6 +61,11 @@ public class TeacherLeaveRecordServiceImpl extends BaseServiceImpl<Long, Teacher
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
 
+    @Autowired
+    private SchoolStaffService schoolStaffService;
+
+    @Autowired
+    private MusicGroupDao musicGroupDao;
 	@Override
 	public BaseDAO<Long, TeacherLeaveRecord> getDAO() {
 		return teacherLeaveRecordDao;
@@ -159,6 +170,48 @@ public class TeacherLeaveRecordServiceImpl extends BaseServiceImpl<Long, Teacher
 		map.put(teacher.getId(),teacher.getId() + "");
 		sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_LEAVE_RESULT,
 				map,null,0,"7","TEACHER",status.getMsg());
+
+        // 老师请假推送
+
+        // 查询有课的老师的合作单位 发送请假推送
+
+        List<CourseSchedule> courseSchedules = courseScheduleService.getByTeacherAndTime(teacherLeaveRecord.getUserId(),teacherLeaveRecord.getStartTime(),teacherLeaveRecord.getEndTime());
+        if (!CollectionUtils.isEmpty(courseSchedules)) {
+            Set<String> musicGroupIds = courseSchedules.stream().map(CourseSchedule::getMusicGroupId).collect(Collectors.toSet());
+            if (!CollectionUtils.isEmpty(musicGroupIds)) {
+                List<MusicGroup> musicGroups = musicGroupDao.getMusicGroupByIds(new ArrayList<>(musicGroupIds));
+                Set<Integer> coopIds = musicGroups.stream().map(o -> o.getCooperationOrganId()).collect(Collectors.toSet());
+                IPage<SchoolStaffWrapper.SchoolStaff> page = schoolStaffService.selectPage(new Page<>(1, -1),
+                        SchoolStaffWrapper.SchoolStaffQuery.builder().schoolIds(new ArrayList<>(coopIds.stream().map(Long::valueOf).collect(Collectors.toList()))).build());
+                List<SchoolStaffWrapper.SchoolStaff> records = page.getRecords();
+                if (!CollectionUtils.isEmpty(records)) {
+
+                    // 按照合作单位分组
+                    Map<Long, List<SchoolStaffWrapper.SchoolStaff>> coopMap = records.stream().collect(Collectors.groupingBy(SchoolStaffWrapper.SchoolStaff::getSchoolId));
+
+                    // 乐团按照合作单位分组
+                    Map<Integer, List<MusicGroup>> musicGroupMap = musicGroups.stream().collect(Collectors.groupingBy(MusicGroup::getCooperationOrganId));
+
+                    StringBuilder leaveTime = new StringBuilder(DateUtil.dateTimeToString(teacherLeaveRecord.getStartTime()) + "-" + DateUtil.dateTimeToString(teacherLeaveRecord.getEndTime()));
+                    coopMap.forEach((k, v) -> {
+                        List<MusicGroup> musicGroupList = musicGroupMap.get(k.intValue());
+                        if (!CollectionUtils.isEmpty(musicGroupList)) {
+
+                            Map<Integer, String> userMap = new HashMap<>();
+                            v.forEach(o -> userMap.put(o.getUserId().intValue(), o.getUserId().toString()));
+                            musicGroupList.forEach(o -> {
+                                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.JIGUANG_TEACHER_LEAVE,
+                                        userMap, null, 0, null,
+                                        "SCHOOL",o.getName(),teacher.getRealName(), leaveTime.toString());
+                            });
+                        }
+                    });
+
+                }
+
+            }
+        }
+
 		return BaseController.succeed();
 	}
 

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

@@ -38,10 +38,10 @@
 	
 	<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 		INSERT INTO cooperation_organ_linkman
-		(id_,cooperation_organ_id_,linkman_,mobile_no_,job_,create_time_,tenant_id_,logo_)
+		(id_,cooperation_organ_id_,linkman_,mobile_no_,job_,create_time_,tenant_id_)
 		VALUES
 		<foreach collection="list" item="item" separator=",">
-		(#{item.id},#{item.cooperationOrganId},#{item.linkman},#{item.mobileNo},#{item.job},#{item.createTime},#{item.tenantId},#{item.logo})
+		(#{item.id},#{item.cooperationOrganId},#{item.linkman},#{item.mobileNo},#{item.job},#{item.createTime},#{item.tenantId})
 		</foreach>
 	</insert>
 

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

@@ -4276,4 +4276,12 @@
             </foreach>
         </if>
     </select>
+
+    <select id="getByTeacherAndTime" resultMap="CourseSchedule">
+        select * from course_schedule
+        where teacher_id_ = #{teacherId}
+        and CONCAT(class_date_," ",end_class_time_) &gt;= #{startTime}
+        and CONCAT(class_date_," ",start_class_time_) &lt;= #{endTime}
+
+    </select>
 </mapper>

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupQuitMapper.xml

@@ -245,4 +245,11 @@
             </if>
         </where>
     </select>
+    <select id="countRedPointBySchool" resultType="java.lang.Boolean">
+        select COUNT(0) from music_group_quit mgq WHERE mgq.school_staff_audit_status_ = 'ING'
+        AND mgq.music_group_id_ IN
+        <foreach collection="musicGroupIds" open="(" close=")" item="musicGroupId" separator=",">
+            #{musicGroupId}
+        </foreach>
+    </select>
 </mapper>

+ 8 - 0
mec-biz/src/main/resources/config/mybatis/SchoolActivityMapper.xml

@@ -38,14 +38,22 @@
                 AND t.type_ = #{param.type}
             </if>
         </where>
+        order by t.start_time_ desc
 	</select>
 
     <select id="getUserList" resultType="com.ym.mec.biz.dal.wrapper.SchoolActivityWrapper$SchoolActivityStudent">
         select distinct s.user_id_ as studentId
             , sr.actual_subject_id_ as subjectId
+        <if test="param.activityDetailId != null">
+            ,if(sadu.id_ is null, false, true) as selected
+        </if>
         from student s
         left join student_registration sr on sr.user_id_ = s.user_id_
 
+        <if test="param.activityDetailId != null">
+            left join school_activity_detail_user sadu on sadu.student_id_ = s.user_id_ and sadu.school_activity_detail_id_ = #{param.activityDetailId}
+        </if>
+
         <where>
             <if test="param.musicGroupId != null and param.musicGroupId != ''">
                 and sr.music_group_id_ = #{param.musicGroupId}

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/SchoolStaffMapper.xml

@@ -18,6 +18,12 @@
 			<if test="param.schoolId != null">
 				AND t1.school_id_ = #{param.schoolId}
 			</if>
+            <if test="param.schoolIds != null and param.schoolIds.size() != 0">
+                and t1.school_id_ in
+                <foreach collection="param.schoolIds" item="schoolId" open="(" separator="," close=")">
+                    #{schoolId}
+                </foreach>
+            </if>
 		</where>
 		ORDER BY id_ DESC
 	</select>

+ 2 - 4
mec-biz/src/main/resources/config/mybatis/StudentPlusMapper.xml

@@ -9,9 +9,7 @@
         group_concat(sr.music_group_id_) as musicGroupIds
         from student s
 
-        <if test="param.keyword != null and param.keyword != ''">
-            left join sys_user su on su.id_ = s.user_id_
-        </if>
+        left join sys_user su on su.id_ = s.user_id_
         left join student_registration sr on sr.user_id_ = s.user_id_
         <where>
             sr.music_group_status_ in
@@ -42,7 +40,7 @@
                 </if>
             </if>
         </where>
-        group by s.user_id_
+        group by su.username_ ,s.user_id_
     </select>
 
 </mapper>

+ 17 - 0
mec-biz/src/main/resources/config/mybatis/SubjectMapper.xml

@@ -285,4 +285,21 @@
             #{userId}
         </foreach>
     </select>
+    <select id="getSubjectListByIdAndCoopId" resultType="com.ym.mec.biz.dal.entity.Subject">
+        SELECT
+            s.id_ as id
+        ,s.name_ as name
+        FROM
+            `subject` s
+            LEFT JOIN music_group_subject_plan mgsp on s.id_ = mgsp.subject_id_
+            LEFT JOIN music_group mg on mg.id_ = mgsp.music_group_id_
+        WHERE
+            s.del_flag_ = 0
+            <if test="musicGroupId != null and musicGroupId != ''">
+                AND mg.id_ = #{musicGroupId}
+            </if>
+            <if test="coopId != null">
+                AND mg.cooperation_organ_id_ = #{coopId}
+            </if>
+    </select>
 </mapper>

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

@@ -192,7 +192,9 @@
 	<select id="queryCountOfUnread" resultMap="Mapper" parameterType="map">
 		SELECT group_ key_,COUNT(*) value_ FROM sys_message
 		WHERE user_id_ = #{userId} AND read_status_ = 0 and status_ = 2
-		AND tenant_id_ = #{tenantId}
+        <if test="tenantId != null">
+            AND tenant_id_ = #{tenantId}
+        </if>
 		AND (jpush_type_ = #{jpushType} OR jpush_type_ IS NULL)
 		<if test="type != null">
 		and (type_ = 3 or type_ = 4)

+ 5 - 0
mec-biz/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -0,0 +1,5 @@
+<?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.SysNewsInformationDao">
+
+</mapper>

+ 1 - 1
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -213,7 +213,7 @@ public class MusicGroupController extends BaseController {
 		musicGroupQuit.setStatus(ApprovalStatus.PROCESSING);
         musicGroupQuit.setOperatorId(userId);
         musicGroupQuit.setSchoolStaffAuditStatus(EQuitGroupAuditStatusEnum.ING);
-        return succeed(musicGroupService.applyQuitMusicGroup(null, musicGroupQuit));
+        return succeed(musicGroupService.applyQuitMusicGroup(null, musicGroupQuit,"STUDENT"));
     }
 
     @ApiOperation(value = "取消退团申请")

+ 4 - 0
mec-util/src/main/java/com/ym/mec/util/date/DateUtil.java

@@ -946,6 +946,10 @@ public class DateUtil {
 		return df.format(date);
 	}
 
+    public static String dateTimeToString(Date date) {
+        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        return df.format(date);
+    }
 	/**
 	 * 时间转字符串
 	 * @param date

+ 83 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SchoolMessageController.java

@@ -0,0 +1,83 @@
+package com.ym.mec.web.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.AppVersionInfoDao;
+import com.ym.mec.biz.dal.dto.SysMessageDto;
+import com.ym.mec.biz.dal.entity.AppVersionInfo;
+import com.ym.mec.biz.dal.enums.MessageSendMode;
+import com.ym.mec.biz.dal.page.SysMessageQueryInfo;
+import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.page.PageInfo;
+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.http.HttpStatus;
+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;
+
+@RestController
+@Api(tags = "消息服务")
+@RequestMapping("schoolMessage")
+public class SchoolMessageController extends BaseController {
+
+    @Autowired
+    private SysMessageService sysMessageService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private AppVersionInfoDao appVersionInfoDao;
+
+    @ApiOperation("获取所有消息列表")
+    @GetMapping(value = "list")
+    public Object list(SysMessageQueryInfo queryInfo){
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+
+        queryInfo.setUserId(sysUserFeignService.queryUserInfo().getId());
+        queryInfo.setType(3);
+        queryInfo.setJpushType("SCHOOL");
+        PageInfo<SysMessageDto> pageInfo = sysMessageService.queryListPage(queryInfo);
+        return succeed(pageInfo);
+    }
+
+    @ApiOperation("获取消息分类类型")
+    @GetMapping(value = "typeList")
+    public Object typeList(String memo){
+
+        return succeed(JSON.parseArray("[{\"value\":\"全部消息\",\"key\":\"ALL\"}," +
+                "{\"value\":\"老师信息\",\"key\":\"TEACHER\"}," +
+                "{\"value\":\"学员信息\",\"key\":\"STUDENT\"}," +
+                "{\"value\":\"系统消息\",\"key\":\"SYSTEM\"},"));
+    }
+
+    @ApiOperation("设置已读")
+    @PostMapping("setRead")
+    public Object setRead(Long id) {
+        int status = 1;
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return sysMessageService.updateOneStatus(id, status) > 0 ? succeed() : failed();
+    }
+
+    @ApiOperation(value = "查询用户未读消息条数")
+    @GetMapping("/queryCountOfUnread")
+    public Object queryCountOfUnread() {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return succeed(sysMessageService.queryCountOfUnread(null, sysUser.getId(),"SCHOOL", null));
+    }
+}

+ 13 - 4
mec-web/src/main/java/com/ym/mec/web/controller/StudentManageController.java

@@ -2,10 +2,7 @@ package com.ym.mec.web.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.ApprovalStatus;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupQuit;
-import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.dal.wrapper.StudentWrapper;
@@ -505,4 +502,16 @@ public class StudentManageController extends BaseController {
         musicGroupQuit.setOperatorId(operatorId);
         return succeed(musicGroupService.applyQuitMusicGroup(null, musicGroupQuit));
     }
+
+
+    @ApiOperation(value = "学校端-声部列表")
+    @PostMapping("/coopSubjectList")
+    public HttpResponseResult<List<Subject>> HttpResponseResult(String musicGroupId, @RequestHeader Integer coopId) {
+        if (coopId == null) {
+            return succeed();
+        }
+
+        return succeed(musicGroupService.getSubjectListByIdAndCoopId(musicGroupId, coopId));
+    }
+
 }

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

@@ -0,0 +1,41 @@
+package com.ym.mec.web.controller.school;
+
+
+import com.ym.mec.biz.dal.school.dto.NewsInformationDto;
+import com.ym.mec.biz.service.SysNewsInformationService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 新闻资讯表(SysNewsInformation)表控制层
+ *
+ * @author zx
+ * @since 2023-05-11 16:08:21
+ */
+@Api(tags = "新闻资讯表")
+@RestController
+@RequestMapping("/sysNewsInformation")
+public class SchoolSysNewsInformationController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private SysNewsInformationService sysNewsInformationService;
+
+    @ApiOperation(value = "分页查询")
+    @GetMapping("queryPage")
+    public HttpResponseResult<List<NewsInformationDto>> queryPage(Integer type, @RequestHeader Integer coopId) throws Exception {
+        return succeed(sysNewsInformationService.queryPage(type,coopId));
+    }
+
+}
+