package com.hrs.model.entity;

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

/**   
* Copyright: Copyright (c) 2026 chinasofti
* 
* @ClassName: Order.java
* @Description: 订单实体类
*
* @version: v1.0.0
* @author: 赵恒
* @date: 2026年4月13日 上午9:59:27 
*
* Modification History:
* Date         Author          Version            Description
*---------------------------------------------------------*
* 2026年4月13日     赵恒           v1.0.0               新建文件
*/
public class Order {
    
    private Long id;                // 主键ID
    private Long tenantId;          // 租客ID
    private Long houseId;           // 房源ID
    private String orderNo;         // 订单编号
    private Date rentStartTime;     // 租赁开始时间
    private Date rentEndTime;       // 租赁结束时间
    private BigDecimal totalRent;   // 总租金
    private String payStatus;       // 支付状态：0-待支付；1-已支付；2-已退款
    private String status;          // 订单状态：0-待签约；1-已签约；2-已结束；3-已取消
    private String createBy;        // 创建人
    private Date createTime;        // 创建时间
    private String updateBy;        // 更新人
    private Date updateTime;        // 更新时间
    
    // 关联字段（不存数据库）
    private House house;            // 房源详情
    private User tenant;            // 租客信息
    private User landlord;          // 房东信息
    /**
     * 
    * @Function: Order
    * @Description: 无参构造方法
    *
    * @param: 无
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:08:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */    
    public Order() {
    }   
    /**
     * 
    * @Function: getId
    * @Description: 获取主键ID
    *
    * @param: 无
    * @return：Long 主键ID
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:08:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */    
    public Long getId() {
        return id;
    }
    /**
     * 
    * @Function: setId
    * @Description: 设置主键ID
    *
    * @param: id 主键ID
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:08:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */	    
    public void setId(Long id) {
        this.id = id;
    }
    /**
     * 
    * @Function: getTenantId
    * @Description: 获取租客ID
    *
    * @param: 无
    * @return：Long 租客ID
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:09:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public Long getTenantId() {
        return tenantId;
    }
    /**
     * 
    * @Function: setTenantId
    * @Description: 设置租客ID
    *
    * @param: tenantId 租客ID
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:09:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public void setTenantId(Long tenantId) {
        this.tenantId = tenantId;
    }
    /**
     * 
    * @Function: getHouseId
    * @Description: 获取房源ID
    *
    * @param: 无
    * @return：Long 房源ID
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:09:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public Long getHouseId() {
        return houseId;
    }
    /**
     * 
    * @Function: setHouseId
    * @Description: 设置房源ID
    *
    * @param: houseId 房源ID
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:09:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public void setHouseId(Long houseId) {
        this.houseId = houseId;
    }
    /**
     * 
    * @Function: getOrderNo
    * @Description: 获取订单编号
    *
    * @param: 无
    * @return：String 订单编号
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:10:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public String getOrderNo() {
        return orderNo;
    }
    /**
     * 
    * @Function: setOrderNo
    * @Description: 设置订单编号
    *
    * @param: orderNo 订单编号
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:10:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }
    /**
     * 
    * @Function: getRentStartTime
    * @Description: 获取租赁开始时间
    *
    * @param: 无
    * @return：Date 租赁开始时间
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:10:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public Date getRentStartTime() {
        return rentStartTime;
    }
    /**
     * 
    * @Function: setRentStartTime
    * @Description: 设置租赁开始时间
    *
    * @param: rentStartTime 租赁开始时间
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:10:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public void setRentStartTime(Date rentStartTime) {
        this.rentStartTime = rentStartTime;
    }
    /**
     * 
    * @Function: getRentEndTime
    * @Description: 获取租赁结束时间
    *
    * @param: 无
    * @return：Date 租赁结束时间
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:11:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public Date getRentEndTime() {
        return rentEndTime;
    }
    /**
     * 
    * @Function: setRentEndTime
    * @Description: 设置租赁结束时间
    *
    * @param: rentEndTime 租赁结束时间
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:11:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public void setRentEndTime(Date rentEndTime) {
        this.rentEndTime = rentEndTime;
    }
    /**
     * 
    * @Function: getTotalRent
    * @Description: 获取总租金
    *
    * @param: 无
    * @return：BigDecimal 总租金
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:11:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public BigDecimal getTotalRent() {
        return totalRent;
    }
    /**
     * 
    * @Function: setTotalRent
    * @Description: 设置总租金
    *
    * @param: totalRent 总租金
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:11:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public void setTotalRent(BigDecimal totalRent) {
        this.totalRent = totalRent;
    }
    /**
     * 
    * @Function: getPayStatus
    * @Description: 获取支付状态
    *
    * @param: 无
    * @return：String 支付状态（0-待支付；1-已支付；2-已退款）
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:12:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public String getPayStatus() {
        return payStatus;
    }
    /**
     * 
    * @Function: setPayStatus
    * @Description: 设置支付状态
    *
    * @param: payStatus 支付状态（0-待支付；1-已支付；2-已退款）
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:12:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public void setPayStatus(String payStatus) {
        this.payStatus = payStatus;
    }
    /**
     * 
    * @Function: getPayStatusText
    * @Description: 获取支付状态文本
    *
    * @param: 无
    * @return：String 支付状态文本
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:09:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */    
    public String getPayStatusText() {
        switch (payStatus) {
            case "0": return "待支付";
            case "1": return "已支付";
            case "2": return "已退款";
            default: return "未知";
        }
    }
    /**
     * 
    * @Function: getStatus
    * @Description: 获取订单状态
    *
    * @param: 无
    * @return：String 订单状态（0-待签约；1-已签约；2-已结束；3-已取消）
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:12:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public String getStatus() {
        return status;
    }
    /**
     * 
    * @Function: setStatus
    * @Description: 设置订单状态
    *
    * @param: status 订单状态（0-待签约；1-已签约；2-已结束；3-已取消）
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:13:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public void setStatus(String status) {
        this.status = status;
    }
    /**
     * 
    * @Function: getStatusText
    * @Description: 获取订单状态文本
    *
    * @param: 无
    * @return：String 订单状态文本
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:09:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */   
    public String getStatusText() {
        switch (status) {
            case "0": return "待签约";
            case "1": return "已签约";
            case "2": return "已结束";
            case "3": return "已取消";
            default: return "未知";
        }
    }
    /**
     * 
    * @Function: getCreateBy
    * @Description: 获取创建人
    *
    * @param: 无
    * @return：String 创建人
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:13:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public String getCreateBy() {
        return createBy;
    }
    /**
     * 
    * @Function: setCreateBy
    * @Description: 设置创建人
    *
    * @param: createBy 创建人
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:13:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }
    /**
     * 
    * @Function: getCreateTime
    * @Description: 获取创建时间
    *
    * @param: 无
    * @return：Date 创建时间
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:14:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public Date getCreateTime() {
        return createTime;
    }
    /**
     * 
    * @Function: setCreateTime
    * @Description: 设置创建时间
    *
    * @param: createTime 创建时间
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:14:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    /**
     * 
    * @Function: getUpdateBy
    * @Description: 获取更新人
    *
    * @param: 无
    * @return：String 更新人
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:14:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public String getUpdateBy() {
        return updateBy;
    }
    /**
     * 
    * @Function: setUpdateBy
    * @Description: 设置更新人
    *
    * @param: updateBy 更新人
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:14:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public void setUpdateBy(String updateBy) {
        this.updateBy = updateBy;
    }
    /**
     * 
    * @Function: getUpdateTime
    * @Description: 获取更新时间
    *
    * @param: 无
    * @return：Date 更新时间
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:15:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */   
    public Date getUpdateTime() {
        return updateTime;
    }
    /**
     * 
    * @Function: setUpdateTime
    * @Description: 设置更新时间
    *
    * @param: updateTime 更新时间
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:15:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    /**
     * 
    * @Function: getHouse
    * @Description: 获取房源详情
    *
    * @param: 无
    * @return：House 房源对象
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:15:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public House getHouse() {
        return house;
    }
    /**
     * 
    * @Function: setHouse
    * @Description: 设置房源详情
    *
    * @param: house 房源对象
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:15:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public void setHouse(House house) {
        this.house = house;
    }
    /**
     * 
    * @Function: getTenant
    * @Description: 获取租客信息
    *
    * @param: 无
    * @return：User 租客对象
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:16:00 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public User getTenant() {
        return tenant;
    }
    /**
     * 
    * @Function: setTenant
    * @Description: 设置租客信息
    *
    * @param: tenant 租客对象
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:16:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */    
    public void setTenant(User tenant) {
        this.tenant = tenant;
    }
    /**
     * 
    * @Function: getLandlord
    * @Description: 获取房东信息
    *
    * @param: 无
    * @return：User 房东对象
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:16:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */   
    public User getLandlord() {
        return landlord;
    }
    /**
     * 
    * @Function: setLandlord
    * @Description: 设置房东信息
    *
    * @param: landlord 房东对象
    * @return：无
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 李洪涛
    * @date: 2025年4月13日 下午3:16:45 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     李洪涛           			v1.0.0                             新建方法
     */   
    public void setLandlord(User landlord) {
        this.landlord = landlord;
    }
    
    /**
     * 
    * @Function: getRentDays
    * @Description: 计算租赁天数
    *
    * @param: 无
    * @return：int 租赁天数
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:10:15 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */
    public int getRentDays() {
        if (rentStartTime == null || rentEndTime == null) {
            return 0;
        }
        long diff = rentEndTime.getTime() - rentStartTime.getTime();
        return (int) (diff / (1000 * 60 * 60 * 24));
    }
    /**
     * 
    * @Function: toString
    * @Description: 重写toString方法
    *
    * @param: 无
    * @return：String 对象字符串表示
    * @throws：无
    *
    * @version: v1.0.0
    * @author: 赵恒
    * @date: 2025年4月13日 下午3:10:30 
    *
    * Modification History:
    * Date         Author          Version            Description
    *---------------------------------------------------------*
    * 2025年4月13日     赵恒           			v1.0.0                             新建方法
     */   
    @Override
    public String toString() {
        return "Order{" +
                "id=" + id +
                ", orderNo='" + orderNo + '\'' +
                ", totalRent=" + totalRent +
                ", status='" + status + '\'' +
                '}';
    }
}