diff --git a/bonus-business/pom.xml b/bonus-business/pom.xml
index cd6bd85..5885f3d 100644
--- a/bonus-business/pom.xml
+++ b/bonus-business/pom.xml
@@ -9,7 +9,7 @@
4.0.0
jar
- bonus-business
+ yn-message-gadget
web服务入口
diff --git a/bonus-business/src/main/java/com/bonus/job/controller/PmTaskController.java b/bonus-business/src/main/java/com/bonus/job/controller/PmTaskController.java
index b08724c..1e6e7e0 100644
--- a/bonus-business/src/main/java/com/bonus/job/controller/PmTaskController.java
+++ b/bonus-business/src/main/java/com/bonus/job/controller/PmTaskController.java
@@ -159,12 +159,16 @@ public class PmTaskController extends BaseController
/**
* 短信平台回执
*/
- @Log(title = "短信平台回执", businessType = BusinessType.DELETE)
+// @Log(title = "短信平台回执", businessType = BusinessType.UPDATE)
@PostMapping("msgSendStatus")
- public AjaxResult msgSendStatus(String msg)
+ public AjaxResult msgSendStatus(String param)
{
try {
- return service.msgSendStatus(msg);
+ log.error("短信平台回执:{}", param);
+ if(StringUtils.isEmpty(param)){
+ return AjaxResult.error("数据格式异常");
+ }
+ return service.msgSendStatus(param);
} catch (Exception e) {
log.error(e.getMessage());
return AjaxResult.error("数据格式异常");
@@ -191,7 +195,7 @@ public class PmTaskController extends BaseController
/**
- * 查询短信循环次数
+ * 查询单次短信循环详细数据
*/
@Log(title = "查询单次短信循环详细数据", businessType = BusinessType.OTHER)
@GetMapping("getOneLoopMsgData")
@@ -240,7 +244,7 @@ public class PmTaskController extends BaseController
* 立即执行一次任务,不管其他状态
*/
@Log(title = "立即执行一次任务", businessType = BusinessType.OTHER)
- @GetMapping("executeOnceJob")
+ @PostMapping("executeOnceJob")
public AjaxResult executeOnceJob(@RequestBody PmTask o)
{
try {
diff --git a/bonus-business/src/main/java/com/bonus/job/mapper/WorkerJobMapper.java b/bonus-business/src/main/java/com/bonus/job/mapper/WorkerJobMapper.java
index c3ea798..991e1f8 100644
--- a/bonus-business/src/main/java/com/bonus/job/mapper/WorkerJobMapper.java
+++ b/bonus-business/src/main/java/com/bonus/job/mapper/WorkerJobMapper.java
@@ -35,4 +35,7 @@ public interface WorkerJobMapper {
* @return
*/
List getHappyBirthDayWorkerByJobId(String jobId);
+
+ SysJob getJobByJobId(String jobId);
+
}
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 a1d3b7a..c93a467 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
@@ -3,6 +3,7 @@ package com.bonus.job.service;
import com.bonus.common.constant.Constants;
import com.bonus.common.core.domain.AjaxResult;
import com.bonus.common.exception.job.TaskException;
+import com.bonus.common.utils.DateUtils;
import com.bonus.common.utils.SecurityUtils;
import com.bonus.common.utils.StringUtils;
import com.bonus.job.domain.SysJob;
@@ -10,6 +11,7 @@ import com.bonus.job.util.CronUtils;
import com.bonus.job.util.MessageSendUtil;
import com.bonus.job.util.ScheduleUtils;
import com.bonus.message.dao.WorkerVo;
+import lombok.extern.slf4j.Slf4j;
import org.quartz.SchedulerException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -22,6 +24,7 @@ import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
+@Slf4j
@Service
public class PmTaskServiceImpl implements PmTaskService{
@@ -104,7 +107,7 @@ public class PmTaskServiceImpl implements PmTaskService{
byId.setWorkerList(list);
//分组
List groupList = mapper.getGroupByTaskId(task.getId());
- byId.setGroupList(list);
+ byId.setGroupList(groupList);
//按性别群发
Integer sex = mapper.getWorkerSexByTaskId(task.getId());
byId.setSex(sex);
@@ -128,12 +131,20 @@ public class PmTaskServiceImpl implements PmTaskService{
job.setRelationType("短信");
job.setUpdateBy(SecurityUtils.getUsername());
//验证job数据
- AjaxResult ajaxResult = verifyJob(job);
+ AjaxResult ajaxResult;
+ try{
+ ajaxResult = verifyJob(job);
+ }catch (Exception e){
+ log.error("修改失败",e);
+ return AjaxResult.error("校验job数据失败");
+ }
if(!ajaxResult.isSuccess()){
return ajaxResult;
}
int update = mapper.update(task);
if(update > 0){
+ //修改时不该任务,默认原任务,不然会影响生日等特殊任务
+ job.setInvokeTarget(null);
int i = jobService.updateJob(job);
List allList = new ArrayList<>();
List workerList = task.getWorkerList();
@@ -179,9 +190,6 @@ public class PmTaskServiceImpl implements PmTaskService{
@Override
public AjaxResult msgSendStatus(String msg) {
- if (msg == null) {
- return AjaxResult.error("参数错误");
- }
String[] split = msg.split(";");
List list = new ArrayList<>();
for (String s : split) {
@@ -193,11 +201,14 @@ public class PmTaskServiceImpl implements PmTaskService{
if("1".equals(splitStatus[2])){
bean.setSendStatus("发送成功");
}else{
- bean.setReason("发送失败");
+ bean.setSendStatus("发送失败");
}
list.add(bean);
}
}
+ if (list.isEmpty()){
+ return AjaxResult.error("数据为空");
+ }
int i = mapper.msgSendStatus(list);
return i > 0 ? AjaxResult.success("更新成功") : AjaxResult.error("更新失败");
}
@@ -237,7 +248,7 @@ public class PmTaskServiceImpl implements PmTaskService{
}
// 在设置发送时间时使用时分秒格式
// 只要年月日 → 用 LocalDate
- o.setSendTime(LocalDate.now().toString()); // 简洁且安全
+ o.setSendTime(DateUtils.getTime()); // 简洁且安全
int i = mapper.updateOneWorkerData(o);
return i > 0 ? AjaxResult.success("更新成功") : AjaxResult.error("更新失败");
}
@@ -310,8 +321,7 @@ public class PmTaskServiceImpl implements PmTaskService{
{
return AjaxResult.error("处理任务'" + job.getJobName() + "'失败,目标字符串存在违规");
}
- else if (!ScheduleUtils.whiteList(job.getInvokeTarget()))
- {
+ else if (!ScheduleUtils.whiteList(job.getInvokeTarget())){
return AjaxResult.error("处理任务'" + job.getJobName() + "'失败,目标字符串不在白名单内");
}
return AjaxResult.success();
diff --git a/bonus-business/src/main/java/com/bonus/job/service/SysJobServiceImpl.java b/bonus-business/src/main/java/com/bonus/job/service/SysJobServiceImpl.java
index 6badb71..56ce754 100644
--- a/bonus-business/src/main/java/com/bonus/job/service/SysJobServiceImpl.java
+++ b/bonus-business/src/main/java/com/bonus/job/service/SysJobServiceImpl.java
@@ -6,6 +6,7 @@ import com.bonus.job.domain.SysJob;
import com.bonus.job.mapper.SysJobMapper;
import com.bonus.job.util.CronUtils;
import com.bonus.job.util.ScheduleUtils;
+import org.hibernate.validator.internal.util.StringHelper;
import org.quartz.JobDataMap;
import org.quartz.JobKey;
import org.quartz.Scheduler;
@@ -201,7 +202,9 @@ public class SysJobServiceImpl implements ISysJobService
@Transactional(rollbackFor = Exception.class)
public int insertJob(SysJob job) throws SchedulerException, TaskException
{
- job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
+ if(StringHelper.isNullOrEmptyString(job.getStatus())){
+ job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
+ }
int rows = jobMapper.insertJob(job);
if (rows > 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 f4e8111..7928225 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
@@ -1,12 +1,17 @@
package com.bonus.job.task;
+import com.bonus.common.utils.DateUtils;
+import com.bonus.job.domain.SysJob;
import com.bonus.job.mapper.WorkerJobMapper;
+import com.bonus.job.service.ISysJobService;
import com.bonus.job.util.HttpRequestHelper;
import com.bonus.job.util.MessageSendUtil;
import com.bonus.job.util.SnowflakeIdGenerator;
import com.bonus.message.dao.WorkerVo;
+import org.quartz.Job;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@@ -31,6 +36,9 @@ public class WorkerSendMsgTask{
@Resource
private WorkerJobMapper mapper;
+ @Autowired
+ private ISysJobService jobService;
+
SnowflakeIdGenerator idGen = new SnowflakeIdGenerator(1, 1);
/**
@@ -42,6 +50,12 @@ public class WorkerSendMsgTask{
//查询任务发送人人员信息
List list = mapper.getWorkerByJobId(jobId);
sendInBatches(list);
+ //如果任务是指执行一次,就将任务status停掉
+ SysJob job = mapper.getJobByJobId(jobId);
+ if ("2".equals(job.getMisfirePolicy())){
+ job.setStatus("1");
+ int i = jobService.changeStatus(job);
+ }
}catch (Exception e){
logger.error("人员短信调度,{}",e.getMessage());
}
@@ -97,7 +111,7 @@ public class WorkerSendMsgTask{
user.setSubmitStatus(split[0]);
user.setBatchNumber(split[1]);
// 在设置发送时间时使用时分秒格式
- user.setSendTime(LocalDate.now().toString()); // 简洁且安全
+ user.setSendTime(DateUtils.getTime()); // 简洁且安全
});
} else {
@@ -108,7 +122,7 @@ public class WorkerSendMsgTask{
user.setSubmitStatus(split[0]);
user.setReason(split[1]);
// 在设置发送时间时使用时分秒格式
- user.setSendTime(LocalDate.now().toString()); // 简洁且安全
+ user.setSendTime(DateUtils.getTime()); // 简洁且安全
});
}
mapper.insertTaskRecord(userList);
diff --git a/bonus-business/src/main/java/com/bonus/message/controller/WorkerController.java b/bonus-business/src/main/java/com/bonus/message/controller/WorkerController.java
index f81cc72..8793cf0 100644
--- a/bonus-business/src/main/java/com/bonus/message/controller/WorkerController.java
+++ b/bonus-business/src/main/java/com/bonus/message/controller/WorkerController.java
@@ -3,6 +3,7 @@ package com.bonus.message.controller;
import com.bonus.common.core.controller.BaseController;
import com.bonus.common.core.domain.AjaxResult;
import com.bonus.common.core.page.TableDataInfo;
+import com.bonus.common.utils.AesUtil;
import com.bonus.common.utils.poi.ExcelUtil;
import com.bonus.message.dao.WorkerVo;
import com.bonus.message.service.WorkerService;
@@ -42,6 +43,9 @@ public class WorkerController extends BaseController {
try {
startPage();
List list = workerService.getWorkerList(workerVo);
+ for (WorkerVo worker : list) {
+ workerVo.setPhone(AesUtil.encrypt(worker.getPhone()));
+ }
return getDataTable(list);
} catch (Exception e) {
log.error(e.getMessage());
@@ -150,6 +154,9 @@ public class WorkerController extends BaseController {
try {
ExcelUtil util = new ExcelUtil(WorkerVo.class);
List workerList = util.importExcel(file.getInputStream());
+ if (workerList.isEmpty()){
+ return AjaxResult.error("文件为空或者模版有问题,请按照模版导入数据");
+ }
String message = workerService.importWorker(workerList);
if ("导入成功".equals(message)) {
return success(message);
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 025981c..df278f4 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
@@ -41,6 +41,12 @@ public class WorkerVo {
@Excel(name = "性别")
private String sex;
+ /**
+ * 生日
+ */
+ @Excel(name = "生日")
+ private String birthday;
+
/**
* 电话
*/
diff --git a/bonus-business/src/main/java/com/bonus/message/service/impl/WorkerServiceImpl.java b/bonus-business/src/main/java/com/bonus/message/service/impl/WorkerServiceImpl.java
index 0087fef..a7f2f7d 100644
--- a/bonus-business/src/main/java/com/bonus/message/service/impl/WorkerServiceImpl.java
+++ b/bonus-business/src/main/java/com/bonus/message/service/impl/WorkerServiceImpl.java
@@ -31,11 +31,7 @@ public class WorkerServiceImpl implements WorkerService {
*/
@Override
public List getWorkerList(WorkerVo workerVo) {
- List workerList = workerMapper.getWorkerList(workerVo);
- for (WorkerVo worker : workerList) {
- workerVo.setPhone(AesUtil.encrypt(worker.getPhone()));
- }
- return workerList;
+ return workerMapper.getWorkerList(workerVo);
}
/**
@@ -96,6 +92,7 @@ public class WorkerServiceImpl implements WorkerService {
|| StringUtils.isEmpty(workerVo.getOrgName())
|| StringUtils.isEmpty(workerVo.getWorkerName())
|| StringUtils.isEmpty(workerVo.getSex())
+ || StringUtils.isEmpty(workerVo.getBirthday())
){
return "缺少必填项";
}
diff --git a/bonus-business/src/main/resources/application-druid.yml b/bonus-business/src/main/resources/application-druid.yml
index 4da569f..f8641f7 100644
--- a/bonus-business/src/main/resources/application-druid.yml
+++ b/bonus-business/src/main/resources/application-druid.yml
@@ -6,7 +6,7 @@ spring:
druid:
# 主库数据源
master:
- url: jdbc:mysql://192.168.0.14:4418/yn_message_gadget?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ url: jdbc:mysql://192.168.0.14:4418/yn_message_gadget?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: Bonus@admin123!
# 从库数据源
diff --git a/bonus-business/src/main/resources/application.yml b/bonus-business/src/main/resources/application.yml
index 1e601c2..114379c 100644
--- a/bonus-business/src/main/resources/application.yml
+++ b/bonus-business/src/main/resources/application.yml
@@ -68,14 +68,14 @@ spring:
# redis 配置
redis:
# 地址
-# host: 192.168.0.14
-# port: 2004
-# database: 6
-# password: Plzbns@Redis123!
- host: 127.0.0.1
- port: 6379
+ host: 192.168.0.14
+ port: 2004
database: 6
- password:
+ password: Plzbns@Redis123!
+# host: 127.0.0.1
+# port: 6379
+# database: 6
+# password:
# 连接超时时间
timeout: 10s
lettuce:
diff --git a/bonus-business/src/main/resources/download/人员导入模板.xlsx b/bonus-business/src/main/resources/download/人员导入模板.xlsx
index 6d3710b..41a8b94 100644
Binary files a/bonus-business/src/main/resources/download/人员导入模板.xlsx and b/bonus-business/src/main/resources/download/人员导入模板.xlsx differ
diff --git a/bonus-business/src/main/resources/mapper/job/PmTaskMapper.xml b/bonus-business/src/main/resources/mapper/job/PmTaskMapper.xml
index bc0c4c2..6370c88 100644
--- a/bonus-business/src/main/resources/mapper/job/PmTaskMapper.xml
+++ b/bonus-business/src/main/resources/mapper/job/PmTaskMapper.xml
@@ -96,7 +96,7 @@
-
+
update bm_task_record set send_status = #{item.sendStatus} where batch_number = #{item.batchNumber} and phone = #{item.phone}
@@ -122,6 +122,8 @@
GROUP BY
btw.loop_id
+ order by
+ btw.create_time DESC
+
+
diff --git a/bonus-framework/src/main/java/com/bonus/framework/config/SecurityConfig.java b/bonus-framework/src/main/java/com/bonus/framework/config/SecurityConfig.java
index bae11a3..b46ffe4 100644
--- a/bonus-framework/src/main/java/com/bonus/framework/config/SecurityConfig.java
+++ b/bonus-framework/src/main/java/com/bonus/framework/config/SecurityConfig.java
@@ -111,7 +111,7 @@ public class SecurityConfig
.authorizeHttpRequests((requests) -> {
permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
- requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
+ requests.antMatchers("/login", "/register", "/captchaImage", "/msgJob/msgSendStatus").permitAll()
// 静态资源,可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()