2025-04-05 22:04:05 +08:00
|
|
|
from flask import jsonify, request
|
2025-04-25 17:20:49 +08:00
|
|
|
from services.users.service import get_users_with_pagination, delete_user, create_user, update_user, reset_user_password
|
2025-04-05 22:04:05 +08:00
|
|
|
from .. import users_bp
|
|
|
|
|
|
|
|
@users_bp.route('', methods=['GET'])
|
|
|
|
def get_users():
|
|
|
|
"""获取用户的API端点,支持分页和条件查询"""
|
|
|
|
try:
|
|
|
|
# 获取查询参数
|
|
|
|
current_page = int(request.args.get('currentPage', 1))
|
|
|
|
page_size = int(request.args.get('size', 10))
|
|
|
|
username = request.args.get('username', '')
|
|
|
|
email = request.args.get('email', '')
|
|
|
|
|
|
|
|
# 调用服务函数获取分页和筛选后的用户数据
|
|
|
|
users, total = get_users_with_pagination(current_page, page_size, username, email)
|
|
|
|
|
|
|
|
# 返回符合前端期望格式的数据
|
|
|
|
return jsonify({
|
|
|
|
"code": 0, # 成功状态码
|
|
|
|
"data": {
|
|
|
|
"list": users,
|
|
|
|
"total": total
|
|
|
|
},
|
|
|
|
"message": "获取用户列表成功"
|
|
|
|
})
|
|
|
|
except Exception as e:
|
|
|
|
# 错误处理
|
|
|
|
return jsonify({
|
|
|
|
"code": 500,
|
|
|
|
"message": f"获取用户列表失败: {str(e)}"
|
|
|
|
}), 500
|
|
|
|
|
|
|
|
@users_bp.route('/<string:user_id>', methods=['DELETE'])
|
|
|
|
def delete_user_route(user_id):
|
|
|
|
"""删除用户的API端点"""
|
|
|
|
delete_user(user_id)
|
|
|
|
return jsonify({
|
|
|
|
"code": 0,
|
|
|
|
"message": f"用户 {user_id} 删除成功"
|
|
|
|
})
|
|
|
|
|
|
|
|
@users_bp.route('', methods=['POST'])
|
|
|
|
def create_user_route():
|
|
|
|
"""创建用户的API端点"""
|
|
|
|
data = request.json
|
|
|
|
# 创建用户
|
|
|
|
create_user(user_data=data)
|
|
|
|
return jsonify({
|
|
|
|
"code": 0,
|
|
|
|
"message": "用户创建成功"
|
|
|
|
})
|
|
|
|
|
|
|
|
@users_bp.route('/<string:user_id>', methods=['PUT'])
|
|
|
|
def update_user_route(user_id):
|
|
|
|
"""更新用户的API端点"""
|
|
|
|
data = request.json
|
|
|
|
user_id = data.get('id')
|
|
|
|
update_user(user_id=user_id, user_data=data)
|
|
|
|
return jsonify({
|
|
|
|
"code": 0,
|
|
|
|
"message": f"用户 {user_id} 更新成功"
|
|
|
|
})
|
|
|
|
|
|
|
|
@users_bp.route('/me', methods=['GET'])
|
|
|
|
def get_current_user():
|
|
|
|
return jsonify({
|
|
|
|
"code": 0,
|
|
|
|
"data": {
|
|
|
|
"username": "admin",
|
|
|
|
"roles": ["admin"]
|
|
|
|
},
|
|
|
|
"message": "获取用户信息成功"
|
2025-04-25 17:20:49 +08:00
|
|
|
})
|
|
|
|
|
|
|
|
@users_bp.route('/<string:user_id>/reset-password', methods=['PUT'])
|
|
|
|
def reset_password_route(user_id):
|
|
|
|
"""
|
|
|
|
重置用户密码的API端点
|
|
|
|
Args:
|
|
|
|
user_id (str): 需要重置密码的用户ID
|
|
|
|
Returns:
|
|
|
|
Response: JSON响应
|
|
|
|
"""
|
|
|
|
try:
|
|
|
|
data = request.json
|
|
|
|
new_password = data.get('password')
|
|
|
|
|
|
|
|
# 校验密码是否存在
|
|
|
|
if not new_password:
|
|
|
|
return jsonify({"code": 400, "message": "缺少新密码参数 'password'"}), 400
|
|
|
|
|
|
|
|
# 调用 service 函数重置密码
|
|
|
|
success = reset_user_password(user_id=user_id, new_password=new_password)
|
|
|
|
|
|
|
|
if success:
|
|
|
|
return jsonify({
|
|
|
|
"code": 0,
|
|
|
|
"message": f"用户密码重置成功"
|
|
|
|
})
|
|
|
|
else:
|
|
|
|
# service 层可能因为用户不存在或其他原因返回 False
|
|
|
|
return jsonify({"code": 404, "message": f"用户未找到或密码重置失败"}), 404
|
|
|
|
except Exception as e:
|
|
|
|
# 统一处理异常
|
|
|
|
return jsonify({
|
|
|
|
"code": 500,
|
|
|
|
"message": f"重置密码失败: {str(e)}"
|
|
|
|
}), 500
|