package org.dromara.payment.sys.domain;

import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;

import java.io.Serial;

/**
 * 服务商流水对象 sys_syd_flows
 *
 * @author LionLi
 * @date 2024-03-26
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_syd_flows")
public class SysSydFlows extends BaseEntity {

    @Serial
    private static final long serialVersionUID = 1L;

    public SysSydFlows(){}

    public SysSydFlows(Integer direction,Long sydId, Integer busType, String channel, String busNo, String bankNo, Long money, Date addTime, String addBy, String busDesc, String billNo, Long billId, Long billDetailId, String tranNo, Integer tranType, Integer tranStatus, Integer payerType, Long payerId, String payerName, String payerAcc, Long payerAccId, Integer payeeType, Long payeeId, String payeeName, String payeeAcc, Long payeeAccId, String remark, Integer payReceiptType) {
        this.sydId = sydId;
        this.busType = busType;
        this.channel = channel;
        this.busNo = busNo;
        this.bankNo = bankNo;
        this.money = money;
        this.direction = direction;
        this.addTime = addTime;
        this.addBy = addBy;
        this.busDesc = busDesc;
        this.billNo = billNo;
        this.billId = billId;
        this.billDetailId = billDetailId;
        this.tranNo = tranNo;
        this.tranType = tranType;
        this.tranStatus = tranStatus;
        this.payerType = payerType;
        this.payerId = payerId;
        this.payerName = payerName;
        this.payerAcc = payerAcc;
        this.payerAccId = payerAccId;
        this.payeeType = payeeType;
        this.payeeId = payeeId;
        this.payeeName = payeeName;
        this.payeeAcc = payeeAcc;
        this.payeeAccId = payeeAccId;
        this.remark = remark;
        this.payReceiptType = payReceiptType;
    }

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

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

    /**
     * 业务类型（1:转账到个人、2:充值 3:转账到平台 4:转账到运营商 5:转账到服务商 6:服务商资金冻结 7:服务商资金解冻 8:运营商资金冻结 9:运营商资金解冻 10:代理商资金冻结 11:代理商资金解冻 12:转账到代理商余额）
     */
    private Integer busType;

    /**
     * 支付通道（招行，交行，手动）
     */
    private String channel;

    /**
     * 业务流水号(系统内部编号)
     */
    private String busNo;

    /**
     * 三方流水号(银行流水号)
     */
    private String bankNo;

    /**
     * 交易金额(分)
     */
    private Long money;

    /**
     * 余额(分)
     */
    private Long balance;

    /**
     * 流水方向（0:无变动 1:收入 2:支出）
     */
    private transient Integer direction;

    /**
     * 交易时间
     */
    private Date addTime;

    /**
     * 交易人
     */
    private String addBy;

    /**
     * 业务描述
     */
    private String busDesc;

    /**
     * 账单批次号
     */
    private String billNo;

    /**
     * 账单id
     */
    private Long billId;

    /**
     * 账单明细id
     */
    private Long billDetailId;

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

    /**
     * 交易类型（1:转账 2:代发 3:提现 4:退回 5:冻结 6:解冻 7:充值）
     */
    private Integer tranType;

    /**
     * 交易状态（2:成功 3:失败）
     */
    private Integer tranStatus;

    /**
     * 付款方（5：平台 6：服务商 7：运营商 8：代理商 9：商户 10：自雇者）
     */
    private Integer payerType;

    /**
     * 付款方id
     */
    private Long payerId;

    /**
     * 付款方名称
     */
    private String payerName;

    /**
     * 付款方账号
     */
    private String payerAcc;

    /**
     * 付款方账号id
     */
    private Long payerAccId;

    /**
     * 收款方（5：平台 6：服务商 7：运营商 8：代理商 9：商户 10：自雇者）
     */
    private Integer payeeType;

    /**
     * 收款方id
     */
    private Long payeeId;

    /**
     * 收款方名称
     */
    private String payeeName;

    /**
     * 收款方账号
     */
    private String payeeAcc;

    /**
     * 收款方账号id
     */
    private Long payeeAccId;

    /**
     * 备注
     */
    private String remark;

    /**
     * 回执单地址
     */
    private String payReceipt;

    /**
     * 回执单类型（1:B2B  2:B2C）
     */
    private Integer payReceiptType;


}
