소스 검색

Merge remote-tracking branch 'origin/master'

Joburgess 5 년 전
부모
커밋
1bc60b7ca6
21개의 변경된 파일260개의 추가작업 그리고 48개의 파일을 삭제
  1. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/CourseScheduleDao.java
  2. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  3. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java
  4. 22 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentRechargeQueryInfo.java
  5. 12 13
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupServiceImpl.java
  6. 0 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  7. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  8. 19 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  9. 1 1
      mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherMapperMapper.xml
  10. 5 0
      mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  11. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentApplyRefundsMapper.xml
  12. 1 0
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  13. 3 8
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  14. 13 1
      mec-biz/src/main/resources/config/mybatis/StudentRechargeMapper.xml
  15. 1 1
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  16. 6 0
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  17. 8 9
      mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml
  18. 3 0
      mec-im/src/main/java/com/ym/SealClassApplication.java
  19. 2 1
      mec-student/src/main/java/com/ym/mec/student/controller/SysMessageController.java
  20. 143 0
      mec-web/src/main/java/com/ym/mec/web/controller/SysMessageController.java
  21. 0 6
      mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java

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

@@ -518,4 +518,11 @@ public interface CourseScheduleDao extends BaseDAO<Long, CourseSchedule> {
 	 * @return java.util.List<com.ym.mec.biz.dal.entity.CourseSchedule>
 	 */
 	List<CourseSchedule> findByClassGroups(@Param("classGroupIds") List<Integer> classGroupIds);
+
+	/**
+	 * 获取当前课程所有学员列表
+	 * @param courseScheduleId
+	 * @return
+	 */
+    List<Map<Integer, String>> findStudentMap(Integer courseScheduleId);
 }

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

@@ -176,7 +176,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @param userIdList
      * @return
      */
-    List<StudentRegistration> findStudentListByUserIdList(@Param("musicGroupId") String musicGroupId, @Param("userIdList") String userIdList);
+    List<StudentRegistration> findStudentListByUserIdList(@Param("musicGroupId") String musicGroupId, @Param("userIdList") List<Integer> userIdList);
 
     /**
      * @param ids

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

@@ -4,6 +4,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
+import com.ym.mec.biz.dal.entity.StudentAttendance;
 import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.biz.dal.dto.Mapper;
@@ -87,4 +88,11 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
     int countTeacherAbnormalSignInClassTimes(@Param("organId") Integer organId,
                                              @Param("date") Date date,
                                              @Param("signInStatus") Integer signInStatus);
+
+    /**
+     * 封装未签到学员列表
+     * @param courseScheduleId
+     * @return
+     */
+    List<StudentAttendance> queryNoSignStudentRecord(Integer courseScheduleId);
 }

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentRechargeQueryInfo.java

@@ -1,5 +1,7 @@
 package com.ym.mec.biz.dal.page;
 
+import java.util.Date;
+
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.TransTypeEnum;
 import com.ym.mec.common.page.QueryInfo;
@@ -9,6 +11,10 @@ public class StudentRechargeQueryInfo extends QueryInfo {
 	private DealStatusEnum status;
 	
 	private TransTypeEnum transType;
+	
+	private Date startDate;
+	
+	private Date endDate;
 
 	public DealStatusEnum getStatus() {
 		return status;
@@ -26,4 +32,20 @@ public class StudentRechargeQueryInfo extends QueryInfo {
 		this.transType = transType;
 	}
 
+	public Date getStartDate() {
+		return startDate;
+	}
+
+	public void setStartDate(Date startDate) {
+		this.startDate = startDate;
+	}
+
+	public Date getEndDate() {
+		return endDate;
+	}
+
+	public void setEndDate(Date endDate) {
+		this.endDate = endDate;
+	}
+
 }

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

@@ -922,10 +922,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             Map<Integer, Map<String, Integer>> holiday = jiaRiFeignService.query(now.getYear());
             holidayDays = holiday.get(now.getYear());
         }
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
         WhileNode:
         while (true) {
-            if (classGroup4MixDto.getHoliday() && !holidayDays.containsKey(now.format(DateTimeFormatter.ofPattern("MM-dd")))) {
+            if (classGroup4MixDto.getHoliday() && holidayDays.containsKey(now.format(DateTimeFormatter.ofPattern("MM-dd")))) {
                 now = now.plusDays(1);
                 continue;
             }
@@ -934,8 +935,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
 
                 //课时长度
-                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00"),
-                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00"))
+                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00",formatter),
+                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00",formatter))
                         .toMinutes();
 
 
@@ -1130,10 +1131,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             Map<Integer, Map<String, Integer>> holiday = jiaRiFeignService.query(now.getYear());
             holidayDays = holiday.get(now.getYear());
         }
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
         WhileNode:
         while (true) {
-            if (classGroup4MixDto.getHoliday() && !holidayDays.containsKey(now.format(DateTimeFormatter.ofPattern("MM-dd")))) {
+            if (classGroup4MixDto.getHoliday() && holidayDays.containsKey(now.format(DateTimeFormatter.ofPattern("MM-dd")))) {
                 now = now.plusDays(1);
                 continue;
             }
@@ -1142,8 +1144,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
 
                 //课时长度
-                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00"),
-                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00"))
+                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00",formatter),
+                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00",formatter))
                         .toMinutes();
 
 
@@ -1335,14 +1337,11 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
             Map<Integer, Map<String, Integer>> holiday = jiaRiFeignService.query(now.getYear());
             holidayDays = holiday.get(now.getYear());
         }
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
         WhileNode:
         while (true) {
-            if (classGroup4MixDto.getHoliday() && !holidayDays.containsKey(now.format(DateTimeFormatter.ofPattern("MM-dd")))) {
-                now = now.plusDays(1);
-                continue;
-            }
-            if (!holidayDays.containsKey(now.format(DateTimeFormatter.ofPattern("MM-dd")))) {
+            if (classGroup4MixDto.getHoliday() && holidayDays.containsKey(now.format(DateTimeFormatter.ofPattern("MM-dd")))) {
                 now = now.plusDays(1);
                 continue;
             }
@@ -1352,8 +1351,8 @@ public class ClassGroupServiceImpl extends BaseServiceImpl<Integer, ClassGroup>
                 if (!courseTimeDto.getDayOfWeek().equals(dayOfWeek)) continue;
 
                 //课时长度
-                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00"),
-                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00"))
+                long classCourseDuration = Duration.between(LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getStartClassTime() + ":00",formatter),
+                        LocalDateTime.parse(classGroup4MixDto.getStartDate() + " " + courseTimeDto.getEndClassTime() + ":00",formatter))
                         .toMinutes();
 
 

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

@@ -41,9 +41,7 @@ public class StudentManageServiceImpl implements StudentManageService {
 
     @Override
     public PageInfo findStudentsByOrganId(StudentManageQueryInfo queryInfo) {
-        SysUser user = sysUserFeignService.queryUserInfo();
         PageInfo<StudentManageListDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
-        queryInfo.setOrganId(user.getOrganId());
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
 

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

@@ -20,7 +20,6 @@ import com.ym.mec.im.ImFeignService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 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.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -194,7 +193,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         //增加报名学生数
 //        musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId(),1);
         //报名成功后,发送短信
-        String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL + studentRegistration.getMusicGroupId());
+        String studentApplyUrl = sysConfigDao.findConfigValue(SysConfigService.STUDENT_APPLY_URL) + studentRegistration.getMusicGroupId();
         String serverPhone = sysConfigDao.findConfigValue(SysConfigService.SERVER_PHONE);
         Subject subject = subjectDao.get(studentRegistration.getActualSubjectId());
         MusicGroup musicGroup = musicGroupDao.get(studentRegistration.getMusicGroupId());
@@ -203,7 +202,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         map.put(studentRegistration.getUserId(),studentRegistration.getParentsPhone());
         sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.YIMEI,
                 MessageTypeEnum.SMS_APPLY_MESSAGE,map,null,0,"",
-                studentRegistration.getParentsName(),subject.getName(),studentApplyUrl,musicGroup.getApplyExpireDate(),serverPhone);
+                studentRegistration.getParentsName(),subject.getName(),studentApplyUrl,
+                DateUtil.format(musicGroup.getApplyExpireDate(),DateUtil.DATE_FORMAT_MIN),serverPhone);
         return studentRegistration;
     }
 
@@ -592,7 +592,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
     @Override
     public List<StudentRegistration> findStudentListByUserIdList(String musicGroupId, List<Integer> userIdList) {
-        return studentRegistrationDao.findStudentListByUserIdList(musicGroupId, StringUtils.join(userIdList,","));
+        return studentRegistrationDao.findStudentListByUserIdList(musicGroupId, userIdList);
     }
 
     @Override

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
@@ -208,9 +209,27 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		if(isAttendance){
 			if(SignStatusEnum.SIGN_OUT.equals(signStatus)){
 				teacherAttendanceDao.update(teacherAttendance);
+				//教师签退后,给未签到学员添加旷课记录
+				//封装未签到学员签到列表
+				List<StudentAttendance> studentAttendances = teacherAttendanceDao.queryNoSignStudentRecord(courseScheduleId);
+				studentAttendances.forEach(e->{
+					e.setTeacherId(userId);
+					e.setStatus(StudentAttendanceStatusEnum.TRUANT);
+					e.setRemark("学员未到,自动补旷课");
+				});
+				studentAttendanceDao.addStudentAttendances(studentAttendances);
 			}
 		}else{
 			teacherAttendanceDao.insert(teacherAttendance);
+			//教师到课推送
+			if(courseSchedule.getTeachMode() == TeachModeEnum.ONLINE){
+				//获取所有当前课程的学生列表
+				Map<Integer,String> userMap = JSONObject.parseObject(JSONObject.toJSONString(MapUtil.convertMybatisMap(courseScheduleDao.findStudentMap(courseScheduleId))),HashMap.class);
+				if(userMap != null && userMap.size() > 0){
+					sysMessageService.batchSendMessage(MessageSender.JIGUANG,MessageTypeEnum.STUDENT_PUSH_ONLINE_COURSE_ACTION,userMap,
+							null,0,"",courseSchedule.getName());
+				}
+			}
 		}
 	}
 

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

@@ -94,7 +94,7 @@
     <insert id="classGroupTeachersInsert" parameterType="java.util.List">
         INSERT INTO class_group_teacher_mapper
         (id_,music_group_id_,class_group_id_,teacher_role_,user_id_,salary_,create_time_,update_time_)
-        VALUES
+        VALUE
         <foreach collection="classGroupTeacherMapperList" item="item" index="index" separator=",">
             (#{item.id},#{item.musicGroupId},#{item.classGroupId},#{item.teacherRole},#{item.userId},#{item.salary},NOW(),NOW())
         </foreach>

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

@@ -1170,4 +1170,9 @@
             #{classGroupId}
         </foreach>
     </select>
+    <select id="findStudentMap" resultType="java.util.Map">
+        SELECT cs.user_id_ 'key',cs.user_id_ 'value' FROM course_schedule_student_payment cs
+        WHERE cs.course_schedule_id_ = #{courseScheduleId}
+        GROUP BY user_id_
+    </select>
 </mapper>

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

@@ -99,7 +99,7 @@
     </select>
 
     <!-- 查询当前表的总记录数 -->
-    <select id="queryCount" resultType="int">
+    <select id="queryCount" resultType="int" parameterType="map">
 		SELECT count(1) FROM student_apply_refunds sar left join student_payment_order spo on sar.orig_payment_order_id_ = spo.id_ 
 		where 1=1 
         <if test="startTime != null">

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

@@ -142,6 +142,7 @@
         SELECT COUNT(DISTINCT sr.user_id_)
         FROM student_registration sr
         LEFT JOIN sys_user su ON sr.user_id_ = su.id_
+        <include refid="findStudentsByOrganIdSql"/>
     </select>
     <select id="findStudentBaseInfoByUserID" resultMap="studentManageListDto">
         SELECT su.real_name_,su.gender_,su.birthdate_,sr.parents_name_,su.id_ user_id_,

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

@@ -71,11 +71,6 @@
     <!-- 向数据库增加一条记录 -->
     <insert id="insert" parameterType="com.ym.mec.biz.dal.entity.StudentPaymentOrder" useGeneratedKeys="true"
             keyColumn="id" keyProperty="id">
-        <!--
-        <selectKey resultClass="int" keyProperty="id" >
-        SELECT SEQ_WSDEFINITION_ID.nextval AS ID FROM DUAL
-        </selectKey>
-        -->
         INSERT INTO student_payment_order
         (id_,user_id_,type_,expect_amount_,actual_amount_,trans_no_,status_,memo_,create_time_,update_time_,payment_channel_,payment_business_channel_,payment_account_no_,order_no_,music_group_id_,class_group_id_)
         VALUES(#{id},#{userId},#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{expectAmount},#{actualAmount},#{transNo},#{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{memo},now(),now(),#{paymentChannel},#{paymentBusinessChannel},#{paymentAccountNo},#{orderNo},#{musicGroupId},#{classGroupId})
@@ -152,7 +147,7 @@
     </select>
 
     <!-- 查询当前表的总记录数 -->
-    <select id="queryCount" resultType="int">
+    <select id="queryCount" resultType="int" parameterType="map">
         SELECT COUNT(spo.id_) FROM student_payment_order spo
         <include refid="queryPaymentOrder"/>
     </select>
@@ -160,10 +155,10 @@
     <sql id="queryPaymentOrder">
         <where>
             <if test="orderStartDate != null">
-                AND spo.create_time_ &gt;= #{orderStartDate}
+                AND DATE_FORMAT(spo.create_time_,'%Y-%m-%d') &gt;= #{orderStartDate}
             </if>
             <if test="orderEndDate != null">
-                AND spo.create_time_ &lt;= #{orderEndDate}
+                AND DATE_FORMAT(spo.create_time_,'%Y-%m-%d') &lt;= #{orderEndDate}
             </if>
             <if test="paymentType != null">
                 AND spo.type_ = #{paymentType}

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

@@ -106,12 +106,18 @@
         <if test="transType != null">
            and cad.trans_type_ = #{transType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         </if>
+        <if test="startDate != null">
+           and sr.create_time_ &gt;= #{startTime}
+        </if>
+        <if test="endDate != null">
+           and sr.create_time_ &lt;= #{endTime}
+        </if>
         ORDER BY sr.id_
         <include refid="global.limit"/>
     </select>
 
     <!-- 查询当前表的总记录数 -->
-    <select id="queryCount" resultType="int">
+    <select id="queryCount" resultType="int" parameterType="map">
 		SELECT COUNT(1) FROM student_recharge sr left join sys_user u on sr.user_id_ = u.id_ left join sys_user_cash_account_detail cad on sr.user_id_ = cad.user_id_ where 1 = 1
 		<if test="status != null">
            and sr.status_ = #{status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
@@ -119,6 +125,12 @@
         <if test="transType != null">
            and cad.trans_type_ = #{transType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
         </if>
+        <if test="startDate != null">
+           and sr.create_time_ &gt;= #{startTime}
+        </if>
+        <if test="endDate != null">
+           and sr.create_time_ &lt;= #{endTime}
+        </if>
 	</select>
 
     <select id="queryByTransNo" resultMap="StudentRecharge">

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

@@ -452,7 +452,7 @@
     </update>
     
     <select id="queryStudentNum" resultType="map">
-        SELECT count(sr.id_) total_num_,sum(case when sr.create_time_ >= timestamp(date_add(curdate(), interval - day(curdate()) + 1 day)) then 1 else 0 end) new_num_,sum(case when sr.music_group_status_ = 'QUIT' and sr.update_time_ >= timestamp(date_add(curdate(), interval - day(curdate()) + 1 day)) then 1 else 0 end) new_num_ FROM student_registration sr left join music_group mg on sr.music_group_id_ = mg.id_
+        SELECT count(sr.id_) total_num_,sum(case when sr.create_time_ >= timestamp(date_add(curdate(), interval - day(curdate()) + 1 day)) then 1 else 0 end) new_num_,sum(case when sr.music_group_status_ = 'QUIT' and sr.update_time_ >= timestamp(date_add(curdate(), interval - day(curdate()) + 1 day)) then 1 else 0 end) quit_num_ FROM student_registration sr left join music_group mg on sr.music_group_id_ = mg.id_
         <where>
     		<if test="organId != null">
     			mg.organ_id_ = #{organId}

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

@@ -235,4 +235,10 @@
     <select id="queryNoSignOutListByOverMinutes" resultMap="Mapper">
         SELECT ta.teacher_id_ key_,u.real_name_ value_ FROM course_schedule cs right join teacher_attendance ta on ta.course_schedule_id_ = cs.id_ left join sys_user u on ta.teacher_id_ = u.id_ WHERE ta.sign_out_status_ = 0 and date(cs.class_date_) = date(now()) and SUBTIME(cs.end_class_time_, CONCAT(#{minutes},'00')) &lt; CURRENT_TIME()
     </select>
+    <select id="queryNoSignStudentRecord" resultMap="TeacherAttendance">
+        SELECT cg.music_group_id_,cg.id_ class_group_id_,cssp.course_schedule_id_,cssp.user_id_,cg.current_class_times_
+        FROM course_schedule_student_payment cssp LEFT JOIN class_group cg ON cg.id_ = cssp.class_group_id_
+        WHERE cssp.user_id_ NOT IN (SELECT DISTINCT sa.user_id_ FROM student_attendance sa WHERE course_schedule_id_ = #{courseScheduleId})
+        AND cssp.course_schedule_id_ = #{courseScheduleId}
+    </select>
 </mapper>

+ 8 - 9
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -202,12 +202,19 @@
         t.job_nature_,t.is_probation_period_,GROUP_CONCAT(s.name_) subject_name_
         FROM teacher t LEFT JOIN sys_user su ON t.id_ = su.id_
         LEFT JOIN `subject` s ON FIND_IN_SET(s.id_,t.subject_id_)
-        WHERE su.del_flag_ = 0
+        WHERE su.user_type_ LIKE '%TEACHER%' AND su.del_flag_ = 0
         <include refid="queryPageMap"/>
         GROUP BY t.id_
         ORDER BY t.update_time_ DESC
         <include refid="global.limit"/>
     </select>
+    <!-- 查询当前表的总记录数 -->
+    <select id="queryCount" resultType="int">
+        SELECT COUNT(DISTINCT t.id_)
+        FROM teacher t LEFT JOIN sys_user su ON t.id_ = su.id_
+        WHERE su.user_type_ LIKE '%TEACHER%' AND su.del_flag_ = 0
+        <include refid="queryPageMap"/>
+    </select>
 
     <sql id="queryPageMap">
         <if test="lockFlag != null">
@@ -227,14 +234,6 @@
         </if>
     </sql>
 
-    <!-- 查询当前表的总记录数 -->
-    <select id="queryCount" resultType="int">
-        SELECT COUNT(t.id_)
-        FROM teacher t LEFT JOIN sys_user su ON t.id_ = su.id_
-        WHERE su.user_type_ LIKE '%TEACHER%' AND su.del_flag_ = 0
-        <include refid="queryPageMap"/>
-    </select>
-
     <!-- 根据证件号查询老师 -->
     <select id="findByCertificateNum" resultMap="Teacher">
         SELECT * FROM teacher WHERE certificate_num_ = #{certificateNum}

+ 3 - 0
mec-im/src/main/java/com/ym/SealClassApplication.java

@@ -2,12 +2,14 @@ package com.ym;
 
 import lombok.extern.slf4j.Slf4j;
 
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.client.loadbalancer.LoadBalanced;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.scheduling.annotation.EnableAsync;
@@ -18,6 +20,7 @@ import org.springframework.web.client.RestTemplate;
 @Slf4j
 @SpringBootApplication
 @EnableFeignClients("com.ym")
+@MapperScan("com.ym.mec.biz.dal.dao")
 @EnableScheduling
 @EnableDiscoveryClient
 @Configuration

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

@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.SysMessage;
+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;
@@ -43,7 +44,7 @@ public class SysMessageController extends BaseController {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
 		queryInfo.setUserId(sysUser.getId());
-		queryInfo.setType(3);
+		queryInfo.setType(MessageSendMode.PUSH.getCode());
 		PageInfo<SysMessage> pageInfo = sysMessageService.queryPage(queryInfo);
 		return succeed(pageInfo);
 	}

+ 143 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SysMessageController.java

@@ -0,0 +1,143 @@
+package com.ym.mec.web.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.io.IOException;
+
+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;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.SysMessage;
+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.exception.BizException;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
+import com.ym.mec.util.validator.CommonValidator;
+
+@RestController
+@Api(tags = "消息服务")
+@RequestMapping("sysMessage")
+public class SysMessageController extends BaseController {
+
+	@Autowired
+	private SysMessageService sysMessageService;
+
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+	@ApiOperation("获取所有消息列表")
+	@GetMapping(value = "list")
+	public Object list(SysMessageQueryInfo queryInfo) throws IOException {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		queryInfo.setUserId(sysUser.getId());
+		queryInfo.setType(MessageSendMode.SEO.getCode());
+		PageInfo<SysMessage> pageInfo = sysMessageService.queryPage(queryInfo);
+		return succeed(pageInfo);
+	}
+
+	@ApiOperation("一键已读")
+	@PostMapping("batchSetRead")
+	public Object batchSetRead() {
+		int status = 1;
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		return sysMessageService.updateStatus(sysUser.getId(), status) > 0 ? succeed() : failed();
+	}
+
+	@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(sysUser.getId()));
+	}
+
+	/*@ApiOperation(value = "发送短信验证码")
+	@PostMapping("/sendSmsCode")
+	public Object sendSmsCode(String sendCodeType, String mobileNo) {
+
+		SysUser sysUser;
+
+		if (StringUtils.isBlank(mobileNo)) {
+			sysUser = sysUserFeignService.queryUserInfo();
+		} else {
+			sysUser = sysUserFeignService.queryUserByMobile(mobileNo);
+		}
+		if (sysUser == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		Integer userId = sysUser.getId();
+
+		mobileNo = sysUser.getPhone();
+
+		MessageType messageType = MessageType.getMessageType(sendCodeType);
+		if (messageType == null) {
+			throw new BizException("消息类型参数错误");
+		}
+		if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) {
+			throw new BizException("请输入正确的手机号");
+		}
+		sysMessageService.sendSecurityCode(MessageSender.YIMEI, userId, MessageSendMode.SMS, messageType, mobileNo);
+		return succeed();
+	}*/
+
+	/*@ApiOperation(value = "发送短信验证码")
+	@PostMapping("/noAuth/sendSmsCode")
+	public Object noAuthSendSmsCode(String sendCodeType, String mobileNo) {
+		MessageType messageType = MessageType.getMessageType(sendCodeType);
+		if (messageType == null) {
+			throw new BizException("消息类型参数错误");
+		}
+		if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) {
+			throw new BizException("请输入正确的手机号");
+		}
+//		sysMessageService.sendSecurityCode(MessageSender.YIMEI, userId, MessageSendMode.SMS, messageType, mobileNo);
+		return succeed();
+	}*/
+
+	@ApiOperation(value = "发送消息")
+	@PostMapping("/sendMessage")
+	public Object sendMessage(MessageSender messageSender, String content, String receiver, int readStatus, String url) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		Integer userId = sysUser.getId();
+
+		String mobileNo = sysUser.getPhone();
+		if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) {
+			throw new BizException("请输入正确的手机号");
+		}
+		sysMessageService.sendMessage(messageSender, userId, "", content, receiver, null, readStatus, url);
+		return succeed();
+	}
+}

+ 0 - 6
mec-web/src/main/java/com/ym/mec/web/controller/TeacherController.java

@@ -1,7 +1,6 @@
 package com.ym.mec.web.controller;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.ClassGroupService;
@@ -40,11 +39,6 @@ public class TeacherController extends BaseController {
     @GetMapping("/queryPage")
     @PreAuthorize("@pcs.hasPermissions('teacher/queryPage')")
     public Object queryPage(TeacherQueryInfo queryInfo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            return failed("用户信息获取失败");
-        }
-//        queryInfo.setOrganId(sysUser.getOrganId());
         return succeed(teacherService.queryPageDetail(queryInfo));
     }