import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:equatable/equatable.dart'; import '../../services/api_service/repositories/impl/admin_repository_impl.dart'; import '../../models/admin/admin_models.dart'; part 'admin_event.dart'; part 'admin_state.dart'; class AdminBloc extends Bloc { final AdminRepositoryImpl adminRepository; AdminBloc(this.adminRepository) : super(AdminInitial()) { on(_onLoadDashboardStats); on(_onLoadUsers); on(_onLoadRoles); on(_onLoadModelConfigs); on(_onLoadSystemConfigs); on(_onUpdateUserStatus); on(_onCreateRole); on(_onUpdateRole); on(_onUpdateModelConfig); on(_onUpdateSystemConfig); on(_onAddCreditsToUser); on(_onDeductCreditsFromUser); on(_onUpdateUserInfo); on(_onAssignRoleToUser); } Future _onLoadDashboardStats( LoadDashboardStats event, Emitter emit, ) async { emit(AdminLoading()); try { final stats = await adminRepository.getDashboardStats(); emit(DashboardStatsLoaded(stats)); } catch (e) { emit(AdminError(e.toString())); } } Future _onLoadUsers( LoadUsers event, Emitter emit, ) async { emit(AdminLoading()); try { final users = await adminRepository.getUsers( page: event.page, size: event.size, search: event.search, ); emit(UsersLoaded(users)); } catch (e) { emit(AdminError(e.toString())); } } Future _onLoadRoles( LoadRoles event, Emitter emit, ) async { emit(AdminLoading()); try { final roles = await adminRepository.getRoles(); emit(RolesLoaded(roles)); } catch (e) { emit(AdminError(e.toString())); } } Future _onLoadModelConfigs( LoadModelConfigs event, Emitter emit, ) async { emit(AdminLoading()); try { final configs = await adminRepository.getModelConfigs(); emit(ModelConfigsLoaded(configs)); } catch (e) { emit(AdminError(e.toString())); } } Future _onLoadSystemConfigs( LoadSystemConfigs event, Emitter emit, ) async { emit(AdminLoading()); try { final configs = await adminRepository.getSystemConfigs(); emit(SystemConfigsLoaded(configs)); } catch (e) { emit(AdminError(e.toString())); } } Future _onUpdateUserStatus( UpdateUserStatus event, Emitter emit, ) async { try { await adminRepository.updateUserStatus(event.userId, event.status); // 重新加载用户列表 add(LoadUsers()); } catch (e) { emit(AdminError(e.toString())); } } Future _onCreateRole( CreateRole event, Emitter emit, ) async { try { await adminRepository.createRole(event.role); // 重新加载角色列表 add(LoadRoles()); } catch (e) { emit(AdminError(e.toString())); } } Future _onUpdateRole( UpdateRole event, Emitter emit, ) async { try { await adminRepository.updateRole(event.roleId, event.role); // 重新加载角色列表 add(LoadRoles()); } catch (e) { emit(AdminError(e.toString())); } } Future _onUpdateModelConfig( UpdateModelConfig event, Emitter emit, ) async { try { await adminRepository.updateModelConfig(event.configId, event.config); // 重新加载模型配置列表 add(LoadModelConfigs()); } catch (e) { emit(AdminError(e.toString())); } } Future _onUpdateSystemConfig( UpdateSystemConfig event, Emitter emit, ) async { try { await adminRepository.updateSystemConfig(event.configKey, event.value); // 重新加载系统配置列表 add(LoadSystemConfigs()); } catch (e) { emit(AdminError(e.toString())); } } Future _onAddCreditsToUser( AddCreditsToUser event, Emitter emit, ) async { try { await adminRepository.addCreditsToUser(event.userId, event.amount, event.reason); // 重新加载用户列表 add(LoadUsers()); } catch (e) { emit(AdminError(e.toString())); } } Future _onDeductCreditsFromUser( DeductCreditsFromUser event, Emitter emit, ) async { try { await adminRepository.deductCreditsFromUser(event.userId, event.amount, event.reason); // 重新加载用户列表 add(LoadUsers()); } catch (e) { emit(AdminError(e.toString())); } } Future _onUpdateUserInfo( UpdateUserInfo event, Emitter emit, ) async { try { await adminRepository.updateUserInfo( event.userId, email: event.email, displayName: event.displayName, accountStatus: event.accountStatus, ); // 重新加载用户列表 add(LoadUsers()); } catch (e) { emit(AdminError(e.toString())); } } Future _onAssignRoleToUser( AssignRoleToUser event, Emitter emit, ) async { try { await adminRepository.assignRoleToUser(event.userId, event.roleId); // 重新加载用户列表 add(LoadUsers()); } catch (e) { emit(AdminError(e.toString())); } } }