110 lines
3.1 KiB
JavaScript
110 lines
3.1 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const Customer = require('../models/Customer');
|
|
|
|
// 获取所有客户
|
|
router.get('/', async (req, res) => {
|
|
try {
|
|
const customers = await Customer.find();
|
|
res.json({ success: true, data: customers });
|
|
} catch (error) {
|
|
res.status(500).json({ success: false, message: error.message });
|
|
}
|
|
});
|
|
|
|
// 获取单个客户
|
|
router.get('/:id', async (req, res) => {
|
|
try {
|
|
const customer = await Customer.findById(req.params.id);
|
|
if (!customer) {
|
|
return res.status(404).json({ success: false, message: '客户不存在' });
|
|
}
|
|
res.json({ success: true, data: customer });
|
|
} catch (error) {
|
|
res.status(500).json({ success: false, message: error.message });
|
|
}
|
|
});
|
|
|
|
// 创建客户
|
|
router.post('/', async (req, res) => {
|
|
try {
|
|
const customer = new Customer(req.body);
|
|
await customer.save();
|
|
res.status(201).json({ success: true, data: customer });
|
|
} catch (error) {
|
|
res.status(400).json({ success: false, message: error.message });
|
|
}
|
|
});
|
|
|
|
// 更新客户
|
|
router.put('/:id', async (req, res) => {
|
|
try {
|
|
const customer = await Customer.findByIdAndUpdate(
|
|
req.params.id,
|
|
req.body,
|
|
{ new: true, runValidators: true }
|
|
);
|
|
if (!customer) {
|
|
return res.status(404).json({ success: false, message: '客户不存在' });
|
|
}
|
|
res.json({ success: true, data: customer });
|
|
} catch (error) {
|
|
res.status(400).json({ success: false, message: error.message });
|
|
}
|
|
});
|
|
|
|
// 删除客户
|
|
router.delete('/:id', async (req, res) => {
|
|
try {
|
|
const customer = await Customer.findByIdAndDelete(req.params.id);
|
|
if (!customer) {
|
|
return res.status(404).json({ success: false, message: '客户不存在' });
|
|
}
|
|
res.json({ success: true, message: '客户已删除' });
|
|
} catch (error) {
|
|
res.status(500).json({ success: false, message: error.message });
|
|
}
|
|
});
|
|
|
|
// 搜索客户
|
|
router.get('/search/:keyword', async (req, res) => {
|
|
try {
|
|
const keyword = req.params.keyword;
|
|
const customers = await Customer.find({
|
|
$or: [
|
|
{ name: { $regex: keyword, $options: 'i' } },
|
|
{ phone: { $regex: keyword, $options: 'i' } },
|
|
{ customerId: { $regex: keyword, $options: 'i' } }
|
|
]
|
|
});
|
|
res.json({ success: true, data: customers });
|
|
} catch (error) {
|
|
res.status(500).json({ success: false, message: error.message });
|
|
}
|
|
});
|
|
|
|
// 更新客户信用评分
|
|
router.patch('/:id/credit', async (req, res) => {
|
|
try {
|
|
const { creditScore } = req.body;
|
|
let creditLevel = '优秀';
|
|
if (creditScore < 60) creditLevel = '较差';
|
|
else if (creditScore < 80) creditLevel = '一般';
|
|
else if (creditScore < 90) creditLevel = '良好';
|
|
|
|
const customer = await Customer.findByIdAndUpdate(
|
|
req.params.id,
|
|
{ creditScore, creditLevel },
|
|
{ new: true }
|
|
);
|
|
if (!customer) {
|
|
return res.status(404).json({ success: false, message: '客户不存在' });
|
|
}
|
|
res.json({ success: true, data: customer });
|
|
} catch (error) {
|
|
res.status(400).json({ success: false, message: error.message });
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|