Browse Source

支付系统的实体的初始化

YunaiV 3 years atrás
parent
commit
711a074059
12 changed files with 518 additions and 0 deletions
  1. 6 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/package-info.java
  2. 1 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md
  3. 57 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/merchant/PayAppDO.java
  4. 55 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/merchant/PayChannelDO.java
  5. 46 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/merchant/PayMerchantDO.java
  6. 15 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/order/PayNotifyDO.java
  7. 167 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/order/PayOrderDO.java
  8. 133 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/order/PayRefundDO.java
  9. 1 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/package-info.java
  10. 28 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/enums/PayChannelCodeEnum.java
  11. 7 0
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/package-info.java
  12. 2 0
      yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/dal/dataobject/logger/InfApiErrorLogDO.java

+ 6 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/package-info.java

@@ -0,0 +1,6 @@
+/**
+ * 提供 POJO 类的实体转换
+ *
+ * 目前使用 MapStruct 框架
+ */
+package cn.iocoder.yudao.adminserver.modules.pay.convert;

+ 1 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md

@@ -0,0 +1 @@
+<http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao>

+ 57 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/merchant/PayAppDO.java

@@ -0,0 +1,57 @@
+package cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant;
+
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+/**
+ * 支付应用 DO
+ * 一个商户下,可能会有多个支付应用。例如说,京东有京东商城、京东到家等等
+ * 不过一般来说,一个商户,只有一个应用哈~
+ *
+ * 即 PayMerchantDO : PayAppDO = 1 : n
+ *
+ * @author 芋道源码
+ */
+@Data
+public class PayAppDO extends BaseDO {
+
+    /**
+     * 应用编号,数据库自增
+     */
+    @TableId
+    private Long id;
+    /**
+     * 应用号
+     * 例如说,60cc81e0e4b06afc4d3f0cfq
+     */
+    private String no;
+    /**
+     * 应用名
+     */
+    private String name;
+    /**
+     * 状态
+     *
+     * 枚举 {@link CommonStatusEnum}
+     */
+    private Integer status;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 应用私钥
+     * TODO 芋艿:用途
+     */
+    private String secret;
+
+    /**
+     * 商户编号
+     *
+     * 关联 {@link PayMerchantDO#getId()}
+     */
+    private Long merchantId;
+
+}

+ 55 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/merchant/PayChannelDO.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant;
+
+import cn.iocoder.yudao.adminserver.modules.pay.enums.PayChannelCodeEnum;
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import lombok.Data;
+
+/**
+ * 支付渠道 DO
+ * 一个应用下,会有多种支付渠道,例如说微信支付、支付宝支付等等
+ *
+ * 即 PayAppDO : PayChannelDO = 1 : n
+ *
+ * @author 芋道源码
+ */
+@Data
+public class PayChannelDO extends BaseDO {
+
+    /**
+     * 渠道编号,数据库自增
+     */
+    private Long id;
+    /**
+     * 渠道编码
+     *
+     * 枚举 {@link PayChannelCodeEnum}
+     */
+    private String code;
+    /**
+     * 状态
+     *
+     * 枚举 {@link CommonStatusEnum}
+     */
+    private Integer status;
+    /**
+     * 渠道费率,单位:百分比
+     */
+    private Double feeRate;
+
+    /**
+     * 商户编号
+     *
+     * 关联 {@link PayMerchantDO#getId()}
+     */
+    private Long merchantId;
+    /**
+     * 应用编号
+     *
+     * 关联 {@link PayAppDO#getId()}
+     */
+    private String appId;
+
+    // TODO 芋艿:不同渠道的配置。暂时考虑硬编码
+
+}

+ 46 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/merchant/PayMerchantDO.java

@@ -0,0 +1,46 @@
+package cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant;
+
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+/**
+ * 商户信息 DO
+ * 目前暂时没有特别的用途,主要为未来多商户提供基础。
+ *
+ * @author 芋道源码
+ */
+@Data
+public class PayMerchantDO extends BaseDO {
+
+    /**
+     * 商户编号,数据库自增
+     */
+    @TableId
+    private Long id;
+    /**
+     * 商户号
+     * 例如说,M233666999
+     */
+    private String no;
+    /**
+     * 商户全称
+     */
+    private String name;
+    /**
+     * 商户简称
+     */
+    private String shortName;
+    /**
+     * 状态
+     *
+     * 枚举 {@link CommonStatusEnum}
+     */
+    private Integer status;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 15 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/order/PayNotifyDO.java

@@ -0,0 +1,15 @@
+package cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.order;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import lombok.Data;
+
+/**
+ * 商户支付、退款等的通知
+ * 在支付系统收到支付渠道的支付、退款的结果后,需要不断的通知到业务系统,直到成功。
+ * TODO 芋艿:待完善
+ *
+ * @author 芋道源码
+ */
+@Data
+public class PayNotifyDO extends BaseDO {
+}

+ 167 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/order/PayOrderDO.java

@@ -0,0 +1,167 @@
+package cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.order;
+
+import cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant.PayAppDO;
+import cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant.PayChannelDO;
+import cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant.PayMerchantDO;
+import cn.iocoder.yudao.adminserver.modules.pay.enums.PayChannelCodeEnum;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 支付订单 DO
+ *
+ * @author 芋道源码
+ */
+@Data
+public class PayOrderDO extends BaseDO {
+
+    /**
+     * 订单编号,数据库自增
+     */
+    private Long id;
+    /**
+     * 订单号,根据规则生成
+     *
+     * 例如说,P202110132239124200055
+     */
+    private String no;
+    /**
+     * 商户编号
+     *
+     * 关联 {@link PayMerchantDO#getId()}
+     */
+    private Long merchantId;
+    /**
+     * 应用编号
+     *
+     * 关联 {@link PayAppDO#getId()}
+     */
+    private Long appId;
+    /**
+     * 渠道编号
+     *
+     * 关联 {@link PayChannelDO#getMerchantId()}
+     */
+    private Long channelId;
+    /**
+     * 商户编码
+     *
+     * 枚举 {@link PayChannelCodeEnum}
+     */
+    private String channelCode;
+
+    // ========== 商户相关字段 ==========
+
+    /**
+     * 商户订单号
+     * 例如说,内部系统 A 的订单号。需要保证每个 PayMerchantDO 唯一 TODO 芋艿:需要在测试下
+     */
+    private String merchantOrderNo;
+    /**
+     * 商品标题
+     */
+    private String subject;
+    /**
+     * 商品描述信息
+     */
+    private String body;
+    /**
+     * 商户拓展参数
+     */
+    private String merchantExtra;
+    /**
+     * 通知商户支付结果的回调状态
+     * TODO 芋艿:0 未发送 1 已发送
+     */
+    private Integer notifyStatus;
+
+    // ========== 订单相关字段 ==========
+
+    /**
+     * 支付金额,单位:分
+     */
+    private Long amount;
+    /**
+     * 渠道手续费
+     *
+     * 冗余 {@link PayChannelDO#getFeeRate()}
+     */
+    private Double channelFeeRate;
+    /**
+     * 渠道手续金额
+     */
+    private Long channelFeeAmount;
+    /**
+     * 支付状态
+     *
+     * TODO 芋艿:状态枚举
+     */
+    private Integer status;
+    /**
+     * 客户端 IP
+     */
+    private String clientIp;
+    /**
+     * 订单支付成功时间
+     */
+    private Date successTime;
+    /**
+     * 订单失效时间
+     */
+    private Date expiredTime;
+    /**
+     * 支付渠道的额外参数
+     *
+     * 参见 https://www.pingxx.com/api/支付渠道%20extra%20参数说明.html
+     */
+    private String channelExtra;
+    /**
+     * 异步通知地址
+     */
+    private String notifyUrl;
+    /**
+     * 页面跳转地址
+     */
+    private String returnUrl;
+
+    // TODO 芋艿:可能要优化
+    /**
+     * 渠道支付错误码
+     */
+    private String errorCode;
+    /**
+     * 渠道支付错误消息
+     */
+    private String errorMessage;
+
+    // ========== 退款相关字段 ==========
+    /**
+     * 退款状态
+     *
+     * TODO 芋艿:0 - 未退款;1 - 部分退款; 2 - 全额退款
+     */
+    private Integer refundStatus;
+    /**
+     * 退款次数
+     */
+    private Integer refundTimes;
+    /**
+     * 退款总金额,单位:分
+     */
+    private Long refundAmount;
+
+    // ========== 渠道相关字段 ==========
+    /**
+     * 渠道用户编号
+     *
+     * 例如说,微信 openid、支付宝账号
+     */
+    private String channelUserId;
+    /**
+     * 渠道订单号
+     */
+    private String channelOrderNo;
+
+}

+ 133 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/order/PayRefundDO.java

@@ -0,0 +1,133 @@
+package cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.order;
+
+import cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant.PayAppDO;
+import cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant.PayChannelDO;
+import cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant.PayMerchantDO;
+import cn.iocoder.yudao.adminserver.modules.pay.enums.PayChannelCodeEnum;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 支付退款单 DO
+ * 一个支付订单,可以拥有多个支付退款单
+ *
+ * 即 PayOrderDO : PayRefundDO = 1 : n
+ *
+ * @author 芋道源码
+ */
+@Data
+public class PayRefundDO extends BaseDO {
+
+    /**
+     * 退款单编号,数据库自增
+     */
+    private Long id;
+    /**
+     * 退款单号,根据规则生成
+     *
+     * 例如说,R202109181134287570000
+     */
+    private String no;
+    /**
+     * 商户编号
+     *
+     * 关联 {@link PayMerchantDO#getId()}
+     */
+    private Long merchantId;
+    /**
+     * 应用编号
+     *
+     * 关联 {@link PayAppDO#getId()}
+     */
+    private Long appId;
+    /**
+     * 渠道编号
+     *
+     * 关联 {@link PayChannelDO#getMerchantId()}
+     */
+    private Long channelId;
+    /**
+     * 商户编码
+     *
+     * 枚举 {@link PayChannelCodeEnum}
+     */
+    private String channelCode;
+    /**
+     * 订单编号
+     *
+     * 关联 {@link PayOrderDO#getId()}
+     */
+    private Long orderId;
+
+    // ========== 商户相关字段 ==========
+    /**
+     * 商户退款订单号
+     * 例如说,内部系统 A 的退款订单号。需要保证每个 PayMerchantDO 唯一 TODO 芋艿:需要在测试下
+     */
+    private String merchantRefundNo;
+    /**
+     * 商户拓展参数
+     */
+    private String merchantExtra;
+
+    // ========== 退款相关字段 ==========
+    /**
+     * 退款状态
+     *
+     * TODO 芋艿:状态枚举
+     */
+    private Integer status;
+    /**
+     * 客户端 IP
+     */
+    private String clientIp;
+    /**
+     * 退款金额,单位:分
+     */
+    private Long amount;
+    /**
+     * 退款原因
+     */
+    private String reason;
+    /**
+     * 订单退款成功时间
+     */
+    private Date successTime;
+    /**
+     * 退款失效时间
+     */
+    private Date expiredTime;
+    /**
+     * 支付渠道的额外参数
+     *
+     * 参见 https://www.pingxx.com/api/Refunds%20退款概述.html
+     */
+    private String channelExtra;
+    /**
+     * 异步通知地址
+     */
+    private String notifyUrl;
+
+    // TODO 芋艿:可能要优化
+    /**
+     * 渠道支付错误码
+     */
+    private String errorCode;
+    /**
+     * 渠道支付错误消息
+     */
+    private String errorMessage;
+
+    // ========== 渠道相关字段 ==========
+    /**
+     * 渠道订单号
+     */
+    private String channelOrderNo;
+    /**
+     * 渠道退款号
+     */
+    private String channelRefundNo;
+
+}

+ 1 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/package-info.java

@@ -0,0 +1 @@
+package cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject;

+ 28 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/enums/PayChannelCodeEnum.java

@@ -0,0 +1,28 @@
+package cn.iocoder.yudao.adminserver.modules.pay.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 支付渠道的编码的枚举
+ *
+ * @author 芋道源码
+ */
+@Getter
+@AllArgsConstructor
+public enum PayChannelCodeEnum {
+
+    wx_pub("wx_pub", "微信 JSAPI 支付");
+
+    /**
+     * 编码
+     *
+     * 参考 https://www.pingxx.com/api/支付渠道属性值.html
+     */
+    private String code;
+    /**
+     * 名字
+     */
+    private String name;
+
+}

+ 7 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/package-info.java

@@ -0,0 +1,7 @@
+/**
+ * pay 包下,我们放支付业务,提供业务的支付能力。
+ * 例如说:商户、应用、支付、退款等等
+ *
+ * 缩写:pay
+ */
+package cn.iocoder.yudao.adminserver.modules.pay;

+ 2 - 0
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/infra/dal/dataobject/logger/InfApiErrorLogDO.java

@@ -3,6 +3,7 @@ package cn.iocoder.yudao.coreservice.modules.infra.dal.dataobject.logger;
 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 import cn.iocoder.yudao.coreservice.modules.infra.enums.logger.InfApiErrorLogProcessStatusEnum;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.*;
 
@@ -25,6 +26,7 @@ public class InfApiErrorLogDO extends BaseDO {
     /**
      * 编号
      */
+    @TableId
     private Long id;
     /**
      * 用户编号