mirror of
https://gitee.com/dromara/dax-pay.git
synced 2025-09-08 13:37:35 +00:00
feat 手动触发通知消息发送, 通知任务增加订单的状态类型
This commit is contained in:
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 成功处理
|
||||
*/
|
||||
|
@@ -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;
|
||||
|
||||
/** 消息内容 */
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -27,7 +27,7 @@ public class ClientNoticeRecordDto extends BaseDto {
|
||||
* @see ClientNoticeSendTypeEnum
|
||||
*/
|
||||
@Schema(description = "发送类型")
|
||||
private String type;
|
||||
private String sendType;
|
||||
|
||||
/** 请求次数 */
|
||||
@Schema(description = "请求次数")
|
||||
|
@@ -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 = "消息内容")
|
||||
|
Reference in New Issue
Block a user