Files
nxxmdata/backend/controllers/iotJbqClientController.js

198 lines
4.9 KiB
JavaScript
Raw Normal View History

2025-09-15 18:18:41 +08:00
/**
* 智能耳标客户端控制器
* 处理iot_jbq_client表的CRUD操作
*/
const { sequelize } = require('../config/database-simple')
class IotJbqClientController {
/**
* 获取所有智能耳标设备
*/
async getAllClients(req, res) {
try {
const { cid, page = 1, pageSize = 10 } = req.query
let whereClause = ''
let params = []
if (cid) {
whereClause = `WHERE cid = '${cid}'`
}
const offset = (page - 1) * pageSize
// 获取总数
const [countResult] = await sequelize.query(
`SELECT COUNT(*) as total FROM iot_jbq_client ${whereClause}`
)
// 获取数据
const [clients] = await sequelize.query(
`SELECT * FROM iot_jbq_client ${whereClause} ORDER BY id DESC LIMIT ${parseInt(pageSize)} OFFSET ${offset}`
)
res.json({
success: true,
data: clients,
pagination: {
current: parseInt(page),
pageSize: parseInt(pageSize),
total: countResult[0].total
},
message: '获取智能耳标设备列表成功'
})
} catch (error) {
console.error('获取智能耳标设备列表失败:', error)
res.status(500).json({
success: false,
message: '获取智能耳标设备列表失败',
error: error.message
})
}
}
/**
* 根据CID获取智能耳标设备
*/
async getClientByCid(req, res) {
try {
const { cid } = req.params
const [clients] = await sequelize.query(`SELECT * FROM iot_jbq_client WHERE cid = '${cid}'`)
if (clients.length === 0) {
return res.status(404).json({
success: false,
message: '智能耳标设备不存在'
})
}
res.json({
success: true,
data: clients[0],
message: '获取智能耳标设备成功'
})
} catch (error) {
console.error('获取智能耳标设备失败:', error)
res.status(500).json({
success: false,
message: '获取智能耳标设备失败',
error: error.message
})
}
}
/**
* 根据ID获取智能耳标设备
*/
async getClientById(req, res) {
try {
const { id } = req.params
const [clients] = await sequelize.query(`SELECT * FROM iot_jbq_client WHERE id = ${id}`)
if (clients.length === 0) {
return res.status(404).json({
success: false,
message: '智能耳标设备不存在'
})
}
res.json({
success: true,
data: clients[0],
message: '获取智能耳标设备成功'
})
} catch (error) {
console.error('获取智能耳标设备失败:', error)
res.status(500).json({
success: false,
message: '获取智能耳标设备失败',
error: error.message
})
}
}
/**
* 更新智能耳标设备
*/
async updateClient(req, res) {
try {
const { id } = req.params
const updateData = req.body
// 构建更新字段
const updateFields = []
Object.keys(updateData).forEach(key => {
if (updateData[key] !== undefined) {
const value = typeof updateData[key] === 'string' ? `'${updateData[key]}'` : updateData[key]
updateFields.push(`${key} = ${value}`)
}
})
if (updateFields.length === 0) {
return res.status(400).json({
success: false,
message: '没有要更新的字段'
})
}
const [result] = await sequelize.query(
`UPDATE iot_jbq_client SET ${updateFields.join(', ')} WHERE id = ${id}`
)
if (result.affectedRows === 0) {
return res.status(404).json({
success: false,
message: '智能耳标设备不存在'
})
}
res.json({
success: true,
data: { id: parseInt(id), ...updateData },
message: '更新智能耳标设备成功'
})
} catch (error) {
console.error('更新智能耳标设备失败:', error)
res.status(500).json({
success: false,
message: '更新智能耳标设备失败',
error: error.message
})
}
}
/**
* 删除智能耳标设备
*/
async deleteClient(req, res) {
try {
const { id } = req.params
const [result] = await sequelize.query('DELETE FROM iot_jbq_client WHERE id = ?', [id])
if (result.affectedRows === 0) {
return res.status(404).json({
success: false,
message: '智能耳标设备不存在'
})
}
res.json({
success: true,
message: '删除智能耳标设备成功'
})
} catch (error) {
console.error('删除智能耳标设备失败:', error)
res.status(500).json({
success: false,
message: '删除智能耳标设备失败',
error: error.message
})
}
}
}
module.exports = new IotJbqClientController()