shuqianpinggu/app/routes/user_routes.py

82 lines
2.4 KiB
Python
Raw Normal View History

2025-06-17 17:46:44 +08:00
from flask import Blueprint, jsonify, request
from ..models import User
from .. import db
user_routes = Blueprint('user', __name__)
def add_user(name, password, role, email):
"""添加新用户"""
existing_user = User.query.filter_by(email=email).first()
if existing_user:
raise ValueError("User already exists")
# 创建新用户
new_user = User(name=name, password=password, role=role, email=email)
db.session.add(new_user)
db.session.commit()
return new_user
@user_routes.route('/get-user/<int:userId>')
def get_user(userId):
"""获取单个用户"""
user = User.query.get(userId)
if user:
return jsonify(user.to_dict())
else:
return jsonify({'error': 'User not found'}), 404
@user_routes.route('/add-user', methods=['POST'])
def add_user_route():
"""添加新用户"""
data = request.get_json()
if not data or not all(key in data for key in ['name', 'email', 'password', 'role']):
return jsonify({'error': 'Invalid input'}), 400
try:
new_user = add_user(
name=data['name'],
password=data['password'],
role=data['role'],
email=data.get('email')
)
return jsonify({'message': 'User added successfully', 'user': new_user.to_dict()}), 201
except ValueError as e:
return jsonify({'error': str(e)}), 400
@user_routes.route('/delete-user/<int:userId>', methods=['DELETE'])
def delete_user(userId):
"""删除用户"""
user = User.query.get(userId)
if user:
db.session.delete(user)
db.session.commit()
return jsonify({'message': 'User deleted successfully'})
else:
return jsonify({'error': 'User not found'}), 404
@user_routes.route('/update-user/<int:userId>', methods=['PUT'])
def update_user(userId):
"""更新用户信息"""
user = User.query.get(userId)
if not user:
return jsonify({'error': 'User not found'}), 404
data = request.get_json()
if not data:
return jsonify({'error': 'Invalid input'}), 400
# 更新用户信息
user.name = data.get('name', user.name)
user.password = data.get('password', user.password)
user.role = data.get('role', user.role)
user.email = data.get('email', user.email)
db.session.commit()
return jsonify({'message': 'User updated successfully', 'user': user.to_dict()}), 200