修改保险后端代码,政府前端代码

This commit is contained in:
2025-09-22 17:56:30 +08:00
parent 3143c3ad0b
commit 02a25515a9
206 changed files with 35119 additions and 43073 deletions

View File

@@ -7,6 +7,7 @@ const { User, Role, Account } = require('../models');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const { validationResult } = require('express-validator');
const { Op } = require('sequelize');
/**
* 用户注册
@@ -445,4 +446,278 @@ exports.getUserAccounts = async (req, res) => {
message: '服务器内部错误'
});
}
};
/**
* 创建用户(管理员)
* @param {Object} req 请求对象
* @param {Object} res 响应对象
*/
exports.createUser = async (req, res) => {
try {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({
success: false,
message: '输入数据验证失败',
errors: errors.array()
});
}
const { username, email, password, phone, real_name, id_card, role_id } = req.body;
// 检查用户名是否已存在
const existingUser = await User.findOne({
where: { username }
});
if (existingUser) {
return res.status(400).json({
success: false,
message: '用户名已存在'
});
}
// 检查邮箱是否已存在
const existingEmail = await User.findOne({
where: { email }
});
if (existingEmail) {
return res.status(400).json({
success: false,
message: '邮箱已被注册'
});
}
// 创建新用户
const user = await User.create({
username,
email,
password,
phone,
real_name,
id_card,
role_id: role_id || 2 // 默认为普通用户
});
// 获取用户信息(包含角色)
const userWithRole = await User.findByPk(user.id, {
include: [{
model: Role,
as: 'role'
}]
});
res.status(201).json({
success: true,
message: '用户创建成功',
data: userWithRole.getSafeInfo()
});
} catch (error) {
console.error('创建用户错误:', error);
res.status(500).json({
success: false,
message: '服务器内部错误'
});
}
};
/**
* 更新用户信息(管理员)
* @param {Object} req 请求对象
* @param {Object} res 响应对象
*/
exports.updateUser = async (req, res) => {
try {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({
success: false,
message: '输入数据验证失败',
errors: errors.array()
});
}
const { userId } = req.params;
const { username, email, phone, real_name, id_card, role_id, status } = req.body;
const user = await User.findByPk(userId);
if (!user) {
return res.status(404).json({
success: false,
message: '用户不存在'
});
}
// 检查用户名是否被其他用户使用
if (username && username !== user.username) {
const existingUser = await User.findOne({
where: { username, id: { [Op.ne]: userId } }
});
if (existingUser) {
return res.status(400).json({
success: false,
message: '用户名已被其他用户使用'
});
}
}
// 检查邮箱是否被其他用户使用
if (email && email !== user.email) {
const existingEmail = await User.findOne({
where: { email, id: { [Op.ne]: userId } }
});
if (existingEmail) {
return res.status(400).json({
success: false,
message: '邮箱已被其他用户使用'
});
}
}
// 更新用户信息
await user.update({
username: username || user.username,
email: email || user.email,
phone: phone || user.phone,
real_name: real_name || user.real_name,
id_card: id_card || user.id_card,
role_id: role_id || user.role_id,
status: status || user.status
});
// 获取更新后的用户信息(包含角色)
const updatedUser = await User.findByPk(userId, {
include: [{
model: Role,
as: 'role'
}]
});
res.json({
success: true,
message: '用户信息更新成功',
data: updatedUser.getSafeInfo()
});
} catch (error) {
console.error('更新用户信息错误:', error);
res.status(500).json({
success: false,
message: '服务器内部错误'
});
}
};
/**
* 删除用户(管理员)
* @param {Object} req 请求对象
* @param {Object} res 响应对象
*/
exports.deleteUser = async (req, res) => {
try {
const { userId } = req.params;
const user = await User.findByPk(userId);
if (!user) {
return res.status(404).json({
success: false,
message: '用户不存在'
});
}
// 检查是否是当前用户
if (userId === req.user.userId.toString()) {
return res.status(400).json({
success: false,
message: '不能删除自己的账户'
});
}
// 软删除用户更新状态为inactive
await user.update({ status: 'inactive' });
res.json({
success: true,
message: '用户删除成功'
});
} catch (error) {
console.error('删除用户错误:', error);
res.status(500).json({
success: false,
message: '服务器内部错误'
});
}
};
/**
* 重置用户密码(管理员)
* @param {Object} req 请求对象
* @param {Object} res 响应对象
*/
exports.resetPassword = async (req, res) => {
try {
const { userId } = req.params;
const { newPassword } = req.body;
const user = await User.findByPk(userId);
if (!user) {
return res.status(404).json({
success: false,
message: '用户不存在'
});
}
// 更新密码
user.password = newPassword;
await user.save();
res.json({
success: true,
message: '密码重置成功'
});
} catch (error) {
console.error('重置密码错误:', error);
res.status(500).json({
success: false,
message: '服务器内部错误'
});
}
};
/**
* 获取用户详情
* @param {Object} req 请求对象
* @param {Object} res 响应对象
*/
exports.getUserById = async (req, res) => {
try {
const { userId } = req.params;
const user = await User.findByPk(userId, {
include: [{
model: Role,
as: 'role'
}]
});
if (!user) {
return res.status(404).json({
success: false,
message: '用户不存在'
});
}
res.json({
success: true,
message: '获取用户详情成功',
data: user.getSafeInfo()
});
} catch (error) {
console.error('获取用户详情错误:', error);
res.status(500).json({
success: false,
message: '服务器内部错误'
});
}
};