package com.huiju.estateagents.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.huiju.estateagents.center.taUser.entity.TaUser;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 认筹单(认筹记录表)
 * </p>
 *
 * @author jobob
 * @since 2020-02-26
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class TaRaiseRecord implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 认筹记录表
     */
    @TableId(value = "raise_record_id", type = IdType.AUTO)
    private Integer raiseRecordId;

    /**
     * 公司id
     */
    private Integer orgId;

    /**
     * 楼盘id
     */
    private String buildingId;

    /**
     * 认筹id
     */
    private String raiseId;

    /**
     * 销售批次id
     */
    private String salesBatchId;

    /**
     * 认筹人
     */
    private String personId;

    /**
     * 认筹人姓名
     */
    private String personName;

    /**
     * 房源数
     */
    private Integer houseNum;

    /**
     * 认筹的房源锁定状态 locked已锁定unlocked未锁定
     */
    private String houseLockingStatus;

    /**
     * 账户手机号
     */
    private String tel;

    /**
     * 置业顾问id
     */
    private Integer userId;

    /**
     * 置业顾问姓名
     */
    private String userName;

    /**
     * 是否作废
     */
    private Integer status;

    /**
     * 作废原因
     */
    private String invalidReason;

    /**
     * 缴费状态 unpaid未缴费paid已缴费refunded已退费
     */
    private String payStatus;

    /**
     * 缴费方式 onLine线上offLine线下
     */
    private String payType;

    /**
     * 退费原因
     */
    private String refundReason;

    /**
     * 退费失败原因
     */
    private String refundFailReason;

    /**
     * 创建时间
     */
    private LocalDateTime createDate;

    /**
     * 更新时间
     */
    private LocalDateTime updateDate;

    /**
     * 更新人
     */
    private String updateUserName;

    /**
     * 身份证号
     */
    private String idcard;

    /**
     * 姓名
     */
    private String name;

    /**
     * 订单id
     */
    private Integer orderId;

    /**
     * 用户手机号
     */
    @TableField(exist = false)
    private String personTel;

    /**
     * 用户昵称
     */
    @TableField(exist = false)
    private String nickname;

    /**
     * 用户头像
     */
    @TableField(exist = false)
    private String avatarurl;

    /**
     * 支付时间
     */
    @TableField(exist = false)
    private LocalDateTime payTime;

    /**
     * 微信订单号
     */
    @TableField(exist = false)
    private String tradeNo;

    /**
     * 微信订单号
     */
    @TableField(exist = false)
    private String transactionId;

    /**
     * 微信退款单号
     */
    @TableField(exist = false)
    private String refundNo;

    /**
     * 实付金额
     */
    @TableField(exist = false)
    private String totalFee;

    /**
     * 小程序端提交的房源的id的集合
     */
    @TableField(exist = false)
    private List<Integer> houseList = new ArrayList<>();

    /**
     * 房源信息列表
     */
    @TableField(exist = false)
    private List<TaHousingResources> taHousingResourcesList = new ArrayList<>();

    /**
     * 认筹单列表
     */
    @TableField(exist = false)
    private List<TaRaiseRecord> taRaiseRecords;

    /**
     * 房源信息数
     */
    @TableField(exist = false)
    private Integer taHousingResourcesSize;

    /**
     * 户型名称
     */
    @TableField(exist = false)
    private String apartmentName;

    /**
     * 户型图列表列表
     */
    @TableField(exist = false)
    private List<TaBuildingImg> buildingImgList = new ArrayList<>();

    /**
     * 置业顾问信息
     */
    @TableField(exist = false)
    private TaUser consultantInfo;

    /**
     * 验证码
     *
     */
    @TableField(exist = false)
    private String captcha;

    /**
     * 订单id
     */
    @TableField(exist = false)
    private Integer refundedOrderId;

    /**
     * 是否展示签署合同 1是 0否
     */
    @TableField(exist = false)
    private Integer showContract;
}
