from flask import Blueprint, jsonify, request from app.models import User, UserDetail, UserField from app import db bp = Blueprint('users', __name__) @bp.route('', methods=['GET']) def get_users(): page = request.args.get('page', 1, type=int) per_page = request.args.get('per_page', 10, type=int) users = User.query.paginate(page=page, per_page=per_page, error_out=False) users_list = [{ 'id': user.id, 'username': user.username, 'primary_department': user.primary_department.name if user.primary_department else None, 'roles': [role.name for role in user.roles] } for user in users.items] return jsonify({ 'users': users_list, 'total': users.total, 'pages': users.pages, 'current_page': page }), 200 @bp.route('/', methods=['GET']) def get_user_details(user_id): user = User.query.get(user_id) if not user: return jsonify({'message': '用户不存在'}), 404 user_fields = UserField.query.all() user_details = {} for field in user_fields: detail = UserDetail.query.filter_by(user_id=user.id, field_id=field.id).first() user_details[field.name] = detail.value if detail else None user_info = { 'id': user.id, 'username': user.username, 'primary_department': user.primary_department.name if user.primary_department else None, 'secondary_departments': [dept.name for dept in user.secondary_departments], 'roles': [role.name for role in user.roles], 'details': user_details, 'login_info': { 'register_time': user.login_info.register_time.isoformat(), 'login_count': user.login_info.login_count, 'last_login_time': user.login_info.last_login_time.isoformat() if user.login_info.last_login_time else None, 'is_new_user': user.login_info.is_new_user, 'has_changed_initial_password': user.login_info.has_changed_initial_password } } return jsonify(user_info), 200 # 可以在这里添加更多用户相关的路由...