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

import java.util.Date;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.payment.merchant.domain.BusMerchantFlows;
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;



/**
 * 商户流水视图对象 bus_merchant_flows
 *
 * @author LionLi
 * @date 2024-04-03
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusMerchantFlows.class)
public class BusMerchantFlowsVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
//    @ExcelProperty(value = "主键")
    @ExcelIgnore
    private Long id;


    /**
     * 商户id
     */
    @ExcelIgnore
    private Long merId;

    /**
     * 结算中心id
     */
    @ExcelIgnore
    private Long sydId;


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


    /**
     * 账单批次号
     */
    @ExcelProperty(value = "代发批次号")
    private String billNo;



    /**
     * 业务流水号(系统内部编号)
     */
    @ExcelProperty(value = "业务流水号")
    private String busNo;

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



    /**
     * 交易订单号
     */
    @ExcelProperty(value = "交易订单号")
    private String tranNo;



    /**
     * 付款方名称
     */
    @ExcelProperty(value = "付款方名称")
    private String payerName;

    /**
     * 付款方账号
     */
    @ExcelProperty(value = "付款方账号")
    private String payerAcc;



    /**
     * 收款方名称
     */
    @ExcelProperty(value = "收款方名称")
    private String payeeName;

    /**
     * 收款方账号
     */
    @ExcelProperty(value = "收款方账号")
    private String payeeAcc;







    /**
     * 业务类型（1:转账到个人、2:充值 3:转账到平台 4:转账到运营商 5:转账到服务商 6:服务商资金冻结 7:服务商资金解冻 8:运营商资金冻结 9:运营商资金解冻 10:代理商资金冻结 11:代理商资金解冻 12:转账到代理商余额）
     */
//    @ExcelProperty(value = "业务类型", converter = ExcelDictConvert.class)
    @ExcelIgnore
    @ExcelDictFormat(readConverterExp = "1=:转账到个人、2:充值,3=:转账到平台,4=:转账到运营商,5=:转账到服务商,6=:服务商资金冻结,7=:服务商资金解冻,8=:运营商资金冻结,9=:运营商资金解冻,1=0:代理商资金冻结,1=1:代理商资金解冻,1=2:转账到代理商余额")
    private Integer busType;

    /**
     * 支付通道（招行，交行，手动）
     */
    @ExcelProperty(value = "支付通道")
//    @ExcelDictFormat(readConverterExp = "招=行，交行，手动")
    private String channel;


    @ExcelProperty(value = "交易金额(元)")
    private String moneyStr;

    /**
     * 交易类型（1:转账 2:代发 3:提现 4:退回 5:冻结 6:解冻 7:充值）
     */
    @ExcelProperty(value = "交易类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=转账,2=代发,3=提现,4=退回,5=冻结,6=解冻,7=充值")
    private Integer tranType;

    /**
     * 交易状态（2:成功 3:失败）
     */
    @ExcelProperty(value = "交易状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "2=成功,3=失败")
    private Integer tranStatus;

    /**
     * 交易金额(分)
     */

    @ExcelIgnore
    private Long money;

    public String getMoneyStr() {
        return StringUtils.fenToYuanFormatter(this.money);
    }


    /**
     * 余额(分)
     */
//    @ExcelProperty(value = "余额(分)")
    @ExcelIgnore
    private Long balance;

    /**
     * 交易人
     */
//    @ExcelProperty(value = "交易人")
    @ExcelIgnore
    private String addBy;

    /**
     * 业务描述
     */
    @ExcelProperty(value = "业务描述")
    private String busDesc;



    /**
     * 账单id
     */
//    @ExcelProperty(value = "账单id")
    @ExcelIgnore
    private Long billId;

    /**
     * 账单明细id
     */
//    @ExcelProperty(value = "账单明细id")
    @ExcelIgnore
    private Long billDetailId;


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

    /**
     * 付款方id
     */
//    @ExcelProperty(value = "付款方id")
    @ExcelIgnore
    private Long payerId;


    /**
     * 付款方账号id
     */
//    @ExcelPropertyty(value = "付款方账号id")
    @ExcelIgnore
    private Long payerAccId;

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

    /**
     * 收款方id
     */
//    @ExcelProperty(value = "收款方id")
    @ExcelIgnore
    private Long payeeId;



    /**
     * 收款方账号id
     */
//    @ExcelProperty(value = "收款方账号id")
    @ExcelIgnore
    private Long payeeAccId;


    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

    /**
     * 回执单地址
     */
//    @ExcelProperty(value = "回执单地址")
    @ExcelIgnore
    private String payReceipt;

    /**
     * 回执单类型（1:B2B  2:B2C）
     */
//    @ExcelProperty(value = "回执单类型", converter = ExcelDictConvert.class)
//    @ExcelDictFormat(readConverterExp = "1=:B2B,2=:B2C")
    @ExcelIgnore
    private Integer payReceiptType;

    /**
     * 说明
     */
//    @ExcelProperty(value = "说明")
    @ExcelIgnore
    private String illustrate;


}
