diff --git a/_doc/Task.md b/_doc/Task.md index 28451ddbd..3d5f480cb 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -56,8 +56,9 @@ - [x] (前端) 微信/支付宝支付通道配置 - [x] 支付通道支持停用 - [x] 请求支付网关时区退款号以R开头, 用于与支付ID的区分 + - [x] (前端) 平台配置 +- 2024-01-14: - [ ] 优化支付相关订单和记录的查询条件 - - [ ] (前端) 平台配置 - **任务池** - [ ] 支付宝关闭支付时支持撤销方式, - [ ] 支持转账操作, 通过支付通道专有参数进行实现, 转账时只能单个通道进行操作 diff --git a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/UniPayController.java b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/UniPayController.java index a54ec59f6..5ce29ab96 100644 --- a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/UniPayController.java +++ b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/UniPayController.java @@ -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 syncRefund(@RequestBody RefundSyncParam param){ return DaxRes.ok(); } + + @CountTime + @PaymentApi("queryPayOrder") + @Operation(summary = "查询支付订单") + @PostMapping("/queryPayOrder") + public DaxResult queryPayOrder(){ + return DaxRes.ok(); + } + + @CountTime + @PaymentApi("queryRefundOrder") + @Operation(summary = "查询退款订单") + @PostMapping("/queryRefundOrder") + public DaxResult queryRefundOrder(){ + return DaxRes.ok(); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayOrderManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayOrderManager.java index 1eb56d863..b257ba00f 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayOrderManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/dao/PayOrderManager.java @@ -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 { */ public Page page(PageParam pageParam, PayOrderQuery query){ Page mpPage = MpUtil.getMpPage(pageParam, PayOrder.class); - return lambdaQuery() - .orderByDesc(MpIdEntity::getId) - .page(mpPage); + QueryWrapper generator = QueryGenerator.generator(query); +// if (Objects.nonNull(query.getSortField())){ +// generator.orderBy(true, query.getAsc(), NamingCase.toUnderlineCase(query.getSortField())); +// } + return page(mpPage, generator); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/refund/dao/PayRefundOrderManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/refund/dao/PayRefundOrderManager.java index 0ee999453..16cdef731 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/refund/dao/PayRefundOrderManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/refund/dao/PayRefundOrderManager.java @@ -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 page(PageParam pageParam, PayRefundOrderQuery query) { Page 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 generator = QueryGenerator.generator(query); +// if (Objects.nonNull(query.getSortField())){ +// generator.orderBy(true, query.getAsc(), NamingCase.toUnderlineCase(query.getSortField())); +// } + return page(mpPage,generator); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/callback/dao/PayCallbackRecordManager.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/callback/dao/PayCallbackRecordManager.java index a8c69b1f8..ecb0181eb 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/callback/dao/PayCallbackRecordManager.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/callback/dao/PayCallbackRecordManager.java @@ -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 page(PageParam pageParam, PayCallbackRecordQuery param){ + public Page page(PageParam pageParam, PayCallbackRecordQuery query){ Page mpPage = MpUtil.getMpPage(pageParam, PayCallbackRecord.class); - return lambdaQuery() - .orderByDesc(MpIdEntity::getId) - .page(mpPage); + QueryWrapper generator = QueryGenerator.generator(query); + return page(mpPage, generator); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/callback/PayCallbackRecordDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/callback/PayCallbackRecordDto.java index 05489f24e..80fd9c40c 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/callback/PayCallbackRecordDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/callback/PayCallbackRecordDto.java @@ -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; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayOrderQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayOrderQuery.java index 4b6067cd3..a419fa6b0 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayOrderQuery.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayOrderQuery.java @@ -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; + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayOrderRefundParam.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayOrderRefundParam.java index 9d316cdb2..39f8b784e 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayOrderRefundParam.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayOrderRefundParam.java @@ -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 refundChannels; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayRefundOrderQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayRefundOrderQuery.java index 192125318..4925c65d8 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayRefundOrderQuery.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayRefundOrderQuery.java @@ -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; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/PayCallbackRecordQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/PayCallbackRecordQuery.java index 5fc1af960..2471640f7 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/PayCallbackRecordQuery.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/record/PayCallbackRecordQuery.java @@ -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; }