87 lines
3.3 KiB
Python
87 lines
3.3 KiB
Python
|
|
#!/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())
|