list接口
This commit is contained in:
parent
95063cad70
commit
6195a34212
|
|
@ -7,9 +7,6 @@ const syncDatabase = async () => {
|
|||
console.log('正在同步数据库表结构...');
|
||||
await sequelize.sync({ force: true });
|
||||
console.log('数据库表结构同步成功');
|
||||
|
||||
// 插入初始数据
|
||||
await insertInitialData();
|
||||
} catch (error) {
|
||||
console.error('数据库表结构同步失败:', error);
|
||||
} finally {
|
||||
|
|
@ -17,72 +14,4 @@ const syncDatabase = async () => {
|
|||
}
|
||||
};
|
||||
|
||||
// 插入初始数据
|
||||
const insertInitialData = async () => {
|
||||
try {
|
||||
// 插入区域数据
|
||||
const regions = await Region.bulkCreate([
|
||||
{ id: 1, name: '大商汇', description: '大商汇区域', createTime: '2023-01-06' },
|
||||
{ id: 2, name: '丰源市场', description: '丰源市场区域', createTime: '2023-01-07' }
|
||||
]);
|
||||
|
||||
// 插入公寓数据
|
||||
const apartments = await Apartment.bulkCreate([
|
||||
{ id: 1, regionId: 1, name: '爱奇艺公寓', address: '大商汇区域', createTime: '2023-01-18' },
|
||||
{ id: 2, regionId: 2, name: '碧云公寓', address: '丰源市场区域', createTime: '2023-01-19' }
|
||||
]);
|
||||
|
||||
// 插入房间数据
|
||||
const rooms = await Room.bulkCreate([
|
||||
// 大商汇 - 爱奇艺公寓
|
||||
{ id: 1, apartmentId: 1, roomNumber: '401', area: 40, price: 2500, status: 'empty', createTime: '2023-01-18' },
|
||||
{ id: 2, apartmentId: 1, roomNumber: '402', area: 40, price: 2500, status: 'empty', createTime: '2023-01-18' },
|
||||
{ id: 3, apartmentId: 1, roomNumber: '403', area: 45, price: 2800, status: 'rented', createTime: '2023-01-18' },
|
||||
{ id: 4, apartmentId: 1, roomNumber: '404', area: 45, price: 2800, status: 'soon_expire', createTime: '2023-01-18' },
|
||||
{ id: 5, apartmentId: 1, roomNumber: '405', area: 50, price: 3000, status: 'empty', createTime: '2023-01-18' },
|
||||
{ id: 6, apartmentId: 1, roomNumber: '406', area: 50, price: 3000, status: 'expired', createTime: '2023-01-18' },
|
||||
{ id: 7, apartmentId: 1, roomNumber: '407', area: 55, price: 3200, status: 'cleaning', createTime: '2023-01-18' },
|
||||
// 丰源市场 - 碧云公寓
|
||||
{ id: 8, apartmentId: 2, roomNumber: '201', area: 35, price: 2200, status: 'empty', createTime: '2023-01-19' },
|
||||
{ id: 9, apartmentId: 2, roomNumber: '202', area: 35, price: 2200, status: 'rented', createTime: '2023-01-19' },
|
||||
{ id: 10, apartmentId: 2, roomNumber: '203', area: 40, price: 2400, status: 'empty', createTime: '2023-01-19' },
|
||||
{ id: 11, apartmentId: 2, roomNumber: '205', area: 40, price: 2400, status: 'maintenance', createTime: '2023-01-19' },
|
||||
{ id: 12, apartmentId: 2, roomNumber: '206', area: 45, price: 2600, status: 'rented', createTime: '2023-01-19' },
|
||||
{ id: 13, apartmentId: 2, roomNumber: '208', area: 45, price: 2600, status: 'empty', createTime: '2023-01-19' },
|
||||
{ id: 14, apartmentId: 2, roomNumber: '209', area: 50, price: 2800, status: 'soon_expire', createTime: '2023-01-19' }
|
||||
]);
|
||||
|
||||
// 插入租客数据
|
||||
const tenants = await Tenant.bulkCreate([
|
||||
{ id: 1, name: '张三', phone: '13800138001', idCard: '110101199001011234', createTime: '2023-02-01' },
|
||||
{ id: 2, name: '李四', phone: '13800138002', idCard: '110101199001011235', createTime: '2023-02-02' },
|
||||
{ id: 3, name: '王五', phone: '13800138003', idCard: '110101199001011236', createTime: '2023-02-03' },
|
||||
{ id: 4, name: '赵六', phone: '13800138004', idCard: '110101199001011237', createTime: '2023-02-04' },
|
||||
{ id: 5, name: '钱七', phone: '13800138005', idCard: '110101199001011238', createTime: '2023-02-05' }
|
||||
]);
|
||||
|
||||
// 插入合同数据
|
||||
const contracts = await Contract.bulkCreate([
|
||||
{ id: 1, roomId: 3, tenantId: 1, startDate: '2023-03-01', endDate: '2024-03-01', rent: 2800, deposit: 5600, status: 'active', createTime: '2023-02-28' },
|
||||
{ id: 2, roomId: 9, tenantId: 2, startDate: '2023-04-01', endDate: '2024-04-01', rent: 2200, deposit: 4400, status: 'active', createTime: '2023-03-31' },
|
||||
{ id: 3, roomId: 12, tenantId: 3, startDate: '2023-05-01', endDate: '2024-05-01', rent: 2600, deposit: 5200, status: 'active', createTime: '2023-04-30' },
|
||||
{ id: 4, roomId: 4, tenantId: 4, startDate: '2022-03-01', endDate: '2023-03-01', rent: 2800, deposit: 5600, status: 'expired', createTime: '2022-02-28' },
|
||||
{ id: 5, roomId: 6, tenantId: 5, startDate: '2022-04-01', endDate: '2023-04-01', rent: 3000, deposit: 6000, status: 'expired', createTime: '2022-03-31' }
|
||||
]);
|
||||
|
||||
// 插入租房数据
|
||||
const rentals = await Rental.bulkCreate([
|
||||
{ id: 1, roomId: 3, tenantId: 1, contractId: 1, startDate: '2023-03-01', endDate: '2024-03-01', rent: 2800, deposit: 5600, status: 'active', createTime: '2023-02-28' },
|
||||
{ id: 2, roomId: 9, tenantId: 2, contractId: 2, startDate: '2023-04-01', endDate: '2024-04-01', rent: 2200, deposit: 4400, status: 'active', createTime: '2023-03-31' },
|
||||
{ id: 3, roomId: 12, tenantId: 3, contractId: 3, startDate: '2023-05-01', endDate: '2024-05-01', rent: 2600, deposit: 5200, status: 'active', createTime: '2023-04-30' },
|
||||
{ id: 4, roomId: 4, tenantId: 4, contractId: 4, startDate: '2022-03-01', endDate: '2023-03-01', rent: 2800, deposit: 5600, status: 'expired', createTime: '2022-02-28' },
|
||||
{ id: 5, roomId: 6, tenantId: 5, contractId: 5, startDate: '2022-04-01', endDate: '2023-04-01', rent: 3000, deposit: 6000, status: 'expired', createTime: '2022-03-31' }
|
||||
]);
|
||||
|
||||
console.log('初始数据插入成功');
|
||||
} catch (error) {
|
||||
console.error('初始数据插入失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
syncDatabase();
|
||||
|
|
@ -135,8 +135,41 @@ const deleteApartment = async (req, res) => {
|
|||
}
|
||||
};
|
||||
|
||||
// 获取所有公寓(不分页)
|
||||
const listApartments = async (req, res) => {
|
||||
try {
|
||||
const { regionId, name } = req.query;
|
||||
|
||||
// 构建查询条件
|
||||
const where = { isDeleted: 0 };
|
||||
if (regionId) {
|
||||
where.regionId = regionId;
|
||||
}
|
||||
if (name) {
|
||||
where.name = {
|
||||
[Op.like]: `%${name}%`
|
||||
};
|
||||
}
|
||||
|
||||
// 查询公寓数据
|
||||
const apartments = await Apartment.findAll({
|
||||
where,
|
||||
include: [Region]
|
||||
});
|
||||
|
||||
// 格式化数据
|
||||
const formattedApartments = apartments.map(formatApartmentData);
|
||||
|
||||
// 返回结果
|
||||
res.status(200).json(formattedApartments);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
getAllApartments,
|
||||
listApartments,
|
||||
getApartmentById,
|
||||
createApartment,
|
||||
updateApartment,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
const { Region } = require('../models');
|
||||
const { Op } = require('sequelize');
|
||||
|
||||
// 格式化时间(考虑时区,转换为北京时间)
|
||||
const formatDate = (date) => {
|
||||
|
|
@ -93,8 +94,30 @@ const deleteRegion = async (req, res) => {
|
|||
}
|
||||
};
|
||||
|
||||
// 获取所有区域(不分页)
|
||||
const listRegions = async (req, res) => {
|
||||
try {
|
||||
const { name } = req.query;
|
||||
|
||||
// 构建查询条件
|
||||
const where = { isDeleted: 0 };
|
||||
if (name) {
|
||||
where.name = {
|
||||
[Op.like]: `%${name}%`
|
||||
};
|
||||
}
|
||||
|
||||
const regions = await Region.findAll({ where });
|
||||
const formattedRegions = regions.map(formatRegionData);
|
||||
res.status(200).json(formattedRegions);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
getAllRegions,
|
||||
listRegions,
|
||||
getRegionById,
|
||||
createRegion,
|
||||
updateRegion,
|
||||
|
|
|
|||
|
|
@ -342,8 +342,55 @@ const deleteRental = async (req, res) => {
|
|||
}
|
||||
};
|
||||
|
||||
// 获取所有租房(不分页)
|
||||
const listRentals = async (req, res) => {
|
||||
try {
|
||||
// 先检查并更新租房状态
|
||||
await checkAndUpdateRentalStatus();
|
||||
|
||||
const { roomId, tenantName, status } = req.query;
|
||||
|
||||
// 构建查询条件
|
||||
const where = { isDeleted: 0 };
|
||||
if (status) {
|
||||
where.status = status;
|
||||
}
|
||||
if (roomId) {
|
||||
where.roomId = roomId;
|
||||
}
|
||||
|
||||
// 构建包含关系 - 关联租客信息和合同信息
|
||||
const include = [
|
||||
{
|
||||
model: Tenant,
|
||||
where: tenantName ? { name: { [Op.like]: `%${tenantName}%` }, isDeleted: 0 } : { isDeleted: 0 }
|
||||
},
|
||||
{
|
||||
model: Contract,
|
||||
where: { isDeleted: 0 }
|
||||
}
|
||||
];
|
||||
|
||||
// 查询租房数据
|
||||
const rentals = await Rental.findAll({
|
||||
where,
|
||||
include,
|
||||
order: [['createTime', 'DESC']] // 按创建时间倒序排序
|
||||
});
|
||||
|
||||
// 格式化数据
|
||||
const formattedRentals = rentals.map(formatRentalData);
|
||||
|
||||
// 返回结果
|
||||
res.status(200).json(formattedRentals);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
getAllRentals,
|
||||
listRentals,
|
||||
getRentalById,
|
||||
createRental,
|
||||
updateRental,
|
||||
|
|
|
|||
|
|
@ -296,8 +296,55 @@ const deleteRoom = async (req, res) => {
|
|||
}
|
||||
};
|
||||
|
||||
// 获取所有房间(不分页)
|
||||
const listRooms = async (req, res) => {
|
||||
try {
|
||||
// 先检查并更新租房状态
|
||||
await checkAndUpdateRentalStatus();
|
||||
|
||||
const { apartmentId, roomNumber, status, otherStatus, subStatus } = req.query;
|
||||
|
||||
// 构建查询条件
|
||||
const where = { isDeleted: 0 };
|
||||
if (apartmentId) {
|
||||
where.apartmentId = apartmentId;
|
||||
}
|
||||
if (roomNumber) {
|
||||
where.roomNumber = {
|
||||
[Op.like]: `%${roomNumber}%`
|
||||
};
|
||||
}
|
||||
if (status) {
|
||||
where.status = status;
|
||||
}
|
||||
if (otherStatus) {
|
||||
where.otherStatus = otherStatus;
|
||||
}
|
||||
if (subStatus) {
|
||||
where.subStatus = subStatus;
|
||||
}
|
||||
|
||||
// 查询房间数据
|
||||
const rooms = await Room.findAll({
|
||||
where,
|
||||
include: [
|
||||
Apartment
|
||||
]
|
||||
});
|
||||
|
||||
// 格式化房间数据
|
||||
const formattedRooms = rooms.map(formatRoomData);
|
||||
|
||||
// 返回结果
|
||||
res.status(200).json(formattedRooms);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
getAllRooms,
|
||||
listRooms,
|
||||
getRoomById,
|
||||
createRoom,
|
||||
updateRoom,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
const { Tenant } = require('../models');
|
||||
const { Op } = require('sequelize');
|
||||
|
||||
// 格式化时间(考虑时区,转换为北京时间)
|
||||
const formatDate = (date) => {
|
||||
|
|
@ -93,8 +94,40 @@ const deleteTenant = async (req, res) => {
|
|||
}
|
||||
};
|
||||
|
||||
// 获取所有租客(不分页)
|
||||
const listTenants = async (req, res) => {
|
||||
try {
|
||||
const { name, phone, idCard } = req.query;
|
||||
|
||||
// 构建查询条件
|
||||
const where = { isDeleted: 0 };
|
||||
if (name) {
|
||||
where.name = {
|
||||
[Op.like]: `%${name}%`
|
||||
};
|
||||
}
|
||||
if (phone) {
|
||||
where.phone = {
|
||||
[Op.like]: `%${phone}%`
|
||||
};
|
||||
}
|
||||
if (idCard) {
|
||||
where.idCard = {
|
||||
[Op.like]: `%${idCard}%`
|
||||
};
|
||||
}
|
||||
|
||||
const tenants = await Tenant.findAll({ where });
|
||||
const formattedTenants = tenants.map(formatTenantData);
|
||||
res.status(200).json(formattedTenants);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
getAllTenants,
|
||||
listTenants,
|
||||
getTenantById,
|
||||
createTenant,
|
||||
updateTenant,
|
||||
|
|
|
|||
|
|
@ -189,8 +189,51 @@ const deleteWaterBill = async (req, res) => {
|
|||
}
|
||||
};
|
||||
|
||||
// 获取所有水费记录(不分页)
|
||||
const listWaterBills = async (req, res) => {
|
||||
try {
|
||||
const { roomId, status, startDate, endDate } = req.query;
|
||||
|
||||
// 构建查询条件
|
||||
const where = { isDeleted: 0 };
|
||||
if (roomId) {
|
||||
where.roomId = roomId;
|
||||
}
|
||||
if (status) {
|
||||
where.status = status;
|
||||
}
|
||||
if (startDate) {
|
||||
where.startDate = { [Op.gte]: new Date(startDate) };
|
||||
}
|
||||
if (endDate) {
|
||||
where.endDate = { [Op.lte]: new Date(endDate) };
|
||||
}
|
||||
|
||||
// 查询水费数据
|
||||
const bills = await WaterBill.findAll({
|
||||
where,
|
||||
include: [
|
||||
{
|
||||
model: Room,
|
||||
where: { isDeleted: 0 }
|
||||
}
|
||||
],
|
||||
order: [['createTime', 'DESC']] // 按创建时间倒序排序
|
||||
});
|
||||
|
||||
// 格式化数据
|
||||
const formattedBills = bills.map(formatWaterBillData);
|
||||
|
||||
// 返回结果
|
||||
res.status(200).json(formattedBills);
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
getAllWaterBills,
|
||||
listWaterBills,
|
||||
getWaterBillById,
|
||||
createWaterBill,
|
||||
updateWaterBill,
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ const apartmentController = require('../controllers/apartmentController');
|
|||
|
||||
// 路由
|
||||
router.get('/', apartmentController.getAllApartments);
|
||||
router.get('/list', apartmentController.listApartments);
|
||||
router.get('/:id', apartmentController.getApartmentById);
|
||||
router.post('/', apartmentController.createApartment);
|
||||
router.put('/:id', apartmentController.updateApartment);
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ const regionController = require('../controllers/regionController');
|
|||
|
||||
// 路由
|
||||
router.get('/', regionController.getAllRegions);
|
||||
router.get('/list', regionController.listRegions);
|
||||
router.get('/:id', regionController.getRegionById);
|
||||
router.post('/', regionController.createRegion);
|
||||
router.put('/:id', regionController.updateRegion);
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ const rentalController = require('../controllers/rentalController');
|
|||
|
||||
// 路由
|
||||
router.get('/', rentalController.getAllRentals);
|
||||
router.get('/list', rentalController.listRentals);
|
||||
router.get('/:id', rentalController.getRentalById);
|
||||
router.post('/', rentalController.createRental);
|
||||
router.put('/:id', rentalController.updateRental);
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ const roomController = require('../controllers/roomController');
|
|||
|
||||
// 路由
|
||||
router.get('/', roomController.getAllRooms);
|
||||
router.get('/list', roomController.listRooms);
|
||||
router.get('/:id', roomController.getRoomById);
|
||||
router.post('/', roomController.createRoom);
|
||||
router.put('/:id', roomController.updateRoom);
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ const tenantController = require('../controllers/tenantController');
|
|||
|
||||
// 路由
|
||||
router.get('/', tenantController.getAllTenants);
|
||||
router.get('/list', tenantController.listTenants);
|
||||
router.get('/:id', tenantController.getTenantById);
|
||||
router.post('/', tenantController.createTenant);
|
||||
router.put('/:id', tenantController.updateTenant);
|
||||
|
|
|
|||
|
|
@ -2,9 +2,12 @@ const express = require('express');
|
|||
const router = express.Router();
|
||||
const waterBillController = require('../controllers/waterBillController');
|
||||
|
||||
// 获取所有水费记录
|
||||
// 获取所有水费记录(分页)
|
||||
router.get('/', waterBillController.getAllWaterBills);
|
||||
|
||||
// 获取所有水费记录(不分页)
|
||||
router.get('/list', waterBillController.listWaterBills);
|
||||
|
||||
// 获取单个水费记录
|
||||
router.get('/:id', waterBillController.getWaterBillById);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue