import 'package:domain/entity/feedback_detail_entity.dart'; import 'package:plugin_platform/platform_export.dart'; import 'package:plugin_platform/http/dio_engine.dart'; import 'package:plugin_platform/http/http_result.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:shared/utils/log_utils.dart'; import '../constants/api_constants.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:plugin_basic/provider/http_provider/http_provider.dart'; import '../entity/feedback_list_entity.dart'; import '../entity/id_name_entity.dart'; part 'main_repository.g.dart'; @Riverpod(keepAlive: true) MainRepository mainRepository(Ref ref) { final dioEngine = ref.watch(dioEngineProvider); return MainRepository(dioEngine: dioEngine); } /* * 首页的数据仓库 */ class MainRepository { DioEngine dioEngine; MainRepository({required this.dioEngine}); /// 获取反馈的分类 Future> fetchFeedbackCategory({ CancelToken? cancelToken, }) async { final result = await dioEngine.requestNetResult( ApiConstants.apiFeedbackCategory, method: HttpMethod.GET, isShowLoadingDialog: true, networkDebounce: true, cancelToken: cancelToken, ); if (result.isSuccess) { final jsonList = result.getListJson(); //获取List数据 需要转换一次 var list = jsonList ?.map((value) { if (value is Map) { return IdNameEntity.fromJson(value); } else { return null; } }) .where((item) => item != null) .cast() .toList(); return result.convert(list: list); } return result.convert(); } /// 发布反馈 Future postFeedback({ required String? categoryId, required String? title, required String? content, List? paths, CancelToken? cancelToken, }) async { Map params = {}; params['category_id'] = categoryId!; params['title'] = title!; params['content'] = content!; Map files = {}; if (paths != null && paths.isNotEmpty) { paths.asMap().forEach((index, path) { files["resources[$index]"] = path; }); } final result = await dioEngine.requestNetResult( ApiConstants.apiFeedbackPost, params: params, paths: files, method: HttpMethod.POST, isShowLoadingDialog: true, networkDebounce: true, cancelToken: cancelToken, ); if (result.isSuccess) { return result.convert(); } return result.convert(); } /// 已发布的反馈列表 Future> fetchFeedbackList({ required String status, required int curPage, CancelToken? cancelToken, }) async { Map params = {}; params['status'] = status; params['page'] = curPage.toString(); params['limit'] = "10"; final result = await dioEngine.requestNetResult( ApiConstants.apiFeedbackList, params: params, method: HttpMethod.GET, cancelToken: cancelToken, ); if (result.isSuccess) { final json = result.getDataJson(); var data = FeedbackListEntity.fromJson(json!); return result.convert(data: data); } return result.convert(); } /// 获取反馈详情 Future> fetchFeedbackDetail({ required String? id, CancelToken? cancelToken, }) async { Map params = {}; params['id'] = id??""; final result = await dioEngine.requestNetResult( ApiConstants.apiFeedbackDetail, method: HttpMethod.GET, params: params, isShowLoadingDialog: true, networkDebounce: true, cancelToken: cancelToken, ); if (result.isSuccess) { final json = result.getDataJson(); var data = FeedbackDetailEntity.fromJson(json!); return result.convert(data: data); } return result.convert(); } }