feat 手动触发通知消息发送, 通知任务增加订单的状态类型

This commit is contained in:
bootx
2024-03-05 23:23:44 +08:00
parent bc43d57cfb
commit 60d3dd9c11
8 changed files with 64 additions and 11 deletions

View File

@@ -75,7 +75,8 @@ public class ClientNoticeAssistService {
.setContent(JacksonUtil.toJson(payNoticeResult))
.setNoticeType(ClientNoticeTypeEnum.PAY.getType())
.setSendCount(0)
.setOrderId(order.getId());
.setOrderId(order.getId())
.setOrderStatus(order.getStatus());
}
/**
@@ -115,7 +116,8 @@ public class ClientNoticeAssistService {
.setContent(JacksonUtil.toJson(payNoticeResult))
.setNoticeType(ClientNoticeTypeEnum.REFUND.getType())
.setSendCount(0)
.setOrderId(order.getId());
.setOrderId(order.getId())
.setOrderStatus(order.getStatus());
}
}

View File

@@ -249,6 +249,46 @@ public class ClientNoticeService {
recordService.save(record);
}
/**
* 发送通知数据, 手动触发,
*/
public void sendDataByManual(ClientNoticeTask task){
LocalDateTime now = LocalDateTime.now();
// 创建记录
ClientNoticeRecord record = new ClientNoticeRecord()
.setTaskId(task.getId())
.setSendType(ClientNoticeSendTypeEnum.MANUAL.getType());
String body = null;
try {
HttpResponse execute = HttpUtil.createPost(task.getUrl())
.body(task.getContent(), ContentType.JSON.getValue())
.timeout(5000)
.execute();
body = execute.body();
} catch (Exception e) {
log.error("发送通知失败数据错误任务ID{}",task.getOrderId());
log.error("错误内容",e);
record.setErrorMsg(e.getMessage());
}
// 如果响应值等于SUCCESS, 说明发送成功
if (Objects.equals(body, "SUCCESS")){
record.setSuccess(true);
// 如果任务不是成功状态, 修改为成功状态
if (!task.isSuccess()){
task.setLatestTime(now).setSuccess(true);
taskManager.updateById(task);
}
} else {
// 如果响应地址不为空, 将错误响应写到记录中
if (Objects.nonNull(body)){
// 预防返回值过长, 只保留100位
record.setErrorMsg(StrUtil.sub(body,0,100));
}
}
// 保存请求记录
recordService.save(record);
}
/**
* 成功处理
*/

View File

@@ -42,11 +42,11 @@ public class ClientNoticeTask extends MpBaseEntity implements EntityBaseFunction
private String noticeType;
/**
* 订单类型
* 订单状态
* @see PayStatusEnum
* @see RefundStatusEnum
*/
@DbColumn(comment = "订单类型")
@DbColumn(comment = "订单状态")
private String orderStatus;
/** 消息内容 */

View File

@@ -36,8 +36,14 @@ public class ClientNoticeTaskService {
/**
* 手动触发消息发送
* 1. 手动触发消息发送次数不会变更
* 2. 会记录发送历史
* 3. 不受次数限制, 也不受状态控制. 任务完成与否都可以推送
*/
public void sendData(Long taskId){
ClientNoticeTask task = taskManager.findById(taskId)
.orElseThrow(() -> new DataNotExistException("任务不存在"));
clientNoticeService.sendDataByManual(task);
}
/**

View File

@@ -27,7 +27,7 @@ public class ClientNoticeRecordDto extends BaseDto {
* @see ClientNoticeSendTypeEnum
*/
@Schema(description = "发送类型")
private String type;
private String sendType;
/** 请求次数 */
@Schema(description = "请求次数")

View File

@@ -29,7 +29,13 @@ public class ClientNoticeTaskDto extends BaseDto {
* @see ClientNoticeTypeEnum
*/
@Schema(description = "回调类型")
private String type;
private String noticeType;
/**
* 订单状态
*/
@Schema(description = "订单状态")
private String orderStatus;
/** 消息内容 */
@Schema(description = "消息内容")