feat 优化支付相关订单和记录的查询条件

This commit is contained in:
nws
2024-01-15 01:18:43 +08:00
parent 1111b6b754
commit 621a7639db
10 changed files with 133 additions and 33 deletions

View File

@@ -56,8 +56,9 @@
- [x] (前端) 微信/支付宝支付通道配置
- [x] 支付通道支持停用
- [x] 请求支付网关时区退款号以R开头, 用于与支付ID的区分
- [x] (前端) 平台配置
- 2024-01-14:
- [ ] 优化支付相关订单和记录的查询条件
- [ ] (前端) 平台配置
- **任务池**
- [ ] 支付宝关闭支付时支持撤销方式,
- [ ] 支持转账操作, 通过支付通道专有参数进行实现, 转账时只能单个通道进行操作

View File

@@ -16,10 +16,7 @@ import cn.bootx.platform.daxpay.util.DaxRes;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/**
* 统一支付接口
@@ -94,4 +91,20 @@ public class UniPayController {
public DaxResult<Void> syncRefund(@RequestBody RefundSyncParam param){
return DaxRes.ok();
}
@CountTime
@PaymentApi("queryPayOrder")
@Operation(summary = "查询支付订单")
@PostMapping("/queryPayOrder")
public DaxResult<Void> queryPayOrder(){
return DaxRes.ok();
}
@CountTime
@PaymentApi("queryRefundOrder")
@Operation(summary = "查询退款订单")
@PostMapping("/queryRefundOrder")
public DaxResult<Void> queryRefundOrder(){
return DaxRes.ok();
}
}

View File

@@ -1,16 +1,19 @@
package cn.bootx.platform.daxpay.service.core.order.pay.dao;
import cn.bootx.platform.common.core.rest.param.PageParam;
import cn.bootx.platform.common.mybatisplus.base.MpIdEntity;
import cn.bootx.platform.common.mybatisplus.impl.BaseManager;
import cn.bootx.platform.common.mybatisplus.util.MpUtil;
import cn.bootx.platform.common.query.generator.QueryGenerator;
import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder;
import cn.bootx.platform.daxpay.service.param.order.PayOrderQuery;
import cn.hutool.core.text.NamingCase;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
import java.util.Objects;
import java.util.Optional;
/**
@@ -31,8 +34,10 @@ public class PayOrderManager extends BaseManager<PayOrderMapper, PayOrder> {
*/
public Page<PayOrder> page(PageParam pageParam, PayOrderQuery query){
Page<PayOrder> mpPage = MpUtil.getMpPage(pageParam, PayOrder.class);
return lambdaQuery()
.orderByDesc(MpIdEntity::getId)
.page(mpPage);
QueryWrapper<PayOrder> generator = QueryGenerator.generator(query);
// if (Objects.nonNull(query.getSortField())){
// generator.orderBy(true, query.getAsc(), NamingCase.toUnderlineCase(query.getSortField()));
// }
return page(mpPage, generator);
}
}

View File

@@ -1,19 +1,19 @@
package cn.bootx.platform.daxpay.service.core.order.refund.dao;
import cn.bootx.platform.common.core.rest.param.PageParam;
import cn.bootx.platform.common.mybatisplus.base.MpIdEntity;
import cn.bootx.platform.common.mybatisplus.impl.BaseManager;
import cn.bootx.platform.common.mybatisplus.util.MpUtil;
import cn.bootx.platform.common.query.generator.QueryGenerator;
import cn.bootx.platform.daxpay.service.core.order.refund.entity.PayRefundOrder;
import cn.bootx.platform.daxpay.service.param.order.PayRefundOrderQuery;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
import java.util.Objects;
/**
* 支付退款订单管理
* @author xxm
* @since 2022/3/2
*/
@@ -27,11 +27,11 @@ public class PayRefundOrderManager extends BaseManager<PayRefundOrderMapper, Pay
*/
public Page<PayRefundOrder> page(PageParam pageParam, PayRefundOrderQuery query) {
Page<PayRefundOrder> mpPage = MpUtil.getMpPage(pageParam, PayRefundOrder.class);
return lambdaQuery().orderByDesc(MpIdEntity::getId)
.like(Objects.nonNull(query.getPaymentId()), PayRefundOrder::getPaymentId, query.getPaymentId())
.like(Objects.nonNull(query.getBusinessNo()), PayRefundOrder::getBusinessNo, query.getBusinessNo())
.like(Objects.nonNull(query.getTitle()), PayRefundOrder::getTitle, query.getTitle())
.page(mpPage);
QueryWrapper<PayRefundOrder> generator = QueryGenerator.generator(query);
// if (Objects.nonNull(query.getSortField())){
// generator.orderBy(true, query.getAsc(), NamingCase.toUnderlineCase(query.getSortField()));
// }
return page(mpPage,generator);
}
}

View File

@@ -1,11 +1,12 @@
package cn.bootx.platform.daxpay.service.core.record.callback.dao;
import cn.bootx.platform.common.core.rest.param.PageParam;
import cn.bootx.platform.common.mybatisplus.base.MpIdEntity;
import cn.bootx.platform.common.mybatisplus.impl.BaseManager;
import cn.bootx.platform.common.mybatisplus.util.MpUtil;
import cn.bootx.platform.common.query.generator.QueryGenerator;
import cn.bootx.platform.daxpay.service.core.record.callback.entity.PayCallbackRecord;
import cn.bootx.platform.daxpay.service.param.record.PayCallbackRecordQuery;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
@@ -22,10 +23,9 @@ public class PayCallbackRecordManager extends BaseManager<PayCallbackRecordMappe
/**
* 分页
*/
public Page<PayCallbackRecord> page(PageParam pageParam, PayCallbackRecordQuery param){
public Page<PayCallbackRecord> page(PageParam pageParam, PayCallbackRecordQuery query){
Page<PayCallbackRecord> mpPage = MpUtil.getMpPage(pageParam, PayCallbackRecord.class);
return lambdaQuery()
.orderByDesc(MpIdEntity::getId)
.page(mpPage);
QueryWrapper<PayCallbackRecord> generator = QueryGenerator.generator(query);
return page(mpPage, generator);
}
}

View File

@@ -3,8 +3,6 @@ package cn.bootx.platform.daxpay.service.dto.record.callback;
import cn.bootx.platform.common.core.rest.dto.BaseDto;
import cn.bootx.platform.daxpay.code.PayChannelEnum;
import cn.bootx.platform.daxpay.service.code.PayCallbackStatusEnum;
import cn.bootx.table.modify.mysql.annotation.DbMySqlFieldType;
import cn.bootx.table.modify.mysql.constants.MySqlFieldTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -35,7 +33,6 @@ public class PayCallbackRecordDto extends BaseDto {
private String payChannel;
/** 通知消息 */
@DbMySqlFieldType(MySqlFieldTypeEnum.LONGTEXT)
@Schema(description = "通知消息")
private String notifyInfo;

View File

@@ -1,7 +1,12 @@
package cn.bootx.platform.daxpay.service.param.order;
import cn.bootx.platform.common.core.annotation.QueryParam;
import cn.bootx.platform.common.core.rest.param.QueryOrder;
import cn.bootx.platform.daxpay.code.PayChannelEnum;
import cn.bootx.platform.daxpay.code.PayStatusEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
@@ -9,8 +14,51 @@ import lombok.experimental.Accessors;
* @author xxm
* @since 2024/1/9
*/
@EqualsAndHashCode(callSuper = true)
@Data
@QueryParam
@Accessors(chain = true)
@Schema(title = "支付订单查询参数")
public class PayOrderQuery {
public class PayOrderQuery extends QueryOrder {
@QueryParam(type = QueryParam.CompareTypeEnum.EQ)
@Schema(description = "支付订单id")
private Long paymentId;
/** 关联的业务号 */
@QueryParam(type = QueryParam.CompareTypeEnum.LIKE)
@Schema(description = "关联的业务号")
private String businessNo;
/** 标题 */
@QueryParam(type = QueryParam.CompareTypeEnum.LIKE)
@Schema(description = "标题")
private String title;
/** 是否是异步支付 */
@QueryParam(type = QueryParam.CompareTypeEnum.EQ)
@Schema(description = "是否是异步支付")
private Boolean asyncPay;
/** 是否是组合支付 */
@QueryParam(type = QueryParam.CompareTypeEnum.EQ)
@Schema(description = "是否是组合支付")
private Boolean combinationPay;
/**
* 异步支付通道
* @see PayChannelEnum#ASYNC_TYPE_CODE
*/
@QueryParam(type = QueryParam.CompareTypeEnum.EQ)
@Schema(description = "异步支付通道")
private String asyncChannel;
/**
* 支付状态
* @see PayStatusEnum
*/
@QueryParam(type = QueryParam.CompareTypeEnum.EQ)
@Schema(description = "支付状态")
private String status;
}

View File

@@ -18,11 +18,14 @@ import java.util.List;
public class PayOrderRefundParam {
/** 支付id */
@Schema(description = "支付id")
private Long paymentId;
/** 原因 */
@Schema(description = "原因")
private String reason;
/** 退款明细 */
@Schema(description = "退款明细")
private List<RefundChannelParam> refundChannels;
}

View File

@@ -1,7 +1,10 @@
package cn.bootx.platform.daxpay.service.param.order;
import cn.bootx.platform.common.core.annotation.QueryParam;
import cn.bootx.platform.common.core.rest.param.QueryOrder;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
@@ -9,20 +12,24 @@ import lombok.experimental.Accessors;
* @author xxm
* @since 2024/1/9
*/
@EqualsAndHashCode(callSuper = true)
@Data
@QueryParam(type = QueryParam.CompareTypeEnum.EQ)
@Accessors(chain = true)
@Schema(title = "支付退款查询参数")
public class PayRefundOrderQuery {
public class PayRefundOrderQuery extends QueryOrder {
@Schema(description = "关联的业务")
private String businessNo;
@Schema(description = "付款付单号")
@Schema(description = "支付")
private Long paymentId;
@Schema(description = "异步方式关联退款请求号(部分退款情况)")
@Schema(description = "关联的业务号")
@QueryParam(type = QueryParam.CompareTypeEnum.LIKE)
private String businessNo;
@Schema(description = "外部网关请求号")
private String refundRequestNo;
@Schema(description = "标题")
@QueryParam(type = QueryParam.CompareTypeEnum.LIKE)
private String title;
}

View File

@@ -1,7 +1,12 @@
package cn.bootx.platform.daxpay.service.param.record;
import cn.bootx.platform.common.core.annotation.QueryParam;
import cn.bootx.platform.common.core.rest.param.QueryOrder;
import cn.bootx.platform.daxpay.code.PayChannelEnum;
import cn.bootx.platform.daxpay.service.code.PayCallbackStatusEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
@@ -9,8 +14,29 @@ import lombok.experimental.Accessors;
* @author xxm
* @since 2024/1/9
*/
@EqualsAndHashCode(callSuper = true)
@QueryParam(type = QueryParam.CompareTypeEnum.EQ)
@Data
@Accessors(chain = true)
@Schema(title = "支付回调信息记录")
public class PayCallbackRecordQuery {
public class PayCallbackRecordQuery extends QueryOrder {
/** 支付记录id */
@Schema(description = "支付记录id")
private Long paymentId;
/**
* 支付通道
* @see PayChannelEnum#getCode()
*/
@Schema(description = "支付通道")
private String payChannel;
/**
* 回调处理状态
* @see PayCallbackStatusEnum
*/
@Schema(description = "回调处理状态")
private String status;
}