package com.gxwebsoft.house.param;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.TableField;
import com.gxwebsoft.common.core.annotation.QueryField;
import com.gxwebsoft.common.core.annotation.QueryType;
import com.gxwebsoft.common.core.web.BaseParam;
import com.fasterxml.jackson.annotation.JsonInclude;
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)
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(name = "HouseInfoParam对象", description = "房源信息表查询参数")
public class HouseInfoParam extends BaseParam {
  private static final long serialVersionUID = 1L;

  @Schema(description = "自增ID")
  @QueryField(type = QueryType.EQ)
  private Integer houseId;

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

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

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

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

  @Schema(description = "租金")
  @QueryField(type = QueryType.EQ)
  private BigDecimal rent;

  @Schema(description = "面积起始值")
  @QueryField(type = QueryType.GE)
  private Integer extentStart;

  @Schema(description = "面积结束值")
  @QueryField(type = QueryType.LE)
  private Integer extentEnd;

  @Schema(description = "月租金")
  @QueryField(type = QueryType.EQ)
  private BigDecimal monthlyRent;

  @Schema(description = "物业费")
  @QueryField(type = QueryType.EQ)
  private BigDecimal propertyFees;

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

  @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 files;

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

  @Schema(description = "到期时间")
  private String 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 String comments;

  @Schema(description = "是否实名认证")
  @QueryField(type = QueryType.EQ)
  private Integer authentication;

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

  @Schema(description = "排序号")
  @QueryField(type = QueryType.EQ)
  private Integer sortNumber;

  @Schema(description = "用户ID")
  @QueryField(type = QueryType.EQ)
  private Integer userId;

  @Schema(description = "是否删除, 0否, 1是")
  @QueryField(type = QueryType.EQ)
  private Integer deleted;

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

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

  @Schema(description = "价格起始值")
  @TableField(exist = false)
  private String priceScene;

  @Schema(description = "面积筛选")
  @TableField(exist = false)
  private String extentScene;

  @Schema(description = "排序")
  @TableField(exist = false)
  private String sortScene;

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

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

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

}
