package com.tourism.webadmin.back.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.tourism.common.core.base.vo.BaseVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

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

/**
 * 买卖房屋信息管理VO视图对象。
 *
 * @author 吃饭睡觉
 * @date 2024-09-06
 */
@Schema(description = "买卖房屋信息管理VO视图对象")
@Data
@EqualsAndHashCode(callSuper = true)
public class TourHouseSaleInfoVo extends BaseVo {

    /**
     * 主键。
     */
    @Schema(description = "主键")
    private String id;

    /**
     * 所属地区类型。
     */
    @Schema(description = "所属地区类型")
    private Long areaId;


    /**
     * 是否房东自售 0不是 1是。
     */
    @Schema(description = "是否房东自售 0不是 1是")
    private Integer isSaleByLandlord;

    /**
     * 房源类型 0新房 1二手房。
     */
    @Schema(description = "房源类型 0新房 1二手房")
    private Integer houseSourceType;

    /**
     * 总价。
     */
    @Schema(description = "总价")
    private BigDecimal totalPrice;

    /**
     * 厅室类型。
     */
    @Schema(description = "厅室类型")
    private String officeType;

    /**
     * 面积。
     */
    @Schema(description = "面积")
    private Integer area;

    /**
     * 房屋类型 别墅、公寓...。
     */
    @Schema(description = "房屋类型 别墅、公寓...")
    private Integer houseType;

    /**
     * 朝向类型。
     */
    @Schema(description = "朝向类型")
    private Integer orientation;

    /**
     * 所在楼层。
     */
    @Schema(description = "所在楼层")
    private Integer currentFloor;

    /**
     * 装修类型。
     */
    @Schema(description = "装修类型")
    private Integer decoration;

    /**
     * 房龄。
     */
    @Schema(description = "房龄")
    private Integer houseAge;

    /**
     * 楼盘名称/所属小区。
     */
    @Schema(description = "楼盘名称/所属小区")
    private String communityName;

    /**
     * 地址。
     */
    @Schema(description = "地址")
    private String address;

    /**
     * 均价。
     */
    @Schema(description = "均价")
    private BigDecimal averagePrice;

    /**
     * 货币单位。
     */
    @Schema(description = "货币单位")
    private String currency;

    /**
     * 所属区域。
     */
    @Schema(description = "所属区域")
    private String region;

    /**
     * 首页封面图。
     */
    @Schema(description = "首页封面图")
    private String coverUrl;

    /**
     * 是否在售 0待售 1在售。
     */
    @Schema(description = "是否在售 0待售 1在售")
    private Integer isOnSale;

    /**
     * 房屋标题。
     */
    @Schema(description = "房屋标题")
    private String houseTitle;

    /**
     * 总楼层。
     */
    @Schema(description = "总楼层")
    private Integer totalFloor;

    /**
     * 建造年份。
     */
    @Schema(description = "建造年份")
    private Date yearOfBuild;

    /**
     * 房屋标签。
     */
    @Schema(description = "房屋标签")
    private String tag;

    /**
     * 竣工年份。
     */
    @Schema(description = "竣工年份")
    private Date yearOfFinish;

    /**
     * 开发商id。
     */
    @Schema(description = "开发商id")
    private Long developersId;

    /**
     * 二维码。
     */
    @Schema(description = "二维码")
    private String code;

    /**
     * 联系电话。
     */
    @Schema(description = "联系电话")
    private String mobile;

    /**
     * 产权性质。
     */
    @Schema(description = "产权性质")
    private String propertyRightNature;

    /**
     * 产权年限。
     */
    @Schema(description = "产权年限")
    private String termOfOwnership;

    /**
     * 物业类型。
     */
    @Schema(description = "物业类型")
    private String propertyType;

    /**
     * 房本年限。
     */
    @Schema(description = "房本年限")
    private String housePrincipalLife;

    /**
     * 是否唯一住房 0是 1不是。
     */
    @Schema(description = "是否唯一住房 0是 1不是")
    private Integer isSoleDwelling;

    /**
     * 发布公司。
     */
    @Schema(description = "发布公司")
    private String publishingCompany;

    /**
     * 营业执照。
     */
    @Schema(description = "营业执照")
    private String businessLicense;

    /**
     * 发布日期。
     */
    @Schema(description = "发布日期")
    private Date releaseDate;

    /**
     * 开盘时间。
     */
    @Schema(description = "开盘时间")
    private Date openingTime;

    /**
     * 交房时间。
     */
    @Schema(description = "交房时间")
    private Date handingTime;

    /**
     * 周边配套描述。
     */
    @Schema(description = "周边配套描述")
    private String surroundingSupport;

    /**
     * 小区介绍。
     */
    @Schema(description = "小区介绍")
    private String plotIntroduction;

    /**
     * 热度值。
     */
    @Schema(description = "热度值")
    private Integer hotValue;

    /**
     * 房屋图集。
     */
    @Schema(description = "房屋图集")
    private String houseUrl;

    /**
     * 周边配套图集。
     */
    @Schema(description = "周边配套图集")
    private String surroundingsUrl;

    /**
     * 小区介绍图集。
     */
    @Schema(description = "小区介绍图集")
    private String introductionUrl;

//    /**
//     * TourHouseFiles 的一对多关联表数据对象。数据对应类型为TourHouseFiles。
//     */
//    @Schema(description = "TourHouseFiles 的一对多关联表数据对象。数据对应类型为TourHouseFiles")
//    private List<Map<String, Object>> tourHouseFilesList;
//
//    /**
//     * developersId 的一对一关联数据对象，数据对应类型为TourHouseDevelopersTypeVo。
//     */
//    @Schema(description = "developersId 的一对一关联数据对象，数据对应类型为TourHouseDevelopersTypeVo")
//    private Map<String, Object> tourHouseDevelopersType;

    /**
     * TourHouseFiles 的一对多关联表数据对象。数据对应类型为TourHouseFiles。
     */
    @Schema(description = "TourHouseFiles 的一对多关联表数据对象。数据对应类型为TourHouseFiles")
    private List<Map<String, Object>> tourHouseFilesList;

    /**
     * TourHouseAdvisorInfo 的一对多关联表数据对象。数据对应类型为TourHouseAdvisorInfo。
     */
    @Schema(description = "TourHouseAdvisorInfo 的一对多关联表数据对象。数据对应类型为TourHouseAdvisorInfo")
    private List<Map<String, Object>> tourHouseAdvisorInfoList;

    /**
     * developersId 的一对一关联数据对象，数据对应类型为TourHouseDevelopersTypeVo。
     */
    @Schema(description = "developersId 的一对一关联数据对象，数据对应类型为TourHouseDevelopersTypeVo")
    private Map<String, Object> tourHouseDevelopersType;


    /**
     * areaId 字典关联数据。
     */
    @Schema(description = "areaId 字典关联数据")
    private Map<String, Object> areaIdDictMap;

    /**
     * developersId 字典关联数据。
     */
    @Schema(description = "developersId 字典关联数据")
    private Map<String, Object> developersIdDictMap;

    /**
     * isSaleByLandlord 常量字典关联数据。
     */
    @Schema(description = "isSaleByLandlord 常量字典关联数据")
    private Map<String, Object> isSaleByLandlordDictMap;

    /**
     * isOnSale 常量字典关联数据。
     */
    @Schema(description = "isOnSale 常量字典关联数据")
    private Map<String, Object> isOnSaleDictMap;

    /**
     * isSoleDwelling 常量字典关联数据。
     */
    @Schema(description = "isSoleDwelling 常量字典关联数据")
    private Map<String, Object> isSoleDwellingDictMap;

    /**
     * houseSourceType 全局字典关联数据。
     */
    @Schema(description = "houseSourceType 全局字典关联数据")
    private Map<String, Object> houseSourceTypeDictMap;

    /**
     * officeType 全局字典关联数据。
     */
    @Schema(description = "officeType 全局字典关联数据")
    private Map<String, Object> officeTypeDictMap;

    /**
     * houseType 全局字典关联数据。
     */
    @Schema(description = "houseType 全局字典关联数据")
    private Map<String, Object> houseTypeDictMap;

    /**
     * orientation 全局字典关联数据。
     */
    @Schema(description = "orientation 全局字典关联数据")
    private Map<String, Object> orientationDictMap;

    /**
     * decoration 全局字典关联数据。
     */
    @Schema(description = "decoration 全局字典关联数据")
    private Map<String, Object> decorationDictMap;

    @TableField(exist = false)
    private String coverUrlsAfterConvert;
}
