package com.ruoyi.system.domain;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.util.Date;

/**
 * 蓝新支付交易流水 pos_order_payment
 *
 * <p>每笔蓝新交易一条。承载幂等（按 trade_no）与对账明细。
 * 同一订单多次发起产生多行（不同 merchant_order_no），但同一 trade_no 只对应一行。
 *
 * @author ruoyi
 * @date 2026-06-22
 */
@Data
@TableName(value = "pos_order_payment")
public class PosOrderPayment {

    private static final long serialVersionUID = 1L;

    /** 主键 */
    @TableId(type = IdType.AUTO)
    private Long id;

    /** 系统订单号（关联 pos_order.dd_id） */
    private String ddId;

    /** 商店订单号 MerchantOrderNo（发起生成，门店内唯一） */
    private String merchantOrderNo;

    /** 蓝新交易序号 TradeNo（回调获得，幂等键，唯一索引） */
    private String tradeNo;

    /** 门店ID */
    private Long storeId;

    /** 蓝新商店代号（发起时的门店凭证） */
    private String merchantId;

    /** 支付方式: CREDIT/LINEPAY/APPLEPAY（回调确定） */
    private String payType;

    /** 交易金额（整数元，= 订单 amount） */
    private Integer amount;

    /** 支付状态: 0未支付/1已支付/2失败 */
    private Integer payStatus;

    /** 授权码（信用卡回调 Auth） */
    private String authCode;

    /** 支付完成时间（回调 PayTime） */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date payTime;

    /** 回调原始解密结果（调试/对账） */
    private String callbackRaw;

    /** 创建时间（发起时间） */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /** 更新时间 */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}
