Переглянути джерело

feat: F2fTradeRecord entity/mapper/enum/VO/migration

alphaH 2 тижнів тому
батько
коміт
81e30ad7ae

+ 49 - 0
java/src/main/java/com/payment/platform/module/payment/facetoface/dto/F2fTradeRecordVO.java

@@ -0,0 +1,49 @@
+package com.payment.platform.module.payment.facetoface.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.OffsetDateTime;
+
+@Data
+public class F2fTradeRecordVO {
+
+    @Schema(description = "ID")
+    private Long id;
+
+    @Schema(description = "企业ID")
+    private String enterpriseId;
+
+    @Schema(description = "商户订单号")
+    private String outTradeNo;
+
+    @Schema(description = "支付宝交易号")
+    private String tradeNo;
+
+    @Schema(description = "收款金额(元)")
+    private String totalAmount;
+
+    @Schema(description = "收款标题")
+    private String subject;
+
+    @Schema(description = "交易状态")
+    private String tradeStatus;
+
+    @Schema(description = "买家支付宝用户号")
+    private String buyerId;
+
+    @Schema(description = "买家支付宝账号")
+    private String buyerLogonId;
+
+    @Schema(description = "收款码URL")
+    private String qrCode;
+
+    @Schema(description = "交易创建时间")
+    private OffsetDateTime gmtCreate;
+
+    @Schema(description = "付款时间")
+    private OffsetDateTime gmtPayment;
+
+    @Schema(description = "创建时间")
+    private OffsetDateTime createdTime;
+}

+ 58 - 0
java/src/main/java/com/payment/platform/module/payment/facetoface/entity/F2fTradeRecordEntity.java

@@ -0,0 +1,58 @@
+package com.payment.platform.module.payment.facetoface.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.payment.platform.common.base.PaymentEnterpriseBaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.time.OffsetDateTime;
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("pay_f2f_trade")
+public class F2fTradeRecordEntity extends PaymentEnterpriseBaseEntity {
+
+    /** 商户订单号 */
+    private String outTradeNo;
+
+    /** 支付宝交易号 */
+    private String tradeNo;
+
+    /** 收款金额(元) */
+    private String totalAmount;
+
+    /** 收款标题 */
+    private String subject;
+
+    /** 交易状态: WAIT_BUYER_PAY / TRADE_SUCCESS / TRADE_CLOSED / TRADE_FINISHED */
+    private String tradeStatus;
+
+    /** 买家支付宝用户号 */
+    private String buyerId;
+
+    /** 买家支付宝账号 */
+    private String buyerLogonId;
+
+    /** 收款码URL */
+    private String qrCode;
+
+    /** 交易创建时间 */
+    private OffsetDateTime gmtCreate;
+
+    /** 付款时间 */
+    private OffsetDateTime gmtPayment;
+
+    /** 最近一次查询时间 */
+    private OffsetDateTime lastQueryTime;
+
+    /** 下次查询时间 */
+    private OffsetDateTime nextQueryTime;
+
+    /** 查询次数 */
+    private Integer queryCount;
+
+    /** 乐观锁 */
+    @Version
+    private Integer version;
+}

+ 14 - 0
java/src/main/java/com/payment/platform/module/payment/facetoface/enums/F2fTradeStatus.java

@@ -0,0 +1,14 @@
+package com.payment.platform.module.payment.facetoface.enums;
+
+import lombok.Getter;
+
+@Getter
+public enum F2fTradeStatus {
+    WAIT_BUYER_PAY("WAIT_BUYER_PAY"),
+    TRADE_SUCCESS("TRADE_SUCCESS"),
+    TRADE_CLOSED("TRADE_CLOSED"),
+    TRADE_FINISHED("TRADE_FINISHED");
+
+    private final String value;
+    F2fTradeStatus(String value) { this.value = value; }
+}

+ 9 - 0
java/src/main/java/com/payment/platform/module/payment/facetoface/mapper/F2fTradeRecordMapper.java

@@ -0,0 +1,9 @@
+package com.payment.platform.module.payment.facetoface.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.payment.platform.module.payment.facetoface.entity.F2fTradeRecordEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface F2fTradeRecordMapper extends BaseMapper<F2fTradeRecordEntity> {
+}

+ 28 - 0
java/src/main/resources/db/migration/V1.1__create_pay_f2f_trade.sql

@@ -0,0 +1,28 @@
+CREATE TABLE IF NOT EXISTS pay_f2f_trade (
+    id              BIGSERIAL PRIMARY KEY,
+    status          VARCHAR(10)  NOT NULL DEFAULT '0',
+    description     TEXT,
+    created_time    TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW(),
+    updated_time    TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW(),
+    tenant_id       BIGINT,
+    enterprise_id   VARCHAR(64),
+
+    out_trade_no    VARCHAR(64)  NOT NULL,
+    trade_no        VARCHAR(64),
+    total_amount    VARCHAR(20),
+    subject         VARCHAR(256),
+    trade_status    VARCHAR(32)  NOT NULL DEFAULT 'WAIT_BUYER_PAY',
+    buyer_id        VARCHAR(64),
+    buyer_logon_id  VARCHAR(128),
+    qr_code         TEXT,
+    gmt_create      TIMESTAMP WITHOUT TIME ZONE,
+    gmt_payment     TIMESTAMP WITHOUT TIME ZONE,
+    last_query_time TIMESTAMP WITHOUT TIME ZONE,
+    next_query_time TIMESTAMP WITHOUT TIME ZONE,
+    query_count     INTEGER DEFAULT 0,
+    version         INTEGER DEFAULT 0
+);
+
+CREATE INDEX IF NOT EXISTS idx_f2f_trade_enterprise ON pay_f2f_trade(enterprise_id);
+CREATE INDEX IF NOT EXISTS idx_f2f_trade_out_trade_no ON pay_f2f_trade(out_trade_no);
+CREATE INDEX IF NOT EXISTS idx_f2f_trade_status ON pay_f2f_trade(trade_status);