Files
api-debug/server/routes/tenants.js
jason 96bdc292bb Initial commit: API Debug Tool
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 04:32:35 +08:00

145 lines
4.4 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const express = require('express');
const router = express.Router();
const db = require('../db');
const auth = require('../middleware/auth');
router.use(auth);
// 获取所有租户 (含搜索)
router.get('/', async (req, res) => {
try {
const { search } = req.query;
let query = 'SELECT * FROM tenants WHERE user_id = ?';
let params = [req.user.username];
if (search) {
query += ' AND name LIKE ?';
params.push(`%${search}%`);
}
query += ' ORDER BY created_at DESC';
const [rows] = await db.query(query, params);
res.json(rows);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
// 新增租户
router.post('/', async (req, res) => {
try {
const tenant = req.body;
// 特殊逻辑标品PP下 entCode 默认等于 apiKey
if (tenant.type === '标品PP' && !tenant.entCode) {
tenant.entCode = tenant.apiKey;
}
const [result] = await db.query(
'INSERT INTO tenants (user_id, name, type, app_key, app_secret, api_key, ent_code, bu_id, ent_id, private_key, public_key) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
[
req.user.username,
tenant.name,
tenant.type,
tenant.appKey || null,
tenant.appSecret || null,
tenant.apiKey || null,
tenant.entCode || null,
tenant.buId || null,
tenant.entId || null,
tenant.privateKey || null,
tenant.publicKey || null
]
);
res.json({ id: result.insertId, ...tenant });
} catch (err) {
res.status(500).json({ error: err.message });
}
});
// 更新租户
router.put('/:id', async (req, res) => {
try {
const { id } = req.params;
const tenant = req.body;
await db.query(
`UPDATE tenants SET
name = ?,
type = ?,
app_key = ?,
app_secret = ?,
api_key = ?,
ent_code = ?,
bu_id = ?,
ent_id = ?,
private_key = ?,
public_key = ?
WHERE id = ? AND user_id = ?`,
[
tenant.name,
tenant.type,
tenant.appKey || null,
tenant.appSecret || null,
tenant.apiKey || null,
tenant.entCode || null,
tenant.buId || null,
tenant.entId || null,
tenant.privateKey || null,
tenant.publicKey || null,
id,
req.user.username
]
);
res.json({ message: 'Updated successfully' });
} catch (err) {
res.status(500).json({ error: err.message });
}
});
// 删除租户
router.delete('/:id', async (req, res) => {
try {
const { id } = req.params;
await db.query('DELETE FROM tenants WHERE id = ? AND user_id = ?', [id, req.user.username]);
res.json({ message: 'Deleted successfully' });
} catch (err) {
res.status(500).json({ error: err.message });
}
});
// 复制租户
router.post('/copy/:id', async (req, res) => {
try {
const { id } = req.params;
const [rows] = await db.query('SELECT * FROM tenants WHERE id = ? AND user_id = ?', [id, req.user.username]);
if (rows.length === 0) {
return res.status(404).json({ error: 'Tenant not found' });
}
const tenant = rows[0];
const [result] = await db.query(
'INSERT INTO tenants (user_id, name, type, app_key, app_secret, api_key, ent_code, bu_id, ent_id, private_key, public_key) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
[
req.user.username,
`${tenant.name} (Copy)`,
tenant.type,
tenant.app_key,
tenant.app_secret,
tenant.api_key,
tenant.ent_code,
tenant.bu_id,
tenant.ent_id,
tenant.private_key,
tenant.public_key
]
);
res.json({ id: result.insertId, message: 'Copied successfully' });
} catch (err) {
res.status(500).json({ error: err.message });
}
});
module.exports = router;