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