from flask import jsonify, request from services.users.service import get_users_with_pagination, delete_user, create_user, update_user, reset_user_password 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('/', 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('/', 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": "获取用户信息成功" }) @users_bp.route('//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