mirror of
https://gitee.com/dromara/dax-pay
synced 2026-08-07 21:55:46 +08:00
feat 手动触发通知消息发送, 通知任务增加订单的状态类型
This commit is contained in:
@@ -161,7 +161,7 @@ public class SimplePayOrderTest {
|
||||
[**更新记录**](/_doc/ChangeLog.md)
|
||||
|
||||
### 2.0.X版本:
|
||||
- [ ] 对账比对功能实现
|
||||
- [x] 对账比对功能实现
|
||||
- [ ] 支持转账、分账操作
|
||||
- [ ] 云闪付支付支持
|
||||
- [ ] 支付宝和微信增加V3版本接口支持
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
2.0.2:
|
||||
- [x] 对账功能补全账单比对功能
|
||||
- [x] 支付对账的序列化生成器有问题, 可以生成重复的序号
|
||||
|
||||
2.0.3:
|
||||
- [ ] 云闪付接入
|
||||
- [x] 手动触发通知消息发送
|
||||
- [ ] 退款操作支持重试
|
||||
- [x] 通知任务增加订单的状态类型,例如订单关闭、成功、失败等
|
||||
|
||||
2.0.x 版本内容
|
||||
- [ ] 增加各类日志记录,例如钱包的各项操作
|
||||
@@ -11,7 +11,6 @@
|
||||
- [ ] 支付流程涉及异步支付时, 更换支付方式需要控制预防客户重复付款
|
||||
- [ ] 增加撤销功能,用于处理线下支付订单的情况
|
||||
- [ ] 数据库表进行规则, 字段设置长度, 增加索引
|
||||
- [ ] 退款操作支持重试
|
||||
|
||||
**任务池**
|
||||
- [x] 支付SDK编写
|
||||
|
||||
@@ -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