package com.fs.qw.dto;

import lombok.Data;

/**
 * 企业微信对外收款/退款记录 DTO
 * 用于接收企业微信 get_bill_list 接口返回的原始数据
 */
@Data
public class ReceiptDto {

    // ========== 通用字段 ==========

    /** 交易单号（企业微信唯一标识） */
    private String transactionId;

    /** 交易类型：0-收款记录，1-退款记录 */
    private Integer billType;

    /** 交易状态（仅收款记录有）：1-已完成，3-已完成有退款 */
    private Integer tradeState;

    /** 交易时间（秒级时间戳） */
    private Long payTime;

    /** 商户单号（退款记录时对应原收款记录的商户单号） */
    private String outTradeNo;

    /** 付款人的 external_userid */
    private String externalUserid;

    /** 收款总金额（单位：分），退款记录中为原收款金额 */
    private Integer totalFee;

    /** 企业内账号userid（收款记录为收款成员，退款记录为退款成员） */
    private String payeeUserid;

    /** 收款方式：0-聊天中，1-收款码，2-直播间，3-产品图册，14-转账，15-小程序 */
    private Integer paymentType;

    /** 收款商户号id */
    private String mchId;

    /** 备注（收款记录为收款备注，退款记录为退款备注） */
    private String remark;

    // ========== 收款记录特有字段 ==========

    /** 退款总金额（单位：分），仅收款记录有 */
    private Integer totalRefundFee;

    /** 商品信息 JSON 数组，格式：[{"description":"手机","amount":1}]，仅收款记录有 */
    private String commodityList;

    /** 联系人信息 JSON 对象，格式：{"name":"张三","phone":"138...","address":"..."}，第三方不可获取 */
    private String contactInfo;

    /** 小程序信息 JSON 对象，收款方式为小程序时返回，格式：{"appid":"wx...","name":"XX小程序"} */
    private String miniprogramInfo;

    // ========== 退款记录特有字段 ==========

    /** 退款单号（仅退款记录有） */
    private String outRefundNo;

    /** 退款发起人ID（仅退款记录有） */
    private String refundUserid;

    /** 退款备注（仅退款记录有） */
    private String refundComment;

    /** 退款发起时间（秒级时间戳，仅退款记录有） */
    private Long refundReqtime;

    /** 退款状态（仅退款记录有）：0-已申请，1-处理中，2-成功，3-关闭，4-异常，5-审批中，6-审批失败，7-审批取消 */
    private Integer refundStatus;

    /** 退款金额（单位：分，仅退款记录有） */
    private Integer refundFee;
}