马良AI写作初始化仓库
This commit is contained in:
220
AINoval/lib/blocs/admin/admin_bloc.dart
Normal file
220
AINoval/lib/blocs/admin/admin_bloc.dart
Normal file
@@ -0,0 +1,220 @@
|
||||
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<AdminEvent, AdminState> {
|
||||
final AdminRepositoryImpl adminRepository;
|
||||
|
||||
AdminBloc(this.adminRepository) : super(AdminInitial()) {
|
||||
on<LoadDashboardStats>(_onLoadDashboardStats);
|
||||
on<LoadUsers>(_onLoadUsers);
|
||||
on<LoadRoles>(_onLoadRoles);
|
||||
on<LoadModelConfigs>(_onLoadModelConfigs);
|
||||
on<LoadSystemConfigs>(_onLoadSystemConfigs);
|
||||
on<UpdateUserStatus>(_onUpdateUserStatus);
|
||||
on<CreateRole>(_onCreateRole);
|
||||
on<UpdateRole>(_onUpdateRole);
|
||||
on<UpdateModelConfig>(_onUpdateModelConfig);
|
||||
on<UpdateSystemConfig>(_onUpdateSystemConfig);
|
||||
on<AddCreditsToUser>(_onAddCreditsToUser);
|
||||
on<DeductCreditsFromUser>(_onDeductCreditsFromUser);
|
||||
on<UpdateUserInfo>(_onUpdateUserInfo);
|
||||
on<AssignRoleToUser>(_onAssignRoleToUser);
|
||||
}
|
||||
|
||||
Future<void> _onLoadDashboardStats(
|
||||
LoadDashboardStats event,
|
||||
Emitter<AdminState> emit,
|
||||
) async {
|
||||
emit(AdminLoading());
|
||||
try {
|
||||
final stats = await adminRepository.getDashboardStats();
|
||||
emit(DashboardStatsLoaded(stats));
|
||||
} catch (e) {
|
||||
emit(AdminError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onLoadUsers(
|
||||
LoadUsers event,
|
||||
Emitter<AdminState> 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<void> _onLoadRoles(
|
||||
LoadRoles event,
|
||||
Emitter<AdminState> emit,
|
||||
) async {
|
||||
emit(AdminLoading());
|
||||
try {
|
||||
final roles = await adminRepository.getRoles();
|
||||
emit(RolesLoaded(roles));
|
||||
} catch (e) {
|
||||
emit(AdminError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onLoadModelConfigs(
|
||||
LoadModelConfigs event,
|
||||
Emitter<AdminState> emit,
|
||||
) async {
|
||||
emit(AdminLoading());
|
||||
try {
|
||||
final configs = await adminRepository.getModelConfigs();
|
||||
emit(ModelConfigsLoaded(configs));
|
||||
} catch (e) {
|
||||
emit(AdminError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onLoadSystemConfigs(
|
||||
LoadSystemConfigs event,
|
||||
Emitter<AdminState> emit,
|
||||
) async {
|
||||
emit(AdminLoading());
|
||||
try {
|
||||
final configs = await adminRepository.getSystemConfigs();
|
||||
emit(SystemConfigsLoaded(configs));
|
||||
} catch (e) {
|
||||
emit(AdminError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onUpdateUserStatus(
|
||||
UpdateUserStatus event,
|
||||
Emitter<AdminState> emit,
|
||||
) async {
|
||||
try {
|
||||
await adminRepository.updateUserStatus(event.userId, event.status);
|
||||
// 重新加载用户列表
|
||||
add(LoadUsers());
|
||||
} catch (e) {
|
||||
emit(AdminError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onCreateRole(
|
||||
CreateRole event,
|
||||
Emitter<AdminState> emit,
|
||||
) async {
|
||||
try {
|
||||
await adminRepository.createRole(event.role);
|
||||
// 重新加载角色列表
|
||||
add(LoadRoles());
|
||||
} catch (e) {
|
||||
emit(AdminError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onUpdateRole(
|
||||
UpdateRole event,
|
||||
Emitter<AdminState> emit,
|
||||
) async {
|
||||
try {
|
||||
await adminRepository.updateRole(event.roleId, event.role);
|
||||
// 重新加载角色列表
|
||||
add(LoadRoles());
|
||||
} catch (e) {
|
||||
emit(AdminError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onUpdateModelConfig(
|
||||
UpdateModelConfig event,
|
||||
Emitter<AdminState> emit,
|
||||
) async {
|
||||
try {
|
||||
await adminRepository.updateModelConfig(event.configId, event.config);
|
||||
// 重新加载模型配置列表
|
||||
add(LoadModelConfigs());
|
||||
} catch (e) {
|
||||
emit(AdminError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onUpdateSystemConfig(
|
||||
UpdateSystemConfig event,
|
||||
Emitter<AdminState> emit,
|
||||
) async {
|
||||
try {
|
||||
await adminRepository.updateSystemConfig(event.configKey, event.value);
|
||||
// 重新加载系统配置列表
|
||||
add(LoadSystemConfigs());
|
||||
} catch (e) {
|
||||
emit(AdminError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onAddCreditsToUser(
|
||||
AddCreditsToUser event,
|
||||
Emitter<AdminState> emit,
|
||||
) async {
|
||||
try {
|
||||
await adminRepository.addCreditsToUser(event.userId, event.amount, event.reason);
|
||||
// 重新加载用户列表
|
||||
add(LoadUsers());
|
||||
} catch (e) {
|
||||
emit(AdminError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onDeductCreditsFromUser(
|
||||
DeductCreditsFromUser event,
|
||||
Emitter<AdminState> emit,
|
||||
) async {
|
||||
try {
|
||||
await adminRepository.deductCreditsFromUser(event.userId, event.amount, event.reason);
|
||||
// 重新加载用户列表
|
||||
add(LoadUsers());
|
||||
} catch (e) {
|
||||
emit(AdminError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onUpdateUserInfo(
|
||||
UpdateUserInfo event,
|
||||
Emitter<AdminState> 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<void> _onAssignRoleToUser(
|
||||
AssignRoleToUser event,
|
||||
Emitter<AdminState> emit,
|
||||
) async {
|
||||
try {
|
||||
await adminRepository.assignRoleToUser(event.userId, event.roleId);
|
||||
// 重新加载用户列表
|
||||
add(LoadUsers());
|
||||
} catch (e) {
|
||||
emit(AdminError(e.toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
153
AINoval/lib/blocs/admin/admin_event.dart
Normal file
153
AINoval/lib/blocs/admin/admin_event.dart
Normal file
@@ -0,0 +1,153 @@
|
||||
part of 'admin_bloc.dart';
|
||||
|
||||
abstract class AdminEvent extends Equatable {
|
||||
const AdminEvent();
|
||||
|
||||
@override
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
|
||||
class LoadDashboardStats extends AdminEvent {}
|
||||
|
||||
class LoadUsers extends AdminEvent {
|
||||
final int page;
|
||||
final int size;
|
||||
final String? search;
|
||||
|
||||
const LoadUsers({
|
||||
this.page = 0,
|
||||
this.size = 20,
|
||||
this.search,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object?> get props => [page, size, search];
|
||||
}
|
||||
|
||||
class LoadRoles extends AdminEvent {}
|
||||
|
||||
class LoadModelConfigs extends AdminEvent {}
|
||||
|
||||
class LoadSystemConfigs extends AdminEvent {}
|
||||
|
||||
class UpdateUserStatus extends AdminEvent {
|
||||
final String userId;
|
||||
final String status;
|
||||
|
||||
const UpdateUserStatus({
|
||||
required this.userId,
|
||||
required this.status,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object> get props => [userId, status];
|
||||
}
|
||||
|
||||
class CreateRole extends AdminEvent {
|
||||
final AdminRole role;
|
||||
|
||||
const CreateRole(this.role);
|
||||
|
||||
@override
|
||||
List<Object> get props => [role];
|
||||
}
|
||||
|
||||
class UpdateRole extends AdminEvent {
|
||||
final String roleId;
|
||||
final AdminRole role;
|
||||
|
||||
const UpdateRole({
|
||||
required this.roleId,
|
||||
required this.role,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object> get props => [roleId, role];
|
||||
}
|
||||
|
||||
class UpdateModelConfig extends AdminEvent {
|
||||
final String configId;
|
||||
final AdminModelConfig config;
|
||||
|
||||
const UpdateModelConfig({
|
||||
required this.configId,
|
||||
required this.config,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object> get props => [configId, config];
|
||||
}
|
||||
|
||||
class UpdateSystemConfig extends AdminEvent {
|
||||
final String configKey;
|
||||
final String value;
|
||||
|
||||
const UpdateSystemConfig({
|
||||
required this.configKey,
|
||||
required this.value,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object> get props => [configKey, value];
|
||||
}
|
||||
|
||||
// 添加积分管理相关事件
|
||||
class AddCreditsToUser extends AdminEvent {
|
||||
final String userId;
|
||||
final int amount;
|
||||
final String reason;
|
||||
|
||||
const AddCreditsToUser({
|
||||
required this.userId,
|
||||
required this.amount,
|
||||
required this.reason,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object> get props => [userId, amount, reason];
|
||||
}
|
||||
|
||||
class DeductCreditsFromUser extends AdminEvent {
|
||||
final String userId;
|
||||
final int amount;
|
||||
final String reason;
|
||||
|
||||
const DeductCreditsFromUser({
|
||||
required this.userId,
|
||||
required this.amount,
|
||||
required this.reason,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object> get props => [userId, amount, reason];
|
||||
}
|
||||
|
||||
class UpdateUserInfo extends AdminEvent {
|
||||
final String userId;
|
||||
final String? email;
|
||||
final String? displayName;
|
||||
final String? accountStatus;
|
||||
|
||||
const UpdateUserInfo({
|
||||
required this.userId,
|
||||
this.email,
|
||||
this.displayName,
|
||||
this.accountStatus,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object?> get props => [userId, email, displayName, accountStatus];
|
||||
}
|
||||
|
||||
class AssignRoleToUser extends AdminEvent {
|
||||
final String userId;
|
||||
final String roleId;
|
||||
|
||||
const AssignRoleToUser({
|
||||
required this.userId,
|
||||
required this.roleId,
|
||||
});
|
||||
|
||||
@override
|
||||
List<Object> get props => [userId, roleId];
|
||||
}
|
||||
66
AINoval/lib/blocs/admin/admin_state.dart
Normal file
66
AINoval/lib/blocs/admin/admin_state.dart
Normal file
@@ -0,0 +1,66 @@
|
||||
part of 'admin_bloc.dart';
|
||||
|
||||
abstract class AdminState extends Equatable {
|
||||
const AdminState();
|
||||
|
||||
@override
|
||||
List<Object?> get props => [];
|
||||
}
|
||||
|
||||
class AdminInitial extends AdminState {}
|
||||
|
||||
class AdminLoading extends AdminState {}
|
||||
|
||||
class AdminError extends AdminState {
|
||||
final String message;
|
||||
|
||||
const AdminError(this.message);
|
||||
|
||||
@override
|
||||
List<Object> get props => [message];
|
||||
}
|
||||
|
||||
class DashboardStatsLoaded extends AdminState {
|
||||
final AdminDashboardStats stats;
|
||||
|
||||
const DashboardStatsLoaded(this.stats);
|
||||
|
||||
@override
|
||||
List<Object> get props => [stats];
|
||||
}
|
||||
|
||||
class UsersLoaded extends AdminState {
|
||||
final List<AdminUser> users;
|
||||
|
||||
const UsersLoaded(this.users);
|
||||
|
||||
@override
|
||||
List<Object> get props => [users];
|
||||
}
|
||||
|
||||
class RolesLoaded extends AdminState {
|
||||
final List<AdminRole> roles;
|
||||
|
||||
const RolesLoaded(this.roles);
|
||||
|
||||
@override
|
||||
List<Object> get props => [roles];
|
||||
}
|
||||
|
||||
class ModelConfigsLoaded extends AdminState {
|
||||
final List<AdminModelConfig> configs;
|
||||
|
||||
const ModelConfigsLoaded(this.configs);
|
||||
|
||||
@override
|
||||
List<Object> get props => [configs];
|
||||
}
|
||||
|
||||
class SystemConfigsLoaded extends AdminState {
|
||||
final List<AdminSystemConfig> configs;
|
||||
|
||||
const SystemConfigsLoaded(this.configs);
|
||||
|
||||
@override
|
||||
List<Object> get props => [configs];
|
||||
}
|
||||
Reference in New Issue
Block a user