Commit 711a0740595440363fc02a9a46d25a9c6f1b7a6e

Authored by YunaiV
1 parent 5133cd0f

支付系统的实体的初始化

yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/package-info.java 0 → 100644
  1 +/**
  2 + * 提供 POJO 类的实体转换
  3 + *
  4 + * 目前使用 MapStruct 框架
  5 + */
  6 +package cn.iocoder.yudao.adminserver.modules.pay.convert;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/convert/《芋道 Spring Boot 对象转换 MapStruct 入门》.md 0 → 100644
  1 +<http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao>
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/merchant/PayAppDO.java 0 → 100644
  1 +package cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant;
  2 +
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  4 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  5 +import com.baomidou.mybatisplus.annotation.TableId;
  6 +import lombok.Data;
  7 +
  8 +/**
  9 + * 支付应用 DO
  10 + * 一个商户下,可能会有多个支付应用。例如说,京东有京东商城、京东到家等等
  11 + * 不过一般来说,一个商户,只有一个应用哈~
  12 + *
  13 + * 即 PayMerchantDO : PayAppDO = 1 : n
  14 + *
  15 + * @author 芋道源码
  16 + */
  17 +@Data
  18 +public class PayAppDO extends BaseDO {
  19 +
  20 + /**
  21 + * 应用编号,数据库自增
  22 + */
  23 + @TableId
  24 + private Long id;
  25 + /**
  26 + * 应用号
  27 + * 例如说,60cc81e0e4b06afc4d3f0cfq
  28 + */
  29 + private String no;
  30 + /**
  31 + * 应用名
  32 + */
  33 + private String name;
  34 + /**
  35 + * 状态
  36 + *
  37 + * 枚举 {@link CommonStatusEnum}
  38 + */
  39 + private Integer status;
  40 + /**
  41 + * 备注
  42 + */
  43 + private String remark;
  44 + /**
  45 + * 应用私钥
  46 + * TODO 芋艿:用途
  47 + */
  48 + private String secret;
  49 +
  50 + /**
  51 + * 商户编号
  52 + *
  53 + * 关联 {@link PayMerchantDO#getId()}
  54 + */
  55 + private Long merchantId;
  56 +
  57 +}
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/merchant/PayChannelDO.java 0 → 100644
  1 +package cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant;
  2 +
  3 +import cn.iocoder.yudao.adminserver.modules.pay.enums.PayChannelCodeEnum;
  4 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  5 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  6 +import lombok.Data;
  7 +
  8 +/**
  9 + * 支付渠道 DO
  10 + * 一个应用下,会有多种支付渠道,例如说微信支付、支付宝支付等等
  11 + *
  12 + * 即 PayAppDO : PayChannelDO = 1 : n
  13 + *
  14 + * @author 芋道源码
  15 + */
  16 +@Data
  17 +public class PayChannelDO extends BaseDO {
  18 +
  19 + /**
  20 + * 渠道编号,数据库自增
  21 + */
  22 + private Long id;
  23 + /**
  24 + * 渠道编码
  25 + *
  26 + * 枚举 {@link PayChannelCodeEnum}
  27 + */
  28 + private String code;
  29 + /**
  30 + * 状态
  31 + *
  32 + * 枚举 {@link CommonStatusEnum}
  33 + */
  34 + private Integer status;
  35 + /**
  36 + * 渠道费率,单位:百分比
  37 + */
  38 + private Double feeRate;
  39 +
  40 + /**
  41 + * 商户编号
  42 + *
  43 + * 关联 {@link PayMerchantDO#getId()}
  44 + */
  45 + private Long merchantId;
  46 + /**
  47 + * 应用编号
  48 + *
  49 + * 关联 {@link PayAppDO#getId()}
  50 + */
  51 + private String appId;
  52 +
  53 + // TODO 芋艿:不同渠道的配置。暂时考虑硬编码
  54 +
  55 +}
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/merchant/PayMerchantDO.java 0 → 100644
  1 +package cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant;
  2 +
  3 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  4 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  5 +import com.baomidou.mybatisplus.annotation.TableId;
  6 +import lombok.Data;
  7 +
  8 +/**
  9 + * 商户信息 DO
  10 + * 目前暂时没有特别的用途,主要为未来多商户提供基础。
  11 + *
  12 + * @author 芋道源码
  13 + */
  14 +@Data
  15 +public class PayMerchantDO extends BaseDO {
  16 +
  17 + /**
  18 + * 商户编号,数据库自增
  19 + */
  20 + @TableId
  21 + private Long id;
  22 + /**
  23 + * 商户号
  24 + * 例如说,M233666999
  25 + */
  26 + private String no;
  27 + /**
  28 + * 商户全称
  29 + */
  30 + private String name;
  31 + /**
  32 + * 商户简称
  33 + */
  34 + private String shortName;
  35 + /**
  36 + * 状态
  37 + *
  38 + * 枚举 {@link CommonStatusEnum}
  39 + */
  40 + private Integer status;
  41 + /**
  42 + * 备注
  43 + */
  44 + private String remark;
  45 +
  46 +}
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/order/PayNotifyDO.java 0 → 100644
  1 +package cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.order;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  4 +import lombok.Data;
  5 +
  6 +/**
  7 + * 商户支付、退款等的通知
  8 + * 在支付系统收到支付渠道的支付、退款的结果后,需要不断的通知到业务系统,直到成功。
  9 + * TODO 芋艿:待完善
  10 + *
  11 + * @author 芋道源码
  12 + */
  13 +@Data
  14 +public class PayNotifyDO extends BaseDO {
  15 +}
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/order/PayOrderDO.java 0 → 100644
  1 +package cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.order;
  2 +
  3 +import cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant.PayAppDO;
  4 +import cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant.PayChannelDO;
  5 +import cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant.PayMerchantDO;
  6 +import cn.iocoder.yudao.adminserver.modules.pay.enums.PayChannelCodeEnum;
  7 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  8 +import lombok.Data;
  9 +
  10 +import java.util.Date;
  11 +
  12 +/**
  13 + * 支付订单 DO
  14 + *
  15 + * @author 芋道源码
  16 + */
  17 +@Data
  18 +public class PayOrderDO extends BaseDO {
  19 +
  20 + /**
  21 + * 订单编号,数据库自增
  22 + */
  23 + private Long id;
  24 + /**
  25 + * 订单号,根据规则生成
  26 + *
  27 + * 例如说,P202110132239124200055
  28 + */
  29 + private String no;
  30 + /**
  31 + * 商户编号
  32 + *
  33 + * 关联 {@link PayMerchantDO#getId()}
  34 + */
  35 + private Long merchantId;
  36 + /**
  37 + * 应用编号
  38 + *
  39 + * 关联 {@link PayAppDO#getId()}
  40 + */
  41 + private Long appId;
  42 + /**
  43 + * 渠道编号
  44 + *
  45 + * 关联 {@link PayChannelDO#getMerchantId()}
  46 + */
  47 + private Long channelId;
  48 + /**
  49 + * 商户编码
  50 + *
  51 + * 枚举 {@link PayChannelCodeEnum}
  52 + */
  53 + private String channelCode;
  54 +
  55 + // ========== 商户相关字段 ==========
  56 +
  57 + /**
  58 + * 商户订单号
  59 + * 例如说,内部系统 A 的订单号。需要保证每个 PayMerchantDO 唯一 TODO 芋艿:需要在测试下
  60 + */
  61 + private String merchantOrderNo;
  62 + /**
  63 + * 商品标题
  64 + */
  65 + private String subject;
  66 + /**
  67 + * 商品描述信息
  68 + */
  69 + private String body;
  70 + /**
  71 + * 商户拓展参数
  72 + */
  73 + private String merchantExtra;
  74 + /**
  75 + * 通知商户支付结果的回调状态
  76 + * TODO 芋艿:0 未发送 1 已发送
  77 + */
  78 + private Integer notifyStatus;
  79 +
  80 + // ========== 订单相关字段 ==========
  81 +
  82 + /**
  83 + * 支付金额,单位:分
  84 + */
  85 + private Long amount;
  86 + /**
  87 + * 渠道手续费
  88 + *
  89 + * 冗余 {@link PayChannelDO#getFeeRate()}
  90 + */
  91 + private Double channelFeeRate;
  92 + /**
  93 + * 渠道手续金额
  94 + */
  95 + private Long channelFeeAmount;
  96 + /**
  97 + * 支付状态
  98 + *
  99 + * TODO 芋艿:状态枚举
  100 + */
  101 + private Integer status;
  102 + /**
  103 + * 客户端 IP
  104 + */
  105 + private String clientIp;
  106 + /**
  107 + * 订单支付成功时间
  108 + */
  109 + private Date successTime;
  110 + /**
  111 + * 订单失效时间
  112 + */
  113 + private Date expiredTime;
  114 + /**
  115 + * 支付渠道的额外参数
  116 + *
  117 + * 参见 https://www.pingxx.com/api/支付渠道%20extra%20参数说明.html
  118 + */
  119 + private String channelExtra;
  120 + /**
  121 + * 异步通知地址
  122 + */
  123 + private String notifyUrl;
  124 + /**
  125 + * 页面跳转地址
  126 + */
  127 + private String returnUrl;
  128 +
  129 + // TODO 芋艿:可能要优化
  130 + /**
  131 + * 渠道支付错误码
  132 + */
  133 + private String errorCode;
  134 + /**
  135 + * 渠道支付错误消息
  136 + */
  137 + private String errorMessage;
  138 +
  139 + // ========== 退款相关字段 ==========
  140 + /**
  141 + * 退款状态
  142 + *
  143 + * TODO 芋艿:0 - 未退款;1 - 部分退款; 2 - 全额退款
  144 + */
  145 + private Integer refundStatus;
  146 + /**
  147 + * 退款次数
  148 + */
  149 + private Integer refundTimes;
  150 + /**
  151 + * 退款总金额,单位:分
  152 + */
  153 + private Long refundAmount;
  154 +
  155 + // ========== 渠道相关字段 ==========
  156 + /**
  157 + * 渠道用户编号
  158 + *
  159 + * 例如说,微信 openid、支付宝账号
  160 + */
  161 + private String channelUserId;
  162 + /**
  163 + * 渠道订单号
  164 + */
  165 + private String channelOrderNo;
  166 +
  167 +}
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/order/PayRefundDO.java 0 → 100644
  1 +package cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.order;
  2 +
  3 +import cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant.PayAppDO;
  4 +import cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant.PayChannelDO;
  5 +import cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject.merchant.PayMerchantDO;
  6 +import cn.iocoder.yudao.adminserver.modules.pay.enums.PayChannelCodeEnum;
  7 +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  8 +import lombok.Data;
  9 +
  10 +import java.util.Date;
  11 +
  12 +/**
  13 + * 支付退款单 DO
  14 + * 一个支付订单,可以拥有多个支付退款单
  15 + *
  16 + * 即 PayOrderDO : PayRefundDO = 1 : n
  17 + *
  18 + * @author 芋道源码
  19 + */
  20 +@Data
  21 +public class PayRefundDO extends BaseDO {
  22 +
  23 + /**
  24 + * 退款单编号,数据库自增
  25 + */
  26 + private Long id;
  27 + /**
  28 + * 退款单号,根据规则生成
  29 + *
  30 + * 例如说,R202109181134287570000
  31 + */
  32 + private String no;
  33 + /**
  34 + * 商户编号
  35 + *
  36 + * 关联 {@link PayMerchantDO#getId()}
  37 + */
  38 + private Long merchantId;
  39 + /**
  40 + * 应用编号
  41 + *
  42 + * 关联 {@link PayAppDO#getId()}
  43 + */
  44 + private Long appId;
  45 + /**
  46 + * 渠道编号
  47 + *
  48 + * 关联 {@link PayChannelDO#getMerchantId()}
  49 + */
  50 + private Long channelId;
  51 + /**
  52 + * 商户编码
  53 + *
  54 + * 枚举 {@link PayChannelCodeEnum}
  55 + */
  56 + private String channelCode;
  57 + /**
  58 + * 订单编号
  59 + *
  60 + * 关联 {@link PayOrderDO#getId()}
  61 + */
  62 + private Long orderId;
  63 +
  64 + // ========== 商户相关字段 ==========
  65 + /**
  66 + * 商户退款订单号
  67 + * 例如说,内部系统 A 的退款订单号。需要保证每个 PayMerchantDO 唯一 TODO 芋艿:需要在测试下
  68 + */
  69 + private String merchantRefundNo;
  70 + /**
  71 + * 商户拓展参数
  72 + */
  73 + private String merchantExtra;
  74 +
  75 + // ========== 退款相关字段 ==========
  76 + /**
  77 + * 退款状态
  78 + *
  79 + * TODO 芋艿:状态枚举
  80 + */
  81 + private Integer status;
  82 + /**
  83 + * 客户端 IP
  84 + */
  85 + private String clientIp;
  86 + /**
  87 + * 退款金额,单位:分
  88 + */
  89 + private Long amount;
  90 + /**
  91 + * 退款原因
  92 + */
  93 + private String reason;
  94 + /**
  95 + * 订单退款成功时间
  96 + */
  97 + private Date successTime;
  98 + /**
  99 + * 退款失效时间
  100 + */
  101 + private Date expiredTime;
  102 + /**
  103 + * 支付渠道的额外参数
  104 + *
  105 + * 参见 https://www.pingxx.com/api/Refunds%20退款概述.html
  106 + */
  107 + private String channelExtra;
  108 + /**
  109 + * 异步通知地址
  110 + */
  111 + private String notifyUrl;
  112 +
  113 + // TODO 芋艿:可能要优化
  114 + /**
  115 + * 渠道支付错误码
  116 + */
  117 + private String errorCode;
  118 + /**
  119 + * 渠道支付错误消息
  120 + */
  121 + private String errorMessage;
  122 +
  123 + // ========== 渠道相关字段 ==========
  124 + /**
  125 + * 渠道订单号
  126 + */
  127 + private String channelOrderNo;
  128 + /**
  129 + * 渠道退款号
  130 + */
  131 + private String channelRefundNo;
  132 +
  133 +}
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/dal/dataobject/package-info.java 0 → 100644
  1 +package cn.iocoder.yudao.adminserver.modules.pay.dal.dataobject;
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/enums/PayChannelCodeEnum.java 0 → 100644
  1 +package cn.iocoder.yudao.adminserver.modules.pay.enums;
  2 +
  3 +import lombok.AllArgsConstructor;
  4 +import lombok.Getter;
  5 +
  6 +/**
  7 + * 支付渠道的编码的枚举
  8 + *
  9 + * @author 芋道源码
  10 + */
  11 +@Getter
  12 +@AllArgsConstructor
  13 +public enum PayChannelCodeEnum {
  14 +
  15 + wx_pub("wx_pub", "微信 JSAPI 支付");
  16 +
  17 + /**
  18 + * 编码
  19 + *
  20 + * 参考 https://www.pingxx.com/api/支付渠道属性值.html
  21 + */
  22 + private String code;
  23 + /**
  24 + * 名字
  25 + */
  26 + private String name;
  27 +
  28 +}
... ...
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/pay/package-info.java 0 → 100644
  1 +/**
  2 + * pay 包下,我们放支付业务,提供业务的支付能力。
  3 + * 例如说:商户、应用、支付、退款等等
  4 + *
  5 + * 缩写:pay
  6 + */
  7 +package cn.iocoder.yudao.adminserver.modules.pay;
... ...
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;
3 3 import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
4 4 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
5 5 import cn.iocoder.yudao.coreservice.modules.infra.enums.logger.InfApiErrorLogProcessStatusEnum;
  6 +import com.baomidou.mybatisplus.annotation.TableId;
6 7 import com.baomidou.mybatisplus.annotation.TableName;
7 8 import lombok.*;
8 9  
... ... @@ -25,6 +26,7 @@ public class InfApiErrorLogDO extends BaseDO {
25 26 /**
26 27 * 编号
27 28 */
  29 + @TableId
28 30 private Long id;
29 31 /**
30 32 * 用户编号
... ...