package org.dromara.payment.common.domain.vo;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.payment.common.domain.TranLog;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;



/**
 * 交易记录视图对象 tran_log
 *
 * @author LionLi
 * @date 2024-04-11
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = TranLog.class)
public class TranLogVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 交易记录id
     */
    @ExcelProperty(value = "交易记录id")
    private Long id;

    /**
     * 交易场景（1:任务 2:账单 3:代理商提现 4:运营商提现 5:服务商提现 6:商户提现）
     */
    @ExcelProperty(value = "交易场景", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=:任务,2=:账单,3=:代理商提现,4=:运营商提现,5=:服务商提现,6=:商户提现")
    private Long busType;

    /**
     * 交易项（1:商户转账到服务商B2B 2:服务商转账到运营商 3:服务商转账到平台 4:服务商转账到个人B2C 5:提现）
     */
    @ExcelProperty(value = "交易项", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=:商户转账到服务商B2B,2=:服务商转账到运营商,3=:服务商转账到平台,4=:服务商转账到个人B2C,5=:提现")
    private Long busItem;

    /**
     * 交易场景id
扣除服务费:任务id
账单付款:账单明细id
     */
    @ExcelProperty(value = "交易场景id 扣除服务费:任务id 账单付款:账单明细id")
    private Long buisId;

    /**
     * 交易批次
     */
    @ExcelProperty(value = "交易批次")
    private String busBatch;

    /**
     * 交易id
     */
    @ExcelProperty(value = "交易id")
    private Long tranId;

    /**
     * 申请交易时间
     */
    @ExcelProperty(value = "申请交易时间")
    private Date addTime;

    /**
     * 交易结果（-1:待处理 1:支付中 2:成功 3:失败）
     */
    @ExcelProperty(value = "交易结果", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "-=1:待处理,1=:支付中,2=:成功,3=:失败")
    private Integer tranResult;

    /**
     * 待处理批次
     */
    @ExcelProperty(value = "待处理批次")
    private String tranBatch;

    /**
     * 交易完成时间
     */
    @ExcelProperty(value = "交易完成时间")
    private Date tranTime;

    /**
     * 付款账户id
     */
    @ExcelProperty(value = "付款账户id")
    private Long sourceAccId;

    /**
     * 付款账户类型（5：平台 6：服务商 7：运营商 8：代理商 9：商户 10：自雇者）
     */
    @ExcelProperty(value = "付款账户类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "5=：平台,6=：服务商,7=：运营商,8=：代理商,9=：商户,1=0：自雇者")
    private Integer sourceAccType;

    /**
     * 收款账户id
     */
    @ExcelProperty(value = "收款账户id")
    private Long targetAccId;

    /**
     * 收款账户类型（5：平台 6：服务商 7：运营商 8：代理商 9：商户 10：自雇者）
     */
    @ExcelProperty(value = "收款账户类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "5=：平台,6=：服务商,7=：运营商,8=：代理商,9=：商户,1=0：自雇者")
    private Integer targetAccType;

    /**
     * 交易号(银行流水号)
     */
    @ExcelProperty(value = "交易号(银行流水号)")
    private String bankNo;

    /**
     * 回执状态（0:待回置 1:已回置）
     */
    @ExcelProperty(value = "回执状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=:待回置,1=:已回置")
    private Integer isCallback;

    /**
     * 交易订单号
     */
    private String tranNo;
}
