const { DataTypes } = require('sequelize'); const sequelize = require('../config/db'); const Room = require('./Room'); const Renter = require('./Renter'); const Rental = sequelize.define('Rental', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, comment: '租赁记录ID' }, roomId: { type: DataTypes.INTEGER, allowNull: false, references: { model: Room, key: 'id' }, comment: '房间ID' }, renterId: { type: DataTypes.INTEGER, allowNull: false, references: { model: Renter, key: 'id' }, comment: '租客ID' }, startDate: { type: DataTypes.DATE, allowNull: false, comment: '开始日期' }, endDate: { type: DataTypes.DATE, allowNull: false, comment: '结束日期' }, paymentType: { type: DataTypes.ENUM('monthly', 'quarterly', 'half_year', 'yearly'), allowNull: false, defaultValue: 'monthly', comment: '付租方式(monthly:月租,quarterly:季租,half_year:半年租,yearly:年租)' }, rent: { type: DataTypes.DECIMAL(10, 2), allowNull: false, comment: '租金' }, deposit: { type: DataTypes.DECIMAL(10, 2), allowNull: true, comment: '押金' }, operator: { type: DataTypes.STRING(50), allowNull: true, comment: '经办人' }, status: { type: DataTypes.ENUM('active', 'expired', 'terminated'), allowNull: false, defaultValue: 'active', comment: '租约状态(active:生效中,expired:已到期,terminated:提前终止)' }, remark: { type: DataTypes.TEXT, allowNull: true, comment: '备注' }, createBy: { type: DataTypes.INTEGER, allowNull: true, comment: '创建人ID' }, createTime: { type: DataTypes.DATE, defaultValue: DataTypes.NOW, comment: '创建时间' }, updateBy: { type: DataTypes.INTEGER, allowNull: true, comment: '修改人ID' }, updateTime: { type: DataTypes.DATE, defaultValue: DataTypes.NOW, onUpdate: DataTypes.NOW, comment: '更新时间' }, tenantId: { type: DataTypes.INTEGER, allowNull: false, comment: '租户ID' }, isDeleted: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 0, comment: '删除状态(0:未删除,1:已删除)' } }, { tableName: 'rentals', timestamps: false, comment: '租赁表' }); // 建立关联 Rental.belongsTo(Room, { foreignKey: 'roomId' }); Rental.belongsTo(Renter, { foreignKey: 'renterId' }); module.exports = Rental;