#!/usr/bin/env python # -*- coding: utf-8 -*- import asyncio import sys sys.path.insert(0, 'ruoyi-fastapi-backend') from datetime import datetime from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker from urllib.parse import quote_plus DB_URL = f'mysql+asyncmy://cpy_admin:{quote_plus("Tgzz2025+")}@localhost:3307/ruoyi-fastapi' async def test(): from module_admin.service.login_service import LoginService from module_admin.entity.vo.user_vo import CurrentUserModel from fastapi.encoders import jsonable_encoder engine = create_async_engine(DB_URL, echo=False) AsyncSession = async_sessionmaker(engine, expire_on_commit=False) async with AsyncSession() as db: # 模拟获取当前用户 try: from module_admin.dao.user_dao import UserDao from utils.common_util import CamelCaseUtil query_user = await UserDao.get_user_by_id(db, user_id=1) print(f"query_user keys: {query_user.keys()}") role_id_list = [item.role_id for item in query_user.get('user_role_info')] if 1 in role_id_list: permissions = ['*:*:*'] else: permissions = [row.perms for row in query_user.get('user_menu_info')] post_ids = ','.join([str(row.post_id) for row in query_user.get('user_post_info')]) role_ids = ','.join([str(row.role_id) for row in query_user.get('user_role_info')]) roles = [row.role_key for row in query_user.get('user_role_info')] print(f"permissions: {permissions}") print(f"roles: {roles}") # 转换用户信息 user_basic = CamelCaseUtil.transform_result(query_user.get('user_basic_info')) print(f"user_basic: {user_basic}") print(f"user_basic type: {type(user_basic)}") # 检查日期字段 for key, value in user_basic.items(): if hasattr(value, 'isoformat'): print(f" {key}: {value} (type: {type(value)})") # 尝试创建 CurrentUserModel from module_admin.entity.vo.user_vo import UserInfoModel user_info = UserInfoModel( **user_basic, postIds=post_ids, roleIds=role_ids, dept=CamelCaseUtil.transform_result(query_user.get('user_dept_info')), role=CamelCaseUtil.transform_result(query_user.get('user_role_info')), ) print(f"UserInfoModel created successfully") current_user = CurrentUserModel( permissions=permissions, roles=roles, user=user_info, ) print(f"CurrentUserModel created successfully") # 尝试序列化 try: encoded = jsonable_encoder(current_user) print(f"jsonable_encoder success") except Exception as e: import traceback print(f"jsonable_encoder error: {e}") traceback.print_exc() except Exception as e: import traceback print(f"Error: {e}") traceback.print_exc() asyncio.run(test())