package com.gxwebsoft.house.entity;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;

import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 房源信息表
 *
 * @author 科技小王子
 * @since 2025-03-05 13:47:14
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Schema(name = "HouseInfo对象", description = "房源信息表")
public class HouseInfo implements Serializable {
    private static final long serialVersionUID = 1L;

    @Schema(description = "自增ID")
    @TableId(value = "house_id", type = IdType.AUTO)
    private Integer houseId;

    @Schema(description = "房源标题")
    private String houseTitle;

    @Schema(description = "房源类型")
    private Integer type;

    @Schema(description = "房产所在的城市")
    private String cityByHouse;

    @Schema(description = "户型")
    private String houseType;

    @Schema(description = "租赁方式")
    private String leaseMethod;

    @Schema(description = "租金")
    private BigDecimal rent;

    @Schema(description = "租金单位")
    private String rentUnit;

    @Schema(description = "月租金")
    private BigDecimal monthlyRent;

    @Schema(description = "租金单位")
    private String monthlyRentUnit;

    @Schema(description = "佣金")
    private BigDecimal commission;

    @Schema(description = "物业费")
    private BigDecimal propertyFees;

    @Schema(description = "物业公司")
    private String propertyCompany;

    @Schema(description = "水费计费方式")
    private String waterBillingType;

    @Schema(description = "水费单价")
    private BigDecimal waterUnitPrice;

    @Schema(description = "电费计费方式")
    private String electricityBillingType;

    @Schema(description = "电费单价")
    private BigDecimal electricityUnitPrice;

    @Schema(description = "是否提供空调")
    private Boolean airConditioningAvailable;

    @Schema(description = "空调费用说明")
    private String airConditioningFee;

    @Schema(description = "是否可停车")
    private Boolean parkingAvailable;

    @Schema(description = "停车费用说明")
    private String parkingFee;

    @Schema(description = "面积")
    private String extent;

    @Schema(description = "面积")
    private String extentUnit;

    @Schema(description = "楼层")
    private String floor;

    @Schema(description = "卖价")
    private String salePrice;

    @Schema(description = "总价")
    private String totalPrice;

    @Schema(description = "房号")
    private String roomNumber;

    @Schema(description = "真实姓名")
    private String realName;

    @Schema(description = "联系电话")
    private String phone;

    @Schema(description = "进入房屋的密码")
    private String password;

    @Schema(description = "房屋朝向")
    private String toward;

    @Schema(description = "房屋标签")
    private String houseLabel;

    @Schema(description = "办公室配套")
    private String supporting;

    @Schema(description = "产权信息")
    private String property;

    @Schema(description = "房源视频")
    private String videoUrl;

    @Schema(description = "图片附件")
    private String files;

    @Schema(description = "房源介绍")
    private String content;

    @Schema(description = "到期时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime expirationTime;

    @Schema(description = "所在省份")
    private String province;

    @Schema(description = "所在城市")
    private String city;

    @Schema(description = "所在辖区")
    private String region;

    @Schema(description = "所在地区")
    private String area;

    @Schema(description = "详细地址")
    private String address;

    @Schema(description = "经度")
    private String longitude;

    @Schema(description = "纬度")
    private String latitude;

    @Schema(description = "是否推荐")
    private Integer recommend;

    @Schema(description = "是否必看")
    private Integer mustSee;

    @Schema(description = "是否可溢价")
    private String premium;

    @Schema(description = "租期")
    private String tenancy;

    @Schema(description = "备注")
    private String comments;

    @Schema(description = "是否实名认证")
    private Integer authentication;

    @Schema(description = "状态 10待审核 20驳回 30通过")
    private Integer status;

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

    @Schema(description = "用户ID")
    private Integer userId;

    @Schema(description = "用户手机号")
    @TableField(exist = false)
    private String userPhone;

    @Schema(description = "是否删除, 0否, 1是")
    @TableLogic
    private Integer deleted;

    @Schema(description = "租户id")
    private Integer tenantId;

    @Schema(description = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @Schema(description = "修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    @Schema(description = "昵称")
    @TableField(exist = false)
    private String nickname;

    @Schema(description = "用户头像")
    @TableField(exist = false)
    private String avatar;

    @Schema(description = "用户等级")
    @TableField(exist = false)
    private String gradeName;

    @Schema(description = "是否选中")
    @TableField(exist = false)
    private Boolean selected;

    @Schema(description = "是否喜欢")
    @TableField(exist = false)
    private Boolean liked;

}
