短信优化
This commit is contained in:
@ -175,7 +175,7 @@ sms:
|
|||||||
# 配置源类型用于标定配置来源(interface,yaml)
|
# 配置源类型用于标定配置来源(interface,yaml)
|
||||||
config-type: yaml
|
config-type: yaml
|
||||||
# 用于标定yml中的配置是否开启短信拦截,接口配置不受此限制
|
# 用于标定yml中的配置是否开启短信拦截,接口配置不受此限制
|
||||||
restricted: true
|
restricted: false
|
||||||
# 短信拦截限制单手机号每分钟最大发送,只对开启了拦截的配置有效
|
# 短信拦截限制单手机号每分钟最大发送,只对开启了拦截的配置有效
|
||||||
minute-max: 1
|
minute-max: 1
|
||||||
# 短信拦截限制单手机号每日最大发送量,只对开启了拦截的配置有效
|
# 短信拦截限制单手机号每日最大发送量,只对开启了拦截的配置有效
|
||||||
|
|||||||
@ -19,9 +19,7 @@ import org.dromara.system.service.ISysRoleService;
|
|||||||
import org.dromara.system.service.ISysUserService;
|
import org.dromara.system.service.ISysUserService;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
@ -59,6 +57,7 @@ public class DesignFileJob {
|
|||||||
.eq(DesSmsRecord::getAgain, "1")
|
.eq(DesSmsRecord::getAgain, "1")
|
||||||
.le(DesSmsRecord::getCreateTime, threeDaysAgo) // Date类型直接比较
|
.le(DesSmsRecord::getCreateTime, threeDaysAgo) // Date类型直接比较
|
||||||
);
|
);
|
||||||
|
HashSet<String> phoneNumbers = new HashSet<>();
|
||||||
for (DesSmsRecord record : records) {
|
for (DesSmsRecord record : records) {
|
||||||
DesVolumeFile desVolumeFile = designFileService.getById(record.getVolumeFileId());
|
DesVolumeFile desVolumeFile = designFileService.getById(record.getVolumeFileId());
|
||||||
DesVolumeCatalog desVolumeCatalog = volumeCatalogService.getById(desVolumeFile.getVolumeCatalogId());
|
DesVolumeCatalog desVolumeCatalog = volumeCatalogService.getById(desVolumeFile.getVolumeCatalogId());
|
||||||
@ -85,10 +84,13 @@ public class DesignFileJob {
|
|||||||
List<Long> list1 = list.stream().map(DesVolumeFileViewer::getUserId).toList();
|
List<Long> list1 = list.stream().map(DesVolumeFileViewer::getUserId).toList();
|
||||||
//找出没有查看的人 发送短信
|
//找出没有查看的人 发送短信
|
||||||
List<SysUser> list2 = sysUsers.stream().filter(vo -> !list1.contains(vo.getUserId())).toList();
|
List<SysUser> list2 = sysUsers.stream().filter(vo -> !list1.contains(vo.getUserId())).toList();
|
||||||
asyncUtil.sendSms(list2.stream().map(SysUser::getPhonenumber).toList(), "config5");
|
phoneNumbers.addAll(list2.stream().map(SysUser::getPhonenumber).toList());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if(CollectionUtil.isEmpty(phoneNumbers)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
asyncUtil.sendSms(new ArrayList<>(phoneNumbers), "config5");
|
||||||
List<Long> list1 = records.stream().map(DesSmsRecord::getId).toList();
|
List<Long> list1 = records.stream().map(DesSmsRecord::getId).toList();
|
||||||
|
|
||||||
desSmsRecordService.lambdaUpdate().in(DesSmsRecord::getId, list1)
|
desSmsRecordService.lambdaUpdate().in(DesSmsRecord::getId, list1)
|
||||||
|
|||||||
@ -51,32 +51,40 @@ public class InspectionJob {
|
|||||||
|
|
||||||
SmsBlend smsBlend = SmsFactory.getSmsBlend("config4");
|
SmsBlend smsBlend = SmsFactory.getSmsBlend("config4");
|
||||||
|
|
||||||
|
List<String> phones = new ArrayList<>();
|
||||||
|
List<Long> userIds = new ArrayList<>();
|
||||||
// 每500条记录作为一批进行处理
|
// 每500条记录作为一批进行处理
|
||||||
int batchSize = 500;
|
int batchSize = 500;
|
||||||
for (int i = 0; i < list.size(); i += batchSize) {
|
for (int i = 0; i < list.size(); i += batchSize) {
|
||||||
int endIndex = Math.min(i + batchSize, list.size());
|
int endIndex = Math.min(i + batchSize, list.size());
|
||||||
List<QltQualityInspection> batch = list.subList(i, endIndex);
|
List<QltQualityInspection> batch = list.subList(i, endIndex);
|
||||||
List<Long> userIds = new ArrayList<>();
|
|
||||||
for (QltQualityInspection qualityInspection : batch) {
|
for (QltQualityInspection qualityInspection : batch) {
|
||||||
Long correctorId = qualityInspection.getCorrectorId();
|
Long correctorId = qualityInspection.getCorrectorId();
|
||||||
String phonenumber = userService.queryById(correctorId).getPhonenumber();
|
String phonenumber = userService.queryById(correctorId).getPhonenumber();
|
||||||
if (phonenumber == null) {
|
if (phonenumber == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if(phones.contains(phonenumber)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
phones.add(phonenumber);
|
||||||
SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, new LinkedHashMap<String, String>());
|
SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, new LinkedHashMap<String, String>());
|
||||||
if (!smsResponse.isSuccess()) {
|
if (!smsResponse.isSuccess()) {
|
||||||
log.error("验证码短信发送异常 => {}", smsResponse);
|
log.error("验证码短信发送异常 => {}", smsResponse);
|
||||||
}
|
}
|
||||||
userIds.add(correctorId);
|
if(!userIds.contains(correctorId)){
|
||||||
}
|
userIds.add(correctorId);
|
||||||
if(userIds.isEmpty()){
|
}
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
log.info("质量工单短信提醒批次发送完成,当前批次数量: {}", batch.size());
|
||||||
|
}
|
||||||
|
if(!userIds.isEmpty()){
|
||||||
SseMessageDto sseMessageDto = new SseMessageDto();
|
SseMessageDto sseMessageDto = new SseMessageDto();
|
||||||
sseMessageDto.setMessage("您负责整改的质量工单已逾期,请尽快前往处理!");
|
sseMessageDto.setMessage("您负责整改的质量工单已逾期,请尽快前往处理!");
|
||||||
sseMessageDto.setUserIds(userIds);
|
sseMessageDto.setUserIds(userIds);
|
||||||
SseMessageUtils.publishMessage(sseMessageDto);
|
SseMessageUtils.publishMessage(sseMessageDto);
|
||||||
log.info("质量工单短信提醒批次发送完成,当前批次数量: {}", batch.size());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("执行定时任务:质量工单短信提醒完成,总处理数量: {}", list.size());
|
log.info("执行定时任务:质量工单短信提醒完成,总处理数量: {}", list.size());
|
||||||
@ -93,34 +101,38 @@ public class InspectionJob {
|
|||||||
|
|
||||||
SmsBlend smsBlend = SmsFactory.getSmsBlend("config6");
|
SmsBlend smsBlend = SmsFactory.getSmsBlend("config6");
|
||||||
|
|
||||||
|
List<String> phones = new ArrayList<>();
|
||||||
|
List<Long> userIds = new ArrayList<>();
|
||||||
// 每500条记录作为一批进行处理
|
// 每500条记录作为一批进行处理
|
||||||
int batchSize = 500;
|
int batchSize = 500;
|
||||||
for (int i = 0; i < list.size(); i += batchSize) {
|
for (int i = 0; i < list.size(); i += batchSize) {
|
||||||
int endIndex = Math.min(i + batchSize, list.size());
|
int endIndex = Math.min(i + batchSize, list.size());
|
||||||
List<HseSafetyInspection> batch = list.subList(i, endIndex);
|
List<HseSafetyInspection> batch = list.subList(i, endIndex);
|
||||||
|
|
||||||
List<Long> userIds = new ArrayList<>();
|
|
||||||
for (HseSafetyInspection safetyInspection : batch) {
|
for (HseSafetyInspection safetyInspection : batch) {
|
||||||
Long correctorId = safetyInspection.getCorrectorId();
|
Long correctorId = safetyInspection.getCorrectorId();
|
||||||
String phonenumber = userService.queryById(correctorId).getPhonenumber();
|
String phonenumber = userService.queryById(correctorId).getPhonenumber();
|
||||||
if (phonenumber == null) {
|
if (phonenumber == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if(phones.contains(phonenumber)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
phones.add(phonenumber);
|
||||||
SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, new LinkedHashMap<String, String>());
|
SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, new LinkedHashMap<String, String>());
|
||||||
if (!smsResponse.isSuccess()) {
|
if (!smsResponse.isSuccess()) {
|
||||||
log.error("验证码短信发送异常 => {}", smsResponse);
|
log.error("验证码短信发送异常 => {}", smsResponse);
|
||||||
}
|
}
|
||||||
userIds.add(correctorId);
|
userIds.add(correctorId);
|
||||||
}
|
}
|
||||||
|
log.info("安全工单短信提醒批次发送完成,当前批次数量: {}", batch.size());
|
||||||
|
}
|
||||||
|
if(!userIds.isEmpty()){
|
||||||
SseMessageDto sseMessageDto = new SseMessageDto();
|
SseMessageDto sseMessageDto = new SseMessageDto();
|
||||||
sseMessageDto.setMessage("您负责整改的安全工单已逾期,请尽快前往处理!");
|
sseMessageDto.setMessage("您负责整改的安全工单已逾期,请尽快前往处理!");
|
||||||
sseMessageDto.setUserIds(userIds);
|
sseMessageDto.setUserIds(userIds);
|
||||||
SseMessageUtils.publishMessage(sseMessageDto);
|
SseMessageUtils.publishMessage(sseMessageDto);
|
||||||
|
|
||||||
log.info("安全工单短信提醒批次发送完成,当前批次数量: {}", batch.size());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("执行定时任务:安全工单短信提醒完成,总处理数量: {}", list.size());
|
log.info("执行定时任务:安全工单短信提醒完成,总处理数量: {}", list.size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user