Browse Source

Merge remote-tracking branch 'origin/master'

Joburgess 4 years ago
parent
commit
7adca1b292
25 changed files with 490 additions and 167 deletions
  1. 12 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDetailDao.java
  2. 46 15
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentManageDao.java
  3. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/WaitSendMessageDao.java
  4. 103 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/WaitSendMessage.java
  5. 8 14
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentManageService.java
  6. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentRegistrationService.java
  7. 5 21
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java
  8. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/WaitSendMessageService.java
  9. 23 17
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java
  10. 32 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  11. 7 46
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupStudentFeeServiceImpl.java
  12. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupSubjectPlanServiceImpl.java
  13. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  14. 1 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  15. 51 40
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  16. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  17. 23 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/WaitSendMessageServiceImpl.java
  18. 11 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderDetailMapper.xml
  19. 20 0
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  20. 74 0
      mec-biz/src/main/resources/config/mybatis/WaitSendMessageMapper.xml
  21. 4 0
      mec-client-api/src/main/java/com/ym/mec/task/TaskRemoteService.java
  22. 5 0
      mec-client-api/src/main/java/com/ym/mec/task/fallback/TaskRemoteServiceFallback.java
  23. 19 0
      mec-task/src/main/java/com/ym/mec/task/jobs/PushWaitSendMessageTask.java
  24. 8 0
      mec-web/src/main/java/com/ym/mec/web/controller/TaskController.java
  25. 9 0
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduStudentStudentController.java

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupPaymentCalenderDetailDao.java

@@ -197,4 +197,16 @@ public interface MusicGroupPaymentCalenderDetailDao extends BaseDAO<Long, MusicG
 	 */
 	MusicGroupPaymentCalenderDetail findByOrderId(@Param("orderId") Long orderId);
 
+	/**
+	 * 获取未缴费且不是0元的学员列表
+	 * @param calenderId
+	 * @return
+	 */
+    List<Map<Integer, String>> queryNoPaymentAndNotZeroStudent(Long calenderId);
+
+	/**
+	 * 将0元未缴费学员缴费状态更新为已缴费
+	 * @param calenderId
+	 */
+	void updateNoPaymentAndZeroPaymentStatus(Long calenderId);
 }

+ 46 - 15
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentManageDao.java

@@ -27,16 +27,16 @@ public interface StudentManageDao {
     /**
      * @Author: Joburgess
      * @Date: 2019/9/19
-     *根据部门ID获取该部门下所有学生
+     * 根据部门ID获取该部门下所有学生
      */
-    List<StudentManageListDto> findStudentsByOrganId(Map<String,Object> params);
+    List<StudentManageListDto> findStudentsByOrganId(Map<String, Object> params);
 
     /**
      * @Author: Joburgess
      * @Date: 2019/9/19
      * 根据部门ID统计该部门下所有学生数
      */
-    int countStudentByOrganId(Map<String,Object> params);
+    int countStudentByOrganId(Map<String, Object> params);
 
     /**
      * @Author: Joburgess
@@ -64,28 +64,28 @@ public interface StudentManageDao {
      * @Date: 2019/9/20
      * 获取某乐团的排课列表
      */
-    List<StudentManageCourseListDto> findStudentCourseList(Map<String,Object> params);
+    List<StudentManageCourseListDto> findStudentCourseList(Map<String, Object> params);
 
     /**
      * @Author: Joburgess
      * @Date: 2019/9/20
      * 统计乐团排课数
      */
-    int countStudentCourses(Map<String,Object> params);
+    int countStudentCourses(Map<String, Object> params);
 
     /**
      * @Author: Joburgess
      * @Date: 2019/9/20
      * 学生签到列表获取
      */
-    List<StudentManageCourseListDto> findStudentAttendances(Map<String,Object> params);
+    List<StudentManageCourseListDto> findStudentAttendances(Map<String, Object> params);
 
     /**
      * @Author: Joburgess
      * @Date: 2019/9/20
      * 统计学生签到次数
      */
-    int countStudentAttendances(Map<String,Object> params);
+    int countStudentAttendances(Map<String, Object> params);
 
     /**
      * @Author: Joburgess
@@ -96,13 +96,15 @@ public interface StudentManageDao {
 
     /**
      * 获取学员扣费记录列表
+     *
      * @param params
      * @return
      */
     List<StudentPaymentDto> queryStudentPayment(Map<String, Object> params);
 
     /**
-     *  COUNT学员扣费记录列表
+     * COUNT学员扣费记录列表
+     *
      * @param params
      * @return
      */
@@ -110,6 +112,7 @@ public interface StudentManageDao {
 
     /**
      * 获取乐团管理学员列表
+     *
      * @param params
      * @return
      */
@@ -117,6 +120,7 @@ public interface StudentManageDao {
 
     /**
      * COUNT乐团管理学员列表
+     *
      * @param params
      * @return
      */
@@ -124,6 +128,7 @@ public interface StudentManageDao {
 
     /**
      * 获取乐团在读人数
+     *
      * @param musicGroupId
      * @return
      */
@@ -131,6 +136,7 @@ public interface StudentManageDao {
 
     /**
      * 获取乐团退团人数
+     *
      * @param musicGroupId
      * @return
      */
@@ -138,6 +144,7 @@ public interface StudentManageDao {
 
     /**
      * 获取乐团新增的学员人数
+     *
      * @param musicGroupId
      * @return
      */
@@ -145,6 +152,7 @@ public interface StudentManageDao {
 
     /**
      * 乐团管理--点名总览
+     *
      * @param params
      * @return
      */
@@ -152,6 +160,7 @@ public interface StudentManageDao {
 
     /**
      * COUNT乐团管理--点名总览
+     *
      * @param params
      * @return
      */
@@ -159,12 +168,14 @@ public interface StudentManageDao {
 
     /**
      * 修改用户信息
+     *
      * @param sysUser
      */
     void updateUser(SysUser sysUser);
 
     /**
      * 获取学员的vip列表
+     *
      * @param params
      * @return
      */
@@ -172,6 +183,7 @@ public interface StudentManageDao {
 
     /**
      * count学员vip列表
+     *
      * @param params
      * @return
      */
@@ -179,20 +191,23 @@ public interface StudentManageDao {
 
     /**
      * 获取未激活,有课的列表
+     *
      * @return
      */
     List<StudentManageListDto> queryHasCourseStudent(Map<String, Object> params);
 
     /**
      * 获取签到学员数
+     *
      * @param courseScheduleId
      * @param status
      * @return
      */
-    Integer countStudentSignInNum(@Param("courseScheduleId") Integer courseScheduleId,@Param("status") String status);
+    Integer countStudentSignInNum(@Param("courseScheduleId") Integer courseScheduleId, @Param("status") String status);
 
     /**
      * 获取交了作业的学生数
+     *
      * @param courseScheduleId
      * @return
      */
@@ -200,6 +215,7 @@ public interface StudentManageDao {
 
     /**
      * 获取已回复的数量
+     *
      * @param courseScheduleId
      * @return
      */
@@ -207,34 +223,39 @@ public interface StudentManageDao {
 
     /**
      * 是否有课map列表
+     *
      * @param userIds
      * @return
      */
-    List<Map<Integer,Integer>> getHasPracticeCourse(@Param("userIds") Set<Integer> userIds);
+    List<Map<Integer, Integer>> getHasPracticeCourse(@Param("userIds") Set<Integer> userIds);
 
     /**
      * 是否激活
+     *
      * @param userIds
      * @return
      */
-    List<Map<Integer,Integer>> getIsActive(@Param("userIds") Set<Integer> userIds);
+    List<Map<Integer, Integer>> getIsActive(@Param("userIds") Set<Integer> userIds);
 
     /**
      * 是否预约陪练课
+     *
      * @param userIds
      * @return
      */
-    List<Map<Integer,Integer>> getIsMake(@Param("userIds") Set<Integer> userIds);
+    List<Map<Integer, Integer>> getIsMake(@Param("userIds") Set<Integer> userIds);
 
     /**
      * 获取用户所属声部
+     *
      * @param userIds
      * @return
      */
-    List<Map<Integer,Integer>> querySubjectNames(@Param("userIds") Set<Integer> userIds);
+    List<Map<Integer, Integer>> querySubjectNames(@Param("userIds") Set<Integer> userIds);
 
     /**
      * 乐团修改--学员缴费记录--可新增学员列表
+     *
      * @param musicGroupId
      * @param musicGroupPaymentCalenderId
      * @return
@@ -246,14 +267,24 @@ public interface StudentManageDao {
 
     /**
      * 学员是否有课
+     *
      * @param userIds
      * @return
      */
-    List<Map<Integer,Integer>> queryHasCourseMap(@Param("userIds") Set<Integer> userIds);
-    
+    List<Map<Integer, Integer>> queryHasCourseMap(@Param("userIds") Set<Integer> userIds);
+
     /**
      * 查询学生剩余课程
+     *
      * @return
      */
     List<StudentListCourseDto> queryStudentRemianCourse(@Param("userIds") Set<Integer> userIds);
+
+    /**
+     * 获取教务老师关联的学员列表
+     *
+     * @param groupType
+     * @return
+     */
+    List<BasicUserDto> queryGroupStudents(@Param("groupType") String groupType, @Param("userId") Integer userId);
 }

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

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

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

@@ -0,0 +1,103 @@
+package com.ym.mec.biz.dal.entity;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+/**
+ * 对应数据库表(wait_send_message):
+ */
+public class WaitSendMessage {
+
+	/**  */
+	private Integer id;
+	
+	/** 消息发送模式JIGUANG("PUSH"), MOXINGTONG("SMS"), SHIYUAN("SMS"), YIMEI("SMS"), AWSMS("SMS") */
+	private String messageSender;
+	
+	/** 消息模板 */
+	private String messageType;
+	
+	/** 消息接收人 */
+	private String receivers;
+	
+	/** 超链接地址 */
+	private String url;
+	
+	/** 极光客户端 */
+	private String jpushType;
+	
+	/** 参数列表 */
+	private String agrs;
+	
+	/**  */
+	private java.util.Date createTime;
+	
+	public void setId(Integer id){
+		this.id = id;
+	}
+	
+	public Integer getId(){
+		return this.id;
+	}
+			
+	public void setMessageSender(String messageSender){
+		this.messageSender = messageSender;
+	}
+	
+	public String getMessageSender(){
+		return this.messageSender;
+	}
+			
+	public void setMessageType(String messageType){
+		this.messageType = messageType;
+	}
+	
+	public String getMessageType(){
+		return this.messageType;
+	}
+			
+	public void setReceivers(String receivers){
+		this.receivers = receivers;
+	}
+	
+	public String getReceivers(){
+		return this.receivers;
+	}
+			
+	public void setUrl(String url){
+		this.url = url;
+	}
+	
+	public String getUrl(){
+		return this.url;
+	}
+			
+	public void setJpushType(String jpushType){
+		this.jpushType = jpushType;
+	}
+	
+	public String getJpushType(){
+		return this.jpushType;
+	}
+			
+	public void setAgrs(String agrs){
+		this.agrs = agrs;
+	}
+	
+	public String getAgrs(){
+		return this.agrs;
+	}
+			
+	public void setCreateTime(java.util.Date createTime){
+		this.createTime = createTime;
+	}
+	
+	public java.util.Date getCreateTime(){
+		return this.createTime;
+	}
+			
+	@Override
+	public String toString() {
+		return ToStringBuilder.reflectionToString(this);
+	}
+
+}

+ 8 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/StudentManageService.java

@@ -4,20 +4,7 @@ import java.util.List;
 import java.util.Map;
 
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dto.BasicUserDto;
-import com.ym.mec.biz.dal.dto.ConditionDto;
-import com.ym.mec.biz.dal.dto.MusicCardDto;
-import com.ym.mec.biz.dal.dto.MusicGroupStudentSignDto;
-import com.ym.mec.biz.dal.dto.MusicGroupStudentsDto;
-import com.ym.mec.biz.dal.dto.SimpleUserDto;
-import com.ym.mec.biz.dal.dto.Student4operating;
-import com.ym.mec.biz.dal.dto.StudentManageAccountBaseInfoDto;
-import com.ym.mec.biz.dal.dto.StudentManageBaseInfoOfMusicGroupDto;
-import com.ym.mec.biz.dal.dto.StudentManageListDto;
-import com.ym.mec.biz.dal.dto.StudentManageVipGroupClassDto;
-import com.ym.mec.biz.dal.dto.StudentManageVipGroupDto;
-import com.ym.mec.biz.dal.dto.StudentRegisterPerDto;
-import com.ym.mec.biz.dal.dto.StudentVipDouble11Dto;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.page.MusicGroupStudentQueryInfo;
 import com.ym.mec.biz.dal.page.StudentManageAttendanceQueryInfo;
@@ -207,4 +194,11 @@ public interface StudentManageService {
      * @return
      */
     List<BasicUserDto> queryCanAddStudent(String musicGroupId, String batchNo,String search,Integer subjectId);
+
+    /**
+     * 获取教务老师关联的学员列表
+     * @param groupType
+     * @return
+     */
+    List<BasicUserDto> queryGroupStudents(String groupType);
 }

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

@@ -310,4 +310,5 @@ public interface StudentRegistrationService extends BaseService<Long, StudentReg
      * @return boolean
      */
     BigDecimal updateUserSurplusCourseFee(Integer userId, String musicGroupId, BigDecimal amount, String memo, Integer operatorId);
+
 }

+ 5 - 21
mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java

@@ -45,27 +45,6 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	void batchSendImGroupMessage(MessageTypeEnum messageType,String senderId,String extra, String[] targetIds,String url, Object... args);
 
 	/**
-	 * 推送im自定义节拍器消息
-	 * @param senderId
-	 * @param roomId
-	 * @param content
-	 */
-//	void batchSendImPlayMidiMessage(String senderId,String roomId, String content);
-
-	/**
-	 * 批量发送消息
-	 * @param messageSender 消息发送者
-	 * @param subject 消息主题
-	 * @param content 消息内容
-	 * @param receivers 消息接受者
-	 * @param triggerTime 触发时间
-	 * @param group 组
-	 * @return
-	 */
-	public boolean batchSendMessage(MessageSender messageSender, String subject, String content, Map<Integer, String> receivers, Date triggerTime,
-			Integer readStatus, String memo, String group,String jpushType);
-
-	/**
 	 * 发送消息
 	 * @param messageSender 消息发送者
 	 * @param messageType 消息类型
@@ -159,4 +138,9 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 * @param content
 	 */
 	void sendNoAuthPrivateMessage(String sender,String receiver, String content);
+
+	/**
+	 * 每天9点推送前一天22点之后的推送消息
+	 */
+	void pushWaitSendMessageTask();
 }

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

@@ -0,0 +1,8 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.WaitSendMessage;
+import com.ym.mec.common.service.BaseService;
+
+public interface WaitSendMessageService extends BaseService<Integer, WaitSendMessage> {
+
+}

+ 23 - 17
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderDetailServiceImpl.java

@@ -14,6 +14,7 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -120,21 +121,19 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 			musicGroupStudentFeeDao.setPaidCompleted(calenderDetails);
 		}*/
 		musicGroupPaymentCalenderDetailDao.batchUpdate(calenderDetails);
-//		if(expectAmount.doubleValue() > 0){
-//			Set<Integer> studentIds = calenderDetails.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
-			//推送消息
-			if (studentIds.size() > 0) {
-				String musicGroupId = calenderDetails.get(0).getMusicGroupId();
-				Map<Integer, String> push = new HashMap<>();
-				for (Integer userId : studentIds) {
-					push.put(userId, userId + "");
-				}
-				MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
-				String baseUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
-				String memo = "4?" + baseUrl + "/#/renew?musicGroupId=" + musicGroupId;
-				// 发送续费通知
-				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, push, null, 0, memo,"STUDENT",musicGroup.getName());
-			}
+
+		//获取未缴费且不是0元的学员列表
+		Map<Integer,String> studentMaps = MapUtil.convertMybatisMap(musicGroupPaymentCalenderDetailDao.queryNoPaymentAndNotZeroStudent(calender.getId()));
+		if(studentMaps.size() > 0){
+			MusicGroup musicGroup = musicGroupDao.get(calender.getMusicGroupId());
+			String baseUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
+			String memo = "4?" + baseUrl + "/#/musicGroupRenew?calenderId="+calender.getId()+"&id=" + calender.getMusicGroupId();
+			// 发送续费通知
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, studentMaps,
+					null, 0, memo,"STUDENT",musicGroup.getName());
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, studentMaps,
+					null, 0, memo, null, musicGroup.getName());
+		}
 //		}
 	}
 
@@ -169,9 +168,16 @@ public class MusicGroupPaymentCalenderDetailServiceImpl extends BaseServiceImpl<
 			}
 			MusicGroup musicGroup = musicGroupDao.get(calender.getMusicGroupId());
 			String baseUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
-			String memo = "4?" + baseUrl + "/#/renew?musicGroupId=" + calender.getMusicGroupId();
+			String memo = "4?" + baseUrl + "/#/musicGroupRenew?calenderId="+calender.getId()+"&id=" + calender.getMusicGroupId();
 			// 发送续费通知
-			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, push, null, 0, memo,"STUDENT",musicGroup.getName());
+			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, push,
+					null, 0, memo,"STUDENT",musicGroup.getName());
+			//获取未缴费且不是0元的学员列表
+			Map<Integer,String> studentMaps = MapUtil.convertMybatisMap(musicGroupPaymentCalenderDetailDao.queryNoPaymentAndNotZeroStudent(calender.getId()));
+			if(studentMaps.size() > 0){
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, studentMaps,
+						null, 0, memo, null, musicGroup.getName());
+			}
 		}
 		StringBuffer append = new StringBuffer("操作成功: 成功开启缴费").append(studentIds.size()).append("条,失败").append(length - studentIds.size()).append("条");
 		return append.toString();

+ 32 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -1106,15 +1106,22 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 	public void pushWaitRenewMessage(Long calenderId,MusicGroup musicGroup){
 		Set<Integer> studentIds = musicGroupPaymentCalenderDetailDao.queryNoPaymentStudentIds(calenderId);
 		if (studentIds.size() > 0) {
+			String baseUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
+			String memo = "4?" + baseUrl + "/#/musicGroupRenew?calenderId="+calenderId+"&id=" + musicGroup.getId();
 			Map<Integer, String> push = new HashMap<>();
 			for (Integer userId : studentIds) {
 				push.put(userId, userId + "");
 			}
-			String baseUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
-			String memo = "4?" + baseUrl + "/#/renew?musicGroupId=" + musicGroup.getId();
 			// 发送续费通知
 			sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, push,
 					null, 0, memo, "STUDENT", musicGroup.getName());
+
+			//获取未缴费且不是0元的学员列表
+			Map<Integer,String> studentMaps = MapUtil.convertMybatisMap(musicGroupPaymentCalenderDetailDao.queryNoPaymentAndNotZeroStudent(calenderId));
+			if(studentMaps.size() > 0){
+				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, studentMaps,
+						null, 0, memo, null, musicGroup.getName());
+			}
 		}
 	}
 
@@ -1134,7 +1141,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				mgpc.setUpdateTime(date);
 				mgpc.setStatus(PaymentCalenderStatusEnum.OVER);
 				updateMusicGroupPaymentCalenderList.add(mgpc);
-
+				//将0元未缴费学员缴费状态更新为已缴费
+				musicGroupPaymentCalenderDetailDao.updateNoPaymentAndZeroPaymentStatus(mgpc.getId());
 			} else if (mgpc.getStartPaymentDate() != null && date.after(mgpc.getStartPaymentDate()) && mgpc.getStatus() == PaymentCalenderStatusEnum.NO) {
 				MusicGroup musicGroup = musicGroupDao.get(mgpc.getMusicGroupId());
 				if(musicGroup == null){
@@ -1220,10 +1228,16 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				}
 				MusicGroup musicGroup = musicGroupDao.get(calender.getMusicGroupId());
 				String configValue = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
-				String memo = "4?" + configValue + "/#/renew?musicGroupId=" + musicGroup.getId();
+				String memo = "4?" + configValue + "/#/musicGroupRenew?calenderId="+calender.getId()+"&id=" + calender.getMusicGroupId();
 				// 发送续费通知
 				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, push,
 						null, 0, memo, "STUDENT", musicGroup.getName());
+				//获取未缴费且不是0元的学员列表
+				Map<Integer,String> studentMaps = MapUtil.convertMybatisMap(musicGroupPaymentCalenderDetailDao.queryNoPaymentAndNotZeroStudent(calender.getId()));
+				if(studentMaps.size() > 0){
+					sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, studentMaps,
+							null, 0, memo, null, musicGroup.getName());
+				}
 			}
 		} else {
 			calender.setStatus(PaymentCalenderStatusEnum.NO);
@@ -1311,10 +1325,16 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				}
 				MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
 				String baseUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
-				String memo = "4?" + baseUrl + "/#/renew?musicGroupId=" + musicGroupId;
+				String memo = "4?" + baseUrl + "/#/musicGroupRenew?calenderId="+id+"&id=" + musicGroupId;
 				// 发送续费通知
 				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, push,
 						null, 0, memo, "STUDENT", musicGroup.getName());
+				//获取未缴费且不是0元的学员列表
+				Map<Integer,String> studentMaps = MapUtil.convertMybatisMap(musicGroupPaymentCalenderDetailDao.queryNoPaymentAndNotZeroStudent(id));
+				if(studentMaps.size() > 0){
+					sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, studentMaps,
+							null, 0, memo, null, musicGroup.getName());
+				}
 			}
 		} else {
 			// 获取课推送列表
@@ -1328,10 +1348,16 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 				}
 				MusicGroup musicGroup = musicGroupDao.get(calender.getMusicGroupId());
 				String baseUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
-				String memo = "4?" + baseUrl + "/#/renew?musicGroupId=" + calender.getMusicGroupId();
+				String memo = "4?" + baseUrl + "/#/musicGroupRenew?calenderId="+calender.getId()+"&id=" + calender.getMusicGroupId();
 				// 发送续费通知
 				sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, push,
 						null, 0, memo, "STUDENT", musicGroup.getName());
+				//获取未缴费且不是0元的学员列表
+				Map<Integer,String> studentMaps = MapUtil.convertMybatisMap(musicGroupPaymentCalenderDetailDao.queryNoPaymentAndNotZeroStudent(id));
+				if(studentMaps.size() > 0){
+					sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.AWSMS, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, studentMaps,
+							null, 0, memo, null, musicGroup.getName());
+				}
 			}
 		}
 	}

+ 7 - 46
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupStudentFeeServiceImpl.java

@@ -1,27 +1,22 @@
 package com.ym.mec.biz.service.impl;
 
+import java.math.BigDecimal;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.UpdateStudentFeeDto;
-import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
-import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
-import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.service.MusicGroupStudentFeeService;
-import com.ym.mec.biz.service.SysConfigService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.util.*;
 
 @Service
 public class MusicGroupStudentFeeServiceImpl extends BaseServiceImpl<Long, MusicGroupStudentFee> implements MusicGroupStudentFeeService {
@@ -45,40 +40,6 @@ public class MusicGroupStudentFeeServiceImpl extends BaseServiceImpl<Long, Music
 
 	@Override
 	public boolean refreshPaymentFeeStatus() {
-
-		int days = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.REFRESH_PAYMENT_STATUS_EARLY_DAYS));
-
-		Date date = new Date();
-
-		List<MusicGroupStudentFee> updateList = new ArrayList<MusicGroupStudentFee>();
-
-		List<MusicGroupStudentFee> musicGroupStudentFeeList = musicGroupStudentFeeDao.queryWillRenewList(days);
-		for (MusicGroupStudentFee musicGroupStudentFee : musicGroupStudentFeeList) {
-			//课程费用为空,或者课程费用为0,只更新下次缴费时间
-			if (musicGroupStudentFee.getPaymentStatus() == PaymentStatus.PAID_COMPLETED &&
-					(musicGroupStudentFee.getCourseFee() != null && musicGroupStudentFee.getCourseFee().doubleValue() > 0)) {
-				musicGroupStudentFee.setPaymentStatus(PaymentStatus.NON_PAYMENT);
-				musicGroupStudentFee.setUpdateTime(date);
-				updateList.add(musicGroupStudentFee);
-			}
-		}
-
-		if (updateList.size() > 0) {
-			musicGroupStudentFeeDao.batchUpdate(updateList);
-			MusicGroup musicGroup = musicGroupDao.get(updateList.get(0).getMusicGroupId());
-			Map<Integer, String> push = new HashMap<>();
-			for (MusicGroupStudentFee sf : updateList) {
-				push.put(sf.getUserId(), sf.getUserId() + "");
-			}
-			String baseUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
-			String memo = "4?" + baseUrl + "/#/renew?musicGroupId=" + musicGroup.getId();
-			// 发送续费通知
-			sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.STUDENT_PUSH_WAIT_RENEW_MESSAGE, push, null, 0, memo,"STUDENT",musicGroup.getName());
-		}
-
-		// int i = DateUtil.daysBetween(new Date(), musicGroupStudentFee.getNextPaymentDate());
-		// e.setRenewStatus(i < 8 ? 0 : 1);
-
 		return true;
 	}
 

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

@@ -238,7 +238,7 @@ public class MusicGroupSubjectPlanServiceImpl extends BaseServiceImpl<Integer, M
         for (MusicGroupGoodsAndDiscountDto musicGroupGoodsAndDiscountDto : goodsList) {
             if (musicGroupGoodsAndDiscountDto.getType() != null && musicGroupGoodsAndDiscountDto.getType().equals(GoodsType.INSTRUMENT)) {
                 musicGroupGoodsAndDiscountDto.setDiscountRate(subjectDiscount.getGoodsDiscountRate());
-                musicGroupGoodsAndDiscountDto.setGroupPurchasePrice(musicGroupGoodsAndDiscountDto.getDiscountPrice().multiply(subjectDiscount.getGoodsDiscountRate()).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP));
+                musicGroupGoodsAndDiscountDto.setGroupPurchasePrice(musicGroupGoodsAndDiscountDto.getDiscountPrice().multiply(subjectDiscount.getGoodsDiscountRate()).divide(new BigDecimal(100), 0, BigDecimal.ROUND_HALF_UP));
             }
         }
         return goodsList;

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

@@ -687,4 +687,13 @@ public class StudentManageServiceImpl implements StudentManageService {
     public List<BasicUserDto> queryCanAddStudent(String musicGroupId, String batchNo,String search,Integer subjectId) {
         return studentManageDao.queryCanAddStudent(musicGroupId, batchNo,search,subjectId);
     }
+
+    @Override
+    public List<BasicUserDto> queryGroupStudents(String groupType) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null || sysUser.getId() == null){
+            throw new BizException("用户信息获取失败");
+        }
+        return studentManageDao.queryGroupStudents(groupType,sysUser.getId());
+    }
 }

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

@@ -17,6 +17,7 @@ import java.util.stream.Collectors;
 import javax.annotation.Resource;
 
 import com.ym.mec.biz.dal.dao.*;
+import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.util.date.DateUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -31,12 +32,6 @@ 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.auth.api.entity.SysUserRole;
-import com.ym.mec.biz.dal.dto.CourseFormDto;
-import com.ym.mec.biz.dal.dto.StudentAddDto;
-import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
-import com.ym.mec.biz.dal.dto.StudentFeeDetailDto;
-import com.ym.mec.biz.dal.dto.StudentInfo;
-import com.ym.mec.biz.dal.dto.StudentMusicDetailDto;
 import com.ym.mec.biz.dal.entity.ClassGroup;
 import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
 import com.ym.mec.biz.dal.entity.CooperationOrgan;

+ 51 - 40
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -3,10 +3,13 @@ package com.ym.mec.biz.service.impl;
 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.SysConfigDao;
 import com.ym.mec.biz.dal.dao.SysMessageDao;
+import com.ym.mec.biz.dal.dao.WaitSendMessageDao;
 import com.ym.mec.biz.dal.dto.Mapper;
 import com.ym.mec.biz.dal.entity.SysMessage;
 import com.ym.mec.biz.dal.entity.SysMessageConfig;
+import com.ym.mec.biz.dal.entity.WaitSendMessage;
 import com.ym.mec.biz.dal.enums.MessageSendMode;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.SendStatusEnum;
@@ -23,6 +26,7 @@ import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
+import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.string.MessageFormatter;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -31,10 +35,13 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 import java.util.Map.Entry;
 
+import static com.ym.mec.biz.dal.enums.MessageTypeEnum.STUDENT_PUSH_VIP_BUY;
+
 @Service
 public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> implements SysMessageService {
 
@@ -53,6 +60,12 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	private SysUserFeignService sysUserFeignService;
 
 	@Autowired
+	private WaitSendMessageDao waitSendMessageDao;
+
+	@Autowired
+	private SysConfigDao sysConfigDao;
+
+	@Autowired
 	private ImFeignService imFeignService;
 
 	@Autowired
@@ -239,57 +252,55 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	}
 
 	@Override
-	@Async
-	public boolean batchSendMessage(MessageSender messageSender, String subject, String content, Map<Integer, String> receivers, Date triggerTime,
-			Integer readStatus, String memo, String group,String jpushType) {
-
-		if (receivers == null || receivers.size() == 0) {
-			throw new BizException("消息接收人不能为空");
-		}
-		if (StringUtils.isBlank(content)) {
-			throw new BizException("消息内容不能为空");
-		}
-		String[] tos = receivers.values().toArray(new String[receivers.size()]);
-		if (tos != null && tos.length > 0) {
-			Date date = new Date();
-			SendStatusEnum status = SendStatusEnum.WAIT;
-
-			String errorMsg = null;
-			try {
-				// 立即发送
-				if (triggerTime == null || date.after(triggerTime)) {
-					status = SendStatusEnum.SENDING;
-					if (debugMode == true || messageSenderPluginContext.batchSend(messageSender, subject, content, tos, memo,jpushType)) {
-						status = SendStatusEnum.SUCCESSED;
-					} else {
-						status = SendStatusEnum.FAILED;
-					}
-				}
-			} catch (Exception e) {
-				status = SendStatusEnum.FAILED;
-				errorMsg = e.getMessage();
-				LOGGER.warn("消息发送失败", e);
-			}
-			MessageSendMode mode = MessageSendMode.SMS;
-			if (messageSender.getSendMode().equals("PUSH")) {
-				mode = MessageSendMode.PUSH;
-			} else if (messageSender.getSendMode().equals("EMAIL")) {
-				mode = MessageSendMode.EMAIL;
+	public void pushWaitSendMessageTask() {
+		List<WaitSendMessage> all = waitSendMessageDao.findAll(null);
+		for (WaitSendMessage waitSendMessage : all) {
+			Map<Integer,String> map = (Map<Integer,String>) JSON.parseObject(waitSendMessage.getReceivers(), Map.class);
+			String[] args = null;
+			if(waitSendMessage.getAgrs() != null){
+				List<String> strings = JSON.parseArray(waitSendMessage.getAgrs(), String.class);
+				String[] str = new String[strings.size()];
+				args = strings.toArray(str);
 			}
-			return addMessage(receivers, subject, content, triggerTime, mode, status, errorMsg, readStatus, memo, null) > 0;
+			batchSendMessage(MessageSender.valueOf(waitSendMessage.getMessageSender()),
+					MessageTypeEnum.valueOf(waitSendMessage.getMessageType()),map,null,0,
+					waitSendMessage.getUrl(),waitSendMessage.getJpushType(),args);
+			waitSendMessageDao.delete(waitSendMessage.getId());
 		}
-
-		return false;
 	}
 
 	@Override
 	@Async
 	public void batchSendMessage(MessageSender messageSender, MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
 			String url,String jpushType, Object... args) {
-
 		if (receivers == null || receivers.size() == 0) {
 			throw new BizException("接收地址不能为空");
 		}
+		if(StringUtils.isNotEmpty(jpushType) && jpushType == "STUDENT"){
+			//如果不是缴费信息
+			if(type != STUDENT_PUSH_VIP_BUY){
+				int hour = DateUtil.getHour(new Date());
+				//如果当前时间在22点之后
+				String messageTime = sysConfigDao.findConfigValue("wait_send_message_time");
+				if(StringUtils.isEmpty(messageTime)){
+					messageTime = "22";
+				}
+				if(hour > Integer.parseInt(messageTime)-1){
+					//保存推送信息
+					WaitSendMessage waitSendMessage = new WaitSendMessage();
+					if(args != null){
+						waitSendMessage.setAgrs(JSON.toJSONString(args));
+					}
+					waitSendMessage.setJpushType(jpushType);
+					waitSendMessage.setMessageSender(messageSender.name());
+					waitSendMessage.setMessageType(type.name());
+					waitSendMessage.setReceivers(JSON.toJSONString(receivers));
+					waitSendMessage.setUrl(url);
+					waitSendMessageDao.insert(waitSendMessage);
+					return;
+				}
+			}
+		}
 		String[] tos = receivers.values().toArray(new String[receivers.size()]);
 		SysMessageConfig messageConfig = sysMessageConfigService.queryByType(type);
 		if (messageConfig == null) {

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

@@ -384,7 +384,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			Date add1Minutes = DateUtil.addMinutes(classStartDateTime, -1);
 			int secondsBetween = DateUtil.secondsBetween(date, add1Minutes);
 
-			if(yesOrNoEnum != YesOrNoEnum.YES && secondsBetween <= 60){
+			if(yesOrNoEnum != YesOrNoEnum.YES && secondsBetween <= 0){
 				teacherAttendance.setSignInStatus(YesOrNoEnum.NO);
 			}
 			teacherAttendanceDao.update(teacherAttendance);

+ 23 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/WaitSendMessageServiceImpl.java

@@ -0,0 +1,23 @@
+package com.ym.mec.biz.service.impl;
+
+
+import com.ym.mec.biz.dal.dao.WaitSendMessageDao;
+import com.ym.mec.biz.dal.entity.WaitSendMessage;
+import com.ym.mec.biz.service.WaitSendMessageService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class WaitSendMessageServiceImpl extends BaseServiceImpl<Integer, WaitSendMessage> implements WaitSendMessageService {
+	
+	@Autowired
+	private WaitSendMessageDao waitSendMessageDao;
+
+	@Override
+	public BaseDAO<Integer, WaitSendMessage> getDAO() {
+		return waitSendMessageDao;
+	}
+	
+}

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupPaymentCalenderDetailMapper.xml

@@ -382,4 +382,15 @@
 	<select id="queryNoPaymentStudentIds" resultType="java.lang.Integer">
 		SELECT user_id_ FROM music_group_payment_calender_detail WHERE music_group_payment_calender_id_ = #{calenderId} AND payment_status_ = 'NON_PAYMENT'
 	</select>
+
+	<select id="queryNoPaymentAndNotZeroStudent" resultType="java.util.Map">
+		SELECT mgpcd.user_id_ 'key',su.phone_ 'value' FROM music_group_payment_calender_detail mgpcd
+		LEFT JOIN sys_user su ON su.id_ = mgpcd.user_id_
+		WHERE music_group_payment_calender_id_ = #{calenderId} AND expect_amount_ != 0 AND payment_status_ = 'NON_PAYMENT'
+    </select>
+
+	<update id="updateNoPaymentAndZeroPaymentStatus">
+		UPDATE music_group_payment_calender_detail SET payment_status_ = 'PAID_COMPLETED',actual_amount_ = 0,update_time_ = NOW()
+		WHERE music_group_payment_calender_id_ = #{calenderId} AND expect_amount_ = 0 AND payment_status_ = 'NON_PAYMENT'
+	</update>
 </mapper>

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

@@ -813,4 +813,24 @@
 		GROUP BY cssp.`user_id_`
     </select>
 
+    <select id="queryGroupStudents" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.BasicUserDto">
+        SELECT su.id_,su.username_,su.phone_,su.avatar_ head_url_,su.gender_ FROM
+        <if test="groupType = 'PRACTICE'">
+            practice_group pg
+        </if>
+        <if test="groupType = 'VIP'">
+            vip_group pg
+        </if>
+        LEFT JOIN class_group_student_mapper cgsm ON pg.id_ = cgsm.music_group_id_
+        LEFT JOIN sys_user su ON cgsm.user_id_ = su.id_
+        WHERE cgsm.group_type_ = #{groupType} AND cgsm.status_ != 'QUIT'
+        AND pg.educational_teacher_id_ = #{userId}
+        <if test="groupType = 'PRACTICE'">
+            AND pg.group_status_ NOT IN ('FINISH','CANCEL')
+        </if>
+        <if test="groupType = 'VIP'">
+            AND pg.group_status_ IN (0,1,2,5)
+        </if>
+        GROUP BY cgsm.user_id_
+    </select>
 </mapper>

+ 74 - 0
mec-biz/src/main/resources/config/mybatis/WaitSendMessageMapper.xml

@@ -0,0 +1,74 @@
+<?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.WaitSendMessageDao">
+	
+	<resultMap type="com.ym.mec.biz.dal.entity.WaitSendMessage" id="WaitSendMessage">
+		<result column="id_" property="id" />
+		<result column="message_sender_" property="messageSender" />
+		<result column="message_type_" property="messageType" />
+		<result column="receivers_" property="receivers" />
+		<result column="url_" property="url" />
+		<result column="jpush_type_" property="jpushType" />
+		<result column="agrs_" property="agrs" />
+		<result column="create_time_" property="createTime" />
+	</resultMap>
+	
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="WaitSendMessage" >
+		SELECT * FROM wait_send_message WHERE id_ = #{id} 
+	</select>
+	
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="WaitSendMessage">
+		SELECT * FROM wait_send_message ORDER BY id_
+	</select>
+	
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.WaitSendMessage" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO wait_send_message (message_sender_,message_type_,receivers_,url_,jpush_type_,agrs_,create_time_)
+		VALUES(#{messageSender},#{messageType},#{receivers},#{url},#{jpushType},#{agrs},NOW())
+	</insert>
+	
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.WaitSendMessage">
+		UPDATE wait_send_message <set>
+		<if test="receivers != null">
+		receivers_ = #{receivers},
+		</if>
+		<if test="messageType != null">
+		message_type_ = #{messageType},
+		</if>
+		<if test="url != null">
+		url_ = #{url},
+		</if>
+		<if test="jpushType != null">
+		jpush_type_ = #{jpushType},
+		</if>
+		<if test="messageSender != null">
+		message_sender_ = #{messageSender},
+		</if>
+		<if test="agrs != null">
+		agrs_ = #{agrs},
+		</if>
+		</set> WHERE id_ = #{id}
+	</update>
+	
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete" >
+		DELETE FROM wait_send_message WHERE id_ = #{id} 
+	</delete>
+	
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="WaitSendMessage" parameterType="map">
+		SELECT * FROM wait_send_message ORDER BY id_ <include refid="global.limit"/>
+	</select>
+	
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(*) FROM wait_send_message
+	</select>
+</mapper>

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

@@ -9,6 +9,10 @@ import com.ym.mec.task.fallback.TaskRemoteServiceFallback;
 @FeignClient(name = "web-server", contextId = "TaskRemoteService", configuration = { FeignConfiguration.class }, fallback = TaskRemoteServiceFallback.class)
 public interface TaskRemoteService {
 
+	@GetMapping(value = "task/pushWaitSendMessageTask")
+	// 每天9点推送前一天22点之后的推送消息
+	public void pushWaitSendMessageTask();
+
 	@GetMapping(value = "task/pushTeacherExceptionAttendanceTask")
 	// 教师异常考勤推送
 	public void pushTeacherExceptionAttendanceTask();

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

@@ -152,6 +152,11 @@ public class TaskRemoteServiceFallback implements TaskRemoteService {
 	}
 
 	@Override
+	public void pushWaitSendMessageTask() {
+		logger.info("延时推送执行失败");
+	}
+
+	@Override
 	public void pushTeacherExceptionAttendanceTask() {
 		logger.info("教师异常考勤推送失败");
 	}

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

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

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

@@ -78,6 +78,8 @@ public class TaskController extends BaseController {
 	private GoodsService goodsService;
 	@Autowired
 	private StudentGoodsSellService studentGoodsSellService;
+	@Autowired
+	private SysMessageService sysMessageService;
 
 	@Autowired
 	private CourseEventSource courseEventSource;
@@ -88,6 +90,12 @@ public class TaskController extends BaseController {
 		studentGoodsSellService.affirmReceive(null);
 	}
 
+	@GetMapping(value = "/pushWaitSendMessageTask")
+	// 每天9点推送前一天22点之后的推送消息
+	public void pushWaitSendMessageTask(){
+		sysMessageService.pushWaitSendMessageTask();
+	}
+
 	@GetMapping(value = "/repertoryWarn")
 	// 商品库存预警
 	public void repertoryWarn(){

+ 9 - 0
mec-web/src/main/java/com/ym/mec/web/controller/education/EduStudentStudentController.java

@@ -1,5 +1,6 @@
 package com.ym.mec.web.controller.education;
 
+import com.ym.mec.biz.service.StudentManageService;
 import io.swagger.annotations.ApiOperation;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,6 +24,8 @@ public class EduStudentStudentController extends BaseController {
     private StudentAttendanceService studentAttendanceService;
     @Autowired
     private StudentRegistrationService studentRegistrationService;
+    @Autowired
+    private StudentManageService studentManageService;
 
     @ApiOperation(value = "获取某节课学生签到列表")
     @GetMapping("eduStudentAttendance/findStudentAttendance")
@@ -36,4 +39,10 @@ public class EduStudentStudentController extends BaseController {
         return succeed(studentRegistrationService.getStudentDetail(studentId));
     }
 
+    @ApiOperation(value = "教务老师关联的学员列表")
+    @PostMapping("studentManage/queryGroupStudents")
+    public Object queryGroupStudents(String groupType){
+        return succeed(studentManageService.queryGroupStudents(groupType));
+    }
+
 }