package com.hotwj.platform.operationManagement.invoiceManage.domain;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.mybatis.core.domain.BaseEntity;

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

/**
 * 发票管理对象 hot_invoice_manage
 *
 * @author shihongwei
 * @date 2026-05-06
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("hot_invoice_manage")
public class HotInvoiceManage extends BaseEntity {

    @Serial
    private static final long serialVersionUID = 1L;

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

    /**
     * 公司ID（应用层保证必填）
     */
    private Long companyId;

    /**
     * 订单ID（逻辑外键）
     */
    private Long orderId;

    /**
     * 订单号
     */
    private String orderNo;

    /**
     * 购买者企业ID
     */
    private Long buyerCompanyId;

    /**
     * 购买者（企业名称）
     */
    private String buyerCompanyName;

    /**
     * 订单类型：1=拓客订单 2=学习订单 3=短信订单 4=岗前培训订单 5=其他
     */
    private Long orderType;

    /**
     * 订单金额（元）
     */
    private Long orderAmount;

    /**
     * 支付方式：1=微信 2=支付宝 3=银行卡 4=余额
     */
    private Long payMethod;

    /**
     * 支付时间
     */
    private Date payTime;

    /**
     * 开票金额（元）
     */
    private Long invoiceAmount;

    /**
     * 发票类型：1=增值税电子普通发票 2=增值税电子专用发票
     */
    private Long invoiceType;

    /**
     * 发票抬头
     */
    private String invoiceTitle;

    /**
     * 税号
     */
    private String taxNo;

    /**
     * 开户银行
     */
    private String bankName;

    /**
     * 银行账号
     */
    private String bankAccount;

    /**
     * 企业地址
     */
    private String companyAddress;

    /**
     * 企业电话
     */
    private String companyPhone;

    /**
     * 开票状态：1=未开票 2=申请开票 3=已开票 4=驳回 5=已作废
     */
    private Long invoiceStatus;

    /**
     * 申请时间
     */
    private Date applyTime;

    /**
     * 开票时间
     */
    private Date invoiceTime;

    /**
     * 发票代码
     */
    private String invoiceCode;

    /**
     * 发票号码（可按年月+随机号）
     */
    private String invoiceNo;

    /**
     * 电子发票文件URL
     */
    private String invoiceUrl;

    /**
     * 驳回原因
     */
    private String rejectReason;

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

    /**
     * 0=正常, 1=已删除
     */
    @TableLogic
    private Long isDeleted;


}
