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

import org.dromara.payment.common.domain.TranLog;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 交易记录业务对象 tran_log
 *
 * @author LionLi
 * @date 2024-04-11
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = TranLog.class, reverseConvertGenerate = false)
public class TranLogBo extends BaseEntity {

    /**
     * 交易记录id
     */
    @NotNull(message = "交易记录id不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 交易场景（1:任务 2:账单 3:代理商提现 4:运营商提现 5:服务商提现 6:商户提现）
     */
    @NotNull(message = "交易场景（1:任务 2:账单 3:代理商提现 4:运营商提现 5:服务商提现 6:商户提现）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long busType;

    /**
     * 交易项（1:商户转账到服务商B2B 2:服务商转账到运营商 3:服务商转账到平台 4:服务商转账到个人B2C 5:提现）
     */
    @NotNull(message = "交易项（1:商户转账到服务商B2B 2:服务商转账到运营商 3:服务商转账到平台 4:服务商转账到个人B2C 5:提现）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long busItem;

    /**
     * 交易场景id
扣除服务费:任务id
账单付款:账单明细id
     */
    @NotNull(message = "交易场景id 扣除服务费:任务id 账单付款:账单明细id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long buisId;

    /**
     * 交易批次
     */
    @NotBlank(message = "交易批次不能为空", groups = { AddGroup.class, EditGroup.class })
    private String busBatch;

    /**
     * 交易id
     */
    @NotNull(message = "交易id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long tranId;

    /**
     * 申请交易时间
     */
    @NotNull(message = "申请交易时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date addTime;

    /**
     * 交易结果（-1:待处理 1:支付中 2:成功 3:失败）
     */
    @NotNull(message = "交易结果（-1:待处理 1:支付中 2:成功 3:失败）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer tranResult;

    /**
     * 待处理批次
     */
    @NotBlank(message = "待处理批次不能为空", groups = { AddGroup.class, EditGroup.class })
    private String tranBatch;

    /**
     * 交易完成时间
     */
    @NotNull(message = "交易完成时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date tranTime;

    /**
     * 付款账户id
     */
    @NotNull(message = "付款账户id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long sourceAccId;

    /**
     * 付款账户类型（5：平台 6：服务商 7：运营商 8：代理商 9：商户 10：自雇者）
     */
    @NotNull(message = "付款账户类型（5：平台 6：服务商 7：运营商 8：代理商 9：商户 10：自雇者）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer sourceAccType;

    /**
     * 收款账户id
     */
    @NotNull(message = "收款账户id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long targetAccId;

    /**
     * 收款账户类型（5：平台 6：服务商 7：运营商 8：代理商 9：商户 10：自雇者）
     */
    @NotNull(message = "收款账户类型（5：平台 6：服务商 7：运营商 8：代理商 9：商户 10：自雇者）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer targetAccType;

    /**
     * 交易号(银行流水号)
     */
    @NotBlank(message = "交易号(银行流水号)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String bankNo;

    /**
     * 回执状态（0:待回置 1:已回置）
     */
    @NotNull(message = "回执状态（0:待回置 1:已回置）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer isCallback;


}
