马良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,99 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:equatable/equatable.dart';
import '../../services/api_service/repositories/impl/subscription_repository_impl.dart';
import '../../models/admin/subscription_models.dart';
part 'subscription_event.dart';
part 'subscription_state.dart';
class SubscriptionBloc extends Bloc<SubscriptionEvent, SubscriptionState> {
final SubscriptionRepositoryImpl subscriptionRepository;
SubscriptionBloc(this.subscriptionRepository) : super(SubscriptionInitial()) {
on<LoadSubscriptionPlans>(_onLoadSubscriptionPlans);
on<LoadSubscriptionStatistics>(_onLoadSubscriptionStatistics);
on<CreateSubscriptionPlan>(_onCreateSubscriptionPlan);
on<UpdateSubscriptionPlan>(_onUpdateSubscriptionPlan);
on<DeleteSubscriptionPlan>(_onDeleteSubscriptionPlan);
on<ToggleSubscriptionPlanStatus>(_onToggleSubscriptionPlanStatus);
}
Future<void> _onLoadSubscriptionPlans(
LoadSubscriptionPlans event,
Emitter<SubscriptionState> emit,
) async {
emit(SubscriptionLoading());
try {
final plans = await subscriptionRepository.getAllPlans();
emit(SubscriptionPlansLoaded(plans));
} catch (e) {
emit(SubscriptionError(e.toString()));
}
}
Future<void> _onLoadSubscriptionStatistics(
LoadSubscriptionStatistics event,
Emitter<SubscriptionState> emit,
) async {
emit(SubscriptionLoading());
try {
final statistics = await subscriptionRepository.getSubscriptionStatistics();
emit(SubscriptionStatisticsLoaded(statistics));
} catch (e) {
emit(SubscriptionError(e.toString()));
}
}
Future<void> _onCreateSubscriptionPlan(
CreateSubscriptionPlan event,
Emitter<SubscriptionState> emit,
) async {
try {
await subscriptionRepository.createPlan(event.plan);
// 重新加载订阅计划列表
add(LoadSubscriptionPlans());
} catch (e) {
emit(SubscriptionError(e.toString()));
}
}
Future<void> _onUpdateSubscriptionPlan(
UpdateSubscriptionPlan event,
Emitter<SubscriptionState> emit,
) async {
try {
await subscriptionRepository.updatePlan(event.planId, event.plan);
// 重新加载订阅计划列表
add(LoadSubscriptionPlans());
} catch (e) {
emit(SubscriptionError(e.toString()));
}
}
Future<void> _onDeleteSubscriptionPlan(
DeleteSubscriptionPlan event,
Emitter<SubscriptionState> emit,
) async {
try {
await subscriptionRepository.deletePlan(event.planId);
// 重新加载订阅计划列表
add(LoadSubscriptionPlans());
} catch (e) {
emit(SubscriptionError(e.toString()));
}
}
Future<void> _onToggleSubscriptionPlanStatus(
ToggleSubscriptionPlanStatus event,
Emitter<SubscriptionState> emit,
) async {
try {
await subscriptionRepository.togglePlanStatus(event.planId, event.active);
// 重新加载订阅计划列表
add(LoadSubscriptionPlans());
} catch (e) {
emit(SubscriptionError(e.toString()));
}
}
}

View File

@@ -0,0 +1,56 @@
part of 'subscription_bloc.dart';
abstract class SubscriptionEvent extends Equatable {
const SubscriptionEvent();
@override
List<Object?> get props => [];
}
class LoadSubscriptionPlans extends SubscriptionEvent {}
class LoadSubscriptionStatistics extends SubscriptionEvent {}
class CreateSubscriptionPlan extends SubscriptionEvent {
final SubscriptionPlan plan;
const CreateSubscriptionPlan(this.plan);
@override
List<Object> get props => [plan];
}
class UpdateSubscriptionPlan extends SubscriptionEvent {
final String planId;
final SubscriptionPlan plan;
const UpdateSubscriptionPlan({
required this.planId,
required this.plan,
});
@override
List<Object> get props => [planId, plan];
}
class DeleteSubscriptionPlan extends SubscriptionEvent {
final String planId;
const DeleteSubscriptionPlan(this.planId);
@override
List<Object> get props => [planId];
}
class ToggleSubscriptionPlanStatus extends SubscriptionEvent {
final String planId;
final bool active;
const ToggleSubscriptionPlanStatus({
required this.planId,
required this.active,
});
@override
List<Object> get props => [planId, active];
}

View File

@@ -0,0 +1,39 @@
part of 'subscription_bloc.dart';
abstract class SubscriptionState extends Equatable {
const SubscriptionState();
@override
List<Object?> get props => [];
}
class SubscriptionInitial extends SubscriptionState {}
class SubscriptionLoading extends SubscriptionState {}
class SubscriptionError extends SubscriptionState {
final String message;
const SubscriptionError(this.message);
@override
List<Object> get props => [message];
}
class SubscriptionPlansLoaded extends SubscriptionState {
final List<SubscriptionPlan> plans;
const SubscriptionPlansLoaded(this.plans);
@override
List<Object> get props => [plans];
}
class SubscriptionStatisticsLoaded extends SubscriptionState {
final SubscriptionStatistics statistics;
const SubscriptionStatisticsLoaded(this.statistics);
@override
List<Object> get props => [statistics];
}