diff --git a/.gitignore b/.gitignore
index b28673a4..e8b4b19a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,4 @@ out/
target/
build/
logs/
+rebel.xml
diff --git a/dax-pay/pom.xml b/dax-pay/pom.xml
deleted file mode 100644
index 453826e3..00000000
--- a/dax-pay/pom.xml
+++ /dev/null
@@ -1,187 +0,0 @@
-
-
- 4.0.0
-
- cn.bootx.platform
- bootx-dax-pay
- 1.0.2
-
-
- dax-pay
-
-
-
-
- org.springframework.boot
- spring-boot-starter-thymeleaf
-
-
-
- net.sourceforge.nekohtml
- nekohtml
-
-
-
-
- org.flywaydb
- flyway-core
- ${flyway.version}
-
-
-
-
- org.projectlombok
- lombok
- provided
-
-
-
-
- org.projectlombok
- lombok-mapstruct-binding
- provided
-
-
-
-
- org.mapstruct
- mapstruct-processor
- provided
-
-
-
-
- org.mapstruct
- mapstruct
- provided
-
-
-
-
- com.baomidou
- lock4j-redis-template-spring-boot-starter
- ${lock4j.version}
-
-
-
-
- cn.bootx.platform
- service-baseapi
- ${bootx-platform.version}
-
-
-
-
- cn.bootx.platform
- service-iam
- ${bootx-platform.version}
-
-
-
-
- cn.bootx.platform
- service-notice
- ${bootx-platform.version}
-
-
-
-
- cn.bootx.platform
- common-starter-file
-
-
-
-
- cn.bootx.platform
- common-starter-code-gen
-
-
-
-
- cn.bootx.platform
- common-websocket
-
-
-
-
- cn.bootx.platform
- common-starter-quartz
-
-
-
-
- org.springframework.boot
- spring-boot-starter-amqp
- true
-
-
-
- org.apache.rocketmq
- rocketmq-spring-boot
- ${rocketmq.version}
- true
-
-
-
-
- org.springframework.boot
- spring-boot-starter-activemq
- true
-
-
-
-
- cn.bootx
- table-modify-mysql-boot-starter
-
-
-
-
- cn.bootx.platform
- common-starter-monitor
-
-
-
-
- com.github.javen205
- IJPay-AliPay
- ${IJPay.version}
-
-
- cn.hutool
- hutool-all
-
-
- xml-apis
- xml-apis
-
-
- fastjson
- com.alibaba
-
-
-
-
-
-
- io.minio
- minio
- 8.5.4
-
-
-
- com.github.javen205
- IJPay-WxPay
- ${IJPay.version}
-
-
-
- com.github.binarywang
- weixin-java-pay
- ${wxjava.version}
-
-
-
-
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/CachingCode.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/CachingCode.java
deleted file mode 100644
index 325c9a28..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/CachingCode.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package cn.bootx.platform.daxpay.code;
-
-/**
- * 支付服务缓存
- *
- * @author xxm
- * @since 2022/7/11
- */
-public interface CachingCode {
-
- /** 支付单(主键) */
- String PAYMENT_ID = "pay:payment:id";
-
- /** 支付单(业务号码) */
- String PAYMENT_BUSINESS_ID = "pay:payment:business";
-
-}
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
deleted file mode 100644
index 4db74450..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/MchAndAppCode.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package cn.bootx.platform.daxpay.code;
-
-/**
- * 商户和应用相关编码
- *
- * @author xxm
- * @since 2023/6/12
- */
-public interface MchAndAppCode {
-
- /* 商户状态 */
- /** 正常 */
- String MCH_STATE_NORMAL = "normal";
-
- /** 停用 */
- String MCH_STATE_FORBIDDEN = "forbidden";
-
- /** 封禁 */
- String MCH_STATE_BANNED = "banned";
-
- /* 商户应用状态 */
- /** 正常 */
- String MCH_APP_STATE_NORMAL = "normal";
-
- /** 停用 */
- String MCH_APP_STATE_FORBIDDEN = "forbidden";
-
- /** 封禁 */
- String MCH_APP_STATE_BANNED = "banned";
-
- /* 应用关联支付配置状态 */
- /** 正常 */
- String PAY_CONFIG_STATE_NORMAL = "normal";
-
- /** 停用 */
- String PAY_CONFIG_STATE_FORBIDDEN = "forbidden";
-
- /** 封禁 */
- String PAY_CONFIG_STATE_BANNED = "banned";
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/PaymentEventCode.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/PaymentEventCode.java
deleted file mode 100644
index 14a29f56..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/PaymentEventCode.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package cn.bootx.platform.daxpay.code;
-
-public interface PaymentEventCode {
-
- /** 支付中心交换机 */
- String EXCHANGE_PAYMENT = "service.exchange";
-
- /** 支付中心交换机 */
- String DELAYED_EXCHANGE_PAYMENT = "service.delayedExchange";
-
- /** 支付完成 */
- String PAY_COMPLETE = "pay.complete";
-
- /** 支付取消 */
- String PAY_CANCEL = "pay.cancel";
-
- /** 支付退款 */
- String PAY_REFUND = "pay.refund";
-
- /** 支付单超时 */
- String PAYMENT_EXPIRED_TIME = "payment.expired:time";
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/pay/PayStatusCode.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/pay/PayStatusCode.java
deleted file mode 100644
index a9435a40..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/pay/PayStatusCode.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package cn.bootx.platform.daxpay.code.pay;
-
-/**
- * 支付状态
- *
- * @author xxm
- * @since 2021/3/1
- */
-public interface PayStatusCode {
-
- // 支付状态
- /** 未知状态 */
- String TRADE_UNKNOWN = "trade_unknown";
-
- /** 支付中 */
- String TRADE_PROGRESS = "trade_progress";
-
- /** 成功 */
- String TRADE_SUCCESS = "trade_success";
-
- /** 失败 */
- String TRADE_FAIL = "trade_fail";
-
- /** 支付取消(超时/手动取消/订单已经关闭,撤销支付单) */
- String TRADE_CANCEL = "trade_cancel";
-
- /** 退款中(部分退款) */
- String TRADE_REFUNDING = "trade_refunding";
-
- /** 已退款 */
- String TRADE_REFUNDED = "trade_refunded";
-
- // 回调信息支付状态
- /** 失败 */
- String NOTIFY_TRADE_FAIL = "notify_trade_fail";
-
- /** 成功 */
- String NOTIFY_TRADE_SUCCESS = "notify_trade_success";
-
- // 回调处理状态
- /** 失败 */
- String NOTIFY_PROCESS_FAIL = "notify_process_fail";
-
- /** 成功 */
- String NOTIFY_PROCESS_SUCCESS = "notify_process_success";
-
- /** 忽略 */
- String NOTIFY_PROCESS_IGNORE = "notify_process_ignore";
-
- // 退款处理状态
- /** 失败 */
- String REFUND_PROCESS_FAIL = "refund_process_fail";
-
- /** 成功 */
- String REFUND_PROCESS_SUCCESS = "refund_process_success";
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/pay/PaySyncStatus.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/pay/PaySyncStatus.java
deleted file mode 100644
index 7511d2fb..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/pay/PaySyncStatus.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package cn.bootx.platform.daxpay.code.pay;
-
-/**
- * 支付网关同步状态
- *
- * @author xxm
- * @since 2021/4/21
- */
-public interface PaySyncStatus {
-
- /** 不需要同步 */
- String NOT_SYNC = "not_sync";
-
- /** 远程支付成功 */
- String TRADE_SUCCESS = "trade_success";
-
- /** 交易创建,等待买家付款 */
- String WAIT_BUYER_PAY = "wait_buyer_pay";
-
- /** 已关闭 */
- String TRADE_CLOSED = "trade_closed";
-
- /** 已退款 */
- String TRADE_REFUND = "trade_refund";
-
- /** 查询不到订单 */
- String NOT_FOUND = "not_found";
-
- /** 查询失败 */
- String FAIL = "fail";
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/pay/PayWayExtraCode.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/pay/PayWayExtraCode.java
deleted file mode 100644
index 78a2c1a5..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/pay/PayWayExtraCode.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package cn.bootx.platform.daxpay.code.pay;
-
-/**
- * 支付方式扩展字段
- *
- * @author xxm
- * @since 2022/2/27
- */
-public interface PayWayExtraCode {
-
- /** 付款码 */
- String AUTH_CODE = "auth_code";
-
- /** openId */
- String OPEN_ID = "open_id";
-
- /** 单张储值卡 */
- String VOUCHER_NO = "voucher_no";
-
- /** 多张储值卡 */
- String VOUCHER_NO_LIST = "voucher_no_list";
-
- /** 钱包ID */
- String WALLET_ID = "wallet_id";
-
- /** 用户ID */
- String USER_ID = "user_id";
-
- /** 同步通知路径 支付完成跳转的页面地址 */
- String RETURN_URL = "return_url";
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/AliPayCode.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/AliPayCode.java
deleted file mode 100644
index 9c229ff8..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/AliPayCode.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package cn.bootx.platform.daxpay.code.paymodel;
-
-/**
- * 支付宝支付参数
- *
- * @author xxm
- * @since 2021/2/27
- */
-public interface AliPayCode {
-
- // 认证类型
- /** 公钥 */
- String AUTH_TYPE_KEY = "key";
-
- /** 证书 */
- String AUTH_TYPE_CART = "cart";
-
- // 渠道枚举
- /** 目前PC支付必填 */
- String FAST_INSTANT_TRADE_PAY = "FAST_INSTANT_TRADE_PAY";
-
- /** WAP支付必填 手机网站支付产品 */
- String QUICK_WAP_PAY = "QUICK_WAP_WAY";
-
- /** APP支付必填 APP支付产品 */
- String QUICK_MSECURITY_PAY = "QUICK_MSECURITY_PAY";
-
- /** 付款码支付 */
- String BAR_CODE = "bar_code";
-
- // 响应字段
- /** 支付状态 */
- String TRADE_STATUS = "trade_status";
-
- /** 公用回传参数 */
- String PASS_BACK_PARAMS = "passback_params";
-
- /** 对交易或商品的描述(在没有公用回传参数的时候, 这个作为公用回传参数) */
- String BODY = "body";
-
- /** 外部订单号-paymentId */
- String OUT_TRADE_NO = "out_trade_no";
-
- /** 支付宝流水号 */
- String TRADE_NO = "trade_no";
-
- /** appId */
- String APP_ID = "app_id";
-
- // 交易状态说明
- /** 交易创建,等待买家付款 */
- String PAYMENT_WAIT_BUYER_PAY = "WAIT_BUYER_PAY";
-
- /** 未付款交易超时关闭,或支付完成后全额退款 */
- String PAYMENT_TRADE_CLOSED = "TRADE_CLOSED";
-
- /** 交易支付成功 */
- String PAYMENT_TRADE_SUCCESS = "TRADE_SUCCESS";
-
- /** 交易结束,不可退款 */
- String PAYMENT_TRADE_FINISHED = "TRADE_FINISHED";
-
- // 通知触发条件
- /** 交易完成 */
- String NOTIFY_TRADE_FINISHED = "TRADE_FINISHED";
-
- /** 支付成功 */
- String NOTIFY_TRADE_SUCCESS = "TRADE_SUCCESS";
-
- /** 交易创建,不触发通知 */
- String NOTIFY_WAIT_BUYER_PAY = "WAIT_BUYER_PAY";
-
- /** 交易关闭 */
- String NOTIFY_TRADE_CLOSED = "TRADE_CLOSED";
-
- // 错误提示
- /** 交易不存在 */
- String ACQ_TRADE_NOT_EXIST = "ACQ.TRADE_NOT_EXIST";
-
- // 网关返回码
- String SUCCESS = "10000";
-
- // 网关返回码 支付进行中 order success pay inprocess
- String INPROCESS = "10003";
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/AliPayWay.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/AliPayWay.java
deleted file mode 100644
index 65209b4f..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/AliPayWay.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package cn.bootx.platform.daxpay.code.paymodel;
-
-import cn.bootx.platform.daxpay.code.pay.PayWayEnum;
-import cn.bootx.platform.daxpay.exception.payment.PayFailureException;
-import lombok.experimental.UtilityClass;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * 支付宝支付方式
- *
- * @author xxm
- * @since 2021/7/2
- */
-@UtilityClass
-public class AliPayWay {
-
- // 支付方式
- private static final List PAY_WAYS = Arrays.asList(PayWayEnum.WAP, PayWayEnum.APP, PayWayEnum.WEB,
- PayWayEnum.QRCODE, PayWayEnum.BARCODE);
-
- /**
- * 根据编码获取
- */
- public PayWayEnum findByCode(String code) {
- return PAY_WAYS.stream()
- .filter(e -> Objects.equals(code, e.getCode()))
- .findFirst()
- .orElseThrow(() -> new PayFailureException("不存在的支付方式"));
- }
-
- /**
- * 获取支持的支付方式
- */
- public List getPayWays() {
- return PAY_WAYS;
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/VoucherCode.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/VoucherCode.java
deleted file mode 100644
index b7b87be6..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/VoucherCode.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package cn.bootx.platform.daxpay.code.paymodel;
-
-/**
- * 储值卡常量
- *
- * @author xxm
- * @since 2022/3/14
- */
-public interface VoucherCode {
-
- /**
- * 状态-正常
- */
- String STATUS_NORMAL = "normal";
-
- /**
- * 状态-停用
- */
- String STATUS_FORBIDDEN = "forbidden";
-
- /**
- * 储值卡日志-开通
- */
- String LOG_ACTIVE = "active";
-
- /**
- * 储值卡日志-导入
- */
- String LOG_IMPORT = "import";
-
- /**
- * 储值卡日志-预冻结额度
- */
- String LOG_FREEZE_BALANCE = "freeze";
-
- /**
- * 储值卡日志-扣减并解冻余额
- */
- String LOG_REDUCE_AND_UNFREEZE_BALANCE = "reduceAndUnfreeze";
-
- /**
- * 储值卡日志-直接支付
- */
- String LOG_PAY = "pay";
- /**
- * 储值卡日志-取消支付
- */
- String LOG_CLOSE_PAY = "closePay";
-
- /**
- * 储值卡日志-退款到本卡中
- */
- String LOG_REFUND_SELF = "refundSelf";
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/WalletCode.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/WalletCode.java
deleted file mode 100644
index a64fa0ea..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/WalletCode.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package cn.bootx.platform.daxpay.code.paymodel;
-
-/**
- * 钱包涉及到的常量
- *
- * @author xxm
- * @since 2020/12/8
- */
-public interface WalletCode {
-
- /* 操作类型 */
- /** 系统操作 */
- String OPERATION_SOURCE_SYSTEM = "system";
-
- /** 管理员操作 */
- String OPERATION_SOURCE_ADMIN = "admin";
-
- /** 用户操作 */
- String OPERATION_SOURCE_USER = "user";
-
- /* 钱包状态 */
- /** 钱包状态-正常 */
- String STATUS_NORMAL = "normal";
-
- /** 钱包状态-禁用 */
- String STATUS_FORBIDDEN = "forbidden";
-
- /* 日志类型 */
- /**
- * 钱包日志-开通
- */
- String LOG_ACTIVE = "active";
-
- /**
- * 钱包日志-Admin操作余额变动
- */
- String LOG_ADMIN_CHANGER = "adminChanger";
-
- /**
- * 钱包日志-预冻结额度
- */
- String LOG_FREEZE_BALANCE = "freeze";
-
- /**
- * 钱包日志-解冻并扣减余额
- */
- String LOG_REDUCE_AND_UNFREEZE_BALANCE = "reduceAndUnfreeze";
-
- /**
- * 钱包日志-直接支付
- */
- String LOG_PAY = "pay";
- /**
- * 钱包日志-取消支付
- */
- String LOG_CLOSE_PAY = "closePay";
-
- /**
- * 钱包日志-退款
- */
- String LOG_REFUND = "refund";
-
- /**
- * 锁定钱包
- */
- String LOG_LOCK = "lock";
-
- /**
- * 解锁钱包
- */
- String LOG_UNLOCK = "unlock";
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/WeChatPayCode.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/WeChatPayCode.java
deleted file mode 100644
index 52cb8008..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/WeChatPayCode.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package cn.bootx.platform.daxpay.code.paymodel;
-
-/**
- * 微信参数
- *
- * @author xxm
- * @since 2021/6/21
- */
-public interface WeChatPayCode {
-
- // 版本
- String API_V2 = "apiV2";
-
- String API_V3 = "apiV3";
-
- // 请求参数
- /** jsapi发起获取AuthCode时的重定向参数 */
- String JSAPI_REDIRECT_URL = "JsapiRedirectUrl";
-
- // 返回参数
- /** 二维码链接 */
- String CODE_URL = "code_url";
-
- /** 支付跳转链接 */
- String MWEB_URL = "mweb_url";
-
- /** 预支付交易会话ID */
- String PREPAY_ID = "prepay_id";
-
- /** 返回状态码 */
- String RETURN_CODE = "return_code";
-
- /** 返回信息 */
- String RETURN_MSG = "return_msg";
-
- /** 返回错误代码(例如付款码返回的支付中状态就在这里面) */
- String ERR_CODE = "err_code";
-
- /** 返回错误信息 */
- String ERR_CODE_DES = "err_code_des";
-
- /** 业务结果(部分结果不在这个参数里, 例如付款码的响应码) */
- String RESULT_CODE = "result_code";
-
- /** 交易类型 */
- String TRADE_TYPE = "trade_type";
-
- /** appid */
- String APPID = "appid";
-
- /** 交易状态 */
- String TRADE_STATE = "trade_state";
-
- /** 商户订单号 */
- String OUT_TRADE_NO = "out_trade_no";
-
- /** 微信交易单号 */
- String TRANSACTION_ID = "transaction_id";
-
- // 交易状态
- /** 支付成功 */
- String TRADE_SUCCESS = "SUCCESS";
-
- /** 支付失败 */
- String TRADE_FAIL = "FAIL";
-
- /** 退款 */
- String TRADE_REFUND = "REFUND";
-
- /** 未支付 */
- String TRADE_NOTPAY = "NOTPAY";
-
- /** 已关闭 */
- String TRADE_CLOSED = "CLOSED";
-
- /** 已接收,等待扣款 */
- String TRADE_ACCEPT = "ACCEPT";
-
- /** 已撤销(刷卡支付) */
- String TRADE_REVOKED = "REVOKED";
-
- /** 用户支付中(刷卡支付) */
- String TRADE_USERPAYING = "USERPAYING";
-
- /** 支付失败(刷卡支付) */
- String TRADE_PAYERROR = "PAYERROR";
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/WeChatPayWay.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/WeChatPayWay.java
deleted file mode 100644
index 4014fff5..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/code/paymodel/WeChatPayWay.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package cn.bootx.platform.daxpay.code.paymodel;
-
-import cn.bootx.platform.daxpay.code.pay.PayWayEnum;
-import cn.bootx.platform.daxpay.exception.payment.PayFailureException;
-import lombok.experimental.UtilityClass;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * 微信支付方式
- *
- * @author xxm
- * @since 2021/7/2
- */
-@UtilityClass
-public class WeChatPayWay {
-
- private static final List PAY_WAYS = Arrays.asList(PayWayEnum.WAP, PayWayEnum.APP, PayWayEnum.JSAPI,
- PayWayEnum.QRCODE, PayWayEnum.BARCODE);
-
- /**
- * 根据数字编号获取
- */
- public PayWayEnum findByCode(String code) {
- return PAY_WAYS.stream()
- .filter(e -> Objects.equals(code, e.getCode()))
- .findFirst()
- .orElseThrow(() -> new PayFailureException("不存在的支付方式"));
- }
-
- /**
- * 获取支持的支付方式
- */
- public List getPayWays() {
- return PAY_WAYS;
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/configuration/DaxPayProperties.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/configuration/DaxPayProperties.java
deleted file mode 100644
index 60212e8f..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/configuration/DaxPayProperties.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package cn.bootx.platform.daxpay.configuration;
-
-import lombok.Getter;
-import lombok.Setter;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-/**
- * 项目
- * @author xxm
- * @since 2023/7/17
- */
-@Getter
-@Setter
-@ConfigurationProperties(prefix = "bootx.daxpay")
-public class DaxPayProperties {
-
- /**
- * 消息队列类型
- */
- private MqType mqType = MqType.SPRING;
-
- /**
- * 消息队列类型
- * @author xxm
- * @since 2023/7/17
- */
- public enum MqType{
- /** Spring 消息 */
- SPRING,
- /** ActiveMQ */
- ACTIVE,
- /** RabbitMQ */
- RABBIT,
- /** RocketMQ */
- ROCKET;
- }
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/AggregateController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/AggregateController.java
deleted file mode 100644
index 325dab57..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/AggregateController.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-import cn.bootx.platform.daxpay.core.aggregate.service.AggregateService;
-import cn.bootx.platform.daxpay.param.cashier.CashierSinglePayParam;
-import cn.bootx.platform.common.core.annotation.IgnoreAuth;
-import cn.bootx.platform.common.core.rest.Res;
-import cn.bootx.platform.common.core.rest.ResResult;
-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;
-
-/**
- * 聚合支付
- *
- * @author xxm
- * @since 2022/3/6
- */
-@IgnoreAuth
-@Tag(name = "聚合支付")
-@RestController
-@RequestMapping("/aggregate")
-@RequiredArgsConstructor
-public class AggregateController {
-
- private final AggregateService aggregateService;
-
- @Operation(summary = "创建聚合支付")
- @PostMapping("/createAggregatePay")
- public ResResult createAggregatePay(@RequestBody CashierSinglePayParam param) {
- return Res.ok(aggregateService.createAggregatePay(param));
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/AlipayConfigController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/AlipayConfigController.java
deleted file mode 100644
index c35a5270..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/AlipayConfigController.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-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.dto.KeyValue;
-import cn.bootx.platform.common.core.rest.dto.LabelValue;
-import cn.bootx.platform.common.core.rest.param.PageParam;
-import cn.bootx.platform.daxpay.core.channel.alipay.service.AlipayConfigService;
-import cn.bootx.platform.daxpay.dto.channel.alipay.AlipayConfigDto;
-import cn.bootx.platform.daxpay.param.channel.alipay.AlipayConfigParam;
-import cn.bootx.platform.daxpay.param.channel.alipay.AlipayConfigQuery;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.AllArgsConstructor;
-import lombok.SneakyThrows;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.nio.charset.StandardCharsets;
-import java.util.List;
-
-/**
- * @author xxm
- * @since 2021/2/26
- */
-@Tag(name = "支付宝配置")
-@RestController
-@RequestMapping("/alipay")
-@AllArgsConstructor
-public class AlipayConfigController {
-
- private final AlipayConfigService alipayConfigService;
-
- @Operation(summary = "添加")
- @PostMapping("/add")
- public ResResult add(@RequestBody AlipayConfigParam param) {
- alipayConfigService.add(param);
- return Res.ok();
- }
-
- @Operation(summary = "更新")
- @PostMapping("/update")
- public ResResult update(@RequestBody AlipayConfigParam param) {
- alipayConfigService.update(param);
- return Res.ok();
- }
-
- @Operation(summary = "分页")
- @GetMapping("/page")
- public ResResult> page(PageParam pageParam, AlipayConfigQuery param) {
- return Res.ok(alipayConfigService.page(pageParam, param));
- }
-
- @Operation(summary = "根据Id查询")
- @GetMapping("/findById")
- public ResResult findById(Long id) {
- return Res.ok(alipayConfigService.findById(id));
- }
-
- @Operation(summary = "支付宝支持支付方式")
- @GetMapping("/findPayWayList")
- public ResResult> findPayWayList() {
- return Res.ok(alipayConfigService.findPayWayList());
- }
-
- @SneakyThrows
- @Operation(summary = "读取证书文件内容")
- @PostMapping("/readPem")
- public ResResult readPem(MultipartFile file){
- return Res.ok(new String(file.getBytes(), StandardCharsets.UTF_8));
- }
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/CashierController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/CashierController.java
deleted file mode 100644
index 9d5e7d64..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/CashierController.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-import cn.bootx.platform.common.core.annotation.IgnoreAuth;
-import cn.bootx.platform.common.core.rest.Res;
-import cn.bootx.platform.common.core.rest.ResResult;
-import cn.bootx.platform.daxpay.core.cashier.service.CashierService;
-import cn.bootx.platform.daxpay.dto.pay.PayResult;
-import cn.bootx.platform.daxpay.exception.payment.PayUnsupportedMethodException;
-import cn.bootx.platform.daxpay.param.cashier.CashierCombinationPayParam;
-import cn.bootx.platform.daxpay.param.cashier.CashierSinglePayParam;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
-
-import java.util.Map;
-
-import static org.springframework.http.HttpHeaders.USER_AGENT;
-
-/**
- * @author xxm
- * @since 2022/2/23
- */
-@IgnoreAuth
-@Tag(name = "结算台")
-@RestController
-@RequestMapping("/cashier")
-@RequiredArgsConstructor
-public class CashierController {
-
- private final CashierService cashierService;
-
- @Operation(summary = "发起支付(单渠道)")
- @PostMapping("/singlePay")
- public ResResult singlePay(@RequestBody CashierSinglePayParam cashierSinglePayParam) {
- return Res.ok(cashierService.singlePay(cashierSinglePayParam));
- }
-
- @Operation(summary = "发起支付(组合支付)")
- @PostMapping("/combinationPay")
- public ResResult combinationPay(@RequestBody CashierCombinationPayParam param) {
- return Res.ok(cashierService.combinationPay(param));
- }
-
- @Operation(summary = "扫码聚合支付(单渠道)")
- @GetMapping("/aggregatePay/{mchCode}/{mchAppCode}")
- public ModelAndView aggregatePay(String key,@PathVariable String mchCode,@PathVariable String mchAppCode, @RequestHeader(USER_AGENT) String ua) {
- try {
- String url = cashierService.aggregatePay(key, mchCode, mchAppCode, ua);
- return new ModelAndView("redirect:" + url);
- }
- catch (PayUnsupportedMethodException e) {
- return new ModelAndView("errorCashier");
- }
- }
-
- @Operation(summary = "微信jsapi支付(回调)")
- @GetMapping("/wxJsapiPay/{mchCode}/{mchAppCode}")
- public ModelAndView wxJsapiPay(String code, @PathVariable String mchCode, @PathVariable String mchAppCode, String state) {
- Map map = cashierService.wxJsapiPay(code,mchCode,mchAppCode,state);
- // 跳转页面, 调起微信jsapi支付
- return new ModelAndView("wechatJsapiPay").addAllObjects(map);
- }
-
-}
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
deleted file mode 100644
index a6831d51..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/MchApplicationController.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-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.dto.LabelValue;
-import cn.bootx.platform.common.core.rest.param.PageParam;
-import cn.bootx.platform.daxpay.core.merchant.service.MchAppPayConfigService;
-import cn.bootx.platform.daxpay.core.merchant.service.MchAppService;
-import cn.bootx.platform.daxpay.dto.merchant.MchAppPayConfigResult;
-import cn.bootx.platform.daxpay.dto.merchant.MchApplicationDto;
-import cn.bootx.platform.daxpay.param.merchant.MchApplicationParam;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-/**
- * 商户应用
- *
- * @author xxm
- * @since 2023-05-23
- */
-@Tag(name = "商户应用")
-@RestController
-@RequestMapping("/mch/app")
-@RequiredArgsConstructor
-public class MchApplicationController {
-
- private final MchAppService applicationService;
-
- private final MchAppPayConfigService appPayConfigService;
-
- @Operation(summary = "添加")
- @PostMapping(value = "/add")
- public ResResult add(@RequestBody MchApplicationParam param) {
- applicationService.add(param);
- return Res.ok();
- }
-
- @Operation(summary = "修改")
- @PostMapping(value = "/update")
- public ResResult update(@RequestBody MchApplicationParam param) {
- applicationService.update(param);
- return Res.ok();
- }
-
- @Operation(summary = "删除")
- @DeleteMapping(value = "/delete")
- public ResResult delete(Long id) {
- applicationService.delete(id);
- return Res.ok();
- }
-
- @Operation(summary = "通过ID查询")
- @GetMapping(value = "/findById")
- public ResResult findById(Long id) {
- return Res.ok(applicationService.findById(id));
- }
-
- @Operation(summary = "下拉列表")
- @GetMapping("/dropdown")
- public ResResult> dropdown(String mchCode) {
- return Res.ok(applicationService.dropdown(mchCode));
- }
-
- @Operation(summary = "查询所有")
- @GetMapping(value = "/findAll")
- public ResResult> findAll() {
- return Res.ok(applicationService.findAll());
- }
-
- @Operation(summary = "分页查询")
- @GetMapping(value = "/page")
- public ResResult> page(PageParam pageParam, MchApplicationParam mchApplicationParam) {
- return Res.ok(applicationService.page(pageParam, mchApplicationParam));
- }
-
- @Operation(summary = "关联支付配置列表")
- @GetMapping("/findAllConfig")
- public ResResult> findAllConfig(String appCode) {
- return Res.ok(appPayConfigService.ListByAppId(appCode));
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/MerchantInfoController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/MerchantInfoController.java
deleted file mode 100644
index aedb71bf..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/MerchantInfoController.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-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.dto.LabelValue;
-import cn.bootx.platform.common.core.rest.param.PageParam;
-import cn.bootx.platform.daxpay.core.merchant.service.MerchantInfoService;
-import cn.bootx.platform.daxpay.dto.merchant.MerchantInfoDto;
-import cn.bootx.platform.daxpay.param.merchant.MerchantInfoParam;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-/**
- * 商户
- *
- * @author xxm
- * @since 2023-05-17
- */
-@Tag(name = "商户")
-@RestController
-@RequestMapping("/merchant")
-@RequiredArgsConstructor
-public class MerchantInfoController {
-
- private final MerchantInfoService merchantInfoService;
-
- @Operation(summary = "添加")
- @PostMapping(value = "/add")
- public ResResult add(@RequestBody MerchantInfoParam param) {
- merchantInfoService.add(param);
- return Res.ok();
- }
-
- @Operation(summary = "修改")
- @PostMapping(value = "/update")
- public ResResult update(@RequestBody MerchantInfoParam param) {
- merchantInfoService.update(param);
- return Res.ok();
- }
-
- @Operation(summary = "下拉列表(所有)")
- @GetMapping("/dropdown")
- public ResResult> dropdown() {
- return Res.ok(merchantInfoService.dropdown());
- }
-
- @Operation(summary = "下拉列表(可用状态的)")
- @GetMapping("/dropdownNormal")
- public ResResult> dropdownNormal() {
- return Res.ok(merchantInfoService.dropdownNormal());
- }
-
- @Operation(summary = "删除")
- @DeleteMapping(value = "/delete")
- public ResResult delete(Long id) {
- merchantInfoService.delete(id);
- return Res.ok();
- }
-
- @Operation(summary = "通过ID查询")
- @GetMapping(value = "/findById")
- public ResResult findById(Long id) {
- return Res.ok(merchantInfoService.findById(id));
- }
-
- @Operation(summary = "查询所有")
- @GetMapping(value = "/findAll")
- public ResResult> findAll() {
- return Res.ok(merchantInfoService.findAll());
- }
-
- @Operation(summary = "分页查询")
- @GetMapping(value = "/page")
- public ResResult> page(PageParam pageParam, MerchantInfoParam merchantInfoParam) {
- return Res.ok(merchantInfoService.page(pageParam, merchantInfoParam));
- }
-
-}
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
deleted file mode 100644
index 490eef24..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayCallbackController.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-import cn.bootx.platform.common.core.annotation.IgnoreAuth;
-import cn.bootx.platform.daxpay.core.channel.alipay.service.AliPayCallbackService;
-import cn.bootx.platform.daxpay.core.channel.wechat.service.WeChatPayCallbackService;
-import com.ijpay.alipay.AliPayApi;
-import com.ijpay.core.kit.HttpKit;
-import com.ijpay.core.kit.WxPayKit;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.AllArgsConstructor;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.Map;
-
-/**
- * @author xxm
- * @since 2021/2/27
- */
-@IgnoreAuth
-@Slf4j
-@Tag(name = "支付回调")
-@RestController
-@RequestMapping("/pay/callback")
-@AllArgsConstructor
-public class PayCallbackController {
-
- private final AliPayCallbackService aliPayCallbackService;
-
- private final WeChatPayCallbackService weChatPayCallbackService;
-
- @SneakyThrows
- @Operation(summary = "支付宝回调")
- @PostMapping("/alipay/{mchCode}/{appCode}")
- public String aliPay(@PathVariable String mchCode,@PathVariable String appCode, HttpServletRequest request) {
- Map stringStringMap = AliPayApi.toMap(request);
- return aliPayCallbackService.payCallback(mchCode, appCode, stringStringMap);
- }
-
- @SneakyThrows
- @Operation(summary = "微信支付回调")
- @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(mchCode, appCode, params);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayChannelConfigController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayChannelConfigController.java
deleted file mode 100644
index b77ff4bf..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayChannelConfigController.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-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.PageParam;
-import cn.bootx.platform.daxpay.core.channel.config.service.PayChannelConfigService;
-import cn.bootx.platform.daxpay.dto.channel.config.PayChannelConfigDto;
-import cn.bootx.platform.daxpay.param.channel.config.PayChannelConfigParam;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-
-/**
- * 支付渠道配置
- *
- * @author xxm
- * @since 2023-05-24
- */
-@Tag(name = "支付渠道配置")
-@RestController
-@RequestMapping("/channel")
-@RequiredArgsConstructor
-public class PayChannelConfigController {
-
- private final PayChannelConfigService channelConfigService;
-
- @Operation(summary = "添加")
- @PostMapping(value = "/add")
- public ResResult add(@RequestBody PayChannelConfigParam param) {
- channelConfigService.add(param);
- return Res.ok();
- }
-
- @Operation(summary = "修改")
- @PostMapping(value = "/update")
- public ResResult update(@RequestBody PayChannelConfigParam param) {
- channelConfigService.update(param);
- return Res.ok();
- }
-
- @Operation(summary = "删除")
- @DeleteMapping(value = "/delete")
- public ResResult delete(Long id) {
- channelConfigService.delete(id);
- return Res.ok();
- }
-
- @Operation(summary = "通过ID查询")
- @GetMapping(value = "/findById")
- public ResResult findById(Long id) {
- return Res.ok(channelConfigService.findById(id));
- }
-
- @Operation(summary = "分页查询")
- @GetMapping(value = "/page")
- public ResResult> page(PageParam pageParam,
- PayChannelConfigParam payChannelConfigParam) {
- return Res.ok(channelConfigService.page(pageParam, payChannelConfigParam));
- }
-
- @Operation(summary = "编码是否被使用")
- @GetMapping("/existsByCode")
- public ResResult existsByCode(String code) {
- return Res.ok(channelConfigService.existsByCode(code));
- }
-
- @Operation(summary = "编码是否被使用(不包含自己)")
- @GetMapping("/existsByCodeNotId")
- public ResResult existsByCode(String code, Long id) {
- return Res.ok(channelConfigService.existsByCode(code, id));
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayController.java
deleted file mode 100644
index 70fd402c..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayController.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-import cn.bootx.platform.common.core.rest.Res;
-import cn.bootx.platform.common.core.rest.ResResult;
-import cn.bootx.platform.daxpay.core.pay.service.PayCancelService;
-import cn.bootx.platform.daxpay.core.refund.service.PayRefundService;
-import cn.bootx.platform.daxpay.core.pay.service.PayService;
-import cn.bootx.platform.daxpay.core.sync.service.PaySyncService;
-import cn.bootx.platform.daxpay.dto.pay.PayResult;
-import cn.bootx.platform.daxpay.param.pay.PayParam;
-import cn.bootx.platform.daxpay.param.refund.RefundParam;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.AllArgsConstructor;
-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;
-
-/**
- * @author xxm
- * @since 2020/12/9
- */
-@Tag(name = "统一支付")
-@RestController
-@RequestMapping("/uniPay")
-@AllArgsConstructor
-public class PayController {
-
- private final PayService payService;
-
- private final PayCancelService payCancelService;
-
- private final PayRefundService payRefundService;
-
- private final PaySyncService paySyncService;
-
- @Operation(summary = "发起支付")
- @PostMapping("/pay")
- public ResResult pay(@RequestBody PayParam payParam) {
- return Res.ok(payService.pay(payParam));
- }
-
- @Operation(summary = "取消支付(支付id)")
- @PostMapping("/cancelByPaymentId")
- public ResResult cancelByPaymentId(@Parameter(description = "支付id") Long paymentId) {
- payCancelService.cancelByPaymentId(paymentId);
- return Res.ok();
- }
-
- @Operation(summary = "取消支付(业务id)")
- @PostMapping("/cancelByBusinessId")
- public ResResult cancelByBusinessId(@Parameter(description = "业务id") String businessId) {
- payCancelService.cancelByBusinessId(businessId);
- return Res.ok();
- }
-
- @Operation(summary = "刷新指定业务id的支付单状态")
- @PostMapping("/syncByBusinessId")
- public ResResult syncByBusinessId(@Parameter(description = "业务id") String businessId) {
- paySyncService.syncByBusinessId(businessId);
- return Res.ok();
- }
-
- @Operation(summary = "退款(支持部分退款)")
- @PostMapping("/refund")
- public ResResult refund(@RequestBody RefundParam refundParam) {
- payRefundService.refund(refundParam);
- return Res.ok();
- }
-
- @Operation(summary = "全额退款(业务id)")
- @PostMapping("/refundByBusinessId")
- public ResResult refundByBusinessId(@Parameter(description = "业务id") String businessId) {
- payRefundService.refundByBusinessId(businessId);
- return Res.ok();
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayNotifyRecordController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayNotifyRecordController.java
deleted file mode 100644
index 74dfc00e..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayNotifyRecordController.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-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.PageParam;
-import cn.bootx.platform.daxpay.core.notify.service.PayNotifyRecordService;
-import cn.bootx.platform.daxpay.dto.notify.PayNotifyRecordDto;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 回调记录
- *
- * @author xxm
- * @since 2021/7/22
- */
-@Tag(name = "支付回调记录")
-@RestController
-@RequestMapping("/pay/notify/record")
-@RequiredArgsConstructor
-public class PayNotifyRecordController {
-
- private final PayNotifyRecordService notifyRecordService;
-
- @Operation(summary = "分页")
- @GetMapping("/page")
- public ResResult> page(PageParam pageParam, PayNotifyRecordDto param) {
- return Res.ok(notifyRecordService.page(pageParam, param));
- }
-
- @Operation(summary = "根据id查询")
- @GetMapping("/findById")
- public ResResult findById(Long id) {
- return Res.ok(notifyRecordService.findById(id));
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayRefundRecordController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayRefundRecordController.java
deleted file mode 100644
index a4a241b8..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PayRefundRecordController.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-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.PageParam;
-import cn.bootx.platform.daxpay.core.refund.record.service.PayRefundRecordService;
-import cn.bootx.platform.daxpay.dto.refund.PayRefundRecordDto;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 退款记录
- *
- * @author xxm
- * @since 2022/3/3
- */
-@Tag(name = "退款记录")
-@RestController
-@RequestMapping("/pay/refund")
-@RequiredArgsConstructor
-public class PayRefundRecordController {
-
- private final PayRefundRecordService payRefundRecordService;
-
- @Operation(summary = "分页")
- @GetMapping("/page")
- public ResResult> page(PageParam pageParam, PayRefundRecordDto param) {
- return Res.ok(payRefundRecordService.page(pageParam, param));
- }
-
- @Operation(summary = "根据id查询")
- @GetMapping("/findById")
- public ResResult findById(Long id) {
- return Res.ok(payRefundRecordService.findById(id));
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PaySyncRecordController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PaySyncRecordController.java
deleted file mode 100644
index 33d62d4f..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PaySyncRecordController.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-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.PageParam;
-import cn.bootx.platform.daxpay.core.sync.record.service.PaySyncRecordService;
-import cn.bootx.platform.daxpay.dto.sync.PaySyncRecordDto;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@Tag(name = "支付同步记录")
-@RestController
-@RequestMapping("/pay/sync")
-@RequiredArgsConstructor
-public class PaySyncRecordController {
- private final PaySyncRecordService syncRecordService;
-
- @Operation(summary = "分页")
- @GetMapping("/page")
- public ResResult> page(PageParam pageParam, PaySyncRecordDto param) {
- return Res.ok(syncRecordService.page(pageParam, param));
- }
-
- @Operation(summary = "根据id查询")
- @GetMapping("/findById")
- public ResResult findById(Long id) {
- return Res.ok(syncRecordService.findById(id));
- }
-}
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
deleted file mode 100644
index 7db5b820..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/PaymentController.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-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.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;
-import cn.bootx.platform.daxpay.dto.payment.PaymentDto;
-import cn.bootx.platform.daxpay.param.payment.PaymentQuery;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-/**
- * @author xxm
- * @since 2021/6/28
- */
-@Tag(name = "支付记录")
-@RestController
-@RequestMapping("/payment")
-@RequiredArgsConstructor
-public class PaymentController {
-
- private final PaymentQueryService paymentQueryService;
-
- @Operation(summary = "根据id获取")
- @GetMapping("/findById")
- public ResResult findById(Long id) {
- return Res.ok(paymentQueryService.findById(id));
- }
-
- @Operation(summary = "分页查询")
- @GetMapping("/page")
- public ResResult> page(PageParam pageParam, PaymentQuery param, QueryOrder queryOrder) {
- return Res.ok(paymentQueryService.page(pageParam, param, queryOrder));
- }
-
- @Operation(summary = "分页查询(超级查询)")
- @PostMapping("/superPage")
- public ResResult> superPage(PageParam pageParam, @RequestBody QueryParams queryParams) {
- return Res.ok(paymentQueryService.superPage(pageParam, queryParams));
- }
-
- @IgnoreAuth
- @Operation(summary = "根据业务ID获取支付状态`")
- @GetMapping("/findStatusByBusinessId")
- public ResResult findStatusByBusinessId(String businessId) {
- return Res.ok(paymentQueryService.findStatusByBusinessId(businessId));
- }
-
- @IgnoreAuth
- @Operation(summary = "根据businessId获取订单支付方式")
- @GetMapping("/findPayTypeInfoByBusinessId")
- public ResResult> findPayTypeInfoByBusinessId(String businessId) {
- return Res.ok(paymentQueryService.findPayTypeInfoByBusinessId(businessId));
- }
-
- @Operation(summary = "根据id获取订单支付方式")
- @GetMapping("/findPayTypeInfoById")
- public ResResult> findPayTypeInfoById(Long id) {
- return Res.ok(paymentQueryService.findPayTypeInfoById(id));
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/VoucherController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/VoucherController.java
deleted file mode 100644
index d3994776..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/VoucherController.java
+++ /dev/null
@@ -1,137 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-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.PageParam;
-import cn.bootx.platform.daxpay.core.channel.voucher.service.VoucherQueryService;
-import cn.bootx.platform.daxpay.core.channel.voucher.service.VoucherService;
-import cn.bootx.platform.daxpay.dto.channel.voucher.VoucherDto;
-import cn.bootx.platform.daxpay.param.channel.voucher.VoucherGenerationParam;
-import cn.bootx.platform.daxpay.param.channel.voucher.VoucherImportParam;
-import cn.bootx.platform.daxpay.param.channel.voucher.VoucherParam;
-import cn.hutool.core.io.IoUtil;
-import com.alibaba.excel.EasyExcel;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
-import org.springframework.core.io.DefaultResourceLoader;
-import org.springframework.core.io.ResourceLoader;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.InputStream;
-import java.util.List;
-
-/**
- * @author xxm
- * @since 2022/3/14
- */
-@Tag(name = "储值卡")
-@RestController
-@RequestMapping("/voucher")
-@RequiredArgsConstructor
-public class VoucherController {
-
- private final VoucherService voucherService;
-
- private final VoucherQueryService voucherQueryService;
-
- @Operation(summary = "分页")
- @GetMapping("/page")
- public ResResult> page(PageParam pageParam, VoucherParam param) {
- return Res.ok(voucherQueryService.page(pageParam, param));
- }
-
- @Operation(summary = "单条查询")
- @GetMapping("/findById")
- public ResResult findById(Long id) {
- return Res.ok(voucherQueryService.findById(id));
- }
-
- @Operation(summary = "根据卡号查询")
- @GetMapping("/findByCardNo")
- public ResResult findByCardNo(String cardNo) {
- return Res.ok(voucherQueryService.findByCardNo(cardNo));
- }
-
- @Operation(summary = "获取并判断卡状态")
- @GetMapping("/getAndJudgeVoucher")
- public ResResult getAndJudgeVoucher(String cardNo) {
- return Res.ok(voucherQueryService.getAndJudgeVoucher(cardNo));
- }
-
- @Operation(summary = "批量生成储值卡")
- @PostMapping("/generationBatch")
- public ResResult generationBatch(@RequestBody VoucherGenerationParam param) {
- voucherService.generationBatch(param);
- return Res.ok();
- }
-
- @Operation(summary = "冻结")
- @PostMapping("/lock")
- public ResResult lock(Long id) {
- voucherService.lock(id);
- return Res.ok();
- }
-
- @Operation(summary = "启用")
- @PostMapping("/unlock")
- public ResResult unlock(Long id) {
- voucherService.unlock(id);
- return Res.ok();
- }
-
- @Operation(summary = "批量冻结")
- @PostMapping("/lockBatch")
- public ResResult lockBatch(@RequestBody List ids) {
- voucherService.lockBatch(ids);
- return Res.ok();
- }
-
- @Operation(summary = "批量启用")
- @PostMapping("/unlockBatch")
- public ResResult unlockBatch(@RequestBody List ids) {
- voucherService.unlockBatch(ids);
- return Res.ok();
- }
-
- @SneakyThrows
- @Operation(summary = "导入已有的储值卡")
- @PostMapping("/importBatch")
- public ResResult importBatch(Boolean skip, String mchCode, String mchAppCode, MultipartFile file){
- List voucherImportParams = EasyExcel.read(file.getInputStream())
- // 设置与Excel表映射的类
- .head(VoucherImportParam.class)
- // 设置sheet,默认读取第一个
- .sheet()
- // 设置标题所在行数
- .headRowNumber(1)
- // 异步读取
- .doReadSync();
- voucherService.importBatch(skip,mchCode,mchAppCode,voucherImportParams);
- return Res.ok();
- }
-
- @SneakyThrows
- @Operation(summary = "下载导入模板")
- @GetMapping("/excelTemplate")
- public ResponseEntity excelTemplate(){
- //设置header信息
- HttpHeaders headers = new HttpHeaders();
- headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
- headers.setContentDispositionFormData("attachment",
- "ImportVoucher.xlsx");
-
- ResourceLoader resourceLoader = new DefaultResourceLoader();
- InputStream inputStream = resourceLoader.getResource("classpath:templates//ImportVoucher.xlsx")
- .getInputStream();
-
- return new ResponseEntity<>(IoUtil.readBytes(inputStream),headers, HttpStatus.OK);
- }
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/VoucherLogController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/VoucherLogController.java
deleted file mode 100644
index bf97818b..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/VoucherLogController.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-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.PageParam;
-import cn.bootx.platform.daxpay.core.channel.voucher.service.VoucherLogService;
-import cn.bootx.platform.daxpay.dto.channel.voucher.VoucherLogDto;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 储值卡日志
- * @author xxm
- * @since 2023/7/6
- */
-@Tag(name = "储值卡日志")
-@RestController
-@RequestMapping("/voucher/log")
-@RequiredArgsConstructor
-public class VoucherLogController {
- private final VoucherLogService voucherLogService;
-
- @Operation(summary = "储值卡日志分页")
- @GetMapping("/pageByVoucherId")
- public ResResult> pageByVoucherId(PageParam pageParam, Long voucherId){
- return Res.ok(voucherLogService.pageByVoucherId(pageParam,voucherId));
- }
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WalletAdminController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WalletAdminController.java
deleted file mode 100644
index 6aeae0f9..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WalletAdminController.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-import cn.bootx.platform.common.core.annotation.OperateLog;
-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.PageParam;
-import cn.bootx.platform.daxpay.core.channel.wallet.service.WalletQueryService;
-import cn.bootx.platform.daxpay.core.channel.wallet.service.WalletService;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletDto;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletInfoDto;
-import cn.bootx.platform.daxpay.param.channel.wallet.WalletQueryParam;
-import cn.bootx.platform.daxpay.param.channel.wallet.WalletRechargeParam;
-import cn.bootx.platform.iam.dto.user.UserInfoDto;
-import cn.bootx.platform.iam.param.user.UserInfoParam;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-/**
- * 钱包
- *
- * @author xxm
- * @since 2021/2/24
- */
-@Tag(name = "钱包相关的接口")
-@RestController
-@RequestMapping("/wallet/admin")
-@AllArgsConstructor
-public class WalletAdminController {
-
- private final WalletService walletService;
-
- private final WalletQueryService walletQueryService;
-
- @Operation(summary = "开通用户钱包操作")
- @PostMapping("/createWallet")
- public ResResult createWallet(Long userId, String mchCode, String mchAppCode) {
- walletService.createWallet(userId,mchCode,mchAppCode);
- return Res.ok();
- }
-
- @Operation(summary = "批量开通用户钱包操作")
- @PostMapping("/createWalletBatch")
- public ResResult createWalletBatch(@RequestBody List userIds, String mchCode, String mchAppCode) {
- walletService.createWalletBatch(userIds,mchCode,mchAppCode);
- return Res.ok();
- }
-
- @Operation(summary = "解锁钱包")
- @OperateLog(title = "解锁钱包", businessType = OperateLog.BusinessType.UPDATE, saveParam = true)
- @PostMapping("/unlock")
- public ResResult unlock(Long walletId) {
- walletService.unlock(walletId);
- return Res.ok();
- }
-
- @Operation(summary = "锁定钱包")
- @OperateLog(title = "锁定钱包", businessType = OperateLog.BusinessType.UPDATE, saveParam = true)
- @PostMapping("/lock")
- public ResResult lock(Long walletId) {
- walletService.lock(walletId);
- return Res.ok();
- }
-
- @Operation(summary = "充值操作(增减余额)")
- @PostMapping("/changerBalance")
- public ResResult changerBalance(@RequestBody WalletRechargeParam param) {
- walletService.changerBalance(param);
- return Res.ok();
- }
-
- @Operation(summary = "分页")
- @GetMapping("/page")
- public ResResult> page(PageParam pageParam, WalletQueryParam param) {
- return Res.ok(walletQueryService.page(pageParam, param));
- }
-
- @Operation(summary = "分页(未开通钱包的用户)")
- @GetMapping("/pageByNotWallet")
- public ResResult> pageByNotWallet(PageParam pageParam,String mchCode, UserInfoParam param) {
- return Res.ok(walletQueryService.pageByNotWallet(pageParam,mchCode,param));
- }
-
- @Operation(summary = "根据钱包ID查询钱包")
- @GetMapping("/findById")
- public ResResult findById(Long walletId) {
- return Res.ok(walletQueryService.findById(walletId));
- }
-
- @Operation(summary = "获取钱包综合信息")
- @GetMapping("/getWalletInfo")
- public ResResult getWalletInfo(Long walletId) {
- return Res.ok(walletQueryService.getWalletInfo(walletId));
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WalletConfigController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WalletConfigController.java
deleted file mode 100644
index 9c40461f..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WalletConfigController.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-import cn.bootx.platform.common.core.rest.Res;
-import cn.bootx.platform.common.core.rest.ResResult;
-import cn.bootx.platform.daxpay.core.channel.wallet.service.WalletConfigService;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletConfigDto;
-import cn.bootx.platform.daxpay.param.channel.wechat.WalletConfigParam;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-
-/**
- * 钱包配置
- * @author xxm
- * @since 2023/7/20
- */
-@Tag(name = "钱包配置")
-@RestController
-@RequestMapping("/wallet/config")
-@RequiredArgsConstructor
-public class WalletConfigController {
- private final WalletConfigService walletConfigService;
-
- @Operation(summary = "获取钱包支付配置")
- @GetMapping("/findByMchCode")
- public ResResult findByMchCode(String mchCode){
- return Res.ok(walletConfigService.findByMchCode(mchCode));
- }
-
- @Operation(summary = "添加")
- @PostMapping("/add")
- public ResResult add(@RequestBody WalletConfigParam param) {
- walletConfigService.add(param);
- return Res.ok();
- }
-
- @Operation(summary = "更新")
- @PostMapping("/update")
- public ResResult update(@RequestBody WalletConfigParam param) {
- walletConfigService.update(param);
- return Res.ok();
- }
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WalletController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WalletController.java
deleted file mode 100644
index 1b8950b4..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WalletController.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-import cn.bootx.platform.common.core.rest.Res;
-import cn.bootx.platform.common.core.rest.ResResult;
-import cn.bootx.platform.daxpay.core.channel.wallet.service.WalletQueryService;
-import cn.bootx.platform.daxpay.core.channel.wallet.service.WalletService;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletDto;
-import cn.bootx.platform.starter.auth.util.SecurityUtil;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@Tag(name = "钱包相关的接口")
-@RestController
-@RequestMapping("/wallet")
-@AllArgsConstructor
-public class WalletController {
- private final WalletQueryService walletQueryService;
- private final WalletService walletService;
-
- @Operation(summary = "根据用户查询钱包")
- @GetMapping("/findByUser")
- public ResResult findByUser(String mchAppCode) {
- return Res.ok(walletQueryService.findByUser(mchAppCode));
- }
-
- @Operation(summary = "开通用户钱包操作")
- @PostMapping("/createWallet")
- public ResResult createWallet(String mchCode,String mchAppCode) {
- Long userId = SecurityUtil.getUserId();
- walletService.createWallet(userId,mchCode,mchAppCode);
- return Res.ok();
- }
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WalletLogController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WalletLogController.java
deleted file mode 100644
index 0ba1afee..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WalletLogController.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-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.PageParam;
-import cn.bootx.platform.daxpay.core.channel.wallet.service.WalletLogService;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletLogDto;
-import cn.bootx.platform.daxpay.param.channel.wallet.WalletLogQueryParam;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.AllArgsConstructor;
-import org.springdoc.api.annotations.ParameterObject;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 钱包日志相关接口
- *
- * @author xxm
- * @since 2020/12/8
- */
-@Tag(name = "钱包日志相关的接口")
-@RestController
-@RequestMapping("/wallet/log")
-@AllArgsConstructor
-public class WalletLogController {
-
- private final WalletLogService walletLogService;
-
- @Operation(summary = "个人钱包日志")
- @PostMapping("/pageByPersonal")
- public ResResult> pageByPersonal(@ParameterObject PageParam pageParam,
- @ParameterObject WalletLogQueryParam param) {
- return Res.ok(walletLogService.pageByPersonal(pageParam, param));
- }
-
- @Operation(summary = "查询钱包日志(分页)")
- @GetMapping("/page")
- public ResResult> page(@ParameterObject PageParam pageParam,
- @ParameterObject WalletLogQueryParam param) {
- return Res.ok(walletLogService.page(pageParam, param));
- }
-
- @Operation(summary = "根据钱包id查询钱包日志(分页)")
- @GetMapping("/pageByWalletId")
- public ResResult> pageByWalletId(@ParameterObject PageParam pageParam,
- @ParameterObject WalletLogQueryParam param) {
- return Res.ok(walletLogService.pageByWalletId(pageParam, param));
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WeChatPayConfigController.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WeChatPayConfigController.java
deleted file mode 100644
index 9653f76c..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/controller/WeChatPayConfigController.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package cn.bootx.platform.daxpay.controller;
-
-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.dto.LabelValue;
-import cn.bootx.platform.common.core.rest.param.PageParam;
-import cn.bootx.platform.daxpay.core.channel.wechat.service.WeChatPayConfigService;
-import cn.bootx.platform.daxpay.dto.channel.wechat.WeChatPayConfigDto;
-import cn.bootx.platform.daxpay.param.channel.wechat.WeChatPayConfigParam;
-import cn.hutool.core.codec.Base64;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.AllArgsConstructor;
-import lombok.SneakyThrows;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
-
-/**
- * @author xxm
- * @since 2021/3/19
- */
-@Tag(name = "微信支付配置")
-@RestController
-@RequestMapping("/wechat/pay")
-@AllArgsConstructor
-public class WeChatPayConfigController {
-
- private final WeChatPayConfigService weChatPayConfigService;
-
- @Operation(summary = "添加微信支付配置")
- @PostMapping("/add")
- public ResResult add(@RequestBody WeChatPayConfigParam param) {
- weChatPayConfigService.add(param);
- return Res.ok();
- }
-
- @Operation(summary = "更新")
- @PostMapping("/update")
- public ResResult update(@RequestBody WeChatPayConfigParam param) {
- weChatPayConfigService.update(param);
- return Res.ok();
- }
-
- @Operation(summary = "分页")
- @GetMapping("/page")
- public ResResult> page(PageParam pageParam, WeChatPayConfigParam param) {
- return Res.ok(weChatPayConfigService.page(pageParam, param));
- }
-
- @Operation(summary = "根据Id查询")
- @GetMapping("/findById")
- public ResResult findById(Long id) {
- return Res.ok(weChatPayConfigService.findById(id));
- }
-
- @Operation(summary = "微信支持支付方式")
- @GetMapping("/findPayWayList")
- public ResResult> findPayWayList() {
- return Res.ok(weChatPayConfigService.findPayWayList());
- }
-
- @SneakyThrows
- @Operation(summary = "将文件转换成base64")
- @PostMapping("/toBase64")
- public ResResult toBase64(MultipartFile file){
- return Res.ok(Base64.encode(file.getBytes()));
- }
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/aggregate/entity/AggregatePayInfo.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/aggregate/entity/AggregatePayInfo.java
deleted file mode 100644
index b56bb2c2..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/aggregate/entity/AggregatePayInfo.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package cn.bootx.platform.daxpay.core.aggregate.entity;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import java.math.BigDecimal;
-
-/**
- * 聚合支付发起信息
- *
- * @author xxm
- * @since 2022/3/5
- */
-@Data
-@Accessors(chain = true)
-public class AggregatePayInfo {
-
- /** 标题 */
- private String title;
-
- /** 订单ID */
- private String businessId;
-
- /** 支付金额 */
- private BigDecimal amount;
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/aggregate/service/AggregateService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/aggregate/service/AggregateService.java
deleted file mode 100644
index 49721680..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/aggregate/service/AggregateService.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package cn.bootx.platform.daxpay.core.aggregate.service;
-
-import cn.bootx.platform.common.redis.RedisClient;
-import cn.bootx.platform.daxpay.code.pay.PayChannelEnum;
-import cn.bootx.platform.daxpay.core.aggregate.entity.AggregatePayInfo;
-import cn.bootx.platform.daxpay.exception.payment.PayFailureException;
-import cn.bootx.platform.daxpay.param.cashier.CashierSinglePayParam;
-import cn.hutool.core.util.RandomUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONUtil;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.Optional;
-
-/**
- * 聚合支付
- *
- * @author xxm
- * @since 2022/3/6
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class AggregateService {
-
- private final RedisClient redisClient;
-
- private final String PREFIX_KEY = "cashier:pay:aggregate:";
-
- /**
- * 创建聚合支付QR支付, 单渠道
- */
- public String createAggregatePay(CashierSinglePayParam param) {
- // 保存并生成code
- AggregatePayInfo aggregatePayInfo = new AggregatePayInfo().setAmount(param.getAmount())
- .setTitle(param.getTitle())
- .setBusinessId(param.getBusinessId());
- String key = RandomUtil.randomString(10);
- redisClient.setWithTimeout(PREFIX_KEY + key, JSONUtil.toJsonStr(aggregatePayInfo), 5 * 60 * 1000);
- return key;
- }
-
- /**
- * 获取聚合支付信息
- */
- public AggregatePayInfo getAggregateInfo(String key) {
- String jsonStr = Optional.ofNullable(redisClient.get(PREFIX_KEY + key))
- .orElseThrow(() -> new PayFailureException("支付超时"));
- return JSONUtil.toBean(jsonStr, AggregatePayInfo.class);
- }
-
- /**
- * 聚合付款码支付处理
- */
- public PayChannelEnum getPayChannel(String authCode) {
- if (StrUtil.isBlank(authCode)) {
- throw new PayFailureException("付款码不可为空");
- }
- String[] wx = { "10", "11", "12", "13", "14", "15" };
- String[] ali = { "25", "26", "27", "28", "29", "30" };
-
- // 微信
- if (StrUtil.startWithAny(authCode.substring(0, 2), wx)) {
- return PayChannelEnum.WECHAT;
- }
- // 支付宝
- else if (StrUtil.startWithAny(authCode.substring(0, 2), ali)) {
- return PayChannelEnum.ALI;
- }
- else {
- throw new PayFailureException("不支持的支付方式");
- }
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/cashier/service/CashierService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/cashier/service/CashierService.java
deleted file mode 100644
index dc566ac4..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/cashier/service/CashierService.java
+++ /dev/null
@@ -1,211 +0,0 @@
-package cn.bootx.platform.daxpay.core.cashier.service;
-
-import cn.bootx.platform.baseapi.core.parameter.dao.SystemParamManager;
-import cn.bootx.platform.baseapi.core.parameter.entity.SystemParameter;
-import cn.bootx.platform.common.core.util.BigDecimalUtil;
-import cn.bootx.platform.daxpay.code.pay.PayChannelEnum;
-import cn.bootx.platform.daxpay.code.pay.PayStatusCode;
-import cn.bootx.platform.daxpay.code.pay.PayWayEnum;
-import cn.bootx.platform.daxpay.code.pay.PayWayExtraCode;
-import cn.bootx.platform.daxpay.code.paymodel.WeChatPayCode;
-import cn.bootx.platform.daxpay.core.aggregate.entity.AggregatePayInfo;
-import cn.bootx.platform.daxpay.core.aggregate.service.AggregateService;
-import cn.bootx.platform.daxpay.core.channel.wechat.dao.WeChatPayConfigManager;
-import cn.bootx.platform.daxpay.core.channel.wechat.entity.WeChatPayConfig;
-import cn.bootx.platform.daxpay.core.merchant.dao.MchAppManager;
-import cn.bootx.platform.daxpay.core.pay.service.PayService;
-import cn.bootx.platform.daxpay.dto.pay.PayResult;
-import cn.bootx.platform.daxpay.exception.payment.PayFailureException;
-import cn.bootx.platform.daxpay.exception.payment.PayUnsupportedMethodException;
-import cn.bootx.platform.daxpay.param.cashier.CashierCombinationPayParam;
-import cn.bootx.platform.daxpay.param.cashier.CashierSinglePayParam;
-import cn.bootx.platform.daxpay.param.pay.PayParam;
-import cn.bootx.platform.daxpay.param.pay.PayWayParam;
-import cn.bootx.platform.daxpay.util.PayWayUtil;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
-import com.ijpay.core.enums.SignType;
-import com.ijpay.core.kit.WxPayKit;
-import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import me.chanjar.weixin.common.api.WxConsts;
-import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
-import me.chanjar.weixin.mp.api.WxMpService;
-import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
-import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.*;
-
-/**
- * 结算台
- *
- * @author xxm
- * @since 2022/2/23
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class CashierService {
-
- private final PayService payService;
-
- private final AggregateService aggregateService;
-
- private final WeChatPayConfigManager weChatPayConfigManager;
-
- private final MchAppManager mchAppManager;
-
- private final SystemParamManager systemParamManager;
-
- /**
- * 发起支付(单渠道支付)
- */
- public PayResult singlePay(CashierSinglePayParam param) {
- // 如果是聚合支付,存在付款码时特殊处理(聚合扫码支付不用额外处理)
- if (Objects.equals(PayChannelEnum.AGGREGATION.getCode(), param.getPayChannel())) {
- String payChannel = aggregateService.getPayChannel(param.getAuthCode()).getCode();
- param.setPayChannel(payChannel);
- }
- // 构建支付方式参数
- PayWayParam payWayParam = new PayWayParam().setPayChannel(param.getPayChannel())
- .setPayWay(param.getPayWay())
- .setAmount(param.getAmount());
-
- // 处理附加参数
- HashMap map = new HashMap<>(1);
- map.put(PayWayExtraCode.AUTH_CODE, param.getAuthCode());
- map.put(PayWayExtraCode.OPEN_ID, param.getOpenId());
- map.put(PayWayExtraCode.VOUCHER_NO, param.getVoucherNo());
- map.put(PayWayExtraCode.VOUCHER_NO_LIST, param.getVoucherNoList());
- String extraParamsJson = PayWayUtil.buildExtraParamsJson(param.getPayChannel(), map);
- payWayParam.setExtraParamsJson(extraParamsJson);
-
- PayParam payParam = new PayParam()
- .setMchCode(param.getMchCode())
- .setMchAppCode(param.getMchAppCode())
- .setTitle(param.getTitle())
- .setBusinessId(param.getBusinessId())
- .setPayWayList(Collections.singletonList(payWayParam));
- PayResult payResult = payService.pay(payParam);
-
- if (Objects.equals(PayStatusCode.TRADE_REFUNDED, payResult.getPayStatus())) {
- throw new PayFailureException("已经退款");
- }
- return payResult;
- }
-
- /**
- * 扫码发起自动支付
- */
- public String aggregatePay(String key, String mchCode, String mchAppCode, String ua) {
- CashierSinglePayParam cashierSinglePayParam = new CashierSinglePayParam()
- .setMchCode(mchCode)
- .setMchAppCode(mchAppCode)
- .setPayWay(PayWayEnum.QRCODE.getCode());
- // 判断是哪种支付方式
- if (ua.contains(PayChannelEnum.UA_ALI_PAY)) {
- cashierSinglePayParam.setPayChannel(PayChannelEnum.ALI.getCode());
- }
- else if (ua.contains(PayChannelEnum.UA_WECHAT_PAY)) {
- // 跳转微信授权页面, 调用jsapi进行支付
- return this.wxJsapiAuth(key,mchCode,mchAppCode);
- }
- else {
- throw new PayUnsupportedMethodException();
- }
-
- AggregatePayInfo aggregatePayInfo = aggregateService.getAggregateInfo(key);
- cashierSinglePayParam.setTitle(aggregatePayInfo.getTitle())
- .setAmount(aggregatePayInfo.getAmount())
- .setBusinessId(aggregatePayInfo.getBusinessId());
- PayResult payResult = this.singlePay(cashierSinglePayParam);
- return payResult.getAsyncPayInfo().getPayBody();
- }
-
- /**
- * 微信jsapi支付 - 跳转到授权页面
- */
- private String wxJsapiAuth(String key, String mchCode, String mchAppCode) {
- WeChatPayConfig config = weChatPayConfigManager.findByMchAppCode(mchAppCode)
- .orElseThrow(() -> new PayFailureException("未找到启用的微信支付配置"));
- WxMpService wxMpService = getWxMpService(config.getWxAppId(), config.getAppSecret());
- // 回调地址为 结算台微信jsapi支付的回调地址
- SystemParameter systemParameter = systemParamManager.findByParamKey(WeChatPayCode.JSAPI_REDIRECT_URL)
- .orElseThrow(() -> new PayFailureException("微信支付回调地址参数不存在"));
- String url = StrUtil.format("{}cashier/wxJsapiPay/{}/{}",systemParameter.getValue(),mchCode,mchAppCode);
- return wxMpService.getOAuth2Service().buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_BASE, key);
- }
-
- /**
- * 微信jsapi支付 - 回调发起预支付, 同时调起微信页面jsapi支付
- * @param code 微信授权码, 用来获取id
- * @param mchCode 商户编码
- * @param mchAppCode 商户应用编码
- * @param state 聚合支付参数记录的key
- * @return 页面中调起jsapi支付的参数
- */
- @SneakyThrows
- public Map wxJsapiPay(String code, String mchCode, String mchAppCode, String state) {
- WeChatPayConfig config = weChatPayConfigManager.findByMchAppCode(mchAppCode)
- .orElseThrow(() -> new PayFailureException("未找到启用的微信支付配置"));
- WxMpService wxMpService = this.getWxMpService(config.getWxAppId(), config.getAppSecret());
- WxOAuth2AccessToken accessToken = wxMpService.getOAuth2Service().getAccessToken(code);
- String openId = accessToken.getOpenId();
- AggregatePayInfo aggregatePayInfo = aggregateService.getAggregateInfo(state);
- // 构造微信API支付参数
- CashierSinglePayParam cashierSinglePayParam = new CashierSinglePayParam()
- .setPayChannel(PayChannelEnum.WECHAT.getCode())
- .setPayWay(PayWayEnum.JSAPI.getCode())
- .setMchCode(mchCode)
- .setMchAppCode(mchAppCode)
- .setTitle(aggregatePayInfo.getTitle())
- .setAmount(aggregatePayInfo.getAmount())
- .setOpenId(openId)
- .setBusinessId(aggregatePayInfo.getBusinessId());
- PayResult payResult = this.singlePay(cashierSinglePayParam);
-
- return WxPayKit.prepayIdCreateSign(payResult.getAsyncPayInfo().getPayBody(), config.getWxAppId(),
- config.getApiKeyV2(), SignType.HMACSHA256);
- }
-
- /**
- * 获取微信公众号API的Service
- */
- private WxMpService getWxMpService(String appId, String secret) {
- WxMpService wxMpService = new WxMpServiceImpl();
- WxMpDefaultConfigImpl config = new WxMpDefaultConfigImpl();
- config.setAppId(appId); // 设置微信公众号的appid
- config.setSecret(secret); // 设置微信公众号的app corpSecret
- wxMpService.setWxMpConfigStorage(config);
- return wxMpService;
- }
-
- /**
- * 组合支付
- */
- public PayResult combinationPay(CashierCombinationPayParam param) {
- // 处理支付参数
- List payModeList = param.getPayWayList();
- // 删除小于等于零的
- payModeList.removeIf(payModeParam -> BigDecimalUtil.compareTo(payModeParam.getAmount(), BigDecimal.ZERO) < 1);
- if (CollUtil.isEmpty(payModeList)) {
- throw new PayFailureException("支付参数有误");
- }
- // 发起支付
- PayParam payParam = new PayParam().setTitle(param.getTitle())
- .setMchCode(param.getMchCode())
- .setMchAppCode(param.getMchAppCode())
- .setBusinessId(param.getBusinessId())
- .setPayWayList(param.getPayWayList());
- PayResult payResult = payService.pay(payParam);
-
- if (Objects.equals(PayStatusCode.TRADE_REFUNDED, payResult.getPayStatus())) {
- throw new PayFailureException("已经退款");
- }
- return payResult;
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/convert/AlipayConvert.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/convert/AlipayConvert.java
deleted file mode 100644
index 3b2f6e38..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/convert/AlipayConvert.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.alipay.convert;
-
-import cn.bootx.platform.daxpay.core.channel.alipay.entity.AlipayConfig;
-import cn.bootx.platform.daxpay.dto.channel.alipay.AlipayConfigDto;
-import cn.bootx.platform.daxpay.param.channel.alipay.AlipayConfigParam;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-/**
- * 支付宝转换
- *
- * @author xxm
- * @since 2021/7/5
- */
-@Mapper
-public interface AlipayConvert {
-
- AlipayConvert CONVERT = Mappers.getMapper(AlipayConvert.class);
-
- AlipayConfig convert(AlipayConfigDto in);
-
- AlipayConfig convert(AlipayConfigParam in);
-
- AlipayConfigDto convert(AlipayConfig in);
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/dao/AliPaymentManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/dao/AliPaymentManager.java
deleted file mode 100644
index 666e1e51..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/dao/AliPaymentManager.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.alipay.dao;
-
-import cn.bootx.platform.common.mybatisplus.impl.BaseManager;
-import cn.bootx.platform.daxpay.core.channel.alipay.entity.AliPayment;
-import cn.bootx.platform.daxpay.core.channel.base.entity.BasePayment;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Repository;
-
-import java.util.Optional;
-
-/**
- * 支付宝
- *
- * @author xxm
- * @since 2021/2/26
- */
-@Repository
-@RequiredArgsConstructor
-public class AliPaymentManager extends BaseManager {
-
- public Optional findByPaymentId(Long paymentId) {
- return this.findByField(BasePayment::getPaymentId, paymentId);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/dao/AliPaymentMapper.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/dao/AliPaymentMapper.java
deleted file mode 100644
index 72fbeec2..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/dao/AliPaymentMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.alipay.dao;
-
-import cn.bootx.platform.daxpay.core.channel.alipay.entity.AliPayment;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 支付宝支付
- *
- * @author xxm
- * @since 2021/2/26
- */
-@Mapper
-public interface AliPaymentMapper extends BaseMapper {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/dao/AlipayConfigManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/dao/AlipayConfigManager.java
deleted file mode 100644
index 82ca2218..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/dao/AlipayConfigManager.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.alipay.dao;
-
-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.daxpay.core.channel.alipay.entity.AlipayConfig;
-import cn.bootx.platform.daxpay.param.channel.alipay.AlipayConfigQuery;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Repository;
-
-import java.util.Optional;
-
-/**
- * 支付宝配置
- *
- * @author xxm
- * @since 2021/2/26
- */
-@Repository
-@RequiredArgsConstructor
-public class AlipayConfigManager extends BaseManager {
-
- /**
- * 获取关联的的支付宝配置
- */
- public Optional findByMchAppCode(String mchAppCOde) {
- return findByField(AlipayConfig::getMchAppCode, mchAppCOde);
- }
-
- /**
- * 分页
- */
- public Page page(PageParam pageParam, AlipayConfigQuery param) {
- Page mpPage = MpUtil.getMpPage(pageParam, AlipayConfig.class);
- return lambdaQuery().select(AlipayConfig.class, MpUtil::excludeBigField)
- .like(StrUtil.isNotBlank(param.getName()), AlipayConfig::getName, param.getName())
- .like(StrUtil.isNotBlank(param.getAppId()), AlipayConfig::getAppId, param.getAppId())
- .page(mpPage);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/dao/AlipayConfigMapper.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/dao/AlipayConfigMapper.java
deleted file mode 100644
index 0b359e9a..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/dao/AlipayConfigMapper.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.alipay.dao;
-
-import cn.bootx.platform.daxpay.core.channel.alipay.entity.AlipayConfig;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-@Mapper
-public interface AlipayConfigMapper extends BaseMapper {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/entity/AliPayment.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/entity/AliPayment.java
deleted file mode 100644
index 85267aae..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/entity/AliPayment.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.alipay.entity;
-
-import cn.bootx.platform.common.core.function.EntityBaseFunction;
-import cn.bootx.platform.daxpay.core.channel.base.entity.BasePayment;
-import cn.bootx.platform.daxpay.dto.channel.alipay.AliPaymentDto;
-import cn.hutool.core.bean.BeanUtil;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * 支付宝支付记录
- *
- * @author xxm
- * @since 2021/2/26
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-@Accessors(chain = true)
-@TableName("pay_ali_payment")
-public class AliPayment extends BasePayment implements EntityBaseFunction {
-
- /** 支付宝交易号 */
- private String tradeNo;
-
- @Override
- public AliPaymentDto toDto() {
- AliPaymentDto dto = new AliPaymentDto();
- BeanUtil.copyProperties(this, dto);
- return dto;
- }
-
-}
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
deleted file mode 100644
index df811dbb..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/entity/AlipayConfig.java
+++ /dev/null
@@ -1,158 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.alipay.entity;
-
-import cn.bootx.platform.common.core.annotation.BigField;
-import cn.bootx.platform.common.core.annotation.EncryptionField;
-import cn.bootx.platform.common.core.function.EntityBaseFunction;
-import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
-import cn.bootx.platform.daxpay.code.paymodel.AliPayCode;
-import cn.bootx.platform.daxpay.core.channel.alipay.convert.AlipayConvert;
-import cn.bootx.platform.daxpay.dto.channel.alipay.AlipayConfigDto;
-import cn.bootx.platform.daxpay.param.channel.alipay.AlipayConfigParam;
-import cn.bootx.table.modify.annotation.DbColumn;
-import cn.bootx.table.modify.annotation.DbTable;
-import cn.bootx.table.modify.mysql.annotation.DbMySqlFieldType;
-import cn.bootx.table.modify.mysql.annotation.DbMySqlIndex;
-import cn.bootx.table.modify.mysql.constants.MySqlFieldTypeEnum;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * 支付宝支付配置
- *
- * @author xxm
- * @since 2020/12/15
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-@Accessors(chain = true)
-@DbTable(comment = "支付宝支付配置")
-@TableName("pay_alipay_config")
-public class AlipayConfig extends MpBaseEntity implements EntityBaseFunction {
-
- /** 名称 */
- @DbColumn(comment = "名称")
- private String name;
-
- /** 商户编码 */
- @TableField(updateStrategy = FieldStrategy.NEVER)
- @DbColumn(comment = "商户编码")
- private String mchCode;
-
- /** 商户应用编码 */
- @TableField(updateStrategy = FieldStrategy.NEVER)
- @DbMySqlIndex(comment = "商户应用编码唯一索引")
- @DbColumn(comment = "商户应用编码")
- private String mchAppCode;
-
- /** 支付宝商户appId */
- @DbColumn(comment = "支付宝商户appId")
- private String appId;
-
- /** 服务器异步通知页面路径 需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 */
- @DbColumn(comment = "异步通知页面路径")
- private String notifyUrl;
-
- /**
- * 页面跳转同步通知页面路径 需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 商户可以自定义同步跳转地址
- */
- @DbColumn(comment = "同步通知页面路径")
- private String returnUrl;
-
- /** 请求网关地址 */
- @DbColumn(comment = "")
- private String serverUrl;
-
- /**
- * 认证类型 证书/公钥
- * @see AliPayCode#AUTH_TYPE_KEY
- */
- @DbColumn(comment = "认证类型")
- private String authType;
-
- /** 签名类型 RSA/RSA2 */
- @DbColumn(comment = "签名类型 RSA/RSA2")
- public String signType;
-
- /** 支付宝公钥 */
- @BigField
- @EncryptionField
- @DbMySqlFieldType(MySqlFieldTypeEnum.LONGTEXT)
- @DbColumn(comment = "支付宝公钥")
- public String alipayPublicKey;
-
- /** 私钥 */
- @BigField
- @EncryptionField
- @DbMySqlFieldType(MySqlFieldTypeEnum.LONGTEXT)
- @DbColumn(comment = "私钥")
- private String privateKey;
-
- /** 应用公钥证书 */
- @BigField
- @EncryptionField
- @DbMySqlFieldType(MySqlFieldTypeEnum.LONGTEXT)
- @DbColumn(comment = "应用公钥证书")
- private String appCert;
-
- /** 支付宝公钥证书 */
- @BigField
- @EncryptionField
- @DbMySqlFieldType(MySqlFieldTypeEnum.LONGTEXT)
- @DbColumn(comment = "支付宝公钥证书")
- private String alipayCert;
-
- /** 支付宝CA根证书 */
- @BigField
- @EncryptionField
- @DbColumn(comment = "支付宝CA根证书")
- @DbMySqlFieldType(MySqlFieldTypeEnum.LONGTEXT)
- private String alipayRootCert;
-
- /** 是否沙箱环境 */
- @DbColumn(comment = "是否沙箱环境")
- private boolean sandbox;
-
- /** 超时配置 */
- @DbColumn(comment = "超时配置")
- private Integer expireTime;
-
- /** 可用支付方式 */
- @TableField(updateStrategy = FieldStrategy.IGNORED)
- @DbColumn(comment = "可用支付方式")
- private String payWays;
-
- /**
- * 状态
- * @see cn.bootx.platform.daxpay.code.MchAndAppCode#PAY_CONFIG_STATE_NORMAL
- */
- @DbColumn(comment = "状态")
- private String state;
-
- /** 备注 */
- @DbColumn(comment = "备注")
- private String remark;
-
- @Override
- public AlipayConfigDto toDto() {
- AlipayConfigDto convert = AlipayConvert.CONVERT.convert(this);
- if (StrUtil.isNotBlank(this.getPayWays())) {
- convert.setPayWayList(StrUtil.split(this.getPayWays(), ','));
- }
- return convert;
- }
-
- public static AlipayConfig init(AlipayConfigParam in) {
- AlipayConfig convert = AlipayConvert.CONVERT.convert(in);
- if (CollUtil.isNotEmpty(in.getPayWayList())) {
- convert.setPayWays(String.join(",", in.getPayWayList()));
- }
- return convert;
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AliPayCallbackService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AliPayCallbackService.java
deleted file mode 100644
index f02fb438..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AliPayCallbackService.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.alipay.service;
-
-import cn.bootx.platform.common.core.exception.DataNotExistException;
-import cn.bootx.platform.common.core.util.CertUtil;
-import cn.bootx.platform.common.redis.RedisClient;
-import cn.bootx.platform.daxpay.code.pay.PayChannelEnum;
-import cn.bootx.platform.daxpay.code.pay.PayStatusCode;
-import cn.bootx.platform.daxpay.code.paymodel.AliPayCode;
-import cn.bootx.platform.daxpay.core.notify.dao.PayNotifyRecordManager;
-import cn.bootx.platform.daxpay.core.pay.func.AbsPayCallbackStrategy;
-import cn.bootx.platform.daxpay.core.pay.service.PayCallbackService;
-import cn.bootx.platform.daxpay.core.channel.alipay.dao.AlipayConfigManager;
-import cn.bootx.platform.daxpay.core.channel.alipay.entity.AlipayConfig;
-import cn.hutool.core.util.CharsetUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONUtil;
-import com.alipay.api.AlipayApiException;
-import com.alipay.api.AlipayConstants;
-import com.alipay.api.internal.util.AlipaySignature;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * 支付宝回调处理
- *
- * @author xxm
- * @since 2021/2/28
- */
-@Slf4j
-@Service
-public class AliPayCallbackService extends AbsPayCallbackStrategy {
-
- private final AlipayConfigManager alipayConfigManager;
-
- public AliPayCallbackService(RedisClient redisClient, PayNotifyRecordManager payNotifyRecordManager,
- PayCallbackService payCallbackService, AlipayConfigManager alipayConfigManager) {
- super(redisClient, payNotifyRecordManager, payCallbackService);
- this.alipayConfigManager = alipayConfigManager;
- }
-
- @Override
- public PayChannelEnum getPayChannel() {
- return PayChannelEnum.ALI;
- }
-
- @Override
- public String getTradeStatus() {
- Map params = PARAMS.get();
- String tradeStatus = params.get(AliPayCode.TRADE_STATUS);
- if (Objects.equals(tradeStatus, AliPayCode.NOTIFY_TRADE_SUCCESS)) {
- return PayStatusCode.NOTIFY_TRADE_SUCCESS;
- }
- return PayStatusCode.NOTIFY_TRADE_FAIL;
- }
-
- /**
- * 验证信息格式
- * @param mchAppCode 商户应用编码
- */
- @SneakyThrows
- @Override
- public boolean verifyNotify(String mchAppCode) {
- Map params = PARAMS.get();
- String callReq = JSONUtil.toJsonStr(params);
- String appId = params.get(AliPayCode.APP_ID);
- if (StrUtil.isBlank(appId)) {
- log.error("支付宝回调报文 appId 为空 {}", callReq);
- return false;
- }
- AlipayConfig alipayConfig = alipayConfigManager.findByMchAppCode(mchAppCode)
- .orElseThrow(DataNotExistException::new);
- if (alipayConfig == null) {
- log.error("支付宝支付配置不存在: {}", callReq);
- return false;
- }
-
- try {
- if (Objects.equals(alipayConfig.getAuthType(), AliPayCode.AUTH_TYPE_KEY)) {
- return AlipaySignature.rsaCheckV1(params, alipayConfig.getAlipayPublicKey(), CharsetUtil.UTF_8,
- AlipayConstants.SIGN_TYPE_RSA2);
- }
- else {
- return AlipaySignature.verifyV1(params, CertUtil.getCertByContent(alipayConfig.getAlipayCert()),
- CharsetUtil.UTF_8, AlipayConstants.SIGN_TYPE_RSA2);
- }
- }
- catch (AlipayApiException e) {
- log.error("支付宝验签失败", e);
- return false;
- }
- }
-
- @Override
- public Long getPaymentId() {
- Map params = PARAMS.get();
- return Long.valueOf(params.get(AliPayCode.OUT_TRADE_NO));
- }
-
- @Override
- public String getReturnMsg() {
- return "success";
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AliPayCancelService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AliPayCancelService.java
deleted file mode 100644
index de11e63f..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AliPayCancelService.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.alipay.service;
-
-import cn.bootx.platform.common.spring.exception.RetryableException;
-import cn.bootx.platform.daxpay.code.paymodel.AliPayCode;
-import cn.bootx.platform.daxpay.core.refund.local.AsyncRefundLocal;
-import cn.bootx.platform.daxpay.core.payment.entity.Payment;
-import cn.bootx.platform.daxpay.exception.payment.PayFailureException;
-import cn.hutool.core.util.IdUtil;
-import com.alipay.api.AlipayApiException;
-import com.alipay.api.domain.AlipayTradeCancelModel;
-import com.alipay.api.domain.AlipayTradeRefundModel;
-import com.alipay.api.response.AlipayTradeCancelResponse;
-import com.alipay.api.response.AlipayTradeRefundResponse;
-import com.ijpay.alipay.AliPayApi;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.retry.annotation.Retryable;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.Objects;
-
-/**
- * 支付宝支付取消和退款
- *
- * @author xxm
- * @since 2021/4/20
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class AliPayCancelService {
-
- /**
- * 关闭支付
- */
- @Retryable(value = RetryableException.class)
- public void cancelRemote(Payment payment) {
- // 只有部分需要调用支付宝网关进行关闭
- AlipayTradeCancelModel model = new AlipayTradeCancelModel();
- model.setOutTradeNo(String.valueOf(payment.getId()));
-
- try {
- AlipayTradeCancelResponse response = AliPayApi.tradeCancelToResponse(model);
- if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
- log.error("网关返回撤销失败: {}", response.getSubMsg());
- throw new PayFailureException(response.getSubMsg());
- }
- }
- catch (AlipayApiException e) {
- log.error("关闭订单失败:", e);
- throw new PayFailureException("关闭订单失败");
- }
- }
-
- /**
- * 退款
- */
- public void refund(Payment payment, BigDecimal amount) {
- AlipayTradeRefundModel refundModel = new AlipayTradeRefundModel();
- refundModel.setOutTradeNo(String.valueOf(payment.getId()));
- refundModel.setRefundAmount(amount.toPlainString());
-
- // 设置退款号
- AsyncRefundLocal.set(IdUtil.getSnowflakeNextIdStr());
- refundModel.setOutRequestNo(AsyncRefundLocal.get());
- try {
- AlipayTradeRefundResponse response = AliPayApi.tradeRefundToResponse(refundModel);
- if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
- AsyncRefundLocal.setErrorMsg(response.getSubMsg());
- AsyncRefundLocal.setErrorCode(response.getCode());
- log.error("网关返回退款失败: {}", response.getSubMsg());
- throw new PayFailureException(response.getSubMsg());
- }
- }
- catch (AlipayApiException e) {
- log.error("订单退款失败:", e);
- AsyncRefundLocal.setErrorMsg(e.getErrMsg());
- AsyncRefundLocal.setErrorCode(e.getErrCode());
- throw new PayFailureException("订单退款失败");
- }
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AliPayService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AliPayService.java
deleted file mode 100644
index 9939ac83..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AliPayService.java
+++ /dev/null
@@ -1,260 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.alipay.service;
-
-import cn.bootx.platform.daxpay.code.pay.PayStatusCode;
-import cn.bootx.platform.daxpay.code.pay.PayWayEnum;
-import cn.bootx.platform.daxpay.code.paymodel.AliPayCode;
-import cn.bootx.platform.daxpay.code.paymodel.AliPayWay;
-import cn.bootx.platform.daxpay.core.pay.local.AsyncPayInfoLocal;
-import cn.bootx.platform.daxpay.core.payment.entity.Payment;
-import cn.bootx.platform.daxpay.core.channel.alipay.entity.AlipayConfig;
-import cn.bootx.platform.daxpay.dto.pay.AsyncPayInfo;
-import cn.bootx.platform.daxpay.exception.payment.PayFailureException;
-import cn.bootx.platform.daxpay.param.pay.PayWayParam;
-import cn.bootx.platform.daxpay.param.channel.alipay.AliPayParam;
-import cn.bootx.platform.daxpay.util.PayWayUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.http.Method;
-import com.alipay.api.AlipayApiException;
-import com.alipay.api.AlipayResponse;
-import com.alipay.api.domain.*;
-import com.alipay.api.request.AlipayTradePagePayRequest;
-import com.alipay.api.request.AlipayTradeWapPayRequest;
-import com.alipay.api.response.*;
-import com.ijpay.alipay.AliPayApi;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-
-import static cn.bootx.platform.daxpay.code.paymodel.AliPayCode.BAR_CODE;
-import static cn.bootx.platform.daxpay.code.paymodel.AliPayCode.QUICK_MSECURITY_PAY;
-
-/**
- * 支付宝支付service
- *
- * @author xxm
- * @since 2021/2/26
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class AliPayService {
-
- /**
- * 支付前检查支付方式是否可用
- */
- public void validation(PayWayParam payWayParam, AlipayConfig alipayConfig) {
- List payWays = Optional.ofNullable(alipayConfig.getPayWays())
- .filter(StrUtil::isNotBlank)
- .map(s -> StrUtil.split(s, ','))
- .orElse(new ArrayList<>(1));
- // 发起的支付类型是否在支持的范围内
- PayWayEnum payWayEnum = Optional.ofNullable(AliPayWay.findByCode(payWayParam.getPayWay()))
- .orElseThrow(() -> new PayFailureException("非法的支付宝支付类型"));
- if (!payWays.contains(payWayEnum.getCode())) {
- throw new PayFailureException("该支付宝支付方式不可用");
- }
- }
-
- /**
- * 调起支付
- */
- public void pay(BigDecimal amount, Payment payment, AliPayParam aliPayParam, PayWayParam payWayParam,
- AlipayConfig alipayConfig) {
- String payBody = null;
- // 线程存储
- AsyncPayInfo asyncPayInfo = Optional.ofNullable(AsyncPayInfoLocal.get()).orElse(new AsyncPayInfo());
- // wap支付
- if (Objects.equals(payWayParam.getPayWay(), PayWayEnum.WAP.getCode())) {
- payBody = this.wapPay(amount, payment, alipayConfig, aliPayParam);
- }
- // 程序支付
- else if (Objects.equals(payWayParam.getPayWay(), PayWayEnum.APP.getCode())) {
- payBody = this.appPay(amount, payment, alipayConfig);
- }
- // pc支付
- else if (Objects.equals(payWayParam.getPayWay(), PayWayEnum.WEB.getCode())) {
- payBody = this.webPay(amount, payment, alipayConfig, aliPayParam);
- }
- // 二维码支付
- else if (Objects.equals(payWayParam.getPayWay(), PayWayEnum.QRCODE.getCode())) {
- payBody = this.qrCodePay(amount, payment, alipayConfig);
- }
- // 付款码支付
- else if (Objects.equals(payWayParam.getPayWay(), PayWayEnum.BARCODE.getCode())) {
- String tradeNo = this.barCode(amount, payment, aliPayParam, alipayConfig);
- asyncPayInfo.setExpiredTime(false).setTradeNo(tradeNo);
- }
- // 通常是发起支付的参数
- asyncPayInfo.setPayBody(payBody);
- AsyncPayInfoLocal.set(asyncPayInfo);
- }
-
- /**
- * wap支付
- */
- public String wapPay(BigDecimal amount, Payment payment, AlipayConfig alipayConfig, AliPayParam aliPayParam) {
-
- AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
- model.setSubject(payment.getTitle());
- model.setOutTradeNo(String.valueOf(payment.getId()));
- model.setTotalAmount(amount.toPlainString());
- // 过期时间
- model.setTimeoutExpress(PayWayUtil.getAliExpiredTime(alipayConfig.getExpireTime()));
- payment.setExpiredTime(PayWayUtil.getPaymentExpiredTime(alipayConfig.getExpireTime()));
- model.setProductCode(AliPayCode.QUICK_WAP_PAY);
- model.setQuitUrl(aliPayParam.getReturnUrl());
-
- AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
- request.setBizModel(model);
- request.setNotifyUrl(alipayConfig.getNotifyUrl());
- request.setReturnUrl(aliPayParam.getReturnUrl());
-
- try {
- // 通过GET方式的请求, 返回URL的响应, 默认是POST方式的请求, 返回的是表单响应
- AlipayTradeWapPayResponse response = AliPayApi.pageExecute(request, Method.GET.name());
- return response.getBody();
- }
- catch (AlipayApiException e) {
- log.error("支付宝手机支付失败", e);
- throw new PayFailureException("支付宝手机支付失败");
- }
- }
-
- /**
- * app支付
- */
- public String appPay(BigDecimal amount, Payment payment, AlipayConfig alipayConfig) {
- AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
-
- model.setSubject(payment.getTitle());
- model.setProductCode(QUICK_MSECURITY_PAY);
- model.setOutTradeNo(String.valueOf(payment.getId()));
- // 过期时间
- model.setTimeoutExpress(PayWayUtil.getAliExpiredTime(alipayConfig.getExpireTime()));
- payment.setExpiredTime(PayWayUtil.getPaymentExpiredTime(alipayConfig.getExpireTime()));
- model.setTotalAmount(amount.toPlainString());
-
- try {
- AlipayTradeAppPayResponse response = AliPayApi.appPayToResponse(model, alipayConfig.getNotifyUrl());
- return response.getBody();
- }
- catch (AlipayApiException e) {
- log.error("支付宝APP支付失败", e);
- throw new PayFailureException("支付宝APP支付失败");
- }
- }
-
- /**
- * PC支付
- */
- public String webPay(BigDecimal amount, Payment payment, AlipayConfig alipayConfig, AliPayParam aliPayParam) {
-
- AlipayTradePagePayModel model = new AlipayTradePagePayModel();
-
- model.setSubject(payment.getTitle());
- model.setOutTradeNo(String.valueOf(payment.getId()));
- // 过期时间
- model.setTimeoutExpress(PayWayUtil.getAliExpiredTime(alipayConfig.getExpireTime()));
- payment.setExpiredTime(PayWayUtil.getPaymentExpiredTime(alipayConfig.getExpireTime()));
- model.setTotalAmount(amount.toPlainString());
- // 目前仅支持FAST_INSTANT_TRADE_PAY
- model.setProductCode(AliPayCode.FAST_INSTANT_TRADE_PAY);
-
- AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
- request.setBizModel(model);
- request.setNotifyUrl(alipayConfig.getNotifyUrl());
- request.setReturnUrl(aliPayParam.getReturnUrl());
- try {
- // 通过GET方式的请求, 返回URL的响应, 默认是POST方式的请求, 返回的是表单响应
- AlipayTradePagePayResponse response = AliPayApi.pageExecute(request, Method.GET.name());
- return response.getBody();
- }
- catch (AlipayApiException e) {
- log.error("支付宝PC支付失败", e);
- throw new PayFailureException("支付宝PC支付失败");
- }
- }
-
- /**
- * 二维码支付(扫码支付)
- */
- public String qrCodePay(BigDecimal amount, Payment payment, AlipayConfig alipayConfig) {
- AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();
- model.setSubject(payment.getTitle());
- model.setOutTradeNo(String.valueOf(payment.getId()));
- model.setTotalAmount(amount.toPlainString());
-
- // 过期时间
- model.setTimeoutExpress(PayWayUtil.getAliExpiredTime(alipayConfig.getExpireTime()));
- payment.setExpiredTime(PayWayUtil.getPaymentExpiredTime(alipayConfig.getExpireTime()));
-
- try {
- AlipayTradePrecreateResponse response = AliPayApi.tradePrecreatePayToResponse(model,
- alipayConfig.getNotifyUrl());
- this.verifyErrorMsg(response);
- return response.getQrCode();
- }
- catch (AlipayApiException e) {
- log.error("支付宝手机支付失败", e);
- throw new PayFailureException("支付宝手机支付失败");
- }
- }
-
- /**
- * 付款码支付
- */
- public String barCode(BigDecimal amount, Payment payment, AliPayParam aliPayParam, AlipayConfig alipayConfig) {
- AlipayTradePayModel model = new AlipayTradePayModel();
-
- model.setSubject(payment.getTitle());
- model.setOutTradeNo(String.valueOf(payment.getId()));
- model.setScene(BAR_CODE);
- model.setAuthCode(aliPayParam.getAuthCode());
-
- // 过期时间
- model.setTimeoutExpress(PayWayUtil.getAliExpiredTime(alipayConfig.getExpireTime()));
- payment.setExpiredTime(PayWayUtil.getPaymentExpiredTime(alipayConfig.getExpireTime()));
- model.setTotalAmount(amount.toPlainString());
-
- try {
- AlipayTradePayResponse response = AliPayApi.tradePayToResponse(model, alipayConfig.getNotifyUrl());
-
- // 支付成功处理 金额2000以下免密支付
- if (Objects.equals(response.getCode(), AliPayCode.SUCCESS)) {
- payment.setPayStatus(PayStatusCode.TRADE_SUCCESS).setPayTime(LocalDateTime.now());
- return response.getTradeNo();
- }
- // 非支付中响应码, 进行错误处理
- if (!Objects.equals(response.getCode(), AliPayCode.INPROCESS)) {
- this.verifyErrorMsg(response);
- }
- }
- catch (AlipayApiException e) {
- log.error("主动扫码支付失败", e);
- throw new PayFailureException("主动扫码支付失败");
- }
- return null;
- }
-
- /**
- * 验证错误信息
- */
- private void verifyErrorMsg(AlipayResponse alipayResponse) {
- if (!Objects.equals(alipayResponse.getCode(), AliPayCode.SUCCESS)) {
- String errorMsg = alipayResponse.getSubMsg();
- if (StrUtil.isBlank(errorMsg)) {
- errorMsg = alipayResponse.getMsg();
- }
- log.error("支付失败 {}", errorMsg);
- throw new PayFailureException(errorMsg);
- }
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AliPaymentService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AliPaymentService.java
deleted file mode 100644
index b9fc0208..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AliPaymentService.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.alipay.service;
-
-import cn.bootx.platform.common.core.util.BigDecimalUtil;
-import cn.bootx.platform.daxpay.code.pay.PayChannelEnum;
-import cn.bootx.platform.daxpay.code.pay.PayStatusCode;
-import cn.bootx.platform.daxpay.core.channel.alipay.dao.AliPaymentManager;
-import cn.bootx.platform.daxpay.core.channel.alipay.entity.AliPayment;
-import cn.bootx.platform.daxpay.core.pay.local.AsyncPayInfoLocal;
-import cn.bootx.platform.daxpay.core.payment.dao.PaymentManager;
-import cn.bootx.platform.daxpay.core.payment.entity.Payment;
-import cn.bootx.platform.daxpay.dto.pay.AsyncPayInfo;
-import cn.bootx.platform.daxpay.dto.payment.PayChannelInfo;
-import cn.bootx.platform.daxpay.dto.payment.RefundableInfo;
-import cn.bootx.platform.daxpay.exception.payment.PayFailureException;
-import cn.bootx.platform.daxpay.param.pay.PayWayParam;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-
-/**
- * 支付宝支付记录
- * 1.创建: 支付调起并支付成功后才会创建
- * 2.撤销: 关闭本地支付记录
- * 3.退款: 发起退款时记录
- *
- * @author xxm
- * @since 2021/2/26
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class AliPaymentService {
-
- private final AliPaymentManager aliPaymentManager;
-
- private final PaymentManager paymentManager;
-
- /**
- * 支付调起成功 更新payment中异步支付类型信息, 如果支付完成, 创建支付宝支付单
- */
- public void updatePaySuccess(Payment payment, PayWayParam payWayParam) {
- AsyncPayInfo asyncPayInfo = AsyncPayInfoLocal.get();
- payment.setAsyncPayMode(true).setAsyncPayChannel(PayChannelEnum.ALI.getCode());
- List payTypeInfos = payment.getPayChannelInfo();
- List refundableInfos = payment.getRefundableInfo();
- // 清除已有的异步支付类型信息
- payTypeInfos.removeIf(payTypeInfo -> PayChannelEnum.ASYNC_TYPE_CODE.contains(payTypeInfo.getPayChannel()));
- refundableInfos.removeIf(payTypeInfo -> PayChannelEnum.ASYNC_TYPE_CODE.contains(payTypeInfo.getPayChannel()));
- // 更新支付宝支付类型信息
- payTypeInfos.add(new PayChannelInfo().setPayChannel(PayChannelEnum.ALI.getCode())
- .setPayWay(payWayParam.getPayWay())
- .setAmount(payWayParam.getAmount())
- .setExtraParamsJson(payWayParam.getExtraParamsJson()));
- payment.setPayChannelInfo(payTypeInfos);
- // 更新支付宝可退款类型信息
- refundableInfos
- .add(new RefundableInfo().setPayChannel(PayChannelEnum.ALI.getCode()).setAmount(payWayParam.getAmount()));
- payment.setRefundableInfo(refundableInfos);
- // 如果支付完成(付款码情况) 调用 updateSyncSuccess 创建支付宝支付记录
- if (Objects.equals(payment.getPayStatus(), PayStatusCode.TRADE_SUCCESS)) {
- this.createAliPayment(payment, payWayParam, asyncPayInfo.getTradeNo());
- }
- }
-
- /**
- * 更新异步支付记录成功状态, 并创建支付宝支付记录
- */
- public void updateAsyncSuccess(Long id, PayWayParam payWayParam, String tradeNo) {
- // 更新支付记录
- Payment payment = paymentManager.findById(id).orElseThrow(() -> new PayFailureException("支付记录不存在"));
- this.createAliPayment(payment,payWayParam,tradeNo);
- }
-
- /**
- * 创建支付宝支付记录(支付调起成功后才会创建)
- */
- private void createAliPayment(Payment payment, PayWayParam payWayParam, String tradeNo) {
- // 创建支付宝支付记录
- AliPayment aliPayment = new AliPayment();
- aliPayment.setTradeNo(tradeNo)
- .setPaymentId(payment.getId())
- .setAmount(payWayParam.getAmount())
- .setRefundableBalance(payWayParam.getAmount())
- .setBusinessId(payment.getBusinessId())
- .setPayStatus(PayStatusCode.TRADE_SUCCESS)
- .setPayTime(LocalDateTime.now());
- aliPaymentManager.save(aliPayment);
- }
-
- /**
- * 取消状态
- */
- public void updateClose(Long paymentId) {
- Optional aliPaymentOptional = aliPaymentManager.findByPaymentId(paymentId);
- aliPaymentOptional.ifPresent(aliPayment -> {
- aliPayment.setPayStatus(PayStatusCode.TRADE_CANCEL);
- aliPaymentManager.updateById(aliPayment);
- });
- }
-
- /**
- * 更新退款
- */
- public void updatePayRefund(Long paymentId, BigDecimal amount) {
- Optional aliPaymentOptional = aliPaymentManager.findByPaymentId(paymentId);
- aliPaymentOptional.ifPresent(payment -> {
- BigDecimal refundableBalance = payment.getRefundableBalance().subtract(amount);
- payment.setRefundableBalance(refundableBalance);
- if (BigDecimalUtil.compareTo(refundableBalance, BigDecimal.ZERO) == 0) {
- payment.setPayStatus(PayStatusCode.TRADE_REFUNDED);
- }
- else {
- payment.setPayStatus(PayStatusCode.TRADE_REFUNDING);
- }
- aliPaymentManager.updateById(payment);
- });
- }
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AlipayConfigService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AlipayConfigService.java
deleted file mode 100644
index 19cdbec1..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AlipayConfigService.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.alipay.service;
-
-import cn.bootx.platform.common.core.exception.BizException;
-import cn.bootx.platform.common.core.exception.DataNotExistException;
-import cn.bootx.platform.common.core.rest.PageResult;
-import cn.bootx.platform.common.core.rest.dto.LabelValue;
-import cn.bootx.platform.common.core.rest.param.PageParam;
-import cn.bootx.platform.common.mybatisplus.util.MpUtil;
-import cn.bootx.platform.daxpay.code.MchAndAppCode;
-import cn.bootx.platform.daxpay.code.pay.PayChannelEnum;
-import cn.bootx.platform.daxpay.code.paymodel.AliPayCode;
-import cn.bootx.platform.daxpay.code.paymodel.AliPayWay;
-import cn.bootx.platform.daxpay.core.channel.alipay.dao.AlipayConfigManager;
-import cn.bootx.platform.daxpay.core.channel.alipay.entity.AlipayConfig;
-import cn.bootx.platform.daxpay.core.merchant.entity.MchAppPayConfig;
-import cn.bootx.platform.daxpay.core.merchant.service.MchAppPayConfigService;
-import cn.bootx.platform.daxpay.core.merchant.service.MchAppService;
-import cn.bootx.platform.daxpay.dto.channel.alipay.AlipayConfigDto;
-import cn.bootx.platform.daxpay.param.channel.alipay.AlipayConfigParam;
-import cn.bootx.platform.daxpay.param.channel.alipay.AlipayConfigQuery;
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.bean.copier.CopyOptions;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.CharsetUtil;
-import com.ijpay.alipay.AliPayApiConfig;
-import com.ijpay.alipay.AliPayApiConfigKit;
-import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
-import lombok.extern.slf4j.Slf4j;
-import lombok.val;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * 支付宝支付
- *
- * @author xxm
- * @since 2020/12/15
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class AlipayConfigService {
-
- private final AlipayConfigManager alipayConfigManager;
-
- private final MchAppService mchAppService;
-
- private final MchAppPayConfigService appPayConfigService;
-
- /**
- * 添加支付宝配置
- */
- @Transactional(rollbackFor = Exception.class)
- public void add(AlipayConfigParam param) {
- // 是否有管理关系判断
- if (!mchAppService.checkMatch(param.getMchCode(), param.getMchAppCode())) {
- throw new BizException("应用信息与商户信息不匹配");
- }
- AlipayConfig alipayConfig = AlipayConfig.init(param);
- alipayConfig.setState(MchAndAppCode.PAY_CONFIG_STATE_NORMAL);
- alipayConfigManager.save(alipayConfig);
-
- // 保存关联关系
- MchAppPayConfig mchAppPayConfig = new MchAppPayConfig().setAppCode(alipayConfig.getMchAppCode())
- .setConfigId(alipayConfig.getId())
- .setChannel(PayChannelEnum.ALI.getCode())
- .setState(alipayConfig.getState());
- appPayConfigService.add(mchAppPayConfig);
- }
-
- /**
- * 修改
- */
- @Transactional(rollbackFor = Exception.class)
- public void update(AlipayConfigParam param) {
- AlipayConfig alipayConfig = alipayConfigManager.findById(param.getId()).orElseThrow(DataNotExistException::new);
- BeanUtil.copyProperties(param, alipayConfig, CopyOptions.create().ignoreNullValue());
- // 支付方式
- if (CollUtil.isNotEmpty(param.getPayWayList())) {
- alipayConfig.setPayWays(String.join(",", param.getPayWayList()));
- }
- else {
- alipayConfig.setPayWays(null);
- }
- alipayConfigManager.updateById(alipayConfig);
- }
-
- /**
- * 获取
- */
- public AlipayConfigDto findById(Long id) {
- return alipayConfigManager.findById(id).map(AlipayConfig::toDto).orElseThrow(DataNotExistException::new);
- }
-
- /**
- * 分页
- */
- public PageResult page(PageParam pageParam, AlipayConfigQuery param) {
- return MpUtil.convert2DtoPageResult(alipayConfigManager.page(pageParam, param));
- }
-
- /**
- * 支付宝支持支付方式
- */
- public List findPayWayList() {
- return AliPayWay.getPayWays()
- .stream()
- .map(e -> new LabelValue(e.getName(),e.getCode()))
- .collect(Collectors.toList());
- }
-
- /**
- * 初始化IJPay服务,通过商户应用AppCode获取支付配置
- */
- public void initApiConfigByMchAppCode(String mchAppCode){
- val alipayConfig = alipayConfigManager.findByMchAppCode(mchAppCode)
- .orElseThrow(() -> new DataNotExistException("支付配置不存在"));
- this.initApiConfig(alipayConfig);
- }
-
- /**
- * 初始化IJPay服务
- */
- @SneakyThrows
- public void initApiConfig(AlipayConfig alipayConfig) {
-
- AliPayApiConfig aliPayApiConfig;
- // 公钥
- if (Objects.equals(alipayConfig.getAuthType(), AliPayCode.AUTH_TYPE_KEY)) {
- aliPayApiConfig = AliPayApiConfig.builder()
- .setAppId(alipayConfig.getAppId())
- .setPrivateKey(alipayConfig.getPrivateKey())
- .setAliPayPublicKey(alipayConfig.getAlipayPublicKey())
- .setCharset(CharsetUtil.UTF_8)
- .setServiceUrl(alipayConfig.getServerUrl())
- .setSignType(alipayConfig.getSignType())
- .build();
- }
- // 证书
- else if (Objects.equals(alipayConfig.getAuthType(), AliPayCode.AUTH_TYPE_CART)) {
- aliPayApiConfig = AliPayApiConfig.builder()
- .setAppId(alipayConfig.getAppId())
- .setPrivateKey(alipayConfig.getPrivateKey())
- .setAppCertContent(alipayConfig.getAppCert())
- .setAliPayCertContent(alipayConfig.getAlipayCert())
- .setAliPayRootCertContent(alipayConfig.getAlipayRootCert())
- .setCharset(CharsetUtil.UTF_8)
- .setServiceUrl(alipayConfig.getServerUrl())
- .setSignType(alipayConfig.getSignType())
- .buildByCertContent();
- }
- else {
- throw new BizException("支付宝认证方式不可为空");
- }
- AliPayApiConfigKit.setThreadLocalAliPayApiConfig(aliPayApiConfig);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AlipaySyncService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AlipaySyncService.java
deleted file mode 100644
index 36aac15b..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/alipay/service/AlipaySyncService.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.alipay.service;
-
-import cn.bootx.platform.daxpay.code.pay.PaySyncStatus;
-import cn.bootx.platform.daxpay.code.paymodel.AliPayCode;
-import cn.bootx.platform.daxpay.core.sync.result.PaySyncResult;
-import cn.bootx.platform.daxpay.core.payment.entity.Payment;
-import cn.hutool.json.JSONUtil;
-import com.alipay.api.AlipayApiException;
-import com.alipay.api.domain.AlipayTradeQueryModel;
-import com.alipay.api.response.AlipayTradeQueryResponse;
-import com.ijpay.alipay.AliPayApi;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.HashMap;
-import java.util.Objects;
-
-/**
- * 支付宝同步
- *
- * @author xxm
- * @since 2021/5/17
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class AlipaySyncService {
-
- /**
- * 与支付宝网关同步状态 1 远程支付成功 2 交易创建,等待买家付款 3 超时关闭 4 查询不到 5 查询失败
- */
- public PaySyncResult syncPayStatus(Payment payment) {
- PaySyncResult paySyncResult = new PaySyncResult().setPaySyncStatus(PaySyncStatus.FAIL);
-
- // 查询
- try {
- AlipayTradeQueryModel queryModel = new AlipayTradeQueryModel();
- queryModel.setOutTradeNo(String.valueOf(payment.getId()));
- // 查询退款参数
- AlipayTradeQueryResponse response = AliPayApi.tradeQueryToResponse(queryModel);
- String tradeStatus = response.getTradeStatus();
- paySyncResult.setJson(JSONUtil.toJsonStr(response));
- // 支付完成
- if (Objects.equals(tradeStatus, AliPayCode.PAYMENT_TRADE_SUCCESS)
- || Objects.equals(tradeStatus, AliPayCode.PAYMENT_TRADE_FINISHED)) {
-
- HashMap map = new HashMap<>(1);
- map.put(AliPayCode.TRADE_NO, response.getTradeNo());
- return paySyncResult.setPaySyncStatus(PaySyncStatus.TRADE_SUCCESS).setMap(map);
- }
- // 待支付
- if (Objects.equals(tradeStatus, AliPayCode.PAYMENT_WAIT_BUYER_PAY)) {
- return paySyncResult.setPaySyncStatus(PaySyncStatus.WAIT_BUYER_PAY);
- }
- // 已关闭
- if (Objects.equals(tradeStatus, AliPayCode.PAYMENT_TRADE_CLOSED)) {
- return paySyncResult.setPaySyncStatus(PaySyncStatus.TRADE_CLOSED);
- }
- // 未找到
- if (Objects.equals(response.getSubCode(), AliPayCode.ACQ_TRADE_NOT_EXIST)) {
- return paySyncResult.setPaySyncStatus(PaySyncStatus.NOT_FOUND);
- }
- // 退款 支付宝查不到
-
- }
- catch (AlipayApiException e) {
- log.error("查询订单失败:", e);
- paySyncResult.setMsg(e.getErrMsg());
- }
- return paySyncResult;
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/base/entity/BasePayment.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/base/entity/BasePayment.java
deleted file mode 100644
index 81421d15..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/base/entity/BasePayment.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.base.entity;
-
-import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
-import cn.bootx.platform.daxpay.code.pay.PayStatusCode;
-import cn.bootx.table.modify.annotation.DbColumn;
-import cn.bootx.table.modify.mysql.annotation.DbMySqlIndex;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * 基础支付记录类
- *
- * @author xxm
- * @since 2021/2/25
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-@Accessors(chain = true)
-public class BasePayment extends MpBaseEntity {
-
- /** 交易记录ID */
- @DbMySqlIndex(comment = "交易记录ID")
- private Long paymentId;
-
- /** 交易金额 */
- @DbColumn(comment = "交易金额")
- private BigDecimal amount;
-
- /** 可退款金额 */
- @DbColumn(comment = "可退款金额")
- private BigDecimal refundableBalance;
-
- /** 关联的业务id */
- @DbMySqlIndex(comment = "业务id索引")
- @DbColumn(comment = "关联的业务id")
- private String businessId;
-
- /**
- * 支付状态
- * @see PayStatusCode#TRADE_PROGRESS
- */
- @DbColumn(comment = "支付状态")
- private String payStatus;
-
- /** 支付时间 */
- @DbColumn(comment = "支付时间")
- private LocalDateTime payTime;
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/cash/dao/CashPaymentManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/cash/dao/CashPaymentManager.java
deleted file mode 100644
index bc23d52a..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/cash/dao/CashPaymentManager.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.cash.dao;
-
-import cn.bootx.platform.common.mybatisplus.impl.BaseManager;
-import cn.bootx.platform.daxpay.core.channel.cash.entity.CashPayment;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Repository;
-
-import java.util.Optional;
-
-/**
- * 现金支付
- *
- * @author xxm
- * @since 2021/6/23
- */
-@Slf4j
-@Repository
-@RequiredArgsConstructor
-public class CashPaymentManager extends BaseManager {
-
- public Optional findByPaymentId(Long paymentId) {
- return findByField(CashPayment::getPaymentId, paymentId);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/cash/dao/CashPaymentMapper.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/cash/dao/CashPaymentMapper.java
deleted file mode 100644
index 141b1138..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/cash/dao/CashPaymentMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.cash.dao;
-
-import cn.bootx.platform.daxpay.core.channel.cash.entity.CashPayment;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 现金支付
- *
- * @author xxm
- * @since 2021/6/23
- */
-@Mapper
-public interface CashPaymentMapper extends BaseMapper {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/cash/entity/CashPayment.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/cash/entity/CashPayment.java
deleted file mode 100644
index 7d8bfc42..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/cash/entity/CashPayment.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.cash.entity;
-
-import cn.bootx.platform.daxpay.core.channel.base.entity.BasePayment;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * 现金支付记录
- *
- * @author xxm
- * @since 2021/6/23
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@TableName("pay_cash_payment")
-@Accessors(chain = true)
-public class CashPayment extends BasePayment {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/cash/service/CashService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/cash/service/CashService.java
deleted file mode 100644
index 0294f6cb..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/cash/service/CashService.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.cash.service;
-
-import cn.bootx.platform.common.core.util.BigDecimalUtil;
-import cn.bootx.platform.daxpay.code.pay.PayStatusCode;
-import cn.bootx.platform.daxpay.core.channel.cash.dao.CashPaymentManager;
-import cn.bootx.platform.daxpay.core.channel.cash.entity.CashPayment;
-import cn.bootx.platform.daxpay.core.payment.entity.Payment;
-import cn.bootx.platform.daxpay.param.pay.PayWayParam;
-import cn.bootx.platform.daxpay.param.pay.PayParam;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.util.Optional;
-
-/**
- * 现金支付
- *
- * @author xxm
- * @since 2021/6/23
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class CashService {
-
- private final CashPaymentManager cashPaymentManager;
-
- /**
- * 支付
- */
- public void pay(PayWayParam payMode, Payment payment, PayParam payParam) {
- CashPayment walletPayment = new CashPayment();
- walletPayment.setPaymentId(payment.getId())
- .setBusinessId(payParam.getBusinessId())
- .setAmount(payMode.getAmount())
- .setRefundableBalance(payMode.getAmount())
- .setPayStatus(payment.getPayStatus());
- cashPaymentManager.save(walletPayment);
- }
-
- /**
- * 关闭
- */
- public void close(Long paymentId) {
- Optional cashPaymentOpt = cashPaymentManager.findByPaymentId(paymentId);
- cashPaymentOpt.ifPresent(cashPayment -> {
- cashPayment.setPayStatus(PayStatusCode.TRADE_CANCEL);
- cashPaymentManager.updateById(cashPayment);
- });
- }
-
- /**
- * 退款
- */
- public void refund(Long paymentId, BigDecimal amount) {
- Optional cashPayment = cashPaymentManager.findByPaymentId(paymentId);
- cashPayment.ifPresent(payment -> {
- BigDecimal refundableBalance = payment.getRefundableBalance().subtract(amount);
- if (BigDecimalUtil.compareTo(refundableBalance, BigDecimal.ZERO) == 0) {
- payment.setPayStatus(PayStatusCode.TRADE_REFUNDED);
- }
- else {
- payment.setPayStatus(PayStatusCode.TRADE_REFUNDING);
- }
- cashPaymentManager.updateById(payment);
- });
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/convert/PayChannelConfigConvert.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/convert/PayChannelConfigConvert.java
deleted file mode 100644
index 5c6382a1..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/convert/PayChannelConfigConvert.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.config.convert;
-
-import cn.bootx.platform.daxpay.core.channel.config.entity.PayChannelConfig;
-import cn.bootx.platform.daxpay.dto.channel.config.PayChannelConfigDto;
-import cn.bootx.platform.daxpay.param.channel.config.PayChannelConfigParam;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-/**
- * 支付渠道配置
- *
- * @author xxm
- * @since 2023-05-24
- */
-@Mapper
-public interface PayChannelConfigConvert {
-
- PayChannelConfigConvert CONVERT = Mappers.getMapper(PayChannelConfigConvert.class);
-
- PayChannelConfig convert(PayChannelConfigParam in);
-
- PayChannelConfigDto convert(PayChannelConfig in);
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/dao/PayChannelConfigManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/dao/PayChannelConfigManager.java
deleted file mode 100644
index c333b76b..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/dao/PayChannelConfigManager.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.config.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.core.channel.config.entity.PayChannelConfig;
-import cn.bootx.platform.daxpay.param.channel.config.PayChannelConfigParam;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-/**
- * 支付渠道配置
- *
- * @author xxm
- * @since 2023-05-24
- */
-@Repository
-@RequiredArgsConstructor
-public class PayChannelConfigManager extends BaseManager {
-
- /**
- * 分页
- */
- public Page page(PageParam pageParam, PayChannelConfigParam param) {
- Page mpPage = MpUtil.getMpPage(pageParam, PayChannelConfig.class);
- QueryWrapper wrapper = QueryGenerator.generator(param, this.getEntityClass());
- wrapper.select(this.getEntityClass(), MpUtil::excludeBigField)
- .orderByDesc(MpUtil.getColumnName(PayChannelConfig::getId));
- return this.page(mpPage, wrapper);
- }
-
- /**
- * 查询全部并排序
- */
- public List findAllByOrder() {
- return lambdaQuery().orderByAsc(PayChannelConfig::getSortNo).list();
- }
-
- public boolean existsByCode(String code) {
- return existedByField(PayChannelConfig::getCode, code);
- }
-
- public boolean existsByCode(String code, Long id) {
- return lambdaQuery().eq(PayChannelConfig::getCode, code).ne(MpIdEntity::getId, id).exists();
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/dao/PayChannelConfigMapper.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/dao/PayChannelConfigMapper.java
deleted file mode 100644
index c5bfba0a..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/dao/PayChannelConfigMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.config.dao;
-
-import cn.bootx.platform.daxpay.core.channel.config.entity.PayChannelConfig;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 支付渠道配置
- *
- * @author xxm
- * @since 2023-05-24
- */
-@Mapper
-public interface PayChannelConfigMapper extends BaseMapper {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/entity/PayChannelConfig.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/entity/PayChannelConfig.java
deleted file mode 100644
index fa0c0487..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/entity/PayChannelConfig.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.config.entity;
-
-import cn.bootx.platform.common.core.function.EntityBaseFunction;
-import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
-import cn.bootx.platform.daxpay.core.channel.config.convert.PayChannelConfigConvert;
-import cn.bootx.platform.daxpay.dto.channel.config.PayChannelConfigDto;
-import cn.bootx.platform.daxpay.param.channel.config.PayChannelConfigParam;
-import cn.bootx.table.modify.annotation.DbColumn;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * 支付渠道配置
- *
- * @author xxm
- * @since 2023-05-24
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-//@DbTable(comment = "支付渠道配置")
-@Accessors(chain = true)
-@TableName("pay_channel_config")
-public class PayChannelConfig extends MpBaseEntity implements EntityBaseFunction {
-
- /** 渠道编码 */
- @DbColumn(comment = "渠道编码")
- private String code;
-
- /** 渠道名称 */
- @DbColumn(comment = "渠道名称")
- private String name;
-
- /** 图片 */
- @DbColumn(comment = "图片")
- private Long image;
-
- /** 排序 */
- @DbColumn(comment = "排序")
- private Double sortNo;
-
- /** 创建对象 */
- public static PayChannelConfig init(PayChannelConfigParam in) {
- return PayChannelConfigConvert.CONVERT.convert(in);
- }
-
- /** 转换成dto */
- @Override
- public PayChannelConfigDto toDto() {
- return PayChannelConfigConvert.CONVERT.convert(this);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/service/PayChannelConfigService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/service/PayChannelConfigService.java
deleted file mode 100644
index cd4ef7a0..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/config/service/PayChannelConfigService.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.config.service;
-
-import cn.bootx.platform.common.core.exception.BizException;
-import cn.bootx.platform.common.core.exception.DataNotExistException;
-import cn.bootx.platform.common.core.rest.PageResult;
-import cn.bootx.platform.common.core.rest.param.PageParam;
-import cn.bootx.platform.common.mybatisplus.util.MpUtil;
-import cn.bootx.platform.daxpay.core.channel.config.dao.PayChannelConfigManager;
-import cn.bootx.platform.daxpay.core.channel.config.entity.PayChannelConfig;
-import cn.bootx.platform.daxpay.dto.channel.config.PayChannelConfigDto;
-import cn.bootx.platform.daxpay.param.channel.config.PayChannelConfigParam;
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.bean.copier.CopyOptions;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-/**
- * 支付渠道配置
- *
- * @author xxm
- * @since 2023-05-24
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class PayChannelConfigService {
-
- private final PayChannelConfigManager configManager;
-
- /**
- * 添加
- */
- public void add(PayChannelConfigParam param) {
- PayChannelConfig payChannelConfig = PayChannelConfig.init(param);
- // 编码不能重复
- if (configManager.existedByField(PayChannelConfig::getCode, param.getCode())) {
- throw new BizException("编码已存在");
- }
- configManager.save(payChannelConfig);
- }
-
- /**
- * 修改
- */
- public void update(PayChannelConfigParam param) {
- PayChannelConfig payChannelConfig = configManager.findById(param.getId())
- .orElseThrow(DataNotExistException::new);
- // 编码不能重复
- if (configManager.existedByField(PayChannelConfig::getCode, param.getCode(), param.getId())) {
- throw new BizException("编码已存在");
- }
- BeanUtil.copyProperties(param, payChannelConfig, CopyOptions.create().ignoreNullValue());
- configManager.updateById(payChannelConfig);
- }
-
- /**
- * 分页
- */
- public PageResult page(PageParam pageParam, PayChannelConfigParam payChannelConfigParam) {
- return MpUtil.convert2DtoPageResult(configManager.page(pageParam, payChannelConfigParam));
- }
-
- /**
- * 编码是否已经存在
- */
- public boolean existsByCode(String code) {
- return configManager.existsByCode(code);
- }
-
- /**
- * 编码是否已经存在(不包含自身)
- */
- public boolean existsByCode(String code, Long id) {
- return configManager.existsByCode(code, id);
- }
-
- /**
- * 获取单条
- */
- public PayChannelConfigDto findById(Long id) {
- return configManager.findById(id).map(PayChannelConfig::toDto).orElseThrow(DataNotExistException::new);
- }
-
- /**
- * 删除
- */
- public void delete(Long id) {
- configManager.deleteById(id);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/convert/UnionPayConvert.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/convert/UnionPayConvert.java
deleted file mode 100644
index 4f697cb3..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/convert/UnionPayConvert.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.union.convert;
-
-import cn.bootx.platform.daxpay.core.channel.union.entity.UnionPayConfig;
-import cn.bootx.platform.daxpay.dto.channel.union.UnionPayConfigDto;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-/**
- * @author xxm
- * @since 2022/3/11
- */
-@Mapper
-public interface UnionPayConvert {
-
- UnionPayConvert CONVERT = Mappers.getMapper(UnionPayConvert.class);
-
- UnionPayConfigDto convert(UnionPayConfig in);
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/dao/UnionPayConfigManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/dao/UnionPayConfigManager.java
deleted file mode 100644
index 6bded1d8..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/dao/UnionPayConfigManager.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.union.dao;
-
-import cn.bootx.platform.common.mybatisplus.impl.BaseManager;
-import cn.bootx.platform.daxpay.core.channel.union.entity.UnionPayConfig;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Repository;
-
-/**
- * @author xxm
- * @since 2022/3/11
- */
-@Slf4j
-@Repository
-@RequiredArgsConstructor
-public class UnionPayConfigManager extends BaseManager {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/dao/UnionPayConfigMapper.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/dao/UnionPayConfigMapper.java
deleted file mode 100644
index 9a65f795..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/dao/UnionPayConfigMapper.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.union.dao;
-
-import cn.bootx.platform.daxpay.core.channel.union.entity.UnionPayConfig;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * @author xxm
- * @since 2022/3/11
- */
-@Mapper
-public interface UnionPayConfigMapper extends BaseMapper {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/dao/UnionPaymentManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/dao/UnionPaymentManager.java
deleted file mode 100644
index 84e0af5b..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/dao/UnionPaymentManager.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.union.dao;
-
-import cn.bootx.platform.common.mybatisplus.impl.BaseManager;
-import cn.bootx.platform.daxpay.core.channel.union.entity.UnionPayment;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Repository;
-
-/**
- * @author xxm
- * @since 2022/3/11
- */
-@Slf4j
-@Repository
-@RequiredArgsConstructor
-public class UnionPaymentManager extends BaseManager {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/dao/UnionPaymentMapper.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/dao/UnionPaymentMapper.java
deleted file mode 100644
index 455d9d77..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/dao/UnionPaymentMapper.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.union.dao;
-
-import cn.bootx.platform.daxpay.core.channel.union.entity.UnionPayment;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * @author xxm
- * @since 2022/3/11
- */
-@Mapper
-public interface UnionPaymentMapper extends BaseMapper {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/entity/UnionPayConfig.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/entity/UnionPayConfig.java
deleted file mode 100644
index 3910dc7b..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/entity/UnionPayConfig.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.union.entity;
-
-import cn.bootx.platform.common.core.function.EntityBaseFunction;
-import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
-import cn.bootx.platform.daxpay.core.channel.union.convert.UnionPayConvert;
-import cn.bootx.platform.daxpay.dto.channel.union.UnionPayConfigDto;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * 云闪付
- *
- * @author xxm
- * @since 2022/3/11
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-@Accessors(chain = true)
-@TableName("pay_union_pay_config")
-public class UnionPayConfig extends MpBaseEntity implements EntityBaseFunction {
-
- @Override
- public UnionPayConfigDto toDto() {
- return UnionPayConvert.CONVERT.convert(this);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/entity/UnionPayment.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/entity/UnionPayment.java
deleted file mode 100644
index dcd7b1b6..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/entity/UnionPayment.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.union.entity;
-
-import cn.bootx.platform.daxpay.core.channel.base.entity.BasePayment;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * @author xxm
- * @since 2022/3/11
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-@Accessors(chain = true)
-@TableName("pay_union_payment")
-public class UnionPayment extends BasePayment {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/service/UnionPayConfigService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/service/UnionPayConfigService.java
deleted file mode 100644
index 27d60b82..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/service/UnionPayConfigService.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.union.service;
-
-import cn.bootx.platform.daxpay.core.channel.union.dao.UnionPayConfigManager;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-/**
- * @author xxm
- * @since 2022/3/11
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class UnionPayConfigService {
-
- private final UnionPayConfigManager unionPayConfigManager;
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/service/UnionPaymentService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/service/UnionPaymentService.java
deleted file mode 100644
index 0305898f..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/union/service/UnionPaymentService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.union.service;
-
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-/**
- * @author xxm
- * @since 2022/3/11
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class UnionPaymentService {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/convert/VoucherConvert.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/convert/VoucherConvert.java
deleted file mode 100644
index ae311033..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/convert/VoucherConvert.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.convert;
-
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.Voucher;
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.VoucherLog;
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.VoucherPayment;
-import cn.bootx.platform.daxpay.dto.channel.voucher.VoucherDto;
-import cn.bootx.platform.daxpay.dto.channel.voucher.VoucherLogDto;
-import cn.bootx.platform.daxpay.dto.channel.voucher.VoucherPaymentDto;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-/**
- * @author xxm
- * @since 2022/3/14
- */
-@Mapper
-public interface VoucherConvert {
-
- VoucherConvert CONVERT = Mappers.getMapper(VoucherConvert.class);
-
- VoucherDto convert(Voucher in);
-
- VoucherLogDto convert(VoucherLog in);
-
- VoucherPaymentDto convert(VoucherPayment in);
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherLogManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherLogManager.java
deleted file mode 100644
index 927c120d..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherLogManager.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.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.daxpay.core.channel.voucher.entity.VoucherLog;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Repository;
-
-/**
- * @author xxm
- * @since 2022/3/19
- */
-@Slf4j
-@Repository
-@RequiredArgsConstructor
-public class VoucherLogManager extends BaseManager {
-
- /**
- * 根据储值卡id进行分页
- */
- public Page pageByVoucherId(PageParam pageParam, Long voucherId) {
- Page mpPage = MpUtil.getMpPage(pageParam,VoucherLog.class);
- return lambdaQuery()
- .eq(VoucherLog::getVoucherId, voucherId)
- .orderByDesc(MpIdEntity::getId)
- .page(mpPage);
-
- }
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherLogMapper.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherLogMapper.java
deleted file mode 100644
index 7c89a04c..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherLogMapper.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.dao;
-
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.VoucherLog;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * @author xxm
- * @since 2022/3/19
- */
-@Mapper
-public interface VoucherLogMapper extends BaseMapper {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherManager.java
deleted file mode 100644
index 82452839..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherManager.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.dao;
-
-import cn.bootx.platform.common.core.rest.param.PageParam;
-import cn.bootx.platform.common.mybatisplus.base.MpDelEntity;
-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.daxpay.core.channel.voucher.entity.Voucher;
-import cn.bootx.platform.daxpay.param.channel.voucher.VoucherParam;
-import cn.bootx.platform.starter.auth.util.SecurityUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Repository;
-
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-
-/**
- * @author xxm
- * @since 2022/3/14
- */
-@Slf4j
-@Repository
-@RequiredArgsConstructor
-public class VoucherManager extends BaseManager {
-
- /**
- * 分页
- */
- public Page page(PageParam pageParam, VoucherParam param) {
- Page mpPage = MpUtil.getMpPage(pageParam, Voucher.class);
- return this.lambdaQuery()
- .ge(Objects.nonNull(param.getStartTime()), Voucher::getStartTime, param.getStartTime())
- .le(Objects.nonNull(param.getEndTime()), Voucher::getEndTime, param.getEndTime())
- .eq(Objects.nonNull(param.getEnduring()), Voucher::isEnduring, param.getEnduring())
- .like(StrUtil.isNotBlank(param.getCardNo()), Voucher::getCardNo, param.getCardNo())
- .like(Objects.nonNull(param.getBatchNo()), Voucher::getBatchNo, param.getBatchNo())
- .orderByDesc(MpIdEntity::getId)
- .page(mpPage);
- }
-
- /**
- * 根据卡号查询
- */
- public Optional findByCardNo(String cardNo) {
- return this.findByField(Voucher::getCardNo, cardNo);
- }
-
- /**
- * 根据卡号查询
- */
- public List findByCardNoList(List cardNos) {
- return this.findAllByFields(Voucher::getCardNo, cardNos);
- }
-
- /**
- * 更改状态
- */
- public void changeStatus(Long id, String status) {
- Long userIdOrDefaultId = SecurityUtil.getUserIdOrDefaultId();
- this.lambdaUpdate().eq(MpIdEntity::getId, id)
- .set(MpDelEntity::getLastModifiedTime, LocalDateTime.now())
- .set(MpDelEntity::getLastModifier,userIdOrDefaultId)
- .set(Voucher::getStatus, status).update();
-
- }
-
- /**
- * 批量更改状态
- */
- public void changeStatusBatch(List ids, String status) {
- Long userIdOrDefaultId = SecurityUtil.getUserIdOrDefaultId();
- this.lambdaUpdate().in(MpIdEntity::getId, ids)
- .set(MpDelEntity::getLastModifiedTime, LocalDateTime.now())
- .set(MpDelEntity::getLastModifier,userIdOrDefaultId)
- .set(Voucher::getStatus, status).update();
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherMapper.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherMapper.java
deleted file mode 100644
index 63e52bc7..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherMapper.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.dao;
-
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.Voucher;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * @author xxm
- * @since 2022/3/14
- */
-@Mapper
-public interface VoucherMapper extends BaseMapper {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherPaymentManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherPaymentManager.java
deleted file mode 100644
index d7fb54e9..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherPaymentManager.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.dao;
-
-import cn.bootx.platform.common.mybatisplus.impl.BaseManager;
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.VoucherPayment;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Repository;
-
-import java.util.Optional;
-
-/**
- * @author xxm
- * @since 2022/3/14
- */
-@Slf4j
-@Repository
-@RequiredArgsConstructor
-public class VoucherPaymentManager extends BaseManager {
-
- /**
- * 根据支付id
- */
- public Optional findByPaymentId(Long paymentId) {
- return this.findByField(VoucherPayment::getPaymentId, paymentId);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherPaymentMapper.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherPaymentMapper.java
deleted file mode 100644
index dc337a69..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/dao/VoucherPaymentMapper.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.dao;
-
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.VoucherPayment;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * @author xxm
- * @since 2022/3/14
- */
-@Mapper
-public interface VoucherPaymentMapper extends BaseMapper {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/entity/Voucher.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/entity/Voucher.java
deleted file mode 100644
index 7743de48..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/entity/Voucher.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.entity;
-
-import cn.bootx.platform.common.core.function.EntityBaseFunction;
-import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
-import cn.bootx.platform.daxpay.code.paymodel.VoucherCode;
-import cn.bootx.platform.daxpay.core.channel.voucher.convert.VoucherConvert;
-import cn.bootx.platform.daxpay.dto.channel.voucher.VoucherDto;
-import cn.bootx.table.modify.annotation.DbColumn;
-import cn.bootx.table.modify.annotation.DbComment;
-import cn.bootx.table.modify.annotation.DbTable;
-import cn.bootx.table.modify.mysql.annotation.DbMySqlIndex;
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * 储值卡
- *
- * @author xxm
- * @since 2022/3/14
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-@DbTable(comment = "储值卡")
-@Accessors(chain = true)
-@TableName("pay_voucher")
-public class Voucher extends MpBaseEntity implements EntityBaseFunction {
-
- /** 商户编码 */
- @TableField(updateStrategy = FieldStrategy.NEVER)
- @DbColumn(comment = "商户编码")
- private String mchCode;
-
- /** 商户应用编码 */
- @TableField(updateStrategy = FieldStrategy.NEVER)
- @DbColumn(comment = "商户应用编码")
- private String mchAppCode;
-
- /** 卡号 */
- @DbComment("卡号")
- @DbMySqlIndex(comment = "卡号索引")
- private String cardNo;
-
- /** 生成批次号 */
- @DbComment("生成批次号")
- private Long batchNo;
-
- /** 面值 */
- @DbComment("面值")
- private BigDecimal faceValue;
-
- /** 余额 */
- @DbComment("余额")
- private BigDecimal balance;
-
- /** 预冻结额度 */
- @DbColumn(comment = "预冻结额度")
- private BigDecimal freezeBalance;
-
-
- /** 是否长期有效 */
- @DbComment("是否长期有效")
- private boolean enduring;
-
- /** 开始时间 */
- @DbComment("开始时间")
- private LocalDateTime startTime;
-
- /** 结束时间 */
- @DbComment("结束时间")
- private LocalDateTime endTime;
-
- /**
- * 状态
- * @see VoucherCode#STATUS_FORBIDDEN
- */
- @DbComment("状态")
- private String status;
-
- @Override
- public VoucherDto toDto() {
- return VoucherConvert.CONVERT.convert(this);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/entity/VoucherLog.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/entity/VoucherLog.java
deleted file mode 100644
index d39da81c..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/entity/VoucherLog.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.entity;
-
-import cn.bootx.platform.common.core.function.EntityBaseFunction;
-import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
-import cn.bootx.platform.daxpay.code.paymodel.VoucherCode;
-import cn.bootx.platform.daxpay.core.channel.voucher.convert.VoucherConvert;
-import cn.bootx.platform.daxpay.dto.channel.voucher.VoucherLogDto;
-import cn.bootx.table.modify.annotation.DbColumn;
-import cn.bootx.table.modify.mysql.annotation.DbMySqlIndex;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.math.BigDecimal;
-
-/**
- * 储值卡日志
- *
- * @author xxm
- * @since 2022/3/17
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-//@DbTable(comment = "储值卡日志")
-@Accessors(chain = true)
-@TableName("pay_voucher_log")
-public class VoucherLog extends MpBaseEntity implements EntityBaseFunction {
-
- /** 储值卡id */
- @DbMySqlIndex(comment = "储值卡ID")
- @DbColumn(comment = "储值卡id")
- private Long voucherId;
-
- /** 储值卡号 */
- @DbColumn(comment = "储值卡号")
- private String voucherNo;
-
- /** 金额 */
- @DbColumn(comment = "金额")
- private BigDecimal amount;
-
- /**
- * 类型
- * @see VoucherCode#LOG_PAY
- */
- @DbColumn(comment = "类型")
- private String type;
-
- /** 交易记录ID */
- @DbColumn(comment = "交易记录ID")
- private Long paymentId;
-
- /** 业务ID */
- @DbColumn(comment = "业务ID")
- private String businessId;
-
- /** 备注 */
- @DbColumn(comment = "备注")
- private String remark;
-
- /**
- * 转换
- */
- @Override
- public VoucherLogDto toDto() {
- return VoucherConvert.CONVERT.convert(this);
- }
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/entity/VoucherPayment.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/entity/VoucherPayment.java
deleted file mode 100644
index 64e41756..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/entity/VoucherPayment.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.entity;
-
-import cn.bootx.platform.common.core.function.EntityBaseFunction;
-import cn.bootx.platform.common.mybatisplus.handler.JacksonRawTypeHandler;
-import cn.bootx.platform.daxpay.core.channel.base.entity.BasePayment;
-import cn.bootx.platform.daxpay.core.channel.voucher.convert.VoucherConvert;
-import cn.bootx.platform.daxpay.dto.channel.voucher.VoucherPaymentDto;
-import cn.bootx.table.modify.annotation.DbColumn;
-import cn.bootx.table.modify.mysql.annotation.DbMySqlFieldType;
-import cn.bootx.table.modify.mysql.constants.MySqlFieldTypeEnum;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.util.List;
-
-/**
- * 储值卡支付记录
- *
- * @author xxm
- * @since 2022/3/14
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-//@DbTable(comment = "储值卡支付记录")
-@Accessors(chain = true)
-@TableName(value = "pay_voucher_payment",autoResultMap = true)
-public class VoucherPayment extends BasePayment implements EntityBaseFunction {
-
- /** 储值卡扣款记录列表 */
- @DbColumn(comment = "储值卡扣款列表")
- @DbMySqlFieldType(MySqlFieldTypeEnum.LONGTEXT)
- @TableField(typeHandler = JacksonRawTypeHandler.class)
- private List voucherRecords;
-
-
- @Override
- public VoucherPaymentDto toDto() {
- return VoucherConvert.CONVERT.convert(this);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/entity/VoucherRecord.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/entity/VoucherRecord.java
deleted file mode 100644
index fec3c3c5..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/entity/VoucherRecord.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.entity;
-
-import lombok.Data;
-import lombok.experimental.Accessors;
-
-import java.math.BigDecimal;
-
-/**
- * 储值卡扣款记录列表
- * @author xxm
- * @since 2023/6/29
- */
-@Data
-@Accessors(chain = true)
-public class VoucherRecord {
-
- /** 卡号 */
- private String cardNo;
-
- /** 扣款金额 */
- private BigDecimal amount;
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherLogService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherLogService.java
deleted file mode 100644
index 378b8bea..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherLogService.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.service;
-
-import cn.bootx.platform.common.core.rest.PageResult;
-import cn.bootx.platform.common.core.rest.param.PageParam;
-import cn.bootx.platform.common.mybatisplus.util.MpUtil;
-import cn.bootx.platform.daxpay.core.channel.voucher.dao.VoucherLogManager;
-import cn.bootx.platform.daxpay.dto.channel.voucher.VoucherLogDto;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-/**
- * 储值卡日志
- *
- * @author xxm
- * @since 2022/3/19
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class VoucherLogService {
-
- private final VoucherLogManager voucherLogManager;
-
- /**
- * 储值卡日志分页
- */
- public PageResult pageByVoucherId(PageParam pageParam, Long voucherId){
- return MpUtil.convert2DtoPageResult(voucherLogManager.pageByVoucherId(pageParam,voucherId));
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherPayService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherPayService.java
deleted file mode 100644
index c0b3d9a5..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherPayService.java
+++ /dev/null
@@ -1,388 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.service;
-
-import cn.bootx.platform.common.core.function.CollectorsFunction;
-import cn.bootx.platform.common.core.util.BigDecimalUtil;
-import cn.bootx.platform.daxpay.code.paymodel.VoucherCode;
-import cn.bootx.platform.daxpay.core.channel.voucher.dao.VoucherLogManager;
-import cn.bootx.platform.daxpay.core.channel.voucher.dao.VoucherManager;
-import cn.bootx.platform.daxpay.core.channel.voucher.dao.VoucherPaymentManager;
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.Voucher;
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.VoucherLog;
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.VoucherPayment;
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.VoucherRecord;
-import cn.bootx.platform.daxpay.core.payment.entity.Payment;
-import cn.bootx.platform.daxpay.exception.payment.PayFailureException;
-import cn.bootx.platform.daxpay.param.channel.voucher.VoucherPayParam;
-import cn.bootx.platform.daxpay.param.channel.voucher.VoucherRefundParam;
-import cn.bootx.platform.daxpay.param.pay.PayWayParam;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONException;
-import cn.hutool.json.JSONUtil;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * 储值卡支付
- *
- * @author xxm
- * @since 2022/3/14
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class VoucherPayService {
-
- private final VoucherManager voucherManager;
-
- private final VoucherPaymentManager voucherPaymentManager;
-
- private final VoucherLogManager voucherLogManager;
-
- private final VoucherQueryService voucherQueryService;
-
- /**
- * 获取并检查储值卡
- */
- public List getAndCheckVoucher(PayWayParam payWayParam) {
- VoucherPayParam voucherPayParam;
- try {
- // 储值卡参数验证
- String extraParamsJson = payWayParam.getExtraParamsJson();
- if (StrUtil.isNotBlank(extraParamsJson)) {
- voucherPayParam = JSONUtil.toBean(extraParamsJson, VoucherPayParam.class);
- } else {
- throw new PayFailureException("储值卡支付参数错误");
- }
- }
- catch (JSONException e) {
- throw new PayFailureException("储值卡支付参数错误");
- }
-
- List cardNoList = voucherPayParam.getCardNoList();
- List vouchers = voucherManager.findByCardNoList(cardNoList);
-
-
- // 判断是否有重复or无效的储值卡
- if (vouchers.size() != cardNoList.size()) {
- throw new PayFailureException("储值卡支付参数错误");
- }
- // 卡信息校验
- String timeCheck = voucherQueryService.check(vouchers);
- if (StrUtil.isNotBlank(timeCheck)) {
- throw new PayFailureException(timeCheck);
- }
- // 金额是否满足
- BigDecimal amount = vouchers.stream().map(Voucher::getBalance).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
- if (BigDecimalUtil.compareTo(amount, payWayParam.getAmount()) < 0) {
- throw new PayFailureException("储值卡余额不足");
- }
-
- return sort(vouchers);
- }
-
- /**
- * 支付前冻结余额 (异步组合支付环境下)
- */
- public List freezeBalance(BigDecimal amount, Payment payment, List vouchers){
- List voucherLogs = new ArrayList<>();
- List voucherRecords = new ArrayList<>();
- for (Voucher voucher : vouchers) {
- // 待支付余额为零, 不在处理后面的储值卡
- if (BigDecimalUtil.compareTo(amount, BigDecimal.ZERO) < 1) {
- break;
- }
- BigDecimal balance = voucher.getBalance();
- // 日志
- VoucherLog voucherLog = new VoucherLog()
- .setPaymentId(payment.getId())
- .setBusinessId(payment.getBusinessId())
- .setType(VoucherCode.LOG_FREEZE_BALANCE)
- .setRemark(String.format("预冻结金额 %.2f ", amount))
- .setVoucherId(voucher.getId())
- .setVoucherNo(voucher.getCardNo());
-
- // 待支付额大于储值卡余额. 储值卡的金额全冻结
- if (BigDecimalUtil.compareTo(amount, balance) == 1) {
- voucher.setFreezeBalance(balance);
- voucherLog.setAmount(balance);
- // 剩余待支付的金额
- amount = amount.subtract(balance);
- }
- else {
- // 待支付额小于或储值卡余额, 冻结待支付的金额
- voucher.setFreezeBalance(amount);
- voucherLog.setAmount(amount);
- // 待支付的金额扣减完毕, 值设置为零
- amount = BigDecimal.ZERO;
- }
- voucherRecords.add(new VoucherRecord().setCardNo(voucher.getCardNo()).setAmount(voucher.getFreezeBalance()));
- voucherLogs.add(voucherLog);
- }
- voucherManager.updateAllById(vouchers);
- voucherLogManager.saveAll(voucherLogs);
- return voucherRecords;
- }
-
- /**
- * 支付成功, 对冻结的金额进行扣款 (异步组合支付环境下)
- */
- public void paySuccess(Long paymentId){
- voucherPaymentManager.findByPaymentId(paymentId).ifPresent(voucherPayment -> {
- List voucherRecords = voucherPayment.getVoucherRecords();
-
- List cardNoList = voucherRecords.stream()
- .map(VoucherRecord::getCardNo)
- .collect(Collectors.toList());
- List vouchers = voucherManager.findByCardNoList(cardNoList);
- List voucherLogs = new ArrayList<>();
- for (Voucher voucher : vouchers) {
- // 余额扣减
- voucher.setBalance(voucher.getBalance().subtract(voucher.getFreezeBalance()))
- .setFreezeBalance(BigDecimal.ZERO);
- // 日志
- VoucherLog voucherLog = new VoucherLog()
- .setPaymentId(voucherPayment.getPaymentId())
- .setBusinessId(voucherPayment.getBusinessId())
- .setType(VoucherCode.LOG_REDUCE_AND_UNFREEZE_BALANCE)
- .setRemark(String.format("扣款金额 %.2f ", voucherPayment.getAmount()))
- .setVoucherId(voucher.getId())
- .setAmount(voucher.getFreezeBalance())
- .setVoucherNo(voucher.getCardNo());
- voucherLogs.add(voucherLog);
- }
- voucherManager.updateAllById(vouchers);
- voucherLogManager.saveAll(voucherLogs);
- });
- }
-
- /**
- * 直接支付 (同步支付方式下)
- */
- @Transactional(rollbackFor = Exception.class)
- public List pay(BigDecimal amount, Payment payment, List vouchers) {
- List voucherLogs = new ArrayList<>();
- List voucherRecords = new ArrayList<>();
- for (Voucher voucher : vouchers) {
- // 待支付余额为零, 不在处理后面的储值卡
- if (BigDecimalUtil.compareTo(amount, BigDecimal.ZERO) < 1) {
- break;
- }
- BigDecimal balance = voucher.getBalance();
- // 日志
- VoucherLog voucherLog = new VoucherLog()
- .setPaymentId(payment.getId())
- .setBusinessId(payment.getBusinessId())
- .setType(VoucherCode.LOG_PAY)
- .setRemark(String.format("支付金额 %.2f ", amount))
- .setVoucherId(voucher.getId())
- .setVoucherNo(voucher.getCardNo());
-
- // 记录当前卡扣了多少钱
- BigDecimal amountRecord;
- // 待支付额大于储值卡余额. 储值卡金额全扣光
- if (BigDecimalUtil.compareTo(amount, balance) == 1) {
- amountRecord = voucher.getBalance();
- voucher.setBalance(BigDecimal.ZERO);
- voucherLog.setAmount(balance);
- amount = amount.subtract(balance);
- }
- else {
- // 待支付额小于或储值卡余额, 储值卡余额-待支付额
- amountRecord = balance.subtract(amount);
- voucher.setBalance(balance.subtract(amount));
- voucherLog.setAmount(amount);
- // 支付完毕, 待支付金额归零
- amount = BigDecimal.ZERO;
- }
- voucherLogs.add(voucherLog);
- voucherRecords.add(new VoucherRecord().setCardNo(voucher.getCardNo()).setAmount(amountRecord));
- }
- voucherManager.updateAllById(vouchers);
- voucherLogManager.saveAll(voucherLogs);
- return voucherRecords;
- }
-
-
- /**
- * 取消支付,解除冻结的额度, 只有在异步支付中才会发生取消操作
- */
- public void close(Long paymentId) {
- voucherPaymentManager.findByPaymentId(paymentId).ifPresent(voucherPayment -> {
- List cardNoList = voucherPayment.getVoucherRecords().stream()
- .map(VoucherRecord::getCardNo)
- .collect(Collectors.toList());
- List vouchers = voucherManager.findByCardNoList(cardNoList);
- // 解冻额度和记录日志
- List logs = new ArrayList<>();
- for (Voucher voucher : vouchers) {
- VoucherLog log = new VoucherLog().setAmount(voucher.getFreezeBalance())
- .setPaymentId(paymentId)
- .setBusinessId(voucherPayment.getBusinessId())
- .setVoucherId(voucher.getId())
- .setRemark(String.format("取消支付金额 %.2f ", voucher.getFreezeBalance()))
- .setVoucherNo(voucher.getCardNo())
- .setType(VoucherCode.LOG_CLOSE_PAY);
- logs.add(log);
- }
- voucherManager.updateAllById(vouchers);
- voucherLogManager.saveAll(logs);
- });
- }
-
- /**
- * 退款
- * 全额退款支持分别退回到原有卡和统一退回到某张卡中, 默认退回到原有卡中
- * 部分退款, 会退到指定的一张卡上, 如果不指定, 则自动退到有效期最久的卡上
- */
- @Transactional(rollbackFor = Exception.class)
- public void refund(Long paymentId, BigDecimal amount, VoucherRefundParam voucherRefundParam) {
- VoucherPayment voucherPayment = voucherPaymentManager.findByPaymentId(paymentId)
- .orElseThrow(() -> new PayFailureException("储值卡支付记录不存在"));
- // 全部退款还是部分退款
- if (BigDecimalUtil.compareTo(amount,voucherPayment.getAmount())==0){
- // 是否全部退到一张卡中
- if (voucherRefundParam.isRefundToOne()){
- this.refundToOne(voucherPayment, voucherRefundParam.getRefundVoucherNo());
- } else {
- // 退回到原有卡中
- this.refundToRaw(voucherPayment);
- }
- } else {
- this.refundToOne(voucherPayment, voucherRefundParam.getRefundVoucherNo());
- }
- }
-
- /**
- * 全部退款到一张卡中
- */
- private void refundToOne(VoucherPayment voucherPayment, String refundVoucherNo){
- // 获取储值卡扣款信息
- List voucherRecords = voucherPayment.getVoucherRecords();
- Map voucherRecordMap = voucherRecords.stream()
- .collect(Collectors.toMap(VoucherRecord::getCardNo, VoucherRecord::getAmount, CollectorsFunction::retainLatest));
- List cardNoList = voucherRecords.stream()
- .map(VoucherRecord::getCardNo)
- .collect(Collectors.toList());
- List vouchers = voucherManager.findByCardNoList(cardNoList);
- // 如果未传入卡号, 默认退到最抗用的一张卡上
- if (StrUtil.isBlank(refundVoucherNo)){
- List sort = this.sort(vouchers);
- refundVoucherNo = sort.get(sort.size()-1).getCardNo();
- }
-
- // 筛选出来要进行退款的卡
- String finalRefundVoucherNo = refundVoucherNo;
- Voucher voucher = vouchers.stream()
- .filter(vr -> Objects.equals(vr.getCardNo(), finalRefundVoucherNo))
- .findFirst()
- .orElseThrow(() -> new PayFailureException("退款卡号不存在"));
- // 将金额全部推到指定的卡上
- voucher.setBalance(voucher.getBalance().add(voucherPayment.getAmount()));
- // 记录日志
- List voucherLogs = new ArrayList<>();
- for (Voucher v : vouchers) {
- BigDecimal voucherAmount = voucherRecordMap.get(v.getCardNo());
- VoucherLog voucherLog = new VoucherLog()
- .setType(VoucherCode.LOG_REFUND_SELF)
- .setVoucherId(voucher.getId())
- .setVoucherNo(voucher.getCardNo())
- .setAmount(voucherAmount)
- .setPaymentId(voucherPayment.getPaymentId())
- .setBusinessId(voucherPayment.getBusinessId())
- .setRemark(String.format("退款金额 %.2f, 退款到卡号: %s 储值卡中", voucherAmount, voucher.getCardNo()));
- // 接收退款的卡
- if (Objects.equals(v,voucher)){
- voucherLog.setAmount(voucherPayment.getAmount())
- .setType(VoucherCode.LOG_REFUND_SELF)
- .setRemark(String.format("退款金额 %.2f, 退款到卡号: %s 储值卡中", voucherAmount, voucher.getCardNo()));
- }
- }
- voucherManager.updateById(voucher);
- voucherLogManager.saveAll(voucherLogs);
- }
-
- /**
- * 退款到原有的卡中
- */
- private void refundToRaw(VoucherPayment voucherPayment){
- // 获取储值卡扣款信息
- List voucherRecords = voucherPayment.getVoucherRecords();
- List cardNoList = voucherRecords.stream()
- .map(VoucherRecord::getCardNo)
- .collect(Collectors.toList());
- Map voucherRecordMap = voucherRecords.stream()
- .collect(Collectors.toMap(VoucherRecord::getCardNo, VoucherRecord::getAmount, CollectorsFunction::retainLatest));
- List vouchers = voucherManager.findByCardNoList(cardNoList);
-
- // 退款 和 记录日志
- List voucherLogs = new ArrayList<>();
- for (Voucher voucher : vouchers) {
- BigDecimal voucherAmount = voucherRecordMap.get(voucher.getCardNo());
- voucher.setBalance(voucherAmount.add(voucher.getBalance()));
-
- voucherLogs.add(new VoucherLog()
- .setType(VoucherCode.LOG_REFUND_SELF)
- .setVoucherId(voucher.getId())
- .setVoucherNo(voucher.getCardNo())
- .setAmount(voucherAmount)
- .setPaymentId(voucherPayment.getPaymentId())
- .setBusinessId(voucherPayment.getBusinessId())
- .setRemark(String.format("退款金额 %.2f ", voucherAmount)));
- }
- voucherManager.updateAllById(vouchers);
- voucherLogManager.saveAll(voucherLogs);
- }
-
-
- /**
- * 对储值卡进行排序
- * 有期限的在前面, 同样有期限到期时间短的在前面, 同样到期日余额小的在前面, 金额一样id小的前面
- */
- private List sort(List vouchers){
- vouchers.sort(this::compareTime);
- return vouchers;
- }
-
- /**
- * 比较储值卡的期限
- */
- private int compareTime(Voucher v1,Voucher v2){
- // 期限对比, 都为长期
- if (v1.isEnduring()&&v2.isEnduring()){
- // 比较余额
- return compareBalance(v1,v2);
- }
- // 都不为长期, 且金额一致
- if (Objects.equals(v1.getEndTime(),v2.getEndTime())){
- // 比较余额
- return compareBalance(v1,v2);
- }
- // 期限对比 其中一个为长期
- if (v1.isEnduring()^v2.isEnduring()){
- return v1.isEnduring()?1:-1;
- }
- // 比较期限
- return v1.getEndTime().compareTo(v2.getEndTime());
- }
-
- /**
- * 比较储值卡的余额, 余额一致比较主键
- */
- private int compareBalance(Voucher v1,Voucher v2) {
- int i = BigDecimalUtil.compareTo(v1.getBalance(), v2.getBalance());
- if (i==0){
- return Long.compare(v1.getId(),v2.getId());
- }
- return i;
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherPaymentService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherPaymentService.java
deleted file mode 100644
index 6db4bbb4..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherPaymentService.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.service;
-
-import cn.bootx.platform.common.core.exception.BizException;
-import cn.bootx.platform.common.core.util.BigDecimalUtil;
-import cn.bootx.platform.daxpay.code.pay.PayStatusCode;
-import cn.bootx.platform.daxpay.core.channel.voucher.dao.VoucherPaymentManager;
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.VoucherPayment;
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.VoucherRecord;
-import cn.bootx.platform.daxpay.core.payment.entity.Payment;
-import cn.bootx.platform.daxpay.param.pay.PayParam;
-import cn.bootx.platform.daxpay.param.pay.PayWayParam;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Optional;
-
-/**
- * 储值卡支付记录
- *
- * @author xxm
- * @since 2022/3/14
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class VoucherPaymentService {
-
- private final VoucherPaymentManager voucherPaymentManager;
-
- /**
- * 添加支付记录
- */
- public void savePayment(Payment payment, PayParam payParam, PayWayParam payMode, List voucherRecords) {
- VoucherPayment voucherPayment = new VoucherPayment().setVoucherRecords(voucherRecords);
- voucherPayment.setPaymentId(payment.getId())
- .setBusinessId(payParam.getBusinessId())
- .setAmount(payMode.getAmount())
- .setRefundableBalance(payMode.getAmount())
- .setPayStatus(payment.getPayStatus());
- voucherPaymentManager.save(voucherPayment);
- }
-
- /**
- * 更新成功状态
- */
- public void updateSuccess(Long paymentId) {
- Optional payment = voucherPaymentManager.findByPaymentId(paymentId);
- if (payment.isPresent()) {
- VoucherPayment voucherPayment = payment.get();
- voucherPayment.setPayStatus(PayStatusCode.TRADE_SUCCESS).setPayTime(LocalDateTime.now());
- voucherPaymentManager.updateById(voucherPayment);
- }
- }
-
- /**
- * 关闭操作
- */
- public void updateClose(Long paymentId) {
- VoucherPayment payment = voucherPaymentManager.findByPaymentId(paymentId)
- .orElseThrow(() -> new BizException("未查询到查询交易记录"));
- payment.setPayStatus(PayStatusCode.TRADE_CANCEL);
- voucherPaymentManager.updateById(payment);
- }
-
- /**
- * 更新退款
- */
- public void updateRefund(Long paymentId, BigDecimal amount) {
- Optional voucherPayment = voucherPaymentManager.findByPaymentId(paymentId);
- voucherPayment.ifPresent(payment -> {
- BigDecimal refundableBalance = payment.getRefundableBalance().subtract(amount);
- payment.setRefundableBalance(refundableBalance);
- if (BigDecimalUtil.compareTo(refundableBalance, BigDecimal.ZERO) == 0) {
- payment.setPayStatus(PayStatusCode.TRADE_REFUNDED);
- }
- else {
- payment.setPayStatus(PayStatusCode.TRADE_REFUNDING);
- }
- voucherPaymentManager.updateById(payment);
- });
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherQueryService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherQueryService.java
deleted file mode 100644
index 63480e0d..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherQueryService.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.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.PageParam;
-import cn.bootx.platform.common.core.util.LocalDateTimeUtil;
-import cn.bootx.platform.common.mybatisplus.util.MpUtil;
-import cn.bootx.platform.daxpay.code.paymodel.VoucherCode;
-import cn.bootx.platform.daxpay.core.channel.voucher.dao.VoucherManager;
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.Voucher;
-import cn.bootx.platform.daxpay.core.merchant.service.MchAppService;
-import cn.bootx.platform.daxpay.dto.channel.voucher.VoucherDto;
-import cn.bootx.platform.daxpay.exception.payment.PayFailureException;
-import cn.bootx.platform.daxpay.param.channel.voucher.VoucherParam;
-import cn.hutool.core.util.StrUtil;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.time.LocalDateTime;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * 储值卡查询
- *
- * @author xxm
- * @since 2022/3/14
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class VoucherQueryService {
-
- private final VoucherManager voucherManager;
-
- private final MchAppService mchAppService;
-
- /**
- * 分页
- */
- public PageResult page(PageParam pageParam, VoucherParam param) {
- return MpUtil.convert2DtoPageResult(voucherManager.page(pageParam, param));
- }
-
- /**
- * 根据id查询
- */
- public VoucherDto findById(Long id) {
- return voucherManager.findById(id).map(Voucher::toDto).orElseThrow(() -> new DataNotExistException("储值卡不存在"));
- }
-
- /**
- * 根据卡号查询
- */
- public VoucherDto findByCardNo(String cardNo) {
- return voucherManager.findByCardNo(cardNo)
- .map(Voucher::toDto)
- .orElseThrow(() -> new DataNotExistException("储值卡不存在"));
- }
-
- /**
- * 获取并判断卡状态
- */
- public VoucherDto getAndJudgeVoucher(String cardNo){
- Voucher voucher = voucherManager.findByCardNo(cardNo)
- .orElseThrow(() -> new DataNotExistException("储值卡不存在"));
- // 过期
- String checkMsg = check(Collections.singletonList(voucher));
- if (StrUtil.isNotBlank(checkMsg)){
- throw new PayFailureException(checkMsg);
- }
- return voucher.toDto();
- }
-
- /**
- * 卡信息检查
- */
- public String check(List vouchers) {
- // 判断有效期
- boolean timeCheck = vouchers.stream()
- .filter(voucher -> !Objects.equals(voucher.isEnduring(), true))
- .allMatch(voucher -> LocalDateTimeUtil.between(LocalDateTime.now(), voucher.getStartTime(),
- voucher.getEndTime()));
- if (!timeCheck) {
- return "储值卡不再有效期内";
- }
- // 判断状态
- boolean statusCheck = vouchers.stream()
- .allMatch(voucher -> Objects.equals(voucher.getStatus(), VoucherCode.STATUS_NORMAL));
- if (!statusCheck){
- return "储值卡不是启用状态";
- }
- // 判断是否是同一个商户应用下的储值卡
- List mchCodes = vouchers.stream()
- .map(Voucher::getMchCode)
- .distinct()
- .collect(Collectors.toList());
- List mchAppCodes = vouchers.stream()
- .map(Voucher::getMchAppCode)
- .distinct()
- .collect(Collectors.toList());
- if (mchAppCodes.size()!=1 || mchCodes.size()!=1){
- return "这些储值卡不止属于一个商户应用";
- }
- String mchCode = mchCodes.get(0);
- String mchAppCode = mchAppCodes.get(0);
- // 是否有关联关系判断
- if (!mchAppService.checkMatch(mchCode, mchAppCode)) {
- return "应用信息与商户信息不匹配";
- }
- return null;
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherService.java
deleted file mode 100644
index f115da1e..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/voucher/service/VoucherService.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.voucher.service;
-
-import cn.bootx.platform.common.core.exception.BizException;
-import cn.bootx.platform.common.core.exception.DataNotExistException;
-import cn.bootx.platform.daxpay.code.paymodel.VoucherCode;
-import cn.bootx.platform.daxpay.core.channel.voucher.dao.VoucherLogManager;
-import cn.bootx.platform.daxpay.core.channel.voucher.dao.VoucherManager;
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.Voucher;
-import cn.bootx.platform.daxpay.core.channel.voucher.entity.VoucherLog;
-import cn.bootx.platform.daxpay.core.merchant.service.MchAppService;
-import cn.bootx.platform.daxpay.param.channel.voucher.VoucherChangeParam;
-import cn.bootx.platform.daxpay.param.channel.voucher.VoucherGenerationParam;
-import cn.bootx.platform.daxpay.param.channel.voucher.VoucherImportParam;
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.IdUtil;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-/**
- * 储值卡
- *
- * @author xxm
- * @since 2022/3/14
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class VoucherService {
-
- private final VoucherManager voucherManager;
-
- private final VoucherLogManager voucherLogManager;
-
- private final MchAppService mchAppService;
-
- /**
- * 批量生成
- */
- @Transactional(rollbackFor = Exception.class)
- public void generationBatch(VoucherGenerationParam param) {
- // 是否有管理关系判断
- if (!mchAppService.checkMatch(param.getMchCode(), param.getMchAppCode())) {
- throw new BizException("应用信息与商户信息不匹配");
- }
-
- Integer count = param.getCount();
- List vouchers = new ArrayList<>(count);
- long batchNo = IdUtil.getSnowflakeNextId();
- for (int i = 0; i < count; i++) {
- Voucher voucher = new Voucher()
- .setCardNo('V' + IdUtil.getSnowflakeNextIdStr())
- .setMchCode(param.getMchCode())
- .setMchAppCode(param.getMchAppCode())
- .setBatchNo(batchNo)
- .setBalance(param.getFaceValue())
- .setFaceValue(param.getFaceValue())
- .setEnduring(param.getEnduring())
- .setStatus(param.getStatus());
- if (Objects.equals(param.getEnduring(), Boolean.FALSE)) {
- voucher.setStartTime(param.getStartTime()).setEndTime(param.getEndTime());
- }
- vouchers.add(voucher);
- }
- voucherManager.saveAll(vouchers);
- // 日志
- List voucherLogs = vouchers.stream()
- .map(voucher -> new VoucherLog().setType(VoucherCode.LOG_ACTIVE)
- .setAmount(voucher.getBalance())
- .setVoucherId(voucher.getId())
- .setVoucherNo(voucher.getCardNo()))
- .collect(Collectors.toList());
- voucherLogManager.saveAll(voucherLogs);
- }
-
- /**
- * 批量导入
- * @param skip 是否跳过已经导入的储值卡,false时将会异常
- */
- @Transactional(rollbackFor = Exception.class)
- public void importBatch(Boolean skip, String mchCode, String mchAppCode,List voucherImports) {
- // 是否有关联关系判断
- if (!mchAppService.checkMatch(mchCode, mchAppCode)) {
- throw new BizException("应用信息与商户信息不匹配");
- }
- List cardNoList = voucherImports.stream()
- .map(VoucherImportParam::getCardNo)
- .distinct()
- .collect(Collectors.toList());
- // 卡号不能重复
- if (voucherImports.size()!=cardNoList.size()){
- throw new BizException("卡号不能重复");
- }
- // 查询库中是否已经有对应的储值卡号
- List vouchersByDB = voucherManager.findByCardNoList(cardNoList);
- // 不跳过已经导入的储值卡且存在数据, 抛出异常
- if (Objects.equals(skip,true)&& CollUtil.isNotEmpty(vouchersByDB)){
- log.warn("数据库中已经存在的卡号:{}",vouchersByDB.stream().map(Voucher::getCardNo).collect(Collectors.toList()));
- throw new BizException("要导入的卡号在数据中已经存在");
- }
- // 导入对应储值卡
- List cardNoListByDb = vouchersByDB.stream()
- .map(Voucher::getCardNo)
- .distinct()
- .collect(Collectors.toList());
- long batchNo = IdUtil.getSnowflakeNextId();
- List vouchers = voucherImports.stream()
- .filter(o -> !cardNoListByDb.contains(o.getCardNo()))
- .map(o -> {
- Voucher voucher = new Voucher();
- BeanUtil.copyProperties(o, voucher);
- return voucher.setMchCode(mchCode)
- .setMchAppCode(mchAppCode)
- .setBatchNo(batchNo);
- })
- .collect(Collectors.toList());
- voucherManager.saveAll(vouchers);
- // TODO 记录日志
-
- }
-
- /**
- * 启用
- */
- public void unlock(Long id) {
- voucherManager.changeStatus(id, VoucherCode.STATUS_NORMAL);
- }
-
- /**
- * 冻结
- */
- public void lock(Long id) {
- voucherManager.changeStatus(id, VoucherCode.STATUS_FORBIDDEN);
- }
-
- /**
- * 批量启用
- */
- public void unlockBatch(List ids) {
- voucherManager.changeStatusBatch(ids, VoucherCode.STATUS_NORMAL);
- }
-
- /**
- * 批量冻结
- */
- public void lockBatch(List ids) {
- voucherManager.changeStatusBatch(ids, VoucherCode.STATUS_FORBIDDEN);
- }
-
- /**
- * 更改储值卡信息
- */
- public void changeInfo(VoucherChangeParam voucherChangeParam) {
- // 查询对应的卡
- Voucher voucher = voucherManager.findByCardNo(voucherChangeParam.getCardNo())
- .orElseThrow(DataNotExistException::new);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/convert/WalletConvert.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/convert/WalletConvert.java
deleted file mode 100644
index f91ebfd0..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/convert/WalletConvert.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.convert;
-
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.Wallet;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.WalletConfig;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.WalletLog;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.WalletPayment;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletConfigDto;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletDto;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletLogDto;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletPaymentDto;
-import cn.bootx.platform.daxpay.param.channel.wechat.WalletConfigParam;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-/**
- * 转换
- *
- * @author xxm
- * @since 2021/8/20
- */
-@Mapper
-public interface WalletConvert {
-
- WalletConvert CONVERT = Mappers.getMapper(WalletConvert.class);
-
- WalletDto convert(Wallet in);
-
- WalletPaymentDto convert(WalletPayment in);
-
- WalletLogDto convert(WalletLog in);
-
- WalletConfigDto convert(WalletConfig in);
-
- WalletConfig convert(WalletConfigParam in);
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletConfigManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletConfigManager.java
deleted file mode 100644
index 1867aeaa..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletConfigManager.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.dao;
-
-import cn.bootx.platform.common.mybatisplus.impl.BaseManager;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.WalletConfig;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Repository;
-
-import java.util.Optional;
-
-/**
- * 钱包配置
- * @author xxm
- * @since 2023/7/14
- */
-@Slf4j
-@Repository
-@RequiredArgsConstructor
-public class WalletConfigManager extends BaseManager {
-
- public Optional findByMchCode(String mchCode){
- return this.findByField(WalletConfig::getMchCode,mchCode);
- }
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletConfigMapper.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletConfigMapper.java
deleted file mode 100644
index 27ada2c2..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletConfigMapper.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.dao;
-
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.WalletConfig;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 钱包配置
- * @author xxm
- * @since 2023/7/14
- */
-@Mapper
-public interface WalletConfigMapper extends BaseMapper {
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletLogManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletLogManager.java
deleted file mode 100644
index 53f28e5f..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletLogManager.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.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.daxpay.core.channel.wallet.entity.WalletLog;
-import cn.bootx.platform.daxpay.param.channel.wallet.WalletLogQueryParam;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Repository;
-
-import java.util.Objects;
-
-/**
- * 钱包日志
- *
- * @author xxm
- * @since 2020/12/8
- */
-@Repository
-@RequiredArgsConstructor
-public class WalletLogManager extends BaseManager {
-
- /**
- * 分页查询指定用户的钱包日志
- */
- public Page pageByUserId(PageParam pageParam, WalletLogQueryParam param, Long userId) {
- Page mpPage = MpUtil.getMpPage(pageParam, WalletLog.class);
- return this.lambdaQuery().orderByDesc(MpIdEntity::getId).eq(WalletLog::getUserId, userId).page(mpPage);
- }
-
- /**
- * 分页查询
- */
- public Page page(PageParam pageParam, WalletLogQueryParam query) {
- Page mpPage = MpUtil.getMpPage(pageParam, WalletLog.class);
- return this.lambdaQuery()
- .orderByDesc(MpIdEntity::getId)
- .like(Objects.nonNull(query.getUserId()), WalletLog::getUserId, query.getUserId())
- .like(Objects.nonNull(query.getWalletId()), WalletLog::getWalletId, query.getWalletId())
- .page(mpPage);
- }
-
- /**
- * 分页查询 根据钱包id
- */
- public Page pageByWalletId(PageParam pageParam, WalletLogQueryParam param) {
- Page mpPage = MpUtil.getMpPage(pageParam, WalletLog.class);
- return this.lambdaQuery()
- .orderByDesc(MpIdEntity::getId)
- .eq(WalletLog::getWalletId, param.getWalletId())
- .page(mpPage);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletLogMapper.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletLogMapper.java
deleted file mode 100644
index 9fabe6ed..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletLogMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.dao;
-
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.WalletLog;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 钱包日志
- *
- * @author xxm
- * @since 2020/12/8
- */
-@Mapper
-public interface WalletLogMapper extends BaseMapper {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletManager.java
deleted file mode 100644
index 10cfc89d..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletManager.java
+++ /dev/null
@@ -1,161 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.dao;
-
-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.generator.QueryGenerator;
-import cn.bootx.platform.daxpay.core.channel.config.entity.PayChannelConfig;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.Wallet;
-import cn.bootx.platform.daxpay.param.channel.wallet.WalletQueryParam;
-import cn.bootx.platform.iam.core.user.entity.UserInfo;
-import cn.bootx.platform.iam.param.user.UserInfoParam;
-import cn.bootx.platform.starter.auth.util.SecurityUtil;
-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;
-import org.springframework.stereotype.Repository;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-/**
- * 钱包管理
- *
- * @author xxm
- * @since 2020/12/8
- */
-@Repository
-@RequiredArgsConstructor
-public class WalletManager extends BaseManager {
-
- private final WalletMapper walletMapper;
-
- /**
- * 预占额度
- * @param walletId 钱包ID
- * @param amount 金额
- * @return 更新数量
- */
- public int freezeBalance(Long walletId, BigDecimal amount){
- Long userId = SecurityUtil.getUserIdOrDefaultId();
- return walletMapper.freezeBalance(walletId, amount, userId, LocalDateTime.now());
- }
-
- /**
- * 解冻金额
- * @param walletId 钱包ID
- * @param amount 金额
- * @return 更新数量
- */
- public int unfreezeBalance(Long walletId, BigDecimal amount){
- Long userId = SecurityUtil.getUserIdOrDefaultId();
- return walletMapper.unfreezeBalance(walletId, amount, userId, LocalDateTime.now());
- }
-
- /**
- * 扣减余额
- * @param walletId 钱包ID
- * @param amount 扣减金额
- * @return 操作条数
- */
- public int reduceBalance(Long walletId, BigDecimal amount) {
- Long userId = SecurityUtil.getUserIdOrDefaultId();
- return walletMapper.reduceBalance(walletId, amount, userId, LocalDateTime.now());
- }
-
- /**
- * 扣减余额同时解除预冻结的额度
- * @param walletId 钱包ID
- * @param amount 扣减金额
- * @return 操作条数
- */
- public int reduceAndUnfreezeBalance(Long walletId, BigDecimal amount) {
- Long userId = SecurityUtil.getUserIdOrDefaultId();
- return walletMapper.reduceAndUnfreezeBalance(walletId, amount, userId, LocalDateTime.now());
- }
-
- /**
- * 增加余额
- * @param walletId 钱包
- * @param amount 金额
- * @return 更新数量
- */
- public int increaseBalance(Long walletId, BigDecimal amount) {
- Long userId = SecurityUtil.getUserIdOrDefaultId();
- return walletMapper.increaseBalance(walletId, amount, userId, LocalDateTime.now());
- }
-
- /**
- * 更改余额-允许扣成负数
- * @param walletId 钱包ID
- * @param amount 更改的额度, 正数增加,负数减少
- * @return 剩余条数
- */
- public int reduceBalanceUnlimited(Long walletId, BigDecimal amount) {
- Long userId = SecurityUtil.getUserIdOrDefaultId();
- return walletMapper.reduceBalanceUnlimited(walletId, amount, userId, LocalDateTime.now());
- }
-
- /**
- * 用户钱包是否存在
- */
- public boolean existsByUser(Long userId,String mchAppCode) {
- return lambdaQuery()
- .eq(Wallet::getUserId,userId)
- .eq(Wallet::getMchAppCode,mchAppCode)
- .exists();
- }
-
- /**
- * 查询用户的钱包
- */
- public Optional findByUser(Long userId,String mchAppCode) {
- return lambdaQuery()
- .eq(Wallet::getUserId,userId)
- .eq(Wallet::getMchAppCode,mchAppCode)
- .oneOpt();
- }
-
- /**
- * 分页查询
- */
- public Page page(PageParam pageParam, WalletQueryParam param) {
- QueryWrapper wrapper = QueryGenerator.generator(param);
- Page mpPage = MpUtil.getMpPage(pageParam, Wallet.class);
- wrapper.select(this.getEntityClass(), MpUtil::excludeBigField)
- .orderByDesc(MpUtil.getColumnName(PayChannelConfig::getId));
- return this.page(mpPage, wrapper);
- }
-
- /**
- * 待开通钱包的用户列表
- */
- public Page pageByNotWallet(PageParam pageParam, String mchCode, UserInfoParam userInfoParam) {
- Page mpPage = MpUtil.getMpPage(pageParam, UserInfo.class);
- QueryWrapper wrapper = new QueryWrapper<>();
- wrapper.orderByDesc("w.id")
- .and(o->o.ne("w.mch_code",mchCode).or().isNull("w.mch_code"))
- .like(StrUtil.isNotBlank(userInfoParam.getUsername()), "u.username", userInfoParam.getUsername())
- .like(StrUtil.isNotBlank(userInfoParam.getName()), "u.name", userInfoParam.getName());
- return walletMapper.pageByNotWallet(mpPage, wrapper);
- }
-
- /**
- * 查询已经存在钱包的用户id
- */
- public List findExistUserIds(List userIds) {
- return this.lambdaQuery()
- .select(Wallet::getUserId)
- .in(Wallet::getUserId, userIds)
- .list()
- .stream()
- .map(Wallet::getUserId)
- .collect(Collectors.toList());
-
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletMapper.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletMapper.java
deleted file mode 100644
index 20958eec..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletMapper.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.dao;
-
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.Wallet;
-import cn.bootx.platform.iam.core.user.entity.UserInfo;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
-/**
- * 钱包
- *
- * @author xxm
- * @since 2021/2/24
- */
-@Mapper
-public interface WalletMapper extends BaseMapper {
-
- /**
- * 预冻结余额
- * @param walletId 钱包ID
- * @param amount 冻结的额度
- * @param operator 操作人
- * @param date 时间
- * @return 更新数量
- */
- int freezeBalance(@Param("walletId") Long walletId, @Param("amount") BigDecimal amount,
- @Param("operator") Long operator, @Param("date") LocalDateTime date);
-
- /**
- * 解冻金额
- * @param walletId 钱包ID
- * @param amount 冻结的额度
- * @param operator 操作人
- * @param date 时间
- * @return 更新数量
- */
- int unfreezeBalance(@Param("walletId") Long walletId, @Param("amount") BigDecimal amount,
- @Param("operator") Long operator, @Param("date") LocalDateTime date);
-
- /**
- * 释放预占额度
- * @param walletId 钱包ID
- * @param amount 要释放的额度
- * @param operator 操作人
- * @param date 操作时间
- * @return 操作条数
- */
- int reduceBalance(@Param("walletId") Long walletId, @Param("amount") BigDecimal amount,
- @Param("operator") Long operator, @Param("date") LocalDateTime date);
-
- /**
- * 扣减余额同时解除预冻结的额度
- * @param walletId 钱包ID
- * @param amount 减少的额度
- * @param operator 操作人
- * @param date 操作时间
- * @return 操作条数
- */
- int reduceAndUnfreezeBalance(@Param("walletId") Long walletId, @Param("amount") BigDecimal amount,
- @Param("operator") Long operator, @Param("date") LocalDateTime date);
-
-
- /**
- * 增加余额
- * @param walletId 钱包ID
- * @param amount 增加的额度
- * @param operator 操作人
- * @param date 时间
- * @return 更新数量
- */
- int increaseBalance(@Param("walletId") Long walletId, @Param("amount") BigDecimal amount,
- @Param("operator") Long operator, @Param("date") LocalDateTime date);
-
- /**
- * 扣减余额,允许扣成负数
- * @param walletId 钱包ID
- * @param amount 更改的额度, 正数增加,负数减少
- * @param operator 操作人
- * @param date 操作时间
- * @return 操作条数
- */
- int reduceBalanceUnlimited(@Param("walletId") Long walletId, @Param("amount") BigDecimal amount,
- @Param("operator") Long operator, @Param("date") LocalDateTime date);
-
- /**
- * 待开通钱包的用户列表
- */
- Page pageByNotWallet(Page mpPage, @Param(Constants.WRAPPER) Wrapper> wrapper);
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletPaymentManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletPaymentManager.java
deleted file mode 100644
index cd3c3729..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletPaymentManager.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.dao;
-
-import cn.bootx.platform.common.mybatisplus.impl.BaseManager;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.WalletPayment;
-import cn.bootx.platform.daxpay.core.channel.base.entity.BasePayment;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Repository;
-
-import java.util.Optional;
-
-@Repository
-@RequiredArgsConstructor
-public class WalletPaymentManager extends BaseManager {
-
- public Optional findByPaymentId(Long paymentId) {
- return findByField(BasePayment::getPaymentId, paymentId);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletPaymentMapper.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletPaymentMapper.java
deleted file mode 100644
index 291064b5..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/dao/WalletPaymentMapper.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.dao;
-
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.WalletPayment;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-@Mapper
-public interface WalletPaymentMapper extends BaseMapper {
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/entity/Wallet.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/entity/Wallet.java
deleted file mode 100644
index 50445b98..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/entity/Wallet.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.entity;
-
-import cn.bootx.platform.common.core.function.EntityBaseFunction;
-import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
-import cn.bootx.platform.daxpay.code.paymodel.WalletCode;
-import cn.bootx.platform.daxpay.core.channel.wallet.convert.WalletConvert;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletDto;
-import cn.bootx.table.modify.annotation.DbColumn;
-import cn.bootx.table.modify.annotation.DbTable;
-import cn.bootx.table.modify.mysql.annotation.DbMySqlIndex;
-import cn.bootx.table.modify.mysql.constants.MySqlIndexType;
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import lombok.experimental.FieldNameConstants;
-
-import java.math.BigDecimal;
-
-import static cn.bootx.platform.daxpay.core.channel.wallet.entity.Wallet.Fields.mchAppCode;
-import static cn.bootx.platform.daxpay.core.channel.wallet.entity.Wallet.Fields.userId;
-
-/**
- * 钱包
- *
- * @author xxm
- * @since 2020/12/8
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-@DbMySqlIndex(comment = "用户和应用编码联合唯一索引",fields = {userId,mchAppCode},type = MySqlIndexType.UNIQUE)
-@DbTable(comment = "钱包")
-@Accessors(chain = true)
-@TableName("pay_wallet")
-@FieldNameConstants
-public class Wallet extends MpBaseEntity implements EntityBaseFunction {
-
- /** 商户编码 */
- @TableField(updateStrategy = FieldStrategy.NEVER)
- @DbColumn(comment = "商户编码")
- private String mchCode;
-
- /** 商户应用编码 */
- @TableField(updateStrategy = FieldStrategy.NEVER)
- @DbColumn(comment = "商户应用编码")
- private String mchAppCode;
-
- /** 关联用户id */
- @TableField(updateStrategy = FieldStrategy.NEVER)
- @DbColumn(comment = "关联用户id")
- private Long userId;
-
- /** 余额 */
- @DbColumn(comment = "余额")
- private BigDecimal balance;
-
- /** 预冻结额度 */
- @DbColumn(comment = "预冻结额度")
- private BigDecimal freezeBalance;
-
- /**
- * 状态
- * @see WalletCode#STATUS_FORBIDDEN
- */
- @DbColumn(comment = "状态")
- private String status;
-
- @Override
- public WalletDto toDto() {
- return WalletConvert.CONVERT.convert(this);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/entity/WalletConfig.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/entity/WalletConfig.java
deleted file mode 100644
index 971fc3d1..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/entity/WalletConfig.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.entity;
-
-import cn.bootx.platform.common.core.function.EntityBaseFunction;
-import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
-import cn.bootx.platform.daxpay.core.channel.wallet.convert.WalletConvert;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletConfigDto;
-import cn.bootx.platform.daxpay.param.channel.wechat.WalletConfigParam;
-import cn.bootx.table.modify.annotation.DbColumn;
-import cn.bootx.table.modify.annotation.DbTable;
-import cn.bootx.table.modify.mysql.annotation.DbMySqlIndex;
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.math.BigDecimal;
-
-/**
- * 钱包配置
- * @author xxm
- * @since 2023/7/14
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-@DbTable(comment = "钱包配置")
-@Accessors(chain = true)
-@TableName("pay_wallet_config")
-public class WalletConfig extends MpBaseEntity implements EntityBaseFunction {
-
- /** 商户编码 */
- @TableField(updateStrategy = FieldStrategy.NEVER)
- @DbColumn(comment = "商户编码")
- private String mchCode;
-
- /** 商户应用编码 */
- @TableField(updateStrategy = FieldStrategy.NEVER)
- @DbMySqlIndex(comment = "商户应用编码唯一索引")
- @DbColumn(comment = "商户应用编码")
- private String mchAppCode;
-
- /** 默认余额 */
- @DbColumn(comment = "默认余额")
- private BigDecimal defaultBalance;
-
- /** 状态 */
- @DbColumn(comment = "状态")
- private String state;
-
- /** 备注 */
- @DbColumn(comment = "备注")
- private String remark;
-
- /**
- * 转换
- */
- @Override
- public WalletConfigDto toDto() {
- return WalletConvert.CONVERT.convert(this);
- }
-
- public static WalletConfig init(WalletConfigParam in){
- return WalletConvert.CONVERT.convert(in);
- }
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/entity/WalletLog.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/entity/WalletLog.java
deleted file mode 100644
index d02743a6..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/entity/WalletLog.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.entity;
-
-
-import cn.bootx.platform.common.core.function.EntityBaseFunction;
-import cn.bootx.platform.common.mybatisplus.base.MpBaseEntity;
-import cn.bootx.platform.daxpay.core.channel.wallet.convert.WalletConvert;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletLogDto;
-import cn.bootx.table.modify.annotation.DbColumn;
-import cn.bootx.table.modify.mysql.annotation.DbMySqlIndex;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.math.BigDecimal;
-
-/**
- * 钱包日志
- *
- * @author xxm
- * @since 2020/12/8
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-//@DbTable(comment = "钱包日志")
-@Accessors(chain = true)
-@TableName("pay_wallet_log")
-public class WalletLog extends MpBaseEntity implements EntityBaseFunction {
-
- /** 钱包id */
- @DbMySqlIndex(comment = "钱包索引ID")
- @DbColumn(comment = "钱包id")
- private Long walletId;
-
- /** 用户id */
- @DbColumn(comment = "用户id")
- private Long userId;
-
- /** 类型 */
- @DbColumn(comment = "类型")
- private String type;
-
- /** 交易记录ID */
- @DbColumn(comment = "交易记录ID")
- private Long paymentId;
-
- /** 业务ID */
- @DbColumn(comment = "业务ID")
- private String businessId;
-
- /**
- * 操作类型
- * @see cn.bootx.platform.daxpay.code.paymodel.WalletCode#OPERATION_SOURCE_USER
- */
- @DbColumn(comment = "操作类型")
- private String operationSource;
-
- /** 金额 */
- @DbColumn(comment = "金额")
- private BigDecimal amount;
-
- /** 备注 */
- @DbColumn(comment = "备注")
- private String remark;
-
-
- @Override
- public WalletLogDto toDto() {
- return WalletConvert.CONVERT.convert(this);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/entity/WalletPayment.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/entity/WalletPayment.java
deleted file mode 100644
index 51a6f235..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/entity/WalletPayment.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.entity;
-
-import cn.bootx.platform.common.core.function.EntityBaseFunction;
-import cn.bootx.platform.daxpay.core.channel.base.entity.BasePayment;
-import cn.bootx.platform.daxpay.core.channel.wallet.convert.WalletConvert;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletPaymentDto;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * 钱包交易记录表
- *
- * @author xxm
- * @since 2020/12/8
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-//@DbTable(comment = "钱包交易记录")
-@Accessors(chain = true)
-@TableName("pay_wallet_payment")
-public class WalletPayment extends BasePayment implements EntityBaseFunction {
-
- /** 钱包ID */
- private Long walletId;
-
- @Override
- public WalletPaymentDto toDto() {
- return WalletConvert.CONVERT.convert(this);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletConfigService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletConfigService.java
deleted file mode 100644
index fd195b69..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletConfigService.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.service;
-
-import cn.bootx.platform.common.core.exception.BizException;
-import cn.bootx.platform.common.core.exception.DataNotExistException;
-import cn.bootx.platform.daxpay.code.MchAndAppCode;
-import cn.bootx.platform.daxpay.code.pay.PayChannelEnum;
-import cn.bootx.platform.daxpay.core.channel.wallet.dao.WalletConfigManager;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.WalletConfig;
-import cn.bootx.platform.daxpay.core.merchant.entity.MchAppPayConfig;
-import cn.bootx.platform.daxpay.core.merchant.service.MchAppPayConfigService;
-import cn.bootx.platform.daxpay.core.merchant.service.MchAppService;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletConfigDto;
-import cn.bootx.platform.daxpay.param.channel.wechat.WalletConfigParam;
-import cn.hutool.core.bean.BeanUtil;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-/**
- * 钱包配置
- * @author xxm
- * @since 2023/7/14
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class WalletConfigService {
- private final WalletConfigManager walletConfigManager;
- private final MchAppPayConfigService mchAppPayConfigService;
- private final MchAppService mchAppService;
-
- /**
- * 根据应用编码获取钱包配置
- */
- public WalletConfigDto findByMchCode(String mchCode){
- return walletConfigManager.findByMchCode(mchCode)
- .map(WalletConfig::toDto)
- .orElse(new WalletConfigDto());
- }
-
- /**
- * 新增或更新
- */
- public void add(WalletConfigParam param){
- // 是否有管理关系判断
- if (!mchAppService.checkMatch(param.getMchCode(), param.getMchAppCode())) {
- throw new BizException("应用信息与商户信息不匹配");
- }
- WalletConfig walletConfig = WalletConfig.init(param);
- walletConfig.setState(MchAndAppCode.PAY_CONFIG_STATE_NORMAL);
- walletConfigManager.save(walletConfig);
- // 保存关联关系
- MchAppPayConfig mchAppPayConfig = new MchAppPayConfig().setAppCode(walletConfig.getMchAppCode())
- .setConfigId(walletConfig.getId())
- .setChannel(PayChannelEnum.WALLET.getCode())
- .setState(walletConfig.getState());
- mchAppPayConfigService.add(mchAppPayConfig);
- }
-
- /**
- * 更新
- */
- public void update(WalletConfigParam param){
- WalletConfig walletConfig = walletConfigManager.findById(param.getId())
- .orElseThrow(DataNotExistException::new);
- BeanUtil.copyProperties(param,walletConfig);
- walletConfigManager.updateById(walletConfig);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletLogService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletLogService.java
deleted file mode 100644
index f813aa8e..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletLogService.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.service;
-
-import cn.bootx.platform.common.core.rest.PageResult;
-import cn.bootx.platform.common.core.rest.param.PageParam;
-import cn.bootx.platform.common.mybatisplus.util.MpUtil;
-import cn.bootx.platform.daxpay.core.channel.wallet.dao.WalletLogManager;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletLogDto;
-import cn.bootx.platform.daxpay.param.channel.wallet.WalletLogQueryParam;
-import cn.bootx.platform.starter.auth.util.SecurityUtil;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-/**
- * 钱包日志
- *
- * @author xxm
- * @since 2020/12/8
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class WalletLogService {
-
- private final WalletLogManager walletLogManager;
-
- /**
- * 个人钱包日志分页
- */
- public PageResult pageByPersonal(PageParam pageParam, WalletLogQueryParam param) {
- Long userId = SecurityUtil.getUserId();
- return MpUtil.convert2DtoPageResult(walletLogManager.pageByUserId(pageParam, param, userId));
- }
-
- /**
- * 钱包日志分页
- */
- public PageResult page(PageParam pageParam, WalletLogQueryParam param) {
- return MpUtil.convert2DtoPageResult(walletLogManager.page(pageParam, param));
- }
-
- /**
- * 根据钱包id查询钱包日志(分页)
- */
- public PageResult pageByWalletId(PageParam pageParam, WalletLogQueryParam param) {
- return MpUtil.convert2DtoPageResult(walletLogManager.pageByWalletId(pageParam, param));
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletPayService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletPayService.java
deleted file mode 100644
index abe933fa..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletPayService.java
+++ /dev/null
@@ -1,176 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.service;
-
-import cn.bootx.platform.common.core.exception.BizException;
-import cn.bootx.platform.daxpay.code.pay.PayStatusCode;
-import cn.bootx.platform.daxpay.code.paymodel.WalletCode;
-import cn.bootx.platform.daxpay.core.payment.entity.Payment;
-import cn.bootx.platform.daxpay.core.channel.wallet.dao.WalletLogManager;
-import cn.bootx.platform.daxpay.core.channel.wallet.dao.WalletManager;
-import cn.bootx.platform.daxpay.core.channel.wallet.dao.WalletPaymentManager;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.Wallet;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.WalletLog;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.WalletPayment;
-import cn.bootx.platform.daxpay.exception.waller.WalletLackOfBalanceException;
-import cn.bootx.platform.daxpay.exception.waller.WalletNotExistsException;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.util.Optional;
-
-/**
- * 钱包支付操作
- *
- * @author xxm
- * @since 2021/2/27
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class WalletPayService {
-
- private final WalletManager walletManager;
-
- private final WalletPaymentManager walletPaymentManager;
-
- private final WalletLogManager walletLogManager;
-
- /**
- * 支付前冻结余额
- * @param amount 付款金额
- * @param payment 支付记录
- * @param wallet 钱包
- */
- public void freezeBalance(BigDecimal amount, Payment payment, Wallet wallet) {
- // 冻结余额
- int i = walletManager.freezeBalance(wallet.getId(), amount);
- // 判断操作结果
- if (i < 1) {
- throw new WalletLackOfBalanceException();
- }
- // 日志
- WalletLog walletLog = new WalletLog().setWalletId(wallet.getId())
- .setUserId(wallet.getUserId())
- .setPaymentId(payment.getId())
- .setAmount(amount)
- .setType(WalletCode.LOG_FREEZE_BALANCE)
- .setRemark(String.format("钱包预冻结金额 %.2f ", amount))
- .setOperationSource(WalletCode.OPERATION_SOURCE_USER)
- .setBusinessId(payment.getBusinessId());
- walletLogManager.save(walletLog);
- }
-
- /**
- * 支付成功, 进行扣款
- */
- public void paySuccess(Long paymentId){
- // 钱包支付记录
- walletPaymentManager.findByPaymentId(paymentId).ifPresent(walletPayment -> {
- Optional walletOpt = walletManager.findById(walletPayment.getWalletId());
- if (!walletOpt.isPresent()) {
- log.error("钱包出现恶性问题,需要人工排查");
- return;
- }
- Wallet wallet = walletOpt.get();
- walletPayment.setPayStatus(PayStatusCode.TRADE_CANCEL);
- walletPaymentManager.save(walletPayment);
- // 支付余额
- int i = walletManager.reduceAndUnfreezeBalance(wallet.getId(), walletPayment.getAmount());
- // 判断操作结果
- if (i < 1) {
- throw new WalletLackOfBalanceException();
- }
- // 日志
- WalletLog walletLog = new WalletLog().setWalletId(wallet.getId())
- .setUserId(wallet.getUserId())
- .setPaymentId(walletPayment.getPaymentId())
- .setAmount(walletPayment.getAmount())
- .setType(WalletCode.LOG_REDUCE_AND_UNFREEZE_BALANCE)
- .setRemark(String.format("钱包扣款金额 %.2f ", walletPayment.getAmount()))
- .setOperationSource(WalletCode.OPERATION_SOURCE_USER)
- .setBusinessId(walletPayment.getBusinessId());
- walletLogManager.save(walletLog);
- });
- }
-
- /**
- * 直接进行支付
- */
- public void pay(BigDecimal amount, Payment payment, Wallet wallet){
- // 直接扣减余额
- int i = walletManager.reduceBalance(wallet.getId(), amount);
-
- // 判断操作结果
- if (i < 1) {
- throw new WalletLackOfBalanceException();
- }
- // 日志
- WalletLog walletLog = new WalletLog().setWalletId(wallet.getId())
- .setUserId(wallet.getUserId())
- .setPaymentId(payment.getId())
- .setAmount(amount)
- .setType(WalletCode.LOG_PAY)
- .setRemark(String.format("钱包支付金额 %.2f ", amount))
- .setOperationSource(WalletCode.OPERATION_SOURCE_USER)
- .setBusinessId(payment.getBusinessId());
- walletLogManager.save(walletLog);
- }
-
- /**
- * 取消支付,解除冻结的额度, 只有在异步支付中才会发生取消操作
- */
- public void close(Long paymentId) {
- // 钱包支付记录
- walletPaymentManager.findByPaymentId(paymentId).ifPresent(walletPayment -> {
- Optional walletOpt = walletManager.findById(walletPayment.getWalletId());
- if (!walletOpt.isPresent()) {
- log.error("钱包出现恶性问题,需要人工排查");
- return;
- }
- Wallet wallet = walletOpt.get();
- walletPayment.setPayStatus(PayStatusCode.TRADE_CANCEL);
- walletPaymentManager.save(walletPayment);
-
- // 金额返还
- walletManager.increaseBalance(wallet.getId(), walletPayment.getAmount());
- // 记录日志
- WalletLog walletLog = new WalletLog().setAmount(walletPayment.getAmount())
- .setPaymentId(walletPayment.getPaymentId())
- .setWalletId(wallet.getId())
- .setUserId(wallet.getUserId())
- .setType(WalletCode.LOG_CLOSE_PAY)
- .setRemark(String.format("取消支付金额 %.2f ", walletPayment.getAmount()))
- .setOperationSource(WalletCode.OPERATION_SOURCE_SYSTEM)
- .setBusinessId(walletPayment.getBusinessId());
- // save log
- walletLogManager.save(walletLog);
- });
- }
-
- /**
- * 退款
- */
- @Transactional(rollbackFor = Exception.class)
- public void refund(Long paymentId, BigDecimal amount) {
- // 钱包支付记录
- WalletPayment walletPayment = walletPaymentManager.findByPaymentId(paymentId)
- .orElseThrow(() -> new BizException("钱包支付记录不存在"));
- // 获取钱包
- Wallet wallet = walletManager.findById(walletPayment.getWalletId()).orElseThrow(WalletNotExistsException::new);
- walletManager.increaseBalance(wallet.getId(), amount);
-
- WalletLog walletLog = new WalletLog().setAmount(amount)
- .setPaymentId(walletPayment.getPaymentId())
- .setWalletId(wallet.getId())
- .setUserId(wallet.getUserId())
- .setType(WalletCode.LOG_REFUND)
- .setRemark(String.format("钱包退款金额 %.2f ", amount))
- .setOperationSource(WalletCode.OPERATION_SOURCE_ADMIN)
- .setBusinessId(walletPayment.getBusinessId());
- // save log
- walletLogManager.save(walletLog);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletPaymentService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletPaymentService.java
deleted file mode 100644
index 892a810f..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletPaymentService.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.service;
-
-import cn.bootx.platform.common.core.exception.BizException;
-import cn.bootx.platform.common.core.util.BigDecimalUtil;
-import cn.bootx.platform.daxpay.code.pay.PayStatusCode;
-import cn.bootx.platform.daxpay.core.payment.entity.Payment;
-import cn.bootx.platform.daxpay.core.channel.wallet.dao.WalletPaymentManager;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.Wallet;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.WalletPayment;
-import cn.bootx.platform.daxpay.param.pay.PayWayParam;
-import cn.bootx.platform.daxpay.param.pay.PayParam;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.util.Optional;
-
-/**
- * 钱包交易记录的相关操作
- *
- * @author xxm
- * @since 2020/12/8
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class WalletPaymentService {
-
- private final WalletPaymentManager walletPaymentManager;
-
- /**
- * 保存钱包支付记录
- */
- public void savePayment(Payment payment, PayParam payParam, PayWayParam payMode, Wallet wallet) {
- WalletPayment walletPayment = new WalletPayment().setWalletId(wallet.getId());
- walletPayment.setPaymentId(payment.getId())
- .setBusinessId(payParam.getBusinessId())
- .setAmount(payMode.getAmount())
- .setRefundableBalance(payMode.getAmount())
- .setPayStatus(payment.getPayStatus());
- walletPaymentManager.save(walletPayment);
- }
-
- /**
- * 更新成功状态
- */
- public void updateSuccess(Long paymentId) {
- Optional payment = walletPaymentManager.findByPaymentId(paymentId);
- if (payment.isPresent()) {
- WalletPayment walletPayment = payment.get();
- walletPayment.setPayStatus(PayStatusCode.TRADE_SUCCESS).setPayTime(LocalDateTime.now());
- walletPaymentManager.updateById(walletPayment);
- }
- }
-
- /**
- * 关闭操作
- */
- public void updateClose(Long paymentId) {
- WalletPayment walletPayment = walletPaymentManager.findByPaymentId(paymentId)
- .orElseThrow(() -> new BizException("未查询到查询交易记录"));
- walletPayment.setPayStatus(PayStatusCode.TRADE_CANCEL);
- walletPaymentManager.updateById(walletPayment);
- }
-
- /**
- * 更新退款
- */
- public void updateRefund(Long paymentId, BigDecimal amount) {
- Optional walletPayment = walletPaymentManager.findByPaymentId(paymentId);
- walletPayment.ifPresent(payment -> {
- BigDecimal refundableBalance = payment.getRefundableBalance().subtract(amount);
- payment.setRefundableBalance(refundableBalance);
- if (BigDecimalUtil.compareTo(refundableBalance, BigDecimal.ZERO) == 0) {
- payment.setPayStatus(PayStatusCode.TRADE_REFUNDED);
- }
- else {
- payment.setPayStatus(PayStatusCode.TRADE_REFUNDING);
- }
- walletPaymentManager.updateById(payment);
- });
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletQueryService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletQueryService.java
deleted file mode 100644
index 0c95d25d..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletQueryService.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.service;
-
-import cn.bootx.platform.common.core.entity.UserDetail;
-import cn.bootx.platform.common.core.exception.DataNotExistException;
-import cn.bootx.platform.common.core.rest.PageResult;
-import cn.bootx.platform.common.core.rest.param.PageParam;
-import cn.bootx.platform.common.mybatisplus.util.MpUtil;
-import cn.bootx.platform.daxpay.core.channel.wallet.dao.WalletManager;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.Wallet;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletDto;
-import cn.bootx.platform.daxpay.dto.channel.wallet.WalletInfoDto;
-import cn.bootx.platform.daxpay.param.channel.wallet.WalletPayParam;
-import cn.bootx.platform.daxpay.param.channel.wallet.WalletQueryParam;
-import cn.bootx.platform.daxpay.param.pay.PayParam;
-import cn.bootx.platform.iam.core.user.service.UserQueryService;
-import cn.bootx.platform.iam.dto.user.UserInfoDto;
-import cn.bootx.platform.iam.param.user.UserInfoParam;
-import cn.bootx.platform.starter.auth.util.SecurityUtil;
-import cn.hutool.core.bean.BeanUtil;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.Objects;
-
-/**
- * 钱包
- *
- * @author xxm
- * @since 2022/3/11
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class WalletQueryService {
-
- private final WalletManager walletManager;
-
- private final UserQueryService userQueryService;
-
- /**
- * 根据钱包ID查询Wallet
- */
- public WalletDto findById(Long walletId) {
- return walletManager.findById(walletId).map(Wallet::toDto).orElseThrow(DataNotExistException::new);
- }
-
-
- /**
- * 根据用户ID查询钱包
- */
- public WalletDto findByUser(String mchAppCode) {
- Long userId = SecurityUtil.getUserId();
- return walletManager.findByUser(userId,mchAppCode).map(Wallet::toDto).orElse(null);
- }
-
- /**
- * 获取钱包综合信息
- */
- public WalletInfoDto getWalletInfo(Long walletId) {
- Wallet wallet = walletManager.findById(walletId).orElseThrow(DataNotExistException::new);
- UserInfoDto userInfoDto = userQueryService.findById(wallet.getUserId());
- WalletInfoDto walletInfoDto = new WalletInfoDto();
- BeanUtil.copyProperties(wallet, walletInfoDto);
- walletInfoDto.setUserName(userInfoDto.getName());
- return walletInfoDto;
- }
-
- /**
- * 查询用户 分页
- */
- public PageResult page(PageParam pageParam, WalletQueryParam param) {
- return MpUtil.convert2DtoPageResult(walletManager.page(pageParam, param));
- }
-
- /**
- * 待开通钱包的用户列表
- */
- public PageResult pageByNotWallet(PageParam pageParam,String mchCode, UserInfoParam userInfoParam) {
- return MpUtil.convert2DtoPageResult(walletManager.pageByNotWallet(pageParam,mchCode ,userInfoParam));
- }
-
-
- /**
- * 获取钱包, 获取顺序: 1. 显式传入的钱包ID 2. 显式传入的用户ID 3. 从系统中获取到的用户ID
- *
- */
- public Wallet getWallet(WalletPayParam walletPayParam, PayParam payParam){
-
- Wallet wallet = null;
- Long userId = null;
- // 首先根据钱包ID查询
- if (Objects.nonNull(walletPayParam.getWalletId())) {
- wallet = walletManager.findById(walletPayParam.getWalletId()).orElseThrow(null);
- }
- if (Objects.nonNull(wallet)){
- return wallet;
- }
- // 根据用户id查询
- if (Objects.isNull(walletPayParam.getUserId())){
- userId = SecurityUtil.getCurrentUser().map(UserDetail::getId).orElse(null);
- }
- return walletManager.findByUser(userId,payParam.getMchAppCode()).orElse(null);
- }
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletService.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletService.java
deleted file mode 100644
index e566759e..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wallet/service/WalletService.java
+++ /dev/null
@@ -1,170 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wallet.service;
-
-import cn.bootx.platform.common.core.exception.BizException;
-import cn.bootx.platform.common.core.exception.DataNotExistException;
-import cn.bootx.platform.common.core.util.BigDecimalUtil;
-import cn.bootx.platform.daxpay.code.paymodel.WalletCode;
-import cn.bootx.platform.daxpay.core.channel.wallet.dao.WalletConfigManager;
-import cn.bootx.platform.daxpay.core.channel.wallet.dao.WalletLogManager;
-import cn.bootx.platform.daxpay.core.channel.wallet.dao.WalletManager;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.Wallet;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.WalletConfig;
-import cn.bootx.platform.daxpay.core.channel.wallet.entity.WalletLog;
-import cn.bootx.platform.daxpay.core.merchant.service.MchAppService;
-import cn.bootx.platform.daxpay.param.channel.wallet.WalletRechargeParam;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- *
- * @author xxm
- * @since 2023/6/26
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class WalletService {
-
- private final WalletManager walletManager;
-
- private final WalletConfigManager walletConfigManager;
-
- private final WalletLogManager walletLogManager;
-
- private final MchAppService mchAppService;
-
- /**
- * 开通操作 创建
- */
- @Transactional(rollbackFor = Exception.class)
- public void createWallet(Long userId, String mchCode, String mchAppCode) {
-
- // 是否有管理关系判断
- if (!mchAppService.checkMatch(mchCode, mchAppCode)) {
- throw new BizException("应用信息与商户信息不匹配");
- }
-
- // 钱包配置
- BigDecimal defaultBalance = walletConfigManager.findByMchCode(mchAppCode)
- .map(WalletConfig::getDefaultBalance)
- .orElse(BigDecimal.ZERO);
-
- // 判断钱包是否已开通
- if (walletManager.existsByUser(userId, mchAppCode)) {
- throw new BizException("钱包已经开通");
- }
- Wallet wallet = new Wallet().setUserId(userId)
- .setBalance(defaultBalance)
- .setMchCode(mchCode)
- .setMchAppCode(mchAppCode)
- .setFreezeBalance(BigDecimal.ZERO)
- .setStatus(WalletCode.STATUS_NORMAL);
- walletManager.save(wallet);
- // 激活 log
- WalletLog activeLog = new WalletLog().setWalletId(wallet.getId())
- .setUserId(wallet.getUserId())
- .setType(WalletCode.LOG_ACTIVE)
- .setAmount(defaultBalance)
- .setRemark("激活钱包")
- .setOperationSource(WalletCode.OPERATION_SOURCE_USER);
- walletLogManager.save(activeLog);
- }
-
- /**
- * 批量开通
- */
- @Transactional(rollbackFor = Exception.class)
- public void createWalletBatch(List userIds,String mchCode, String mchAppCode) {
- // 是否有管理关系判断
- if (!mchAppService.checkMatch(mchCode, mchAppCode)) {
- throw new BizException("应用信息与商户信息不匹配");
- }
- // 钱包配置
- BigDecimal defaultBalance = walletConfigManager.findByMchCode(mchAppCode)
- .map(WalletConfig::getDefaultBalance)
- .orElse(BigDecimal.ZERO);
- // 查询出已经开通钱包的id
- List existUserIds = walletManager.findExistUserIds(userIds);
- userIds.removeAll(existUserIds);
- List wallets = userIds.stream()
- .map(userId -> new Wallet().setUserId(userId)
- .setStatus(WalletCode.STATUS_NORMAL)
- .setFreezeBalance(BigDecimal.ZERO)
- .setBalance(defaultBalance))
- .collect(Collectors.toList());
- walletManager.saveAll(wallets);
- List walletLogs = wallets.stream()
- .map(wallet -> new WalletLog().setWalletId(wallet.getId())
- .setUserId(wallet.getUserId())
- .setAmount(defaultBalance)
- .setType(WalletCode.LOG_ACTIVE)
- .setRemark("批量开通钱包")
- .setOperationSource(WalletCode.OPERATION_SOURCE_ADMIN))
- .collect(Collectors.toList());
- walletLogManager.saveAll(walletLogs);
- }
-
- /**
- * 锁定钱包
- */
- @Transactional(rollbackFor = Exception.class)
- public void lock(Long walletId) {
- Wallet wallet = walletManager.findById(walletId).orElseThrow(DataNotExistException::new);
- wallet.setStatus(WalletCode.STATUS_FORBIDDEN);
- walletManager.updateById(wallet);
- // 激活 log
- WalletLog log = new WalletLog().setWalletId(wallet.getId())
- .setUserId(wallet.getUserId())
- .setType(WalletCode.LOG_LOCK)
- .setRemark("锁定钱包")
- .setOperationSource(WalletCode.OPERATION_SOURCE_ADMIN);
- walletLogManager.save(log);
- }
-
- /**
- * 解锁钱包
- */
- @Transactional(rollbackFor = Exception.class)
- public void unlock(Long walletId) {
- Wallet wallet = walletManager.findById(walletId).orElseThrow(DataNotExistException::new);
- wallet.setStatus(WalletCode.STATUS_NORMAL);
- walletManager.updateById(wallet);
- // 激活 log
- WalletLog log = new WalletLog().setWalletId(wallet.getId())
- .setUserId(wallet.getUserId())
- .setType(WalletCode.LOG_UNLOCK)
- .setRemark("解锁钱包")
- .setOperationSource(WalletCode.OPERATION_SOURCE_ADMIN);
- walletLogManager.save(log);
- }
-
- /**
- * 更改余额 也可以扣款
- */
- @Transactional(rollbackFor = Exception.class)
- public void changerBalance(WalletRechargeParam param) {
- if (BigDecimalUtil.compareTo(param.getAmount(), BigDecimal.ZERO) == 1) {
- walletManager.increaseBalance(param.getWalletId(), param.getAmount());
- }
- else if (BigDecimalUtil.compareTo(param.getAmount(), BigDecimal.ZERO) == -1) {
- walletManager.reduceBalanceUnlimited(param.getWalletId(), param.getAmount());
- }
- else {
- return;
- }
- Wallet wallet = walletManager.findById(param.getWalletId()).orElseThrow(DataNotExistException::new);
- WalletLog walletLog = new WalletLog().setAmount(param.getAmount())
- .setWalletId(wallet.getId())
- .setType(WalletCode.LOG_ADMIN_CHANGER)
- .setUserId(wallet.getUserId())
- .setRemark(String.format("系统变动余额 %.2f ", param.getAmount()))
- .setOperationSource(WalletCode.OPERATION_SOURCE_ADMIN);
- walletLogManager.save(walletLog);
- }
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wechat/convert/WeChatConvert.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wechat/convert/WeChatConvert.java
deleted file mode 100644
index d6e19e03..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wechat/convert/WeChatConvert.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wechat.convert;
-
-import cn.bootx.platform.daxpay.core.channel.wechat.entity.WeChatPayConfig;
-import cn.bootx.platform.daxpay.core.channel.wechat.entity.WeChatPayment;
-import cn.bootx.platform.daxpay.dto.channel.wechat.WeChatPayConfigDto;
-import cn.bootx.platform.daxpay.dto.channel.wechat.WeChatPaymentDto;
-import cn.bootx.platform.daxpay.param.channel.wechat.WeChatPayConfigParam;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-/**
- * 微信转换类
- *
- * @author xxm
- * @since 2021/6/21
- */
-@Mapper
-public interface WeChatConvert {
-
- WeChatConvert CONVERT = Mappers.getMapper(WeChatConvert.class);
-
- WeChatPayConfig convert(WeChatPayConfigParam in);
-
- WeChatPayConfigDto convert(WeChatPayConfig in);
-
- WeChatPaymentDto convert(WeChatPayment in);
-
- WeChatPayment convert(WeChatPaymentDto in);
-
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wechat/dao/WeChatPayConfigManager.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wechat/dao/WeChatPayConfigManager.java
deleted file mode 100644
index 43b88ca3..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wechat/dao/WeChatPayConfigManager.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wechat.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.core.channel.wechat.entity.WeChatPayConfig;
-import cn.bootx.platform.daxpay.param.channel.wechat.WeChatPayConfigParam;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Repository;
-
-import java.util.Optional;
-
-/**
- * 微信支付配置
- *
- * @author xxm
- * @since 2021/3/19
- */
-@Repository
-@RequiredArgsConstructor
-public class WeChatPayConfigManager extends BaseManager {
-
-
- public Optional findByMchAppCode(String mchAppCode){
- return findByField(WeChatPayConfig::getMchAppCode,mchAppCode);
- }
- /**
- * 分页
- */
- public Page page(PageParam pageParam, WeChatPayConfigParam param) {
- Page mpPage = MpUtil.getMpPage(pageParam, WeChatPayConfig.class);
- QueryWrapper wrapper = QueryGenerator.generator(param);
- wrapper.orderByDesc(MpIdEntity.Id.id);
- return this.page(mpPage,wrapper);
- }
-}
diff --git a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wechat/dao/WeChatPayConfigMapper.java b/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wechat/dao/WeChatPayConfigMapper.java
deleted file mode 100644
index fb61adec..00000000
--- a/dax-pay/src/main/java/cn/bootx/platform/daxpay/core/channel/wechat/dao/WeChatPayConfigMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cn.bootx.platform.daxpay.core.channel.wechat.dao;
-
-import cn.bootx.platform.daxpay.core.channel.wechat.entity.WeChatPayConfig;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 微信支付配置
- *
- * @author xxm
- * @since 2021/3/19
- */
-@Mapper
-public interface WeChatPayConfigMapper extends BaseMapper