from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select from models import Role, User from utils.password import get_password_hash async def init_roles(db: AsyncSession): """初始化角色数据""" # 检查是否已经存在角色数据 result = await db.execute(select(Role)) existing_roles = result.scalars().all() if existing_roles: print("角色数据已存在,跳过初始化") return # 创建初始角色 roles = [ Role(name="管理员", creator="system"), Role(name="普通用户", creator="system"), Role(name="访客", creator="system"), ] for role in roles: db.add(role) await db.commit() print("角色数据初始化完成") async def init_admin_user(db: AsyncSession): """初始化管理员用户""" # 检查是否已经存在管理员用户 result = await db.execute(select(User).filter(User.username == "admin")) existing_admin = result.scalar_one_or_none() if existing_admin: print("管理员用户已存在,跳过初始化") return # 获取管理员角色 result = await db.execute(select(Role).filter(Role.name == "管理员")) admin_role = result.scalar_one_or_none() if not admin_role: print("管理员角色不存在,请先初始化角色数据") return # 创建管理员用户 admin_user = User( username="admin", nickname="系统管理员", email="admin@example.com", phone="13800138000", password_hash=get_password_hash("admin"), role_id=admin_role.id, avatar="", wx_openid="" ) db.add(admin_user) await db.commit() print("管理员用户初始化完成") async def init_test_user(db: AsyncSession): """初始化测试用户""" # 检查是否已经存在测试用户 result = await db.execute(select(User).filter(User.username == "test")) existing_test_user = result.scalar_one_or_none() if existing_test_user: print("测试用户已存在,跳过初始化") return # 获取普通用户角色 result = await db.execute(select(Role).filter(Role.name == "普通用户")) user_role = result.scalar_one_or_none() if not user_role: print("普通用户角色不存在,请先初始化角色数据") return # 创建测试用户 test_user = User( username="test", nickname="测试用户", email="test@example.com", phone="13800138001", password_hash=get_password_hash("test"), role_id=user_role.id, avatar="", wx_openid="" ) db.add(test_user) await db.commit() print("测试用户初始化完成") async def init_all_data(db: AsyncSession): """初始化所有数据""" print("开始初始化数据库数据...") await init_roles(db) await init_admin_user(db) await init_test_user(db) print("数据库数据初始化完成")