Files
2026-09-15 15:44:13 +07:00

61 lines
1.9 KiB
Dart

//搜索相关业务
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<List<TagsBean>> fetchPublishTags() async {
final result = await httpManager.fetchResponseByGET(
'/search/publisher/list',
param: <String, dynamic>{},
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<VideoListResp?> 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<VideoListResp?> 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;
}
}