Ver Fonte

阅卷待办短信

wangliang há 3 meses atrás
pai
commit
314cdbfcaa

+ 27 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicMessageService.java

@@ -4,10 +4,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.entity.BasicMessage;
 import com.qmth.distributed.print.business.entity.ExamTask;
-import com.qmth.teachcloud.common.enums.MessageEnum;
 import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
-import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.EnumResult;
+import com.qmth.teachcloud.common.enums.MessageEnum;
 
 import java.util.List;
 
@@ -92,4 +91,29 @@ public interface BasicMessageService extends IService<BasicMessage> {
      * @param id
      */
     void resendSmsTaskById(Long id);
-}
+
+    /**
+     * 保存message和备注
+     *
+     * @param schoolId
+     * @param userId
+     * @param userName
+     * @param mobileNumber
+     * @param paperNumber
+     * @param courseCode
+     * @param variableParams
+     * @param messageType
+     * @param createId
+     * @param remark
+     */
+    void saveMessageSendLogRemark(Long schoolId, Long userId, String userName, String mobileNumber, String paperNumber, String courseCode, String variableParams, MessageEnum messageType, Long createId, String remark);
+
+    /**
+     * 发送阅卷待办短信
+     *
+     * @param examId
+     * @param courseId
+     * @param paperNumber
+     */
+    void smsMarkTask(Long examId, Long courseId, String paperNumber);
+}

+ 94 - 10
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicMessageServiceImpl.java

@@ -5,27 +5,32 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.ImmutableMap;
 import com.qmth.distributed.print.business.entity.BasicMessage;
 import com.qmth.distributed.print.business.entity.ExamTask;
-import com.qmth.teachcloud.common.bean.result.SmsResponseResult;
-import com.qmth.teachcloud.common.enums.MessageEnum;
 import com.qmth.distributed.print.business.mapper.BasicMessageMapper;
 import com.qmth.distributed.print.business.service.BasicMessageService;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import com.qmth.teachcloud.common.bean.dto.MarkTaskSmsDto;
 import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
+import com.qmth.teachcloud.common.bean.result.SmsResponseResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysConfig;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.EnumResult;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.MessageEnum;
 import com.qmth.teachcloud.common.service.AuthInfoService;
 import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.service.CommonCacheService;
 import com.qmth.teachcloud.common.service.SysConfigService;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.common.util.SmsSendUtil;
+import com.qmth.teachcloud.mark.service.MarkUserQuestionService;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.*;
@@ -53,11 +58,14 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
     @Resource
     private BasicRoleDataPermissionService basicRoleDataPermissionService;
 
+    @Resource
+    MarkUserQuestionService markUserQuestionService;
+
     @Override
     public IPage<BasicMessage> listByMessageType(MessageEnum messageType, Boolean sendStatus, String mobileNumber, Integer pageNumber, Integer pageSize) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId,requestUser.getId(),ServletUtil.getRequest().getServletPath());
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
 
         Page<BasicMessage> page = new Page<>(pageNumber, pageSize);
         QueryWrapper<BasicMessage> queryWrapper = new QueryWrapper<>();
@@ -75,11 +83,11 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
         if (StringUtils.isNotBlank(mobileNumber)) {
             queryWrapper.lambda().like(BasicMessage::getMobileNumber, "%" + mobileNumber + "%");
         }
-        if (SystemConstant.longNotNull(dpr.getRequestUserId())){
-            queryWrapper.lambda().eq(BasicMessage::getCreateId,dpr.getRequestUserId());
+        if (SystemConstant.longNotNull(dpr.getRequestUserId())) {
+            queryWrapper.lambda().eq(BasicMessage::getCreateId, dpr.getRequestUserId());
         }
-        if (dpr.getOrgIdSet() != null && dpr.getOrgIdSet().size() > 0){
-            queryWrapper.lambda().in(BasicMessage::getOrgId,dpr.getOrgIdSet());
+        if (dpr.getOrgIdSet() != null && dpr.getOrgIdSet().size() > 0) {
+            queryWrapper.lambda().in(BasicMessage::getOrgId, dpr.getOrgIdSet());
         }
         queryWrapper.lambda().orderByDesc(BasicMessage::getCreateTime);
         return this.page(page, queryWrapper);
@@ -99,6 +107,65 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
         this.saveMessageResendLog(basicMessage);
     }
 
+    /**
+     * 保存message和备注
+     *
+     * @param schoolId
+     * @param userId
+     * @param userName
+     * @param mobileNumber
+     * @param paperNumber
+     * @param courseCode
+     * @param variableParams
+     * @param messageType
+     * @param createId
+     * @param remark
+     */
+    @Override
+    public void saveMessageSendLogRemark(Long schoolId, Long userId, String userName, String mobileNumber, String paperNumber, String courseCode, String variableParams, MessageEnum messageType, Long createId, String remark) {
+        this.saveMessageRemarkCommon(schoolId, userId, userName, mobileNumber, paperNumber, courseCode, variableParams, messageType, createId, remark);
+    }
+
+    /**
+     * 短信count
+     *
+     * @param userId
+     * @param mobileNumber
+     * @param condition
+     * @return
+     */
+    protected int smsConditionCount(Long userId, String mobileNumber, String condition) {
+        QueryWrapper<BasicMessage> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(BasicMessage::getUserId, userId)
+                .eq(BasicMessage::getMobileNumber, mobileNumber)
+                .eq(BasicMessage::getMessageType, MessageEnum.NOTICE_OF_MARK_TASK_CREATED)
+                .eq(BasicMessage::getSendStatus, "OK")
+                .and(w -> w.isNotNull(BasicMessage::getRemark).and(x -> x.eq(BasicMessage::getRemark, condition)));
+        return this.count(queryWrapper);
+    }
+
+    /**
+     * 发送阅卷待办短信
+     *
+     * @param examId
+     * @param courseId
+     * @param paperNumber
+     */
+    @Override
+    public void smsMarkTask(Long examId, Long courseId, String paperNumber) {
+        List<MarkTaskSmsDto> markTaskSmsDtoList = markUserQuestionService.findMarkTaskSms(examId, courseId, paperNumber);
+        if (CollectionUtils.isNotEmpty(markTaskSmsDtoList)) {
+            for (MarkTaskSmsDto m : markTaskSmsDtoList) {
+                StringJoiner stringJoiner = new StringJoiner("-");
+                stringJoiner.add(m.getExamId().toString()).add(m.getCourseId().toString()).add(m.getPaperNumber());
+                int count = this.smsConditionCount(m.getUserId(), m.getMobileNumber(), stringJoiner.toString());
+                if (count == 0) {
+                    this.saveMessageSendLogRemark(m.getSchoolId(), m.getUserId(), m.getRealName(), m.getMobileNumber(), m.getPaperNumber(), null, JSON.toJSONString(ImmutableMap.of("courseName", m.getCourseName(), "examName", m.getExamName())), MessageEnum.NOTICE_OF_MARK_TASK_CREATED, -1L, stringJoiner.toString());
+                }
+            }
+        }
+    }
+
     /**
      * 发送短信
      *
@@ -113,10 +180,28 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
      * @param remark
      */
     public void saveMessageSendLog(Long schoolId, Long userId, String userName, String mobileNumber, String paperNumber, String courseCode, String variableParams, MessageEnum messageType, Long createId, String remark) {
-        if(!authInfoService.allowPhoneLogin(schoolId)){
+        if (!authInfoService.allowPhoneLogin(schoolId)) {
             return;
         }
+        this.saveMessageRemarkCommon(schoolId, userId, userName, mobileNumber, paperNumber, courseCode, variableParams, messageType, createId, remark);
+    }
 
+    /**
+     * 保存消息和备注
+     *
+     * @param schoolId
+     * @param userId
+     * @param userName
+     * @param mobileNumber
+     * @param paperNumber
+     * @param courseCode
+     * @param variableParams
+     * @param messageType
+     * @param createId
+     * @param remark
+     */
+    @Transactional
+    public void saveMessageRemarkCommon(Long schoolId, Long userId, String userName, String mobileNumber, String paperNumber, String courseCode, String variableParams, MessageEnum messageType, Long createId, String remark) {
         BasicMessage basicMessage = new BasicMessage();
         String templateCode = null;
         try {
@@ -161,7 +246,6 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
             }
             basicMessage.setSendStatus(smsResponseResult.getCode());
             basicMessage.setSendResult(smsResponseResult.getMessage());
-
         } catch (Exception e) {
             basicMessage.setSendStatus("SYSTEM_ERROR");
             basicMessage.setSendResult(e.getMessage());
@@ -245,7 +329,7 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
             if (basicMessage == null) {
                 return;
             }
-            if(!authInfoService.allowPhoneLogin(basicMessage.getSchoolId())){
+            if (!authInfoService.allowPhoneLogin(basicMessage.getSchoolId())) {
                 return;
             }
             if ("OK".equals(basicMessage.getSendStatus())) {

+ 1 - 13
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/service/impl/JobServiceImpl.java

@@ -1,7 +1,5 @@
 package com.qmth.teachcloud.task.job.service.impl;
 
-import com.alibaba.fastjson.JSON;
-import com.google.common.collect.ImmutableMap;
 import com.qmth.boot.redis.uid.RedisMachineService;
 import com.qmth.distributed.print.business.bean.dto.initMarkData.ExamDetailCourseInitMarkDto;
 import com.qmth.distributed.print.business.entity.*;
@@ -9,13 +7,11 @@ import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTemplateService;
 import com.qmth.distributed.print.business.util.ExamTaskUtil;
-import com.qmth.teachcloud.common.bean.dto.MarkTaskSmsDto;
 import com.qmth.teachcloud.common.bean.dto.MqDto;
 import com.qmth.teachcloud.common.bean.vo.PaperInfoVo;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicCourse;
 import com.qmth.teachcloud.common.entity.MarkQuestion;
-import com.qmth.teachcloud.common.enums.MessageEnum;
 import com.qmth.teachcloud.common.enums.PushTypeEnum;
 import com.qmth.teachcloud.common.enums.TaskResultEnum;
 import com.qmth.teachcloud.common.enums.TaskStatusEnum;
@@ -38,7 +34,6 @@ import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -155,14 +150,7 @@ public class JobServiceImpl implements JobService {
             List<MarkPaper> markPaperList = markPaperService.listQualityMarkPaperByStatus(MarkPaperStatus.FORMAL, 0);
             for (MarkPaper markPaper : markPaperList) {
                 markService.buildMarkTask(markPaper);
-                List<MarkTaskSmsDto> markTaskSmsDtoList = markUserQuestionService.findMarkTaskSms(markPaper.getExamId(), markPaper.getCourseId(), markPaper.getPaperNumber());
-                if (CollectionUtils.isNotEmpty(markTaskSmsDtoList)) {
-                    for (MarkTaskSmsDto m : markTaskSmsDtoList) {
-                        if (Objects.equals(m.getMobileNumber(), "18008659246")) {
-                            basicMessageService.saveMessageSendLog(m.getSchoolId(), m.getUserId(), m.getRealName(), m.getMobileNumber(), JSON.toJSONString(ImmutableMap.of("courseName", m.getCourseName(), "examName", m.getExamName())), MessageEnum.NOTICE_OF_MARK_TASK_CREATED);
-                        }
-                    }
-                }
+                basicMessageService.smsMarkTask(markPaper.getExamId(), markPaper.getCourseId(), markPaper.getPaperNumber());
             }
         } catch (Exception e) {
             log.error("auto-create library error", e);