package com.ruoyi.payment.domain.model;
|
|
import lombok.Data;
|
import java.io.Serializable;
|
import java.time.LocalDateTime;
|
import java.util.List;
|
|
/**
|
* 支付订单 - 聚合根
|
*
|
* @author ruoyi
|
*/
|
@Data
|
public class PaymentOrder implements Serializable {
|
private static final long serialVersionUID = 1L;
|
|
/** 订单ID */
|
private Long id;
|
|
/** 业务订单号 */
|
private String bizOrderId;
|
|
/** 金额(分) */
|
private Integer amount;
|
|
/** 币种 */
|
private String currency;
|
|
/** 支付渠道 */
|
private String channel;
|
|
/** 订单状态 */
|
private String status;
|
|
/** 订单标题 */
|
private String subject;
|
|
/** 订单描述 */
|
private String description;
|
|
/** 业务回调地址 */
|
private String callbackUrl;
|
|
/** 过期时间 */
|
private LocalDateTime expireAt;
|
|
/** 最新交易ID */
|
private Long latestTransactionId;
|
|
/** 渠道交易号 */
|
private String channelTradeNo;
|
|
/** 支付成功时间 */
|
private LocalDateTime paidAt;
|
|
/** 乐观锁版本号 */
|
private Integer version;
|
|
/** 创建时间 */
|
private LocalDateTime createdAt;
|
|
/** 更新时间 */
|
private LocalDateTime updatedAt;
|
|
/** 商品明细列表 */
|
private List<GoodsDetail> goodsDetails;
|
|
/**
|
* 判断订单是否已过期
|
*/
|
public boolean isExpired() {
|
return expireAt != null && LocalDateTime.now().isAfter(expireAt);
|
}
|
|
/**
|
* 判断订单是否可以支付
|
*/
|
public boolean canPay() {
|
return "PENDING".equals(status) && !isExpired();
|
}
|
|
/**
|
* 判断订单是否已成功
|
*/
|
public boolean isSuccess() {
|
return "SUCCEEDED".equals(status);
|
}
|
}
|