|
@@ -20,17 +20,18 @@ import com.qmth.distributed.print.business.service.BasicMessageService;
|
|
|
import com.qmth.distributed.print.business.service.CacheService;
|
|
|
import com.qmth.distributed.print.business.service.ExamTaskService;
|
|
|
import com.qmth.distributed.print.business.service.SysConfigService;
|
|
|
+import com.qmth.distributed.print.business.util.ServletUtil;
|
|
|
import com.qmth.distributed.print.common.contant.SpringContextHolder;
|
|
|
import com.qmth.distributed.print.common.contant.SystemConstant;
|
|
|
import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.text.MessageFormat;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @Description: 短信消息发送
|
|
@@ -48,7 +49,8 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public void saveMessageSendLog(Long userId,String mobileNumber,Long businessId,String variableParams,Long createId,MessageEnum messageType) {
|
|
|
+ public void saveMessageSendLog(Long userId, String mobileNumber, Long businessId, String variableParams, MessageEnum messageType, String remark) {
|
|
|
+ SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
BasicMessage basicMessage = new BasicMessage();
|
|
|
// code和content
|
|
|
Map<String, String> enumInfo = this.getCodeAndContentByEnum(messageType);
|
|
@@ -59,11 +61,11 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
|
|
|
|
|
|
try {
|
|
|
// 其他方法调用所传入的参数,必须校验有值
|
|
|
- this.checkData(userId, mobileNumber, businessId, variableParams, createId, messageType);
|
|
|
+ this.checkData(userId, mobileNumber, variableParams, messageType);
|
|
|
|
|
|
// 短信提示系统是否启用配置验证
|
|
|
SysConfig sysConfig = sysConfigService.getByKey("sys.message.enable");
|
|
|
- if (sysConfig == null){
|
|
|
+ if (sysConfig == null) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("未找到短信配置");
|
|
|
}
|
|
|
if (sysConfig.getConfigValue() == null) {
|
|
@@ -115,22 +117,24 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
|
|
|
throw ExceptionResultEnum.ERROR.exception(sendSmsResponse.getMessage());
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
- errorMessage = e.getMessage();
|
|
|
+ errorMessage = e.getMessage();
|
|
|
} finally {
|
|
|
// 传入的必填字段
|
|
|
basicMessage.setUserId(userId);
|
|
|
basicMessage.setMobileNumber(mobileNumber);
|
|
|
basicMessage.setBusinessId(businessId);
|
|
|
basicMessage.setVariableParams(variableParams);
|
|
|
- basicMessage.setCreateId(createId);
|
|
|
+ basicMessage.setCreateId(sysUser.getId());
|
|
|
basicMessage.setMessageType(messageType);
|
|
|
+ basicMessage.setRemark(remark);
|
|
|
+ basicMessage.setResendCount(0);
|
|
|
|
|
|
// 经过处理的新字段
|
|
|
basicMessage.setId(SystemConstant.getDbUuid());
|
|
|
basicMessage.setBusinessOperate(messageType.getName());
|
|
|
basicMessage.setCreateTime(System.currentTimeMillis());
|
|
|
basicMessage.setTemplateCode(templateCode);
|
|
|
- if (errorMessage != null && errorMessage.length() > 0){
|
|
|
+ if (errorMessage != null && errorMessage.length() > 0) {
|
|
|
basicMessage.setSendStatus("SYSTEM_ERROR");
|
|
|
basicMessage.setSendResult(errorMessage);
|
|
|
}
|
|
@@ -142,16 +146,15 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
|
|
|
@Override
|
|
|
public void noticeOfExamTaskAudit(List<Long> examTaskIdList, MessageEnum messageType, SysUser sysUser) {
|
|
|
ExamTaskService examTaskService = SpringContextHolder.getBean(ExamTaskService.class);
|
|
|
- Long createId = sysUser.getId();
|
|
|
for (Long examTaskId : examTaskIdList) {
|
|
|
ExamTask examTask = examTaskService.getById(examTaskId);
|
|
|
- if (Objects.nonNull(examTask)){
|
|
|
+ if (Objects.nonNull(examTask)) {
|
|
|
String courseName = examTask.getCourseName();
|
|
|
String paperNumber = examTask.getPaperNumber();
|
|
|
// 获取短信接收对象的信息
|
|
|
Long userId = examTask.getUserId();
|
|
|
SysUser user = cacheService.userCache(userId);
|
|
|
- if (Objects.nonNull(user)){
|
|
|
+ if (Objects.nonNull(user)) {
|
|
|
String userName = user.getRealName();
|
|
|
String mobileNumber = user.getMobileNumber();
|
|
|
|
|
@@ -160,34 +163,61 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
|
|
|
jsonMap.put("courseName", courseName);
|
|
|
jsonMap.put("paperNumber", paperNumber);
|
|
|
String variableParams = JSON.toJSONString(jsonMap);
|
|
|
- this.saveMessageSendLog(userId,mobileNumber, examTaskId,variableParams,createId,messageType);
|
|
|
+ this.saveMessageSendLog(userId, mobileNumber, examTaskId, variableParams, messageType, null);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
- private void checkData(Object ... objects){
|
|
|
+ /**
|
|
|
+ * 发送给命题老师-待办提醒
|
|
|
+ *
|
|
|
+ * @param examTasks
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void sendNoticeTaskCreate(ExamTask... examTasks) {
|
|
|
+ // 指派命题老师的命题任务
|
|
|
+ Map<Long, List<String>> collects = Arrays.stream(examTasks).filter(m -> m.getUserId() != null).collect(Collectors.groupingBy(ExamTask::getUserId, Collectors.mapping(m -> String.valueOf(m.getId()), Collectors.toList())));
|
|
|
+ for (Map.Entry<Long, List<String>> longListEntry : collects.entrySet()) {
|
|
|
+ Long userId = longListEntry.getKey();
|
|
|
+ List<String> ids = longListEntry.getValue();
|
|
|
+ SysUser user = cacheService.userCache(userId);
|
|
|
+ if (Objects.nonNull(user)) {
|
|
|
+ String userName = user.getRealName();
|
|
|
+ String mobileNumber = user.getMobileNumber();
|
|
|
+
|
|
|
+ Map<String, Object> jsonMap = new HashMap<>();
|
|
|
+ jsonMap.put("userName", userName);
|
|
|
+ jsonMap.put("count", ids.size());
|
|
|
+ String variableParams = JSON.toJSONString(jsonMap);
|
|
|
+ String remark = String.format("命题任务ID:s%", String.join(",", ids));
|
|
|
+ this.saveMessageSendLog(userId, mobileNumber, null, variableParams, MessageEnum.NOTICE_OF_AUDIT_CREATED, remark);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void checkData(Object... objects) {
|
|
|
for (Object object : objects) {
|
|
|
- if (object instanceof String){
|
|
|
+ if (object instanceof String) {
|
|
|
String param = String.valueOf(object);
|
|
|
- if (param.length() == 0 || param.equals("null")){
|
|
|
+ if (param.length() == 0 || param.equals("null")) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("调用发送短信方法时必传参数缺失");
|
|
|
}
|
|
|
- }else if (object instanceof Long){
|
|
|
+ } else if (object instanceof Long) {
|
|
|
Long param = SystemConstant.convertIdToLong(String.valueOf(object));
|
|
|
- if (param == null || param == 0){
|
|
|
+ if (param == null || param == 0) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("调用发送短信方法时必传参数缺失");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private Map<String,String> getCodeAndContentByEnum(MessageEnum messageEnum){
|
|
|
- Map<String,String> result = new HashMap<>();
|
|
|
+ private Map<String, String> getCodeAndContentByEnum(MessageEnum messageEnum) {
|
|
|
+ Map<String, String> result = new HashMap<>();
|
|
|
String templateContent;
|
|
|
String templateCode;
|
|
|
- switch (messageEnum){
|
|
|
+ switch (messageEnum) {
|
|
|
case NOTICE_OF_AUDIT_PASS:
|
|
|
templateCode = dictionaryConfig.smsDomain().getAliyunSMSAuditPassCode();
|
|
|
templateContent = messageEnum.getTemplate();
|
|
@@ -199,8 +229,8 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
|
|
|
default:
|
|
|
throw new IllegalStateException("Unexpected value: " + messageEnum);
|
|
|
}
|
|
|
- result.put("templateContent",templateContent);
|
|
|
- result.put("templateCode",templateCode);
|
|
|
+ result.put("templateContent", templateContent);
|
|
|
+ result.put("templateCode", templateCode);
|
|
|
return result;
|
|
|
}
|
|
|
}
|