ETest-Vue-FastAPI/test_user.py

87 lines
3.3 KiB
Python
Raw Normal View History

2026-04-15 19:06:01 +08:00
#!/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())