Joburgess 5 lat temu
rodzic
commit
29bd89f291

+ 3 - 1
edu-common/src/main/java/com/keao/edu/common/enums/MessageTypeEnum.java

@@ -5,7 +5,9 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     SMS_VERIFY_CODE_LOGIN("SMS_VERIFY_CODE_LOGIN", "验证码登录"),
     EXAM_REGISTRATION_URL_SMS("EXAM_REGISTRATION_URL_SMS", "报名连接推送"),
     STUDENT_EXAM_START("STUDENT_EXAM_START", "考试已开始"),
-    EXAM_REGISTRATION_CLOSE_SMS("EXAM_REGISTRATION_CLOSE_SMS", "关闭报名");
+    EXAM_REGISTRATION_CLOSE_SMS("EXAM_REGISTRATION_CLOSE_SMS", "关闭报名"),
+    EXAM_CLOSE_SMS("EXAM_CLOSE_SMS", "项目关闭"),
+    EXAM_REGIST_TIME_CHANGE_SMS("EXAM_REGIST_TIME_CHANGE_SMS", "报名时间调整");
 
     MessageTypeEnum(String code, String msg) {
         this.code = code;

+ 2 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/ExamOrganizationRelationDao.java

@@ -71,6 +71,8 @@ public interface ExamOrganizationRelationDao extends BaseDAO<Long, ExamOrganizat
      */
     List<ExamOrganizationRelation> getWithExam(@Param("examId") Integer examId);
 
+    List<ExamOrganizationRelation> getOrganInfoWithExam(@Param("examId") Integer examId);
+
     List<ExamOrganizationRelation> getWithExams(@Param("examIds") List<Long> examIds);
 
     List<ExamOrganizationRelation> getWithExamsAndOrgans(@Param("examIds") List<Long> examIds,

+ 9 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamOrganizationRelationService.java

@@ -77,6 +77,15 @@ public interface ExamOrganizationRelationService extends BaseService<Long, ExamO
     void examStatusChangePush(Long examId, ExamStatusEnum examStatus);
 
     /**
+     * @describe 考级项目时间调整推送
+     * @author Joburgess
+     * @date 2020.07.21
+     * @param examId:
+     * @return void
+     */
+    void examDateChangePush(Long examId);
+
+    /**
      * @describe 获取本单位统计信息
      * @author Joburgess
      * @date 2020.07.16

+ 60 - 3
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamOrganizationRelationServiceImpl.java

@@ -367,17 +367,74 @@ public class ExamOrganizationRelationServiceImpl extends BaseServiceImpl<Long, E
 		if(Objects.isNull(exam)){
 			return;
 		}
+
+		MessageTypeEnum messageType=null;
+
+		switch (examStatus){
+			case APPLIED:
+				messageType = MessageTypeEnum.EXAM_REGISTRATION_CLOSE_SMS;
+				break;
+			case CLOSE:
+				messageType = MessageTypeEnum.EXAM_CLOSE_SMS;
+				break;
+		}
+
+		if(Objects.isNull(messageType)){
+			return;
+		}
+
 		TenantInfo tenantInfo = tenantInfoDao.getWithOrgan(exam.getOrganId());
-		SysUser organUser = sysUserDao.getWithOrgan(exam.getOrganId());
+		List<ExamOrganizationRelation> examOrgans = examOrganizationRelationDao.getOrganInfoWithExam(examId.intValue());
 		Map<Integer, String> userPhoneMap = new HashMap<>();
-		userPhoneMap.put(organUser.getId(), organUser.getPhone());
+		for (ExamOrganizationRelation examOrgan : examOrgans) {
+			if(examOrgan.getOrganId().equals(exam.getOrganId())){
+				continue;
+			}
+			userPhoneMap.put(examOrgan.getOrganization().getUserId(), examOrgan.getOrganization().getContactPhone());
+		}
 
-		sysMessageService.batchSendMessage(MessageTypeEnum.EXAM_REGISTRATION_CLOSE_SMS,
+		if(CollectionUtils.isEmpty(userPhoneMap)){
+			return;
+		}
+
+		sysMessageService.batchSendMessage(messageType,
 				userPhoneMap, null, 0, null, YimeiSmsPlugin.PLUGIN_NAME,
 				tenantInfo.getName(), exam.getName());
 	}
 
 	@Override
+	public void examDateChangePush(Long examId) {
+		if(Objects.isNull(examId)){
+			return;
+		}
+		ExaminationBasic exam = examinationBasicDao.get(examId);
+		if(Objects.isNull(exam)){
+			return;
+		}
+
+		TenantInfo tenantInfo = tenantInfoDao.getWithOrgan(exam.getOrganId());
+		List<ExamOrganizationRelation> examOrgans = examOrganizationRelationDao.getOrganInfoWithExam(examId.intValue());
+		Map<Integer, String> userPhoneMap = new HashMap<>();
+		for (ExamOrganizationRelation examOrgan : examOrgans) {
+			if(examOrgan.getOrganId().equals(exam.getOrganId())){
+				continue;
+			}
+			userPhoneMap.put(examOrgan.getOrganization().getUserId(), examOrgan.getOrganization().getContactPhone());
+		}
+
+		if(CollectionUtils.isEmpty(userPhoneMap)){
+			return;
+		}
+
+		String enrollStartTimeStr = DateUtil.dateToString(exam.getEnrollStartTime(), "yyyy年MM月dd日 HH时mm分");
+		String enrollEndTimeStr = DateUtil.dateToString(exam.getEnrollEndTime(), "yyyy年MM月dd日 HH时mm分");
+
+		sysMessageService.batchSendMessage(MessageTypeEnum.EXAM_REGIST_TIME_CHANGE_SMS,
+				userPhoneMap, null, 0, null, YimeiSmsPlugin.PLUGIN_NAME,
+				tenantInfo.getName(), exam.getName(), enrollStartTimeStr, enrollEndTimeStr);
+	}
+
+	@Override
 	public ExamOrganStatisticsDto getExamOrganStatistics(Integer organId, Long examId) {
 		if(Objects.isNull(examId)){
 			throw new BizException("请指定考级项目");

+ 9 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExaminationBasicServiceImpl.java

@@ -171,6 +171,7 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
             examLifecycleLogDao.insert(new ExamLifecycleLog(existsExam.getId().intValue(), "确认考试结果", operatorId));
         }else if(ExamStatusEnum.CLOSE.equals(statusEnum)){
             examLifecycleLogDao.insert(new ExamLifecycleLog(existsExam.getId().intValue(), "关闭考级项目", operatorId));
+            examOrganizationRelationService.examStatusChangePush(examId, statusEnum);
         }
         if(ExamStatusEnum.CLOSE.equals(existsExam.getStatus())){
             examLifecycleLogDao.insert(new ExamLifecycleLog(existsExam.getId().intValue(), "开启考级项目", operatorId));
@@ -277,6 +278,8 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
             examinationBasic.setExamLocationNameList(StringUtils.join(organNameMap.values(),","));
         }
 
+        boolean examRegistIsChange=false;
+
         if(Objects.nonNull(examinationBasic.getEnrollStartTime())
                 &&examinationBasic.getEnrollStartTime().compareTo(existsExam.getEnrollStartTime())!=0){
             if(ExamStatusEnum.EXAM_ING.equals(existsExam.getStatus())||
@@ -284,6 +287,7 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
                 throw new BizException("无法修改");
             }
             examLifecycleLogDao.insert(new ExamLifecycleLog(existsExam.getId().intValue(), "修改报名时间", operatorId));
+            examRegistIsChange=true;
         }
         if(Objects.nonNull(examinationBasic.getEnrollEndTime())
                 &&examinationBasic.getEnrollEndTime().compareTo(existsExam.getEnrollEndTime())!=0){
@@ -292,6 +296,7 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
                 throw new BizException("无法修改");
             }
             examLifecycleLogDao.insert(new ExamLifecycleLog(existsExam.getId().intValue(), "修改报名时间", operatorId));
+            examRegistIsChange=true;
         }
         if(Objects.nonNull(examinationBasic.getEnrollStartTime())&&Objects.nonNull(examinationBasic.getEnrollEndTime())&&!ExamStatusEnum.SETTING.equals(existsExam.getStatus())){
             if(examinationBasic.getEnrollStartTime().compareTo(examinationBasic.getEnrollEndTime())>=0){
@@ -308,6 +313,9 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
         }
 
         examinationBasicDao.update(examinationBasic);
+        if(examRegistIsChange){
+            examOrganizationRelationService.examDateChangePush(examinationBasic.getId());
+        }
     }
 
     @Override
@@ -332,6 +340,7 @@ public class ExaminationBasicServiceImpl extends BaseServiceImpl<Long, Examinati
         examinationBasic.setMemo(reason);
         examinationBasic.setStatus(ExamStatusEnum.CLOSE);
         examinationBasicDao.update(examinationBasic);
+        examOrganizationRelationService.examStatusChangePush(examId.longValue(), ExamStatusEnum.CLOSE);
     }
 
     @Override

+ 14 - 0
edu-user/edu-user-server/src/main/resources/config/mybatis/ExamOrganizationRelationMapper.xml

@@ -23,6 +23,7 @@
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 		<result column="tenant_id_" property="tenantId" />
+		<association property="organization" columnPrefix="organ_" resultMap="com.keao.edu.user.dao.OrganizationDao.Organization" />
 	</resultMap>
 
 	<resultMap id="ExamOrganizationRelationExtraDto" type="com.keao.edu.user.dto.ExamOrganizationRelationExtraDto" extends="ExamOrganizationRelation">
@@ -263,6 +264,19 @@
 		SELECT * FROM exam_organization_relation WHERE examination_basic_id_=#{examId}
 	</select>
 
+	<select id="getOrganInfoWithExam" resultMap="ExamOrganizationRelation">
+		SELECT
+			eor.*,
+			o.user_id_ organ_user_id_,
+			o.contact_name_ organ_contact_name_,
+			o.contact_phone_ organ_contact_phone_
+		FROM
+			exam_organization_relation eor
+			LEFT JOIN organization o ON eor.organ_id_ = o.id_
+		WHERE
+			eor.examination_basic_id_ = #{examId}
+	</select>
+
 	<select id="getOrganIdsWithExam" resultType="int">
 		SELECT organ_id_ FROM exam_organization_relation WHERE examination_basic_id_=#{examId} FOR UPDATE
 	</select>