import 'package:blog_app/config/app_config.dart'; import 'package:blog_app/models/blog.dart'; import 'package:flutter_common/models/common_model.dart'; import 'package:flutter_common/utils/convert_utils.dart'; import 'package:flutter_common/utils/http_utils.dart'; Future> queryBlogByPageApi(int currentPage, int pageSize) { return HttpUtil(baseUrl: AppConfig.baseApiUrl).get>( "/blog/page", queryParameters: {"currentPage": currentPage, "pageSize": pageSize}, converter: (data) => convertPage(data, Blog.fromJson), ); } Future> queryBlogByConditionApi( String? category, String? title, int? year, ) { final Map queryParams = {}; if (category != null && category.isNotEmpty) { queryParams['category'] = category; } if (title != null && title.isNotEmpty) { queryParams['title'] = title; } if (year != null && year > 0) { queryParams['year'] = year; } return HttpUtil(baseUrl: AppConfig.baseApiUrl).get>( "/blog/condition", queryParameters: queryParams, converter: (data) => convertList(data, Blog.fromJson), ); } Future> searchBlog(String keyword) { return HttpUtil(baseUrl: AppConfig.baseApiUrl).get>( "/blog/search", queryParameters: {"keyword": keyword}, converter: (data) => convertList(data, BlogSearch.fromJson), ); } Future queryBlogByIdApi(int id) { return HttpUtil( baseUrl: AppConfig.baseApiUrl, ).get("/blog/$id/content", converter: (data) => Blog.fromJson(data)); } Future> queryBlogCategoryApi() { return HttpUtil(baseUrl: AppConfig.baseApiUrl).get>( "/blog/category", converter: (data) => convertList(data, BlogCategory.fromJson), ); } Future queryBlogOverviewStatsApi() { return HttpUtil(baseUrl: AppConfig.baseApiUrl).get( "/stats/overview", converter: (data) => BlogStats.fromJson(data), ); } Future> queryBlogApprovedStatsApi(int year) { return HttpUtil(baseUrl: AppConfig.baseApiUrl).get>( "/stats/approved/monthly", queryParameters: {"year": year}, converter: (data) => convertList(data, ChartData.fromJson), ); } Future> queryBlogVisitStatsApi(int year) { return HttpUtil(baseUrl: AppConfig.baseApiUrl).get>( "/stats/visit/monthly", queryParameters: {"year": year}, converter: (data) => convertList(data, ChartData.fromJson), ); } Future> queryBlogVisitRankStatsApi() { return HttpUtil(baseUrl: AppConfig.baseApiUrl).get>( "/stats/visit/rank", converter: (data) => convertList(data, ChartData.fromJson), ); } Future> queryBlogCategoryStatsApi() { return HttpUtil(baseUrl: AppConfig.baseApiUrl).get>( "/stats/category", converter: (data) => convertList(data, ChartData.fromJson), ); } Future> queryBlogReadRankStatsApi() { return HttpUtil(baseUrl: AppConfig.baseApiUrl).get>( "/stats/read/rank", converter: (data) => convertList(data, ChartData.fromJson), ); }