支付系统的实体的初始化

This commit is contained in:
YunaiV 2021-10-14 09:05:09 +08:00
parent 5133cd0fdf
commit 711a074059
12 changed files with 518 additions and 0 deletions

View File

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

View File

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

View File

@ -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;
}

View File

@ -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 芋艿不同渠道的配置暂时考虑硬编码
}

View File

@ -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;
}

View File

@ -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 {
}

View File

@ -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;
}

View File

@ -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;
}

View File

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

View File

@ -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;
}

View File

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

View File

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