feat: add user deactivation and vendor BLE protocol

这个提交包含在:
Guoguo
2026-05-11 21:14:41 +08:00
父节点 c95d47e0c1
当前提交 583fcb7e3d
修改 16 个文件,包含 698 行新增52 行删除
+31
查看文件
@@ -153,6 +153,37 @@ router.get('/users/:user_id', requireAdmin, wrap(async (req, res) => {
res.json(ok(result))
}))
router.post('/users/:user_id/unbind', requireAdmin, wrap(async (req, res) => {
const userId = req.params.user_id
const targetUser = await userDao.findById(userId)
if (!targetUser) return res.json(fail(1004, 'USER_NOT_FOUND'))
const deviceId = req.body.device_id ? String(req.body.device_id).trim() : null
const result = await bindingDao.unbindByUser(userId, deviceId)
await logDao.write({
admin_id: req.admin.admin_id,
user_id: userId,
action: 'admin_user_unbind',
detail: '后台解绑用户设备: user=' + userId + ', device=' + (deviceId || 'all'),
ip: req.ip
})
res.json(ok({ message: 'success', affected_rows: result.affectedRows || 0 }))
}))
router.post('/users/:user_id/deactivate', requireAdmin, wrap(async (req, res) => {
const userId = req.params.user_id
const targetUser = await userDao.findById(userId)
if (!targetUser) return res.json(fail(1004, 'USER_NOT_FOUND'))
const result = await userDao.deactivate(userId)
await logDao.write({
admin_id: req.admin.admin_id,
user_id: userId,
action: 'admin_user_deactivate',
detail: '后台注销用户: user=' + userId + ', unbound=' + result.unboundRows,
ip: req.ip
})
res.json(ok({ message: 'success', unbound_rows: result.unboundRows }))
}))
// --- Subscriptions ---
router.get('/subscriptions', requireAdmin, wrap(async (req, res) => {