/* * Distributable under LGPL v3 license. * See terms of license at https://github.com/Yunfeng/schotel/blob/master/LICENSE */ package cn.buk.hotel.entity; import javax.persistence.*; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * @author yfdai * */ @Entity @Table(name="HotelInfo",uniqueConstraints=@UniqueConstraint(name="uk_hotel_info_hotel_code", columnNames={"hotelCode"} )) public class HotelInfo { @Id @GeneratedValue private int id; /** * 酒店信息提供方给出的的hotel id, * ctrip提供的hotelId和hotelCode是一样的 */ private int hotelId; @Column(length = 16) private String hotelCode = ""; @Column(length = 100) private String hotelName;// >酒店名称</HotelName> @Column(length=10) private String brandCode; //品牌代码 /** * 所属行政区域代码 */ private int areaId; /** * 城市编号 */ private int cityId; /** * 城市名称 */ @Column(length=50) private String cityName; @Column(length = 100) private String address;// >地址</Address> @Column(length = 10) private String postalCode;// >邮编</PostalCode> /** * 坐标类型 */ @Column(length=10) private String positionTypeCode; private double latitude;// >纬度</Latitude> private double longitude;// >经度</Longitude> /** * 建造日期 */ @Temporal(TemporalType.DATE) @Column(name="build_date") private Date buildDate; /** * 消费水平代码,比如4-代表奢侈消费 */ private Integer consumerLevel; /** * 标识该酒店是否有价格计划,没有价格计划的酒店在查找酒店预定时不显示 * 0: 默认值,不知道是否有价格计划 * 1:有价格计划 * -1: 使用接口查询过了,肯定没有价格计划 */ @Column(name="rateplan_status") private int ratePlanStatus; @OneToMany(mappedBy = "hotelInfo", cascade = {CascadeType.ALL}) private List<HotelAddressZone> hotelAddressZones; @OneToMany(mappedBy = "hotelInfo", cascade = {CascadeType.ALL}) private List<HotelServiceInfo> hotelServices; @OneToMany(mappedBy = "hotelInfo", cascade = {CascadeType.ALL}) private List<HotelAward> hotelAwards; @OneToMany(mappedBy = "hotelInfo", cascade = {CascadeType.ALL}) private List<HotelRelativePosition> relativePositions; /** * 房型列表 */ @OneToMany(mappedBy = "hotelInfo", cascade = {CascadeType.ALL}) private List<HotelGuestRoom> guestRooms; @OneToMany(mappedBy = "hotelInfo", cascade = {CascadeType.ALL}) private List<HotelRefPoint> refPoints; @OneToMany(mappedBy = "hotelInfo", cascade = {CascadeType.ALL}) private List<HotelMultimediaInfo> medias; /** * 数据来源 */ @Column(length = 10) private String source; @Column(insertable = false, updatable = false) @Temporal(TemporalType.TIMESTAMP) private Date lastupdate; /** * 用于显示符合条件的房型,价格等 */ @Transient private List<HotelRatePlan> ratePlans; public int addGuestRoom(HotelGuestRoom info) { for(HotelGuestRoom guestRoom: this.guestRooms) { if (guestRoom.getRoomTypeCode().equalsIgnoreCase(info.getRoomTypeCode())) return 0; } this.guestRooms.add(info); return 1; } public int addAddressZone(HotelAddressZone zone1) { for(HotelAddressZone zone: this.hotelAddressZones) { if (zone.getZoneCode() == zone1.getZoneCode()) return 0; } this.hotelAddressZones.add(zone1); return 1; } public int addHotelService(HotelServiceInfo info) { for(HotelServiceInfo serviceInfo: this.hotelServices) { if (serviceInfo.getServiceCode() == info.getServiceCode()) return 0; } this.hotelServices.add(info); return 1; } /** * 获取酒店星级 * @return */ public int getHotelStarRate() { int rate = 0; if (this.hotelAwards != null) { for (HotelAward award: this.hotelAwards) { if (award.getProvider().equalsIgnoreCase("HotelStarRate")) { rate = (int)award.getRating(); break; } } } return rate; } /** * 酒店的用户点评星级 * @return */ public float getHotelUserRate() { float rate = 0; if (this.hotelAwards != null) { for (HotelAward award: this.hotelAwards) { if (award.getProvider().equalsIgnoreCase("CtripUserRate")) { rate = award.getRating(); break; } } } return rate; } /** * @return the id */ public int getId() { return id; } /** * @param id * the id to set */ public void setId(int id) { this.id = id; } /** * @return the hotelName */ public String getHotelName() { return hotelName; } /** * @param hotelName * the hotelName to set */ public void setHotelName(String hotelName) { this.hotelName = hotelName; } /** * @return the hotelCode */ public String getHotelCode() { return hotelCode; } /** * @param hotelCode * the hotelCode to set */ public void setHotelCode(String hotelCode) { this.hotelCode = hotelCode; } /** * @return the cityName */ public String getCityName() { return cityName; } /** * @param cityName * the cityName to set */ public void setCityName(String cityName) { this.cityName = cityName; } /** * @return the address */ public String getAddress() { return address; } /** * @param address * the address to set */ public void setAddress(String address) { this.address = address; } /** * @return the postalCode */ public String getPostalCode() { return postalCode; } /** * @param postalCode * the postalCode to set */ public void setPostalCode(String postalCode) { this.postalCode = postalCode; } /** * @return the brandCode */ public String getBrandCode() { return brandCode; } /** * @param brandCode * the brandCode to set */ public void setBrandCode(String brandCode) { this.brandCode = brandCode; } /** * @return the lastupdate */ public Date getLastupdate() { return lastupdate; } /** * @param lastupdate * the lastupdate to set */ public void setLastupdate(Date lastupdate) { this.lastupdate = lastupdate; } public int getHotelId() { return hotelId; } public void setHotelId(int hotelId) { this.hotelId = hotelId; } public int getAreaId() { return areaId; } public void setAreaId(int areaId) { this.areaId = areaId; } public int getCityId() { return cityId; } public void setCityId(int cityId) { this.cityId = cityId; } public String getPositionTypeCode() { return positionTypeCode; } public void setPositionTypeCode(String positionTypeCode) { this.positionTypeCode = positionTypeCode; } public double getLatitude() { return latitude; } public void setLatitude(double latitude) { this.latitude = latitude; } public double getLongitude() { return longitude; } public void setLongitude(double longitude) { this.longitude = longitude; } public List<HotelAward> getHotelAwards() { if (hotelAwards == null) hotelAwards = new ArrayList<HotelAward>(); return hotelAwards; } public void setHotelAwards(List<HotelAward> hotelAwards) { this.hotelAwards = hotelAwards; } public List<HotelRelativePosition> getRelativePositions() { if (relativePositions == null) relativePositions = new ArrayList<HotelRelativePosition>(); return relativePositions; } public void setRelativePositions(List<HotelRelativePosition> relativePositions) { this.relativePositions = relativePositions; } public String getSource() { return source; } public void setSource(String source) { this.source = source; } public Date getBuildDate() { return buildDate; } public void setBuildDate(Date buildDate) { this.buildDate = buildDate; } public int getConsumerLevel() { return consumerLevel; } public void setConsumerLevel(int consumerLevel) { this.consumerLevel = consumerLevel; } public List<HotelServiceInfo> getHotelServices() { return hotelServices; } public void setHotelServices(List<HotelServiceInfo> hotelServices) { this.hotelServices = hotelServices; } public List<HotelGuestRoom> getGuestRooms() { return guestRooms; } public void setGuestRooms(List<HotelGuestRoom> guestRooms) { this.guestRooms = guestRooms; } public List<HotelRefPoint> getRefPoints() { return refPoints; } public void setRefPoints(List<HotelRefPoint> refPoints) { this.refPoints = refPoints; } public List<HotelMultimediaInfo> getMedias() { return medias; } public void setMedias(List<HotelMultimediaInfo> medias) { this.medias = medias; } public List<HotelAddressZone> getHotelAddressZones() { return hotelAddressZones; } public void setHotelAddressZones(List<HotelAddressZone> hotelAddressZones) { this.hotelAddressZones = hotelAddressZones; } public int getRatePlanStatus() { return ratePlanStatus; } public void setRatePlanStatus(int ratePlanStatus) { this.ratePlanStatus = ratePlanStatus; } public List<HotelRatePlan> getRatePlans() { return ratePlans; } public void setRatePlans(List<HotelRatePlan> ratePlans) { this.ratePlans = ratePlans; } }