package com.zhongshu.card.server.core.domain.pay;

import com.github.microservice.components.data.mongo.mongo.domain.SuperEntity;
import com.github.microservice.pay.client.model.ledger.TransactionLogModel;
import com.github.microservice.types.payment.PaymentType;
import com.zhongshu.card.client.model.pay.AttachFileModel;
import com.zhongshu.card.client.type.AuditStatus;
import com.zhongshu.card.client.type.WithdrawStatus;
import com.zhongshu.card.client.type.paySetting.WithdrawMethodType;
import com.zhongshu.card.client.type.paySetting.WithdrawType;
import com.zhongshu.card.server.core.domain.org.UserAccount;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;

import java.math.BigDecimal;
import java.util.List;

@Data
@Document
public class WithdrawOrder extends SuperEntity {

    @Schema(description = "项目oid")
    private String projectOid;

    @Schema(description = "机构oid")
    private String oid;

    @Schema(description = "支付渠道")
    private PaymentType paymentType;

    @Schema(description = "订单编号")
    private String orderNo;

    @Schema(description = "提现金额")
    private BigDecimal amount;

    @Schema(description = "实际到账")
    private BigDecimal receiveAmount;

    @Schema(description = "提现方式")
    private WithdrawMethodType withdrawMethodType;

    @Schema(description = "提现规则")
    private WithdrawType withdrawType;

    @Schema(description = "银行卡号")
    private String bankAccountNumber;

    @Schema(description = "附加信息")
    private String attachInfo;

    @Schema(description = "附件")
    private List<AttachFileModel> attachFile;

    @Schema(description = "审核状态")
    private AuditStatus auditStatus;

    @Schema(description = "提现状态")
    private WithdrawStatus withdrawStatus;

    @Schema(description = "提现状态说明")
    private String withdrawStatusDesc;

    @Schema(description = "发起人")
    private String withdrawUser;

    private String withdrawUserId;

    @Schema(description = "处理人")
    private String processUser;

    private String processUserId;

    @Schema(description = "处理时间")
    private Long processTime;

    @Schema(description = "冻结账单")
    private List<TransactionLogModel> frozenTransactionLogs;

    @Schema(description = "提现账单")
    private List<TransactionLogModel> withdrawTransactionLogs;

    @Schema(description = "排序")
    private Integer sort;

    @Schema(description = "关联提现返回结果")
    private Object expand;
}
