const { Contract, Room, Tenant, Apartment, Region } = require('../models'); // 格式化时间(考虑时区,转换为北京时间) const formatDate = (date) => { if (!date) return null; // 创建一个新的Date对象,加上8小时的时区偏移 const beijingDate = new Date(date.getTime() + 8 * 60 * 60 * 1000); return beijingDate.toISOString().split('T')[0]; }; // 格式化合同数据 const formatContractData = (contract) => { const formattedContract = { ...contract.toJSON(), startDate: formatDate(contract.startDate), endDate: formatDate(contract.endDate), createTime: formatDate(contract.createTime) }; // 格式化关联数据 if (formattedContract.Room) { formattedContract.Room = { ...formattedContract.Room, createTime: formatDate(formattedContract.Room.createTime) }; if (formattedContract.Room.Apartment) { formattedContract.Room.Apartment = { ...formattedContract.Room.Apartment, createTime: formatDate(formattedContract.Room.Apartment.createTime) }; if (formattedContract.Room.Apartment.Region) { formattedContract.Room.Apartment.Region = { ...formattedContract.Room.Apartment.Region, createTime: formatDate(formattedContract.Room.Apartment.Region.createTime) }; } } } if (formattedContract.Tenant) { formattedContract.Tenant = { ...formattedContract.Tenant, createTime: formatDate(formattedContract.Tenant.createTime) }; } return formattedContract; }; // 获取所有合同 const getAllContracts = async (req, res) => { try { const contracts = await Contract.findAll({ include: [ { model: Room, include: [ { model: Apartment, include: [Region] } ] }, Tenant ] }); const formattedContracts = contracts.map(formatContractData); res.status(200).json(formattedContracts); } catch (error) { res.status(500).json({ error: error.message }); } }; // 获取单个合同 const getContractById = async (req, res) => { try { const { id } = req.params; const contract = await Contract.findByPk(id, { include: [ { model: Room, include: [ { model: Apartment, include: [Region] } ] }, Tenant ] }); if (!contract) { return res.status(404).json({ error: '合同不存在' }); } const formattedContract = formatContractData(contract); res.status(200).json(formattedContract); } catch (error) { res.status(500).json({ error: error.message }); } }; // 创建合同 const createContract = async (req, res) => { try { const { roomId, tenantId, startDate, endDate, rent, deposit, status } = req.body; const contract = await Contract.create({ roomId, tenantId, startDate, endDate, rent, deposit, status }); res.status(201).json(contract); } catch (error) { res.status(500).json({ error: error.message }); } }; // 更新合同 const updateContract = async (req, res) => { try { const { id } = req.params; const { roomId, tenantId, startDate, endDate, rent, deposit, status } = req.body; const contract = await Contract.findByPk(id); if (!contract) { return res.status(404).json({ error: '合同不存在' }); } await contract.update({ roomId, tenantId, startDate, endDate, rent, deposit, status }); res.status(200).json(contract); } catch (error) { res.status(500).json({ error: error.message }); } }; // 删除合同 const deleteContract = async (req, res) => { try { const { id } = req.params; const contract = await Contract.findByPk(id); if (!contract) { return res.status(404).json({ error: '合同不存在' }); } await contract.destroy(); res.status(200).json({ message: '合同删除成功' }); } catch (error) { res.status(500).json({ error: error.message }); } }; module.exports = { getAllContracts, getContractById, createContract, updateContract, deleteContract };