diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/MchAndAppCode.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/MchAndAppCode.java index 351075213..4926cfe8d 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/MchAndAppCode.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/MchAndAppCode.java @@ -35,4 +35,7 @@ public interface MchAndAppCode { /** 停用 */ String PAY_CONFIG_STATE_FORBIDDEN = "forbidden"; + /** 封禁 */ + String PAY_CONFIG_STATE_BANNED = "banned"; + } diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/MchApplicationController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/MchApplicationController.java index 7592b04ee..b10547e3f 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/MchApplicationController.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/MchApplicationController.java @@ -73,8 +73,8 @@ public class MchApplicationController { @Operation(summary = "关联支付配置列表") @GetMapping("/findAllConfig") - public ResResult> findAllConfig(Long appId) { - return Res.ok(appPayConfigService.ListByAppId(appId)); + public ResResult> findAllConfig(String appCode) { + return Res.ok(appPayConfigService.ListByAppId(appCode)); } } diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayCallbackController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayCallbackController.java index af1fb4373..4d3e73911 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayCallbackController.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayCallbackController.java @@ -37,19 +37,19 @@ public class PayCallbackController { @SneakyThrows @Operation(summary = "支付宝回调") - @PostMapping("/alipay/{appCode}") - public String aliPay(@PathVariable String appCode, HttpServletRequest request) { + @PostMapping("/alipay/{mchCode}/{appCode}") + public String aliPay(@PathVariable String mchCode,@PathVariable String appCode, HttpServletRequest request) { Map stringStringMap = AliPayApi.toMap(request); - return aliPayCallbackService.payCallback(appCode, stringStringMap); + return aliPayCallbackService.payCallback(mchCode, appCode, stringStringMap); } @SneakyThrows @Operation(summary = "微信支付回调") - @PostMapping("/wechat/{appCode}") - public String wechat(@PathVariable String appCode, HttpServletRequest request) { + @PostMapping("/wechat/{mchCode}/{appCode}") + public String wechat(@PathVariable String mchCode, @PathVariable String appCode, HttpServletRequest request) { String xmlMsg = HttpKit.readData(request); Map params = WxPayKit.xmlToMap(xmlMsg); - return weChatPayCallbackService.payCallback(appCode, params); + return weChatPayCallbackService.payCallback(mchCode, appCode, params); } } diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PaymentController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PaymentController.java index ae427eb93..d5908581a 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PaymentController.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PaymentController.java @@ -4,8 +4,8 @@ import cn.bootx.platform.common.core.annotation.IgnoreAuth; import cn.bootx.platform.common.core.rest.PageResult; import cn.bootx.platform.common.core.rest.Res; import cn.bootx.platform.common.core.rest.ResResult; -import cn.bootx.platform.common.core.rest.param.OrderParam; import cn.bootx.platform.common.core.rest.param.PageParam; +import cn.bootx.platform.common.query.entity.QueryOrder; import cn.bootx.platform.common.query.entity.QueryParams; import cn.bootx.platform.daxpay.core.payment.service.PaymentQueryService; import cn.bootx.platform.daxpay.dto.payment.PayChannelInfo; @@ -38,8 +38,8 @@ public class PaymentController { @Operation(summary = "分页查询") @GetMapping("/page") - public ResResult> page(PageParam pageParam, PaymentQuery param, OrderParam orderParam) { - return Res.ok(paymentQueryService.page(pageParam, param, orderParam)); + public ResResult> page(PageParam pageParam, PaymentQuery param, QueryOrder queryOrder) { + return Res.ok(paymentQueryService.page(pageParam, param, queryOrder)); } @Operation(summary = "分页查询(超级查询)") diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/entity/AlipayConfig.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/entity/AlipayConfig.java index fa319ffef..d1e173e4f 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/entity/AlipayConfig.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/entity/AlipayConfig.java @@ -119,7 +119,10 @@ public class AlipayConfig extends MpBaseEntity implements EntityBaseFunction ListByAppId(Long appId) { + public List ListByAppId(String appCode) { // 首先查询系统中配置的支付通道进行排序 List channels = channelConfigManager.findAllByOrder(); // 查询当前应用所拥有的配置, 进行合并生成相关信息 - val mchAppPayConfigMap = mchAppPayConfigManager.findAllByField(MchAppPayConfig::getAppCode, appId) + val mchAppPayConfigMap = mchAppPayConfigManager.findAllByField(MchAppPayConfig::getAppCode, appCode) .stream() .collect(Collectors.toMap(MchAppPayConfig::getChannel, Function.identity())); // 进行排序并返回 diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/notify/entity/PayNotifyRecord.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/notify/entity/PayNotifyRecord.java index c58b1348e..8916f49d9 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/notify/entity/PayNotifyRecord.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/notify/entity/PayNotifyRecord.java @@ -34,6 +34,10 @@ public class PayNotifyRecord extends MpBaseEntity implements EntityBaseFunction< @DbComment("支付记录id") private Long paymentId; + /** 商户编码 */ + @DbComment("商户编码") + private String mchCode; + /** 商户应用编码 */ @DbComment("商户应用编码") private String mchAppCode; diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/pay/func/AbsPayCallbackStrategy.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/pay/func/AbsPayCallbackStrategy.java index 76e876212..fcaa3d056 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/pay/func/AbsPayCallbackStrategy.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/pay/func/AbsPayCallbackStrategy.java @@ -36,7 +36,7 @@ public abstract class AbsPayCallbackStrategy { /** * 支付回调 */ - public String payCallback(String appCode, Map params) { + public String payCallback(String mchCode,String appCode, Map params) { PARAMS.set(params); try { log.info("支付回调处理: {}", params); @@ -49,10 +49,10 @@ public abstract class AbsPayCallbackStrategy { return this.getReturnMsg(); } // 调用统一回调处理 - PayCallbackResult result = payCallbackService.callback(appCode, this.getPaymentId(), this.getTradeStatus(), + PayCallbackResult result = payCallbackService.callback(this.getPaymentId(), this.getTradeStatus(), params); // 记录回调记录 - this.saveNotifyRecord(appCode, result); + this.saveNotifyRecord(mchCode,appCode, result); } finally { PARAMS.remove(); @@ -100,14 +100,15 @@ public abstract class AbsPayCallbackStrategy { /** * 保存回调记录 */ - public void saveNotifyRecord(String appCode, PayCallbackResult result) { + public void saveNotifyRecord(String mchCode,String appCode, PayCallbackResult result) { PayNotifyRecord payNotifyRecord = new PayNotifyRecord().setNotifyInfo(JSONUtil.toJsonStr(PARAMS.get())) - .setNotifyTime(LocalDateTime.now()) - .setPaymentId(this.getPaymentId()) - .setMchAppCode(appCode) - .setPayChannel(this.getPayChannel().getCode()) - .setStatus(result.getCode()) - .setMsg(result.getMsg()); + .setNotifyTime(LocalDateTime.now()) + .setPaymentId(this.getPaymentId()) + .setMchAppCode(appCode) + .setMchCode(mchCode) + .setPayChannel(this.getPayChannel().getCode()) + .setStatus(result.getCode()) + .setMsg(result.getMsg()); payNotifyRecordManager.save(payNotifyRecord); } diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/pay/service/PayCallbackService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/pay/service/PayCallbackService.java index 0a3b1c07e..28084552c 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/pay/service/PayCallbackService.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/pay/service/PayCallbackService.java @@ -44,11 +44,10 @@ public class PayCallbackService { /** * 统一回调处理 - * @param appCode * @param tradeStatus 支付状态 * @see PayStatusCode */ - public PayCallbackResult callback(String appCode, Long paymentId, String tradeStatus, Map map) { + public PayCallbackResult callback(Long paymentId, String tradeStatus, Map map) { // 获取payment和paymentParam数据 Payment payment = paymentService.findById(paymentId).orElse(null); diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/payment/dao/PaymentManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/payment/dao/PaymentManager.java index b89e5d647..2a4a29bb0 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/payment/dao/PaymentManager.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/payment/dao/PaymentManager.java @@ -1,14 +1,13 @@ package cn.bootx.platform.daxpay.core.payment.dao; -import cn.bootx.platform.common.core.rest.param.OrderParam; import cn.bootx.platform.common.core.rest.param.PageParam; import cn.bootx.platform.common.mybatisplus.impl.BaseManager; import cn.bootx.platform.common.mybatisplus.util.MpUtil; +import cn.bootx.platform.common.query.entity.QueryOrder; import cn.bootx.platform.common.query.entity.QueryParams; import cn.bootx.platform.common.query.generator.QueryGenerator; import cn.bootx.platform.daxpay.core.payment.entity.Payment; import cn.bootx.platform.daxpay.param.payment.PaymentQuery; -import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; @@ -18,7 +17,6 @@ import org.springframework.cache.annotation.Caching; import org.springframework.stereotype.Repository; import java.io.Serializable; -import java.util.Objects; import java.util.Optional; import static cn.bootx.platform.daxpay.code.CachingCode.PAYMENT_BUSINESS_ID; @@ -52,20 +50,14 @@ public class PaymentManager extends BaseManager { /** * 分页查询 */ - public Page page(PageParam pageParam, PaymentQuery param, OrderParam orderParam) { + public Page page(PageParam pageParam, PaymentQuery param, QueryOrder queryOrder) { Page mpPage = MpUtil.getMpPage(pageParam, Payment.class); - return query().select(Payment.class, MpUtil::excludeBigField) - .orderBy(Objects.nonNull(orderParam.getSortField()), orderParam.isAsc(), - StrUtil.toUnderlineCase(orderParam.getSortField())) - .like(Objects.nonNull(param.getPaymentId()), MpUtil.getColumnName(Payment::getId), param.getPaymentId()) - .like(Objects.nonNull(param.getBusinessId()), MpUtil.getColumnName(Payment::getBusinessId), - param.getBusinessId()) - .like(Objects.nonNull(param.getTitle()), MpUtil.getColumnName(Payment::getTitle), param.getTitle()) - .page(mpPage); + QueryWrapper wrapper = QueryGenerator.generator(param, queryOrder); + return this.page(mpPage,wrapper); } /** - * 分页查询 + * 超级分页查询 */ public Page superPage(PageParam pageParam, QueryParams queryParams) { QueryWrapper wrapper = QueryGenerator.generator(queryParams); diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/payment/entity/Payment.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/payment/entity/Payment.java index 1c229fe9e..0be76f567 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/payment/entity/Payment.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/payment/entity/Payment.java @@ -1,6 +1,7 @@ package cn.bootx.platform.daxpay.core.payment.entity; import cn.bootx.mybatis.table.modify.annotation.DbColumn; +import cn.bootx.mybatis.table.modify.annotation.DbComment; import cn.bootx.mybatis.table.modify.annotation.DbTable; import cn.bootx.platform.common.core.annotation.BigField; import cn.bootx.platform.common.core.function.EntityBaseFunction; @@ -31,6 +32,7 @@ import java.util.List; @DbTable(isAppend = true) @EqualsAndHashCode(callSuper = true) @Data +@DbComment("支付记录") @FieldNameConstants @Accessors(chain = true) @TableName(value = "pay_payment", autoResultMap = true) diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/payment/service/PaymentQueryService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/payment/service/PaymentQueryService.java index 26ec034fe..b6d5368c0 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/payment/service/PaymentQueryService.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/payment/service/PaymentQueryService.java @@ -2,9 +2,9 @@ package cn.bootx.platform.daxpay.core.payment.service; import cn.bootx.platform.common.core.exception.DataNotExistException; import cn.bootx.platform.common.core.rest.PageResult; -import cn.bootx.platform.common.core.rest.param.OrderParam; import cn.bootx.platform.common.core.rest.param.PageParam; import cn.bootx.platform.common.mybatisplus.util.MpUtil; +import cn.bootx.platform.common.query.entity.QueryOrder; import cn.bootx.platform.common.query.entity.QueryParams; import cn.bootx.platform.daxpay.core.payment.dao.PaymentManager; import cn.bootx.platform.daxpay.core.payment.entity.Payment; @@ -64,8 +64,8 @@ public class PaymentQueryService { /** * 分页 */ - public PageResult page(PageParam pageParam, PaymentQuery param, OrderParam orderParam) { - return MpUtil.convert2DtoPageResult(paymentManager.page(pageParam, param, orderParam)); + public PageResult page(PageParam pageParam, PaymentQuery param, QueryOrder queryOrder) { + return MpUtil.convert2DtoPageResult(paymentManager.page(pageParam, param, queryOrder)); } /** diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/merchant/MchApplicationDto.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/merchant/MchApplicationDto.java index ce639a3a3..fc925794c 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/merchant/MchApplicationDto.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/merchant/MchApplicationDto.java @@ -25,7 +25,7 @@ public class MchApplicationDto extends BaseDto { private String name; @Schema(description = "商户号") - private String mchNo; + private String mchCode; @Schema(description = "状态类型") private String state; diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/payment/PaymentDto.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/payment/PaymentDto.java index 09f235717..b5e6f9e50 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/payment/PaymentDto.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/dto/payment/PaymentDto.java @@ -28,7 +28,7 @@ public class PaymentDto extends BaseDto implements Serializable { private String businessId; @Schema(description = "商户编码") - private String mchNo; + private String mchCode; @Schema(description = "商户应用编码") private String mchAppNo; diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/channel/wechat/WeChatPayConfigParam.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/channel/wechat/WeChatPayConfigParam.java index 477cfd356..2c37ea3ea 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/channel/wechat/WeChatPayConfigParam.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/channel/wechat/WeChatPayConfigParam.java @@ -82,7 +82,7 @@ public class WeChatPayConfigParam { private Boolean activity; @Schema(description = "状态") - private Integer state; + private String state; @Schema(description = "备注") private String remark; diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/merchant/MchApplicationParam.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/merchant/MchApplicationParam.java index c28c77cb4..ed63aaab4 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/merchant/MchApplicationParam.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/merchant/MchApplicationParam.java @@ -1,5 +1,6 @@ package cn.bootx.platform.daxpay.param.merchant; +import cn.bootx.platform.common.core.annotation.QueryParam; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.experimental.Accessors; @@ -11,6 +12,7 @@ import lombok.experimental.Accessors; * @date 2023-05-19 */ @Data +@QueryParam(type = QueryParam.CompareTypeEnum.LIKE) @Schema(title = "商户应用") @Accessors(chain = true) public class MchApplicationParam { @@ -19,13 +21,13 @@ public class MchApplicationParam { private Long id; @Schema(description = "应用编码") - private String appNo; + private String code; @Schema(description = "名称") private String name; @Schema(description = "商户号") - private String mchNo; + private String mchCode; @Schema(description = "状态类型") private String state; diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/payment/PaymentQuery.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/payment/PaymentQuery.java index f9d40d810..b4a7db75d 100644 --- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/payment/PaymentQuery.java +++ b/dax-pay/src/main/java/cn/bootx/platform/daxpay/param/payment/PaymentQuery.java @@ -1,5 +1,6 @@ package cn.bootx.platform.daxpay.param.payment; +import cn.bootx.platform.common.core.annotation.QueryParam; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.experimental.Accessors; @@ -12,6 +13,7 @@ import java.io.Serializable; */ @Data @Accessors(chain = true) +@QueryParam(type = QueryParam.CompareTypeEnum.LIKE) @Schema(title = "支付记录查询参数") public class PaymentQuery implements Serializable { @@ -23,7 +25,13 @@ public class PaymentQuery implements Serializable { @Schema(description = "关联的业务id") private String businessId; - @Schema(description = "关联的业务id") + @Schema(description = "标题") private String title; + @Schema(description = "商户编码") + private String mchCode; + + @Schema(description = "商户编应用码") + private String mchAppCode; + } diff --git a/pom.xml b/pom.xml index 3bb0e5a7e..472ec8865 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ 1.8 - 1.3.0 + 1.3.1 5.8.15 6.4.0