|
@@ -5,27 +5,32 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
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.BasicMessage;
|
|
import com.qmth.distributed.print.business.entity.ExamTask;
|
|
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.mapper.BasicMessageMapper;
|
|
import com.qmth.distributed.print.business.service.BasicMessageService;
|
|
import com.qmth.distributed.print.business.service.BasicMessageService;
|
|
import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
|
|
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.params.ApproveUserResult;
|
|
|
|
+import com.qmth.teachcloud.common.bean.result.SmsResponseResult;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.entity.SysConfig;
|
|
import com.qmth.teachcloud.common.entity.SysConfig;
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
import com.qmth.teachcloud.common.enums.EnumResult;
|
|
import com.qmth.teachcloud.common.enums.EnumResult;
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
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.AuthInfoService;
|
|
import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
|
|
import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
|
|
import com.qmth.teachcloud.common.service.CommonCacheService;
|
|
import com.qmth.teachcloud.common.service.CommonCacheService;
|
|
import com.qmth.teachcloud.common.service.SysConfigService;
|
|
import com.qmth.teachcloud.common.service.SysConfigService;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
import com.qmth.teachcloud.common.util.SmsSendUtil;
|
|
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.apache.commons.lang3.StringUtils;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
@@ -53,11 +58,14 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
|
|
@Resource
|
|
@Resource
|
|
private BasicRoleDataPermissionService basicRoleDataPermissionService;
|
|
private BasicRoleDataPermissionService basicRoleDataPermissionService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ MarkUserQuestionService markUserQuestionService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public IPage<BasicMessage> listByMessageType(MessageEnum messageType, Boolean sendStatus, String mobileNumber, Integer pageNumber, Integer pageSize) {
|
|
public IPage<BasicMessage> listByMessageType(MessageEnum messageType, Boolean sendStatus, String mobileNumber, Integer pageNumber, Integer pageSize) {
|
|
Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
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);
|
|
Page<BasicMessage> page = new Page<>(pageNumber, pageSize);
|
|
QueryWrapper<BasicMessage> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<BasicMessage> queryWrapper = new QueryWrapper<>();
|
|
@@ -75,11 +83,11 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
|
|
if (StringUtils.isNotBlank(mobileNumber)) {
|
|
if (StringUtils.isNotBlank(mobileNumber)) {
|
|
queryWrapper.lambda().like(BasicMessage::getMobileNumber, "%" + 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);
|
|
queryWrapper.lambda().orderByDesc(BasicMessage::getCreateTime);
|
|
return this.page(page, queryWrapper);
|
|
return this.page(page, queryWrapper);
|
|
@@ -99,6 +107,65 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
|
|
this.saveMessageResendLog(basicMessage);
|
|
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
|
|
* @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) {
|
|
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;
|
|
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();
|
|
BasicMessage basicMessage = new BasicMessage();
|
|
String templateCode = null;
|
|
String templateCode = null;
|
|
try {
|
|
try {
|
|
@@ -161,7 +246,6 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
|
|
}
|
|
}
|
|
basicMessage.setSendStatus(smsResponseResult.getCode());
|
|
basicMessage.setSendStatus(smsResponseResult.getCode());
|
|
basicMessage.setSendResult(smsResponseResult.getMessage());
|
|
basicMessage.setSendResult(smsResponseResult.getMessage());
|
|
-
|
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
basicMessage.setSendStatus("SYSTEM_ERROR");
|
|
basicMessage.setSendStatus("SYSTEM_ERROR");
|
|
basicMessage.setSendResult(e.getMessage());
|
|
basicMessage.setSendResult(e.getMessage());
|
|
@@ -245,7 +329,7 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
|
|
if (basicMessage == null) {
|
|
if (basicMessage == null) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- if(!authInfoService.allowPhoneLogin(basicMessage.getSchoolId())){
|
|
|
|
|
|
+ if (!authInfoService.allowPhoneLogin(basicMessage.getSchoolId())) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if ("OK".equals(basicMessage.getSendStatus())) {
|
|
if ("OK".equals(basicMessage.getSendStatus())) {
|