//搜索相关业务 import 'package:hgdj/hj_model/home/video_list_model.dart'; import 'package:hgdj/hj_model/video_model.dart'; import 'package:hgdj/tools_base/net/http_manager.dart'; class SearchService { /// 获取交友发布tag static Future> fetchPublishTags() async { final result = await httpManager.fetchResponseByGET( '/search/publisher/list', param: {}, jsonTransformation: (json) => (json['list'] as List?)?.map((e) => TagsBean.fromMap(e)).toList() ?? []); //返回类型非空,给不了 null:失败时这里抛,由调用方 try/catch 兜底(改可空要连调用方一起改) return result.data; } //猜你想要 type: 0v本周, 1本月,2上月 3.最多收藏 static Future getHotVideos( int pageNumber, int pageSize, int sortType) async { final param = { "pageNumber": pageNumber, "pageSize": pageSize, "type": sortType, }; final result = await httpManager.fetchResponseByGET( '/search/hotVid/list', param: param, jsonTransformation: (json) => VideoListResp.fromJson(json), ); return result.isSuccess ? result.data : null; } //realm: SP-视频 SHORT-短视频 DRAMA-短剧 COVER-帖子 USER-用户 //sortType: 0综合排序 1最多观看 2最新上架 3最多收藏 static Future searchMedia( String keyWords, { int pageNumber = 1, int pageSize = 20, String realm = 'SP', int? sortType, }) async { final param = { 'pageNumber': pageNumber, 'pageSize': pageSize, 'keyWords': [keyWords], 'realm': realm, 'sortType': sortType, }..removeWhere((k, v) => v == null); final result = await httpManager.fetchResponseByPOST( '/search/list', param: param, jsonTransformation: (json) => VideoListResp.fromJson(json), ); return result.isSuccess ? result.data : null; } }