From cb79c296d1fb7f46875bf89908e3ce75c0ee7e46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E4=BA=AE?= Date: Wed, 4 Feb 2026 09:51:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9F=AD=E4=BF=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bonus/job/service/PmTaskServiceImpl.java | 9 ++++-- .../com/bonus/job/task/WorkerSendMsgTask.java | 32 ++++++++++++++----- .../com/bonus/job/util/MessageSendUtil.java | 27 +++++++++++++--- .../java/com/bonus/message/dao/WorkerVo.java | 2 ++ .../src/main/resources/application.yml | 3 ++ .../resources/mapper/job/WorkerJobMapper.xml | 1 + 6 files changed, 60 insertions(+), 14 deletions(-) diff --git a/bonus-business/src/main/java/com/bonus/job/service/PmTaskServiceImpl.java b/bonus-business/src/main/java/com/bonus/job/service/PmTaskServiceImpl.java index eb40f6b..bca1430 100644 --- a/bonus-business/src/main/java/com/bonus/job/service/PmTaskServiceImpl.java +++ b/bonus-business/src/main/java/com/bonus/job/service/PmTaskServiceImpl.java @@ -16,6 +16,7 @@ import com.bonus.message.service.WorkerService; import lombok.extern.slf4j.Slf4j; import org.quartz.SchedulerException; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import com.bonus.job.mapper.PmTaskMapper; import com.bonus.job.domain.PmTask; @@ -41,6 +42,9 @@ public class PmTaskServiceImpl implements PmTaskService{ @Resource private WorkerService workerService; + @Value("${message.signature}") + private String msgSign; + @Override public List getMsgTaskList(PmTask task) { @@ -257,9 +261,10 @@ public class PmTaskServiceImpl implements PmTaskService{ List userList = new ArrayList<>(); userList.add(o); MessageSendUtil messageSendUtil = new MessageSendUtil(); - String msgResult = messageSendUtil.sendMessage(userList, o.getSendContent()); + String content = msgSign +o.getSendContent(); + String msgResult = messageSendUtil.sendMessage(userList, content); if (msgResult == null){ - return AjaxResult.error("短信发送返回异常:"+msgResult); + return AjaxResult.error("短信发送返回异常:"+ null); } String[] split = msgResult.split(","); if (split.length == 2 && "ok".equals(split[0])) { diff --git a/bonus-business/src/main/java/com/bonus/job/task/WorkerSendMsgTask.java b/bonus-business/src/main/java/com/bonus/job/task/WorkerSendMsgTask.java index 0c786d2..5d1ecd2 100644 --- a/bonus-business/src/main/java/com/bonus/job/task/WorkerSendMsgTask.java +++ b/bonus-business/src/main/java/com/bonus/job/task/WorkerSendMsgTask.java @@ -12,6 +12,7 @@ import org.quartz.Job; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -39,6 +40,9 @@ public class WorkerSendMsgTask{ @Autowired private ISysJobService jobService; + @Value("${message.signature}") + private String msgSign; + SnowflakeIdGenerator idGen = new SnowflakeIdGenerator(1, 1); /** @@ -49,7 +53,7 @@ public class WorkerSendMsgTask{ try{ //查询任务发送人人员信息 List list = mapper.getWorkerByJobId(jobId); - sendInBatches(list); + sendInBatches(list, true); //如果任务是指执行一次,就将任务status停掉 SysJob job = mapper.getJobByJobId(jobId); if ("2".equals(job.getMisfirePolicy())){ @@ -69,7 +73,7 @@ public class WorkerSendMsgTask{ try{ //查询过生日的人员和短信内容 List list = mapper.getHappyBirthDayWorkerByJobId(jobId); - sendInBatches(list); + sendInBatches(list, false); }catch (Exception e){ logger.error("人员短信调度,{}",e.getMessage()); } @@ -77,20 +81,21 @@ public class WorkerSendMsgTask{ /** * 批量发送短信 + * @param workers 人员 + * @param flag 是否为普通短信 */ - public void sendInBatches(List workers) { - String content = workers.get(0).getSendContent(); + public void sendInBatches(List workers, Boolean flag) { long loopId = idGen.nextId(); final int BATCH_SIZE = 200; if (workers.size() <= BATCH_SIZE) { // 不超过200人,单次发送 - msgFlow(workers, content, loopId); + msgFlow(workers, loopId, flag); } else { // 超过200人,分批次发送 for (int i = 0; i < workers.size(); i += BATCH_SIZE) { int end = Math.min(i + BATCH_SIZE, workers.size()); List batch = workers.subList(i, end); - msgFlow(batch, content, loopId); + msgFlow(batch, loopId, flag); } } } @@ -98,10 +103,21 @@ public class WorkerSendMsgTask{ /** * 短信发送 */ - private String msgFlow(List userList, String content, long loopId) { + private String msgFlow(List userList, long loopId, Boolean flag) { //1.发送短信 MessageSendUtil messageSendUtil = new MessageSendUtil(); - String msgResult = messageSendUtil.sendMessage(userList, content); + String msgResult; + if(flag){ + String sendContent = userList.get(0).getSendContent(); + sendContent = msgSign + sendContent; + msgResult = messageSendUtil.sendMessage(userList,sendContent); + }else{ + for (WorkerVo vo : userList) { + String sex = "1".equals(vo.getSex()) ? "先生" : "女士"; + vo.setSendContent(msgSign + vo.getWorkerName()+sex+"您好,"+vo.getSendContent()); + } + msgResult = messageSendUtil.sendStyleMessage(userList); + } String[] split = msgResult.split(","); if (split.length == 2 && "ok".equals(split[0])) { // 批量发送成功,更新任务状态为成功 diff --git a/bonus-business/src/main/java/com/bonus/job/util/MessageSendUtil.java b/bonus-business/src/main/java/com/bonus/job/util/MessageSendUtil.java index 7c4aa90..82973df 100644 --- a/bonus-business/src/main/java/com/bonus/job/util/MessageSendUtil.java +++ b/bonus-business/src/main/java/com/bonus/job/util/MessageSendUtil.java @@ -45,9 +45,6 @@ public class MessageSendUtil { ERROR_CODE_TO_MESSAGE.put("-1003", "用户通道异常"); } - /** - * 短信发送 - */ /** * 短信发送 */ @@ -57,7 +54,6 @@ public class MessageSendUtil { String mobiles = userList.stream() .map(WorkerVo::getPhone) .collect(Collectors.joining(",")); - content = "【博诺思】"+content; // 构建请求URL String url = API_URL + msgUrl + "?ddtkey=" + DDTKEY + "&secretkey=" + SECRET_KEY; String uri = url + "&mobile=" + mobiles + "&content=" + content; @@ -69,6 +65,29 @@ public class MessageSendUtil { return convertToMessage(HttpRequestHelper.doPost(uri, param)); } + /** + * 变量短信发送 + */ + public String sendStyleMessage(List userList) { + String msgUrl = "/styleSms_token"; + // 构建手机号字符串,用逗号分隔 + String mobiles = userList.stream() + .map(WorkerVo::getPhone) + .collect(Collectors.joining(",")); + String contents = userList.stream() + .map(WorkerVo::getSendContent) + .collect(Collectors.joining("※")); + // 构建请求URL + String url = API_URL + msgUrl + "?ddtkey=" + DDTKEY + "&secretkey=" + SECRET_KEY; + String uri = url + "&mobile=" + mobiles + "&content=" + contents; + // 构建JSON参数 + String param = String.format( + "{\"ddtkey\":\"%s\",\"secretkey\":\"%s\",\"mobile\":\"%s\",\"content\":\"%s\"}", + DDTKEY, SECRET_KEY, mobiles, contents + ); + return convertToMessage(HttpRequestHelper.doPost(uri, param)); + } + /** * 将短信平台返回的错误码转换为中文说明 * diff --git a/bonus-business/src/main/java/com/bonus/message/dao/WorkerVo.java b/bonus-business/src/main/java/com/bonus/message/dao/WorkerVo.java index 7f63e3e..1997848 100644 --- a/bonus-business/src/main/java/com/bonus/message/dao/WorkerVo.java +++ b/bonus-business/src/main/java/com/bonus/message/dao/WorkerVo.java @@ -94,4 +94,6 @@ public class WorkerVo { private String sendStatus; private String reason; private String submitTime; + + } diff --git a/bonus-business/src/main/resources/application.yml b/bonus-business/src/main/resources/application.yml index 114379c..d717e7d 100644 --- a/bonus-business/src/main/resources/application.yml +++ b/bonus-business/src/main/resources/application.yml @@ -128,3 +128,6 @@ xss: excludes: /system/notice # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* + +message: + signature: 【博诺思】 diff --git a/bonus-business/src/main/resources/mapper/job/WorkerJobMapper.xml b/bonus-business/src/main/resources/mapper/job/WorkerJobMapper.xml index bc1c850..aa4e879 100644 --- a/bonus-business/src/main/resources/mapper/job/WorkerJobMapper.xml +++ b/bonus-business/src/main/resources/mapper/job/WorkerJobMapper.xml @@ -80,6 +80,7 @@ pt.send_content, w.worker_name, w.phone, + w.sex, pt.id AS taskId, w.id FROM pm_task pt, pm_worker w