马良AI写作初始化仓库

This commit is contained in:
邓滨杰
2025-09-10 00:07:52 +08:00
parent 3c06bb1a03
commit 39c0f8840f
1309 changed files with 318528 additions and 0 deletions

View 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()));
}
}
}

View 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];
}

View 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];
}