logo和名称替换

This commit is contained in:
谢宇宁
2026-10-14 11:23:36 +07:00
parent 1cb514cd02
commit c5c04a7967
478 changed files with 8990 additions and 4948 deletions
+35 -15
View File
@@ -1,9 +1,9 @@
//acg模块网络请求
import 'package:hgmj/hj_model/acg/comic_chapters_model.dart';
import 'package:hgmj/hj_model/list_base_model.dart';
import 'package:hgmj/hj_model/video_model.dart';
import 'package:hgmj/tools_base/net/http_manager.dart';
import 'package:wydj/hj_model/acg/comic_chapters_model.dart';
import 'package:wydj/hj_model/list_base_model.dart';
import 'package:wydj/hj_model/video_model.dart';
import 'package:wydj/tools_base/net/http_manager.dart';
import '../../hj_model/acg/cartoon_more_list.dart';
import '../../hj_model/cartoon_media_info.dart';
@@ -38,7 +38,8 @@ class ACGService {
final result = await httpManager.fetchResponseByGET(
"/tag/media/list",
param: param,
jsonTransformation: (json) => ListBaseModel<CartoonMediaInfo>.fromJson(json),
jsonTransformation: (json) =>
ListBaseModel<CartoonMediaInfo>.fromJson(json),
);
return result.isSuccess ? result.data : null;
}
@@ -56,8 +57,8 @@ class ACGService {
/// 获取标签详情
static Future<TagsBean?> fetchMediaTag(String tagId) async {
final param = {'id': tagId};
final result =
await httpManager.fetchResponseByGET('/media_tag/info', param: param, jsonTransformation: (json) => TagsBean.fromMap(json));
final result = await httpManager.fetchResponseByGET('/media_tag/info',
param: param, jsonTransformation: (json) => TagsBean.fromMap(json));
return result.isSuccess ? result.data : null;
}
@@ -87,7 +88,8 @@ class ACGService {
final result = await httpManager.fetchResponseByGET(
'/media/hot',
param: param,
jsonTransformation: (json) => ListBaseModel<CartoonMediaInfo>.fromJson(json),
jsonTransformation: (json) =>
ListBaseModel<CartoonMediaInfo>.fromJson(json),
);
return result.isSuccess ? result.data : null;
}
@@ -146,14 +148,17 @@ class ACGService {
final result = await httpManager.fetchResponseByGET(
'/media/ranking',
param: param,
jsonTransformation: (json) => ListBaseModel<CartoonMediaInfo>.fromJson(json),
jsonTransformation: (json) =>
ListBaseModel<CartoonMediaInfo>.fromJson(json),
);
return result.isSuccess ? result.data : null;
}
//获取动漫内容章节列表 sortType: 0-正序 1-倒序
static Future<ListBaseModel<ComicChapterInfo>?> getChapterList(String mediaId, int pageNumber, int pageSize, {int? sortType = 0}) async {
static Future<ListBaseModel<ComicChapterInfo>?> getChapterList(
String mediaId, int pageNumber, int pageSize,
{int? sortType = 0}) async {
final param = {
'pageNumber': pageNumber,
'pageSize': pageSize,
@@ -163,7 +168,8 @@ class ACGService {
final result = await httpManager.fetchResponseByGET(
'/media_content/list',
param: param,
jsonTransformation: (json) => ListBaseModel<ComicChapterInfo>.fromJson(json),
jsonTransformation: (json) =>
ListBaseModel<ComicChapterInfo>.fromJson(json),
);
return result.isSuccess ? result.data : null;
}
@@ -187,7 +193,8 @@ class ACGService {
final result = await httpManager.fetchResponseByGET(
'/media/recommend',
param: param,
jsonTransformation: (json) => ListBaseModel<CartoonMediaInfo>.fromJson(json),
jsonTransformation: (json) =>
ListBaseModel<CartoonMediaInfo>.fromJson(json),
);
return result.isSuccess ? result.data : null;
}
@@ -195,8 +202,20 @@ class ACGService {
//kind:1动漫 2漫画 3小说 4短剧
//sortType:1-最新上架 2-最多观看
static Future<MediaSearchListModel?> mediaSearch(
{int page = 1, int size = 20, int? kind, String? tagName, int? sortType, String? keyword}) async {
final param = {'pageNumber': page, 'pageSize': size, 'kind': kind, 'tagName': tagName, 'sortType': sortType, 'keyword': keyword};
{int page = 1,
int size = 20,
int? kind,
String? tagName,
int? sortType,
String? keyword}) async {
final param = {
'pageNumber': page,
'pageSize': size,
'kind': kind,
'tagName': tagName,
'sortType': sortType,
'keyword': keyword
};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByGET(
'/media/search',
@@ -244,7 +263,8 @@ class ACGService {
final result = await httpManager.fetchResponseByGET(
'/media/topic',
param: param,
jsonTransformation: (json) => ListBaseModel<CartoonMediaInfo>.fromJson(json),
jsonTransformation: (json) =>
ListBaseModel<CartoonMediaInfo>.fromJson(json),
);
return result.isSuccess ? result.data : null;
}
+57 -22
View File
@@ -1,9 +1,9 @@
//AI相关接口
import 'package:hgmj/hj_model/list_base_model.dart';
import 'package:hgmj/hj_page/ai/ai_sub_type/ai_function_logic.dart';
import 'package:hgmj/tools_base/debug_log.dart';
import 'package:hgmj/tools_base/net/http_manager.dart';
import 'package:wydj/hj_model/list_base_model.dart';
import 'package:wydj/hj_page/ai/ai_sub_type/ai_function_logic.dart';
import 'package:wydj/tools_base/debug_log.dart';
import 'package:wydj/tools_base/net/http_manager.dart';
import '../../hj_page/ai/models/ai_girl_resp_model.dart';
import '../../hj_page/ai/models/ai_mod_list_model.dart';
@@ -18,7 +18,11 @@ class AIService {
int? pageSize,
int? status,
) async {
final param = {'pageNumber': pageNumber, 'pageSize': pageSize, 'status': status};
final param = {
'pageNumber': pageNumber,
'pageSize': pageSize,
'status': status
};
final result = await httpManager.fetchResponseByGET(
'/ai/undress/list',
param: param,
@@ -68,8 +72,13 @@ class AIService {
}
//生成AI脱衣记录
static Future<bool> generateUndress(List<String>? originPics, bool shareStatus, String? shareTitle) async {
final param = {'originPic': originPics, 'shareStatus': shareStatus ? 1 : 0, 'shareTitle': shareTitle}..removeWhere((k, v) => v == null);
static Future<bool> generateUndress(
List<String>? originPics, bool shareStatus, String? shareTitle) async {
final param = {
'originPic': originPics,
'shareStatus': shareStatus ? 1 : 0,
'shareTitle': shareTitle
}..removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByPOST(
'/ai/undress/generate',
param: param,
@@ -93,12 +102,15 @@ class AIService {
'shareTitle': shareTitle
}..removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByPOST('/ai/changeface/generate', param: param);
final result = await httpManager
.fetchResponseByPOST('/ai/changeface/generate', param: param);
return result.isSuccess && result.data == 'success';
}
//生成图片AI换脸
static Future<bool> generateImg(String picture, String imgModId, bool shareStatus, String? shareTitle, {String? discount}) async {
static Future<bool> generateImg(
String picture, String imgModId, bool shareStatus, String? shareTitle,
{String? discount}) async {
final param = {
'originPic': picture,
'mId': imgModId,
@@ -129,7 +141,8 @@ class AIService {
String? categoryId, //模版分类id,如果为空,则默认第一个模版分类
}) async {
//接口只认 type=0/1,枚举在这一层换回去
final param = {'type': type.isVideoFace ? 1 : 0, 'categoryId': categoryId}..removeWhere((k, v) => v == null);
final param = {'type': type.isVideoFace ? 1 : 0, 'categoryId': categoryId}
..removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByGET(
'/ai/mod/v2/list',
param: param,
@@ -141,21 +154,24 @@ class AIService {
///删除AI订单脱衣
static Future<bool> deleteUndress(String? id) async {
final param = {'id': id};
final result = await httpManager.fetchResponseByPOST('/ai/undress/hide', param: param);
final result =
await httpManager.fetchResponseByPOST('/ai/undress/hide', param: param);
return result.isSuccess;
}
///删除AI换脸Video订单
static Future<bool> deleteChangeFace(String? id) async {
final param = {'id': id};
final result = await httpManager.fetchResponseByPOST('/ai/changeface/hide', param: param);
final result = await httpManager.fetchResponseByPOST('/ai/changeface/hide',
param: param);
return result.isSuccess;
}
///删除AI换脸 Img订单
static Future<bool> deleteImg(String? id) async {
final param = {'id': id};
final result = await httpManager.fetchResponseByPOST('/ai/img/hide', param: param);
final result =
await httpManager.fetchResponseByPOST('/ai/img/hide', param: param);
return result.isSuccess;
}
@@ -200,9 +216,12 @@ class AIService {
}
///获取AI广场列表
static Future<ListBaseModel<AISquareItemModel>?> getPlazaList(int pageNumber, {int pageSize = 10}) async {
static Future<ListBaseModel<AISquareItemModel>?> getPlazaList(int pageNumber,
{int pageSize = 10}) async {
final result = await httpManager.fetchResponseByGET('/aiplaza/list',
param: {'pageNumber': pageNumber, 'pageSize': pageSize}, jsonTransformation: (json) => ListBaseModel<AISquareItemModel>.fromJson(json));
param: {'pageNumber': pageNumber, 'pageSize': pageSize},
jsonTransformation: (json) =>
ListBaseModel<AISquareItemModel>.fromJson(json));
return result.isSuccess ? result.data : null;
}
@@ -210,7 +229,8 @@ class AIService {
static Future<TemplateModel?> getModelInfo(String? id, int? type) async {
final param = {'id': id, 'type': type};
param.removeWhere((k, v) => v == null);
final resultData = await httpManager.fetchResponseByGET('/ai/mod/info', param: param);
final resultData =
await httpManager.fetchResponseByGET('/ai/mod/info', param: param);
if (resultData.isSuccess) {
final data = resultData.data;
if (data is Map) {
@@ -234,7 +254,11 @@ class AIService {
int? pageSize,
int? status,
) async {
final param = {'pageNumber': pageNumber, 'pageSize': pageSize, 'status': status};
final param = {
'pageNumber': pageNumber,
'pageSize': pageSize,
'status': status
};
final result = await httpManager.fetchResponseByGET(
'/ai/text_to_image/list',
param: param,
@@ -246,7 +270,8 @@ class AIService {
///删除文字绘图
static Future<bool> deleteTextToImage(String? id) async {
final param = {'id': id};
final result = await httpManager.fetchResponseByPOST('/ai/text_to_image/hide', param: param);
final result = await httpManager
.fetchResponseByPOST('/ai/text_to_image/hide', param: param);
return result.isSuccess;
}
@@ -257,7 +282,11 @@ class AIService {
int? pageSize,
int? status,
) async {
final param = {'pageNumber': pageNumber, 'pageSize': pageSize, 'status': status};
final param = {
'pageNumber': pageNumber,
'pageSize': pageSize,
'status': status
};
final result = await httpManager.fetchResponseByGET(
'/ai/imagetovideo/list',
param: param,
@@ -269,7 +298,8 @@ class AIService {
///删除AI图生视频
static Future<bool> deleteImgVideo(String? id) async {
final param = {'id': id};
final result = await httpManager.fetchResponseByPOST('/ai/imagetovideo/hide', param: param);
final result = await httpManager
.fetchResponseByPOST('/ai/imagetovideo/hide', param: param);
return result.isSuccess;
}
@@ -345,7 +375,11 @@ class AIService {
int? pageSize,
int? status,
) async {
final param = {'pageNumber': pageNumber, 'pageSize': pageSize, 'status': status};
final param = {
'pageNumber': pageNumber,
'pageSize': pageSize,
'status': status
};
final result = await httpManager.fetchResponseByGET(
'/ai_text_to_novel/list',
param: param,
@@ -357,7 +391,8 @@ class AIService {
///删除AI文生图
static Future<bool> deleteNovel(String? id) async {
final param = {'id': id};
final result = await httpManager.fetchResponseByPOST('/ai_text_to_novel/hide', param: param);
final result = await httpManager
.fetchResponseByPOST('/ai_text_to_novel/hide', param: param);
return result.isSuccess;
}
}
+15 -7
View File
@@ -1,6 +1,6 @@
import 'package:dio/dio.dart';
import 'package:hgmj/tools_base/net/base_resp_bean.dart';
import 'package:hgmj/tools_base/net/http_manager.dart';
import 'package:wydj/tools_base/net/base_resp_bean.dart';
import 'package:wydj/tools_base/net/http_manager.dart';
import 'package:uuid/uuid.dart';
/// 购买相关接口
@@ -56,7 +56,8 @@ class BuyService {
///[source] 来源页面标识
///[experimentId]/[experimentVariant]/[sessionId] VIP 卡皮 A/B:与 /mine/topay 对齐回传
///[requestId] 幂等键,见 [_idempotent]
static Future<BaseRespBean> buyVip(int? productType, String? productID, String? productName, int? discountedPrice,
static Future<BaseRespBean> buyVip(int? productType, String? productID,
String? productName, int? discountedPrice,
{String? couponId = "",
bool? finalPayStatus,
String? source,
@@ -80,11 +81,18 @@ class BuyService {
'contentId': contentId,
'checkoutContextId': checkoutContextId,
// 空值不传,避免参数错误(DISABLED / 无实验时上游不填)
'experimentId': (experimentId != null && experimentId.isNotEmpty) ? experimentId : null,
'experimentVariant': (experimentVariant != null && experimentVariant.isNotEmpty) ? experimentVariant : null,
'sessionId': (sessionId != null && sessionId.isNotEmpty) ? sessionId : null,
'experimentId': (experimentId != null && experimentId.isNotEmpty)
? experimentId
: null,
'experimentVariant':
(experimentVariant != null && experimentVariant.isNotEmpty)
? experimentVariant
: null,
'sessionId':
(sessionId != null && sessionId.isNotEmpty) ? sessionId : null,
};
param.removeWhere((k, v) => v == null);
return httpManager.fetchResponseByPOST('/product/buy', param: param, options: _idempotent(requestId));
return httpManager.fetchResponseByPOST('/product/buy',
param: param, options: _idempotent(requestId));
}
}
@@ -1,10 +1,10 @@
import 'package:hgmj/hj_model/list_base_model.dart';
import 'package:wydj/hj_model/list_base_model.dart';
//评论相关接口
import 'package:hgmj/hj_model/comment/comment_list_res.dart';
import 'package:hgmj/hj_model/comment/comment_model.dart';
import 'package:hgmj/hj_model/comment/reply_model.dart';
import 'package:hgmj/tools_base/net/http_manager.dart';
import 'package:wydj/hj_model/comment/comment_list_res.dart';
import 'package:wydj/hj_model/comment/comment_model.dart';
import 'package:wydj/hj_model/comment/reply_model.dart';
import 'package:wydj/tools_base/net/http_manager.dart';
class CommentService {
// //一级评论的全部列表
+35 -14
View File
@@ -1,8 +1,8 @@
import 'package:hgmj/hj_model/list_base_model.dart';
import 'package:wydj/hj_model/list_base_model.dart';
//公共服务api接口
import 'package:hgmj/hj_model/home/video_list_model.dart';
import 'package:hgmj/tools_base/event_bus/events.dart';
import 'package:hgmj/tools_base/net/http_manager.dart';
import 'package:wydj/hj_model/home/video_list_model.dart';
import 'package:wydj/tools_base/event_bus/events.dart';
import 'package:wydj/tools_base/net/http_manager.dart';
import '../../hj_model/banner/comment_top_banner_model.dart';
import '../../hj_model/home/plate_model.dart';
@@ -64,14 +64,18 @@ class CommonService {
}
/// 按场景拉取 Banner 列表(如评论置顶 COMMENT_TOP)
static Future<List<CommentTopBannerModel>> fetchBannerList({required String scene}) async {
static Future<List<CommentTopBannerModel>> fetchBannerList(
{required String scene}) async {
final result = await httpManager.fetchResponseByGET(
'/banner/list',
param: {'scene': scene},
jsonTransformation: (json) {
final list = json['list'] as List?;
if (list == null) return <CommentTopBannerModel>[];
final items = list.map((e) => CommentTopBannerModel.fromJson(e is Map ? Map<String, dynamic>.from(e) : null)).toList();
final items = list
.map((e) => CommentTopBannerModel.fromJson(
e is Map ? Map<String, dynamic>.from(e) : null))
.toList();
items.sort((a, b) => (b.sort ?? 0).compareTo(a.sort ?? 0));
return items;
},
@@ -100,14 +104,16 @@ class CommonService {
param: param,
);
if (result.isSuccess) {
eventBus.emit(CollectStatusModel(id: objID, isLiked: true, type: type, likeCountDelta: 1));
eventBus.emit(CollectStatusModel(
id: objID, isLiked: true, type: type, likeCountDelta: 1));
}
return result.isSuccess;
}
//取消点赞
//SP:长视频 SHORT:短视频 COVER:图文帖子 PIC:图集帖子 SEED_LINK:种子/黄油帖子 TAG:标签 COMMENT:评论 video:动漫 image:漫画 text:小说
static Future<bool> cancelLike(String? objID, String? type, {List<String>? objIDArr}) async {
static Future<bool> cancelLike(String? objID, String? type,
{List<String>? objIDArr}) async {
assert((type != null && type.isNotEmpty), 'cancelLike type 不能为空');
List<String> ids = [];
if (objIDArr?.isNotEmpty == true) {
@@ -121,18 +127,31 @@ class CommonService {
param: param,
);
if (result.isSuccess) {
eventBus.emit(CollectStatusModel(id: objID, isLiked: false, type: type, likeCountDelta: -1));
eventBus.emit(CollectStatusModel(
id: objID, isLiked: false, type: type, likeCountDelta: -1));
}
return result.isSuccess;
}
/// 获取我关注用户发的视频
/// type 为0 获取用户所有动态, 1为获取用户全部视频
static Future<VideoListResp?> fetchFollowDynamics({int page = 1, int size = 20, int? uid, int? type, String? newsType}) async {
final param = <String, dynamic>{'pageSize': size, 'pageNumber': page, 'uid': uid, 'type': type, 'newsType': newsType};
static Future<VideoListResp?> fetchFollowDynamics(
{int page = 1,
int size = 20,
int? uid,
int? type,
String? newsType}) async {
final param = <String, dynamic>{
'pageSize': size,
'pageNumber': page,
'uid': uid,
'type': type,
'newsType': newsType
};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByGET('/follow/dynamics/list',
param: param, jsonTransformation: (json) => VideoListResp.fromJson(json));
param: param,
jsonTransformation: (json) => VideoListResp.fromJson(json));
return result.isSuccess ? result.data : null;
}
@@ -150,7 +169,8 @@ class CommonService {
'type': followUserType,
};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByGET('/follow/list', param: param, jsonTransformation: (json) {
final result = await httpManager.fetchResponseByGET('/follow/list',
param: param, jsonTransformation: (json) {
return ListBaseModel<FollowUserModel>.fromJson(json);
});
return result.isSuccess ? result.data : null;
@@ -198,7 +218,8 @@ class CommonService {
'newsType': newsType,
};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByGET('/vid/recommend/list', param: param, jsonTransformation: (json) {
final result = await httpManager.fetchResponseByGET('/vid/recommend/list',
param: param, jsonTransformation: (json) {
return VideoListResp.fromJson(json);
});
return result.isSuccess ? result.data : null;
+47 -21
View File
@@ -1,20 +1,22 @@
import 'package:dio/dio.dart';
import 'package:hgmj/hj_model/drama/drama_models.dart';
import 'package:hgmj/hj_model/drama_media_info.dart';
import 'package:hgmj/hj_model/list_base_model.dart';
import 'package:hgmj/hj_model/media_content.dart';
import 'package:hgmj/tools_base/net/base_resp_bean.dart';
import 'package:hgmj/tools_base/net/http_manager.dart';
import 'package:wydj/hj_model/drama/drama_models.dart';
import 'package:wydj/hj_model/drama_media_info.dart';
import 'package:wydj/hj_model/list_base_model.dart';
import 'package:wydj/hj_model/media_content.dart';
import 'package:wydj/tools_base/net/base_resp_bean.dart';
import 'package:wydj/tools_base/net/http_manager.dart';
/// 短剧接口。金币解锁已并入 PayManager/BuyService,这里只剩读操作 + 两个计数型写操作:
/// 信息流翻页去重、分享互动计数,都必须带 `X-Request-ID`——同一次业务的重试要复用同一个 id,
/// 换新 id 就会重复计数。
class DramaService {
static Options _idempotent(String requestId) => Options(headers: {'X-Request-ID': requestId});
static Options _idempotent(String requestId) =>
Options(headers: {'X-Request-ID': requestId});
/// AI短剧信息流:一条 = 一部剧 + 该剧第 1 集。
/// 排序、去重、已看沉底全在服务端,客户端不得二次排序,也不分页页码——每次请求都是下一批
static Future<ListBaseModel<DramaFeedItem>?> fetchFeed({int size = 20, String? requestId}) async {
static Future<ListBaseModel<DramaFeedItem>?> fetchFeed(
{int size = 20, String? requestId}) async {
final result = await httpManager.fetchResponseByGET(
'/media/drama/feed',
param: {'pageSize': size},
@@ -29,7 +31,10 @@ class DramaService {
final result = await httpManager.fetchResponseByGET(
'/media/drama/topics',
jsonTransformation: (json) =>
(json['list'] as List?)?.map((e) => DramaTopic.fromJson(e)).toList() ?? <DramaTopic>[],
(json['list'] as List?)
?.map((e) => DramaTopic.fromJson(e))
.toList() ??
<DramaTopic>[],
);
return result.isSuccess ? result.data : null;
}
@@ -48,7 +53,8 @@ class DramaService {
'pageNumber': page,
'pageSize': size,
},
jsonTransformation: (json) => ListBaseModel<DramaMediaInfo>.fromJson(json),
jsonTransformation: (json) =>
ListBaseModel<DramaMediaInfo>.fromJson(json),
);
return result.isSuccess ? result.data : null;
}
@@ -104,17 +110,24 @@ class DramaService {
final result = await httpManager.fetchResponseByPOST(
'/media/library/search',
param: param,
jsonTransformation: (json) => ListBaseModel<DramaMediaInfo>.fromJson(json),
jsonTransformation: (json) =>
ListBaseModel<DramaMediaInfo>.fromJson(json),
);
return result.isSuccess ? result.data : null;
}
/// 分集列表(选集面板用) [sortType] 0-正序 1-倒序
static Future<ListBaseModel<MediaContent>?> fetchEpisodeList(String dramaId, int page, int size) async {
static Future<ListBaseModel<MediaContent>?> fetchEpisodeList(
String dramaId, int page, int size) async {
if (dramaId.isEmpty) return null; // 与 fetchDetail 一致:没有剧 id 就别发空请求
final result = await httpManager.fetchResponseByGET(
'/media_content/list',
param: {'mediaId': dramaId, 'pageNumber': page, 'pageSize': size, 'sortType': 0},
param: {
'mediaId': dramaId,
'pageNumber': page,
'pageSize': size,
'sortType': 0
},
jsonTransformation: (json) => ListBaseModel<MediaContent>.fromJson(json),
);
return result.isSuccess ? result.data : null;
@@ -133,31 +146,42 @@ class DramaService {
}
/// 我的喜欢-短剧
static Future<ListBaseModel<DramaMediaInfo>?> fetchLikes(int page, {int size = 20}) async {
static Future<ListBaseModel<DramaMediaInfo>?> fetchLikes(int page,
{int size = 20}) async {
final result = await httpManager.fetchResponseByGET(
'/mine/like',
param: {'likeType': 'drama', 'pageNumber': page, 'pageSize': size},
jsonTransformation: (json) => ListBaseModel<DramaMediaInfo>.fromJson(json),
jsonTransformation: (json) =>
ListBaseModel<DramaMediaInfo>.fromJson(json),
);
return result.isSuccess ? result.data : null;
}
/// 我的收藏-短剧 [sortType] 0-最新收藏 1-最近更新
static Future<ListBaseModel<DramaMediaInfo>?> fetchFavorites(int page, {int size = 20, int sortType = 0}) async {
static Future<ListBaseModel<DramaMediaInfo>?> fetchFavorites(int page,
{int size = 20, int sortType = 0}) async {
final result = await httpManager.fetchResponseByGET(
'/media_bookshelf/list',
param: {'type': 'drama', 'sortType': sortType, 'pageNumber': page, 'pageSize': size},
jsonTransformation: (json) => ListBaseModel<DramaMediaInfo>.fromJson(json),
param: {
'type': 'drama',
'sortType': sortType,
'pageNumber': page,
'pageSize': size
},
jsonTransformation: (json) =>
ListBaseModel<DramaMediaInfo>.fromJson(json),
);
return result.isSuccess ? result.data : null;
}
/// 我的已购-短剧(按剧去重,点进去看每集的 hasBuy)
static Future<ListBaseModel<DramaMediaInfo>?> fetchPurchased(int page, {int size = 20}) async {
static Future<ListBaseModel<DramaMediaInfo>?> fetchPurchased(int page,
{int size = 20}) async {
final result = await httpManager.fetchResponseByGET(
'/media/my_buy',
param: {'mediaType': 'drama', 'pageNumber': page, 'pageSize': size},
jsonTransformation: (json) => ListBaseModel<DramaMediaInfo>.fromJson(json),
jsonTransformation: (json) =>
ListBaseModel<DramaMediaInfo>.fromJson(json),
);
return result.isSuccess ? result.data : null;
}
@@ -198,6 +222,8 @@ class DramaService {
},
options: _idempotent(eventId),
);
return result.isSuccess ? (result.data is Map ? result.data['qrCode'] : null) : null;
return result.isSuccess
? (result.data is Map ? result.data['qrCode'] : null)
: null;
}
}
+17 -8
View File
@@ -1,34 +1,43 @@
import 'package:hgmj/tools_base/net/http_manager.dart';
import 'package:wydj/tools_base/net/http_manager.dart';
import 'package:hgmj/tools_base/net/base_resp_bean.dart';
import 'package:wydj/tools_base/net/base_resp_bean.dart';
import '../../hj_page/community/group_chat/model/im_group_list_model.dart';
import '../../hj_page/community/group_chat/model/im_message_resp.dart';
class GroupService {
///获取im群组列表
static Future<IMGroupListModel?> getList(int pageNumber, {int pageSize = 10}) async {
static Future<IMGroupListModel?> getList(int pageNumber,
{int pageSize = 10}) async {
final result = await httpManager.fetchResponseByGET('/imgroup/list',
param: {'pageNumber': pageNumber, 'pageSize': pageSize}, jsonTransformation: (json) => IMGroupListModel.fromJson(json));
param: {'pageNumber': pageNumber, 'pageSize': pageSize},
jsonTransformation: (json) => IMGroupListModel.fromJson(json));
return result.isSuccess ? result.data : null;
}
///获取是否加入群组详情
static Future<BaseRespBean> getHasJoin(int? groupId) async {
return httpManager.fetchResponseByGET('/imgroup/hasjoin', param: {'groupId': groupId});
return httpManager
.fetchResponseByGET('/imgroup/hasjoin', param: {'groupId': groupId});
}
///获取im消息列表
static Future<IMMessageResp> getMessages(int? groupId, int pageNumber, int pageSize) async {
static Future<IMMessageResp> getMessages(
int? groupId, int pageNumber, int pageSize) async {
final result = await httpManager.fetchResponseByGET('/immessage/list',
param: {'groupId': groupId, 'pageNumber': pageNumber, 'pageSize': pageSize},
param: {
'groupId': groupId,
'pageNumber': pageNumber,
'pageSize': pageSize
},
jsonTransformation: (json) => IMMessageResp.fromJson(json));
//返回类型非空,给不了 null:失败时这里抛,由调用方 try/catch 兜底(改可空要连调用方一起改)
return result.data;
}
///发送im消息
static Future<BaseRespBean> sendMessage(int? groupId, String? content, String? image) async {
static Future<BaseRespBean> sendMessage(
int? groupId, String? content, String? image) async {
final data = {'groupId': groupId, 'content': content, 'image': image};
data.removeWhere((k, v) => v == null);
return httpManager.fetchResponseByPOST('/immessage/send', param: data);
+117 -51
View File
@@ -1,13 +1,13 @@
import 'package:hgmj/hj_model/list_base_model.dart';
import 'package:hgmj/hj_model/mine/exchange_record_model.dart';
import 'package:hgmj/hj_model/user/user_income_info_model.dart';
import 'package:hgmj/hj_model/user/user_info_model.dart';
import 'package:hgmj/hj_model/video_model.dart';
import 'package:hgmj/hj_page/main_page/provider/msg_provider.dart';
import 'package:hgmj/tools_base/event_bus/event_bus_util.dart';
import 'package:hgmj/tools_base/event_bus/events.dart';
import 'package:hgmj/tools_base/global_store/store.dart';
import 'package:hgmj/tools_base/net/http_manager.dart';
import 'package:wydj/hj_model/list_base_model.dart';
import 'package:wydj/hj_model/mine/exchange_record_model.dart';
import 'package:wydj/hj_model/user/user_income_info_model.dart';
import 'package:wydj/hj_model/user/user_info_model.dart';
import 'package:wydj/hj_model/video_model.dart';
import 'package:wydj/hj_page/main_page/provider/msg_provider.dart';
import 'package:wydj/tools_base/event_bus/event_bus_util.dart';
import 'package:wydj/tools_base/event_bus/events.dart';
import 'package:wydj/tools_base/global_store/store.dart';
import 'package:wydj/tools_base/net/http_manager.dart';
import '../../hj_model/cartoon_media_info.dart';
import '../../hj_model/message/message_dynamic_list.dart';
@@ -79,7 +79,9 @@ class MineService {
}
static Future<bool> reduceDownloadCount() async {
return (await httpManager.fetchResponseByPOST('/mine/download/use', param: <String, dynamic>{})).isSuccess;
return (await httpManager.fetchResponseByPOST('/mine/download/use',
param: <String, dynamic>{}))
.isSuccess;
}
/// 获取用户信息
@@ -96,7 +98,8 @@ class MineService {
}
/// 提现明细
static Future<WithdrawDetailsModel?> getWithdrawDetails({int pageNumber = 1, int pageSize = 10}) async {
static Future<WithdrawDetailsModel?> getWithdrawDetails(
{int pageNumber = 1, int pageSize = 10}) async {
final result = await httpManager.fetchResponseByGET(
'/withdraw/order',
param: {
@@ -159,7 +162,13 @@ class MineService {
}
static Future<UserInfoModel?> mobileLogin(
String? mobile, String? code, String? devID, String? devType, String? sysType, String? ver, String? buildID,
String? mobile,
String? code,
String? devID,
String? devType,
String? sysType,
String? ver,
String? buildID,
[String? cutInfos = ""]) async {
final param = {
'mobile': mobile,
@@ -172,34 +181,45 @@ class MineService {
'cutInfos': cutInfos
};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByPOST('/mine/mobileLoginOnly',
param: param, jsonTransformation: (json) => UserInfoModel.fromJson(json['userInfo']));
final result = await httpManager.fetchResponseByPOST(
'/mine/mobileLoginOnly',
param: param,
jsonTransformation: (json) => UserInfoModel.fromJson(json['userInfo']));
return result.isSuccess ? result.data : null;
}
/// 积分兑换商品
static Future<bool> integralExchange(String id, {String? name, String? tel, String? address}) async {
final param = <String, dynamic>{"id": id, "name": name, "tel": tel, "address": address};
static Future<bool> integralExchange(String id,
{String? name, String? tel, String? address}) async {
final param = <String, dynamic>{
"id": id,
"name": name,
"tel": tel,
"address": address
};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByPOST('/integral/exchangeIntegral', param: param);
final result = await httpManager
.fetchResponseByPOST('/integral/exchangeIntegral', param: param);
return result.isSuccess;
}
//收藏类型 SP:长视频 SHORT:短视频 COVER:图文帖子 PIC:图集帖子 SEED_LINK:种子/黄油帖子
static Future<bool> postCollect(String? objID, String? type, bool? isCollect) async {
static Future<bool> postCollect(
String? objID, String? type, bool? isCollect) async {
final param = {'objID': objID, 'type': type, 'isCollect': isCollect};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByPOST(
'/mine/collect',
param: param,
);
eventBus.emit(CollectStatusModel(id: objID, isCollected: isCollect, type: type));
eventBus.emit(
CollectStatusModel(id: objID, isCollected: isCollect, type: type));
return result.isSuccess;
}
static Future<WalletModel?> fetchWalletData() async {
final result =
await httpManager.fetchResponseByGET('/mine/wallet', param: {}, jsonTransformation: (json) => WalletModel.fromJson(json));
final result = await httpManager.fetchResponseByGET('/mine/wallet',
param: {}, jsonTransformation: (json) => WalletModel.fromJson(json));
if (result.data is WalletModel) {
globalStore.wallet = result.data;
}
@@ -218,7 +238,8 @@ class MineService {
}
//推广记录
static Future<ListBaseModel<Promotion>?> getBindRecord(int? pageSize, int? pageNumber) async {
static Future<ListBaseModel<Promotion>?> getBindRecord(
int? pageSize, int? pageNumber) async {
final param = {'pageSize': pageSize, 'pageNumber': pageNumber};
final result = await httpManager.fetchResponseByPOST(
'/userinvite/userlist',
@@ -234,18 +255,22 @@ class MineService {
// newsType: SEED_LINK 游戏, MOVIE 视频,抖音:SP,图文:COVER
static Future<UserIncomeModel?> fetchIncomeInfo() async {
final result =
await httpManager.fetchResponseByPOST('/userinvite/info', param: {}, jsonTransformation: (json) => UserIncomeModel.fromJson(json));
final result = await httpManager.fetchResponseByPOST('/userinvite/info',
param: {},
jsonTransformation: (json) => UserIncomeModel.fromJson(json));
return result.isSuccess ? result.data : null;
}
/// 获取用户分享列表
static Future<InviteIncomeModel?> fetchIncomeList({int page = 1, int size = 10}) async {
static Future<InviteIncomeModel?> fetchIncomeList(
{int page = 1, int size = 10}) async {
final param = <String, dynamic>{'pageSize': page, 'pageNumber': size};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByPOST('/userinvite/incomelist',
param: param, jsonTransformation: (json) => InviteIncomeModel.fromJson(json));
final result = await httpManager.fetchResponseByPOST(
'/userinvite/incomelist',
param: param,
jsonTransformation: (json) => InviteIncomeModel.fromJson(json));
return result.isSuccess ? result.data : null;
}
@@ -294,7 +319,8 @@ class MineService {
};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByGET('/mine/buyVid',
param: param, jsonTransformation: (json) => ListBaseModel<VideoModel>.fromJson(json));
param: param,
jsonTransformation: (json) => ListBaseModel<VideoModel>.fromJson(json));
return result.isSuccess ? result.data : null;
}
@@ -312,8 +338,10 @@ class MineService {
'month': DateTime.now().month
};
param.removeWhere((k, v) => v == null);
final result =
await httpManager.fetchResponseByGET('/mine/zhangdan', param: param, jsonTransformation: (json) => ListBaseModel<BillItemModel>.fromJson(json));
final result = await httpManager.fetchResponseByGET('/mine/zhangdan',
param: param,
jsonTransformation: (json) =>
ListBaseModel<BillItemModel>.fromJson(json));
return result.isSuccess ? result.data : null;
}
@@ -327,7 +355,8 @@ class MineService {
'pageSize': pageSize,
};
final result = await httpManager.fetchResponseByPOST('/mine/transaction',
param: param, jsonTransformation: (json) => WithdrawDetailsModel.fromJson(json));
param: param,
jsonTransformation: (json) => WithdrawDetailsModel.fromJson(json));
return result.isSuccess ? result.data : null;
}
@@ -374,7 +403,8 @@ class MineService {
static Future<RechargeListModel?> getChatRechargeTypes(int? type) async {
final param = {'type': type};
final result = await httpManager.fetchResponseByGET('/mine/currencys',
param: param, jsonTransformation: (json) => RechargeListModel.fromJson(json));
param: param,
jsonTransformation: (json) => RechargeListModel.fromJson(json));
return result.isSuccess ? result.data : null;
}
@@ -418,7 +448,8 @@ class MineService {
'contentId': track?.contentId,
'checkoutContextId': track?.checkoutContextId,
'experimentId': (expId != null && expId.isNotEmpty) ? expId : null,
'experimentVariant': (expVariant != null && expVariant.isNotEmpty) ? expVariant : null,
'experimentVariant':
(expVariant != null && expVariant.isNotEmpty) ? expVariant : null,
};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByPOST(
@@ -457,7 +488,8 @@ class MineService {
}
//积分兑换记录
static Future<List<CreditRecordModel>> getCreditRecords({int pageNumber = 1, int pageSize = 20}) async {
static Future<List<CreditRecordModel>> getCreditRecords(
{int pageNumber = 1, int pageSize = 20}) async {
final param = {'pageNumber': pageNumber, 'pageSize': pageSize};
final result = await httpManager.fetchResponseByGET(
'/integral/record/list',
@@ -466,7 +498,8 @@ class MineService {
final List<CreditRecordModel> list = [];
if (result.isSuccess) {
List? values = result.data as List?;
list.addAll(values?.map((e) => CreditRecordModel.fromJson(e)).toList() ?? []);
list.addAll(
values?.map((e) => CreditRecordModel.fromJson(e)).toList() ?? []);
}
return list;
}
@@ -484,7 +517,8 @@ class MineService {
}
/// VIP 卡片统计事件批量上报
static Future<bool> reportAnalyticsEvents(List<VipCardAnalyticsEvent> events) async {
static Future<bool> reportAnalyticsEvents(
List<VipCardAnalyticsEvent> events) async {
if (events.isEmpty) return true;
final result = await httpManager.fetchResponseByPOST(
'/analytics/events',
@@ -504,7 +538,8 @@ class MineService {
final List<IntegralExchangeModel> list = [];
if (result.isSuccess) {
List? values = result.data as List?;
list.addAll(values?.map((e) => IntegralExchangeModel.fromJson(e)).toList() ?? []);
list.addAll(
values?.map((e) => IntegralExchangeModel.fromJson(e)).toList() ?? []);
}
return list;
}
@@ -521,7 +556,8 @@ class MineService {
final List<OfficialListItemModel> list = [];
if (result.isSuccess) {
List? values = result.data as List?;
list.addAll(values?.map((e) => OfficialListItemModel.fromJson(e)).toList() ?? []);
list.addAll(
values?.map((e) => OfficialListItemModel.fromJson(e)).toList() ?? []);
}
return list;
}
@@ -571,7 +607,12 @@ class MineService {
//绑定手机
static Future<bool> bindPhone(String phone, String code,
{String? devID, String? smsId, String? sysType, String? ver, String? devType, String? applicationID}) async {
{String? devID,
String? smsId,
String? sysType,
String? ver,
String? devType,
String? applicationID}) async {
final param = {
'mobile': "+86$phone",
'code': code,
@@ -591,7 +632,8 @@ class MineService {
}
//动态、收益列表
static Future<ListBaseModel<MessageDynamicList>?> getDynamicList({int pageNumber = 1, int pageSize = 20, int? msgType}) async {
static Future<ListBaseModel<MessageDynamicList>?> getDynamicList(
{int pageNumber = 1, int pageSize = 20, int? msgType}) async {
final param = {
'pageNumber': pageNumber,
'pageSize': pageSize,
@@ -599,7 +641,9 @@ class MineService {
};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByGET('/msg/dynamic/list',
param: param, jsonTransformation: (json) => ListBaseModel<MessageDynamicList>.fromJson(json));
param: param,
jsonTransformation: (json) =>
ListBaseModel<MessageDynamicList>.fromJson(json));
return result.isSuccess ? result.data : null;
}
@@ -614,7 +658,8 @@ class MineService {
}
/// 黑料社获取用户优惠券
static Future<List<CouponModel>> fetchUserCoupons(int type, {int page = 1, int size = 0}) async {
static Future<List<CouponModel>> fetchUserCoupons(int type,
{int page = 1, int size = 0}) async {
final param = <String, dynamic>{
'type': type,
'pageNumber': page,
@@ -622,7 +667,12 @@ class MineService {
};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByGET('/coupon/list',
param: param, jsonTransformation: (json) => (json['list'] as List?)?.map((e) => CouponModel.fromJson(e)).toList() ?? []);
param: param,
jsonTransformation: (json) =>
(json['list'] as List?)
?.map((e) => CouponModel.fromJson(e))
.toList() ??
[]);
//返回类型非空,给不了 null:失败时这里抛,由调用方 try/catch 兜底(改可空要连调用方一起改)
return result.data;
}
@@ -639,7 +689,8 @@ class MineService {
static Future<ApBankListModel?> getBankCards() async {
final result = await httpManager.fetchResponseByGET('/mine/txnact/yh/get',
param: {}, jsonTransformation: (json) => ApBankListModel.fromJson(json));
param: {},
jsonTransformation: (json) => ApBankListModel.fromJson(json));
return result.isSuccess ? result.data : null;
}
@@ -649,7 +700,12 @@ class MineService {
String? bankCode,
String? cardType,
) async {
final param = <String, dynamic>{'act': act, 'actName': actName, 'bankCode': bankCode, 'cardType': cardType};
final param = <String, dynamic>{
'act': act,
'actName': actName,
'bankCode': bankCode,
'cardType': cardType
};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByPOST(
'/mine/txnact/yh/add',
@@ -659,7 +715,8 @@ class MineService {
}
//获取兑换码记录
static Future<ExchangeRecordList?> getExchangeRecord(int pageNumber, int pageSize) async {
static Future<ExchangeRecordList?> getExchangeRecord(
int pageNumber, int pageSize) async {
final result = await httpManager.fetchResponseByGET(
'/code/userRecord',
param: {
@@ -725,10 +782,17 @@ class MineService {
String? newsType,
int? uid,
}) async {
final param = <String, dynamic>{'pageNumber': page, 'pageSize': size, 'status': status, 'uid': uid, 'newsType': newsType};
final param = <String, dynamic>{
'pageNumber': page,
'pageSize': size,
'status': status,
'uid': uid,
'newsType': newsType
};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByGET('/mine/publish',
param: param, jsonTransformation: (json) => ListBaseModel<VideoModel>.fromJson(json));
param: param,
jsonTransformation: (json) => ListBaseModel<VideoModel>.fromJson(json));
//返回类型非空,给不了 null:失败时这里抛,由调用方 try/catch 兜底(改可空要连调用方一起改)
return result.data;
}
@@ -737,7 +801,8 @@ class MineService {
List<String>? ids,
}) async {
final param = <String, dynamic>{'ids': ids};
final result = await httpManager.fetchResponseByPOST('/mine/publish/delete', param: param);
final result = await httpManager.fetchResponseByPOST('/mine/publish/delete',
param: param);
if (result.isSuccess) {
return '';
}
@@ -800,7 +865,8 @@ class MineService {
final List<ExtraSignRewardItem> list = [];
if (result.isSuccess) {
List? values = result.data as List?;
list.addAll(values?.map((e) => ExtraSignRewardItem.fromJson(e)).toList() ?? []);
list.addAll(
values?.map((e) => ExtraSignRewardItem.fromJson(e)).toList() ?? []);
}
return list;
}
+11 -6
View File
@@ -1,20 +1,25 @@
//搜索相关业务
import 'package:hgmj/hj_model/home/video_list_model.dart';
import 'package:hgmj/hj_model/video_model.dart';
import 'package:hgmj/tools_base/net/http_manager.dart';
import 'package:wydj/hj_model/home/video_list_model.dart';
import 'package:wydj/hj_model/video_model.dart';
import 'package:wydj/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() ?? []);
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 {
static Future<VideoListResp?> getHotVideos(
int pageNumber, int pageSize, int sortType) async {
final param = {
"pageNumber": pageNumber,
"pageSize": pageSize,
+14 -7
View File
@@ -1,19 +1,25 @@
import 'package:hgmj/hj_model/home/video_list_model.dart';
import 'package:hgmj/hj_model/video_model.dart';
import 'package:hgmj/tools_base/net/http_manager.dart';
import 'package:wydj/hj_model/home/video_list_model.dart';
import 'package:wydj/hj_model/video_model.dart';
import 'package:wydj/tools_base/net/http_manager.dart';
class TagService {
static Future<TagsBean?> fetchInfo(String? tagId) async {
final param = <String, dynamic>{'tagID': tagId};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByGET('/tag/info', param: param, jsonTransformation: (json) => TagsBean.fromMap(json));
final result = await httpManager.fetchResponseByGET('/tag/info',
param: param, jsonTransformation: (json) => TagsBean.fromMap(json));
return result.isSuccess ? result.data : null;
}
/// 标签详情拉去视频数据
///sortType 1、推荐,2、最新,3、最热 4、精华,5、视频
static Future<VideoListResp?> fetchList(String? tagId,
{int? sortType, int page = 1, int size = 10, String? newsType, String? sortBy, int? videoType}) async {
{int? sortType,
int page = 1,
int size = 10,
String? newsType,
String? sortBy,
int? videoType}) async {
final param = <String, dynamic>{
'pageNumber': page,
'pageSize': size,
@@ -24,8 +30,9 @@ class TagService {
'videoType': videoType
};
param.removeWhere((k, v) => v == null);
final result =
await httpManager.fetchResponseByGET('/tag/vid/list', param: param, jsonTransformation: (json) => VideoListResp.fromJson(json));
final result = await httpManager.fetchResponseByGET('/tag/vid/list',
param: param,
jsonTransformation: (json) => VideoListResp.fromJson(json));
return result.isSuccess ? result.data : null;
}
}
+38 -20
View File
@@ -1,8 +1,8 @@
import 'package:hgmj/hj_model/list_base_model.dart';
import 'package:hgmj/hj_model/video_model.dart';
import 'package:hgmj/hj_utils/codec_support.dart';
import 'package:hgmj/tools_base/net/http_manager.dart';
import 'package:hgmj/tools_base/toast.dart';
import 'package:wydj/hj_model/list_base_model.dart';
import 'package:wydj/hj_model/video_model.dart';
import 'package:wydj/hj_utils/codec_support.dart';
import 'package:wydj/tools_base/net/http_manager.dart';
import 'package:wydj/tools_base/toast.dart';
import '../../config/config.dart';
import '../../hj_model/home/video_library_model.dart';
@@ -18,8 +18,8 @@ class VidService {
static Future<WatchCount?> fetchWatchCount({String? vid}) async {
final param = <String, dynamic>{'vid': vid};
param.removeWhere((k, v) => v == null);
final result =
await httpManager.fetchResponseByGET('/vid/user/count', param: param, jsonTransformation: (json) => WatchCount.fromJson(json));
final result = await httpManager.fetchResponseByGET('/vid/user/count',
param: param, jsonTransformation: (json) => WatchCount.fromJson(json));
return result.isSuccess ? result.data : null;
}
@@ -40,7 +40,8 @@ class VidService {
'via': via,
'tagID': tagID,
};
final result = await httpManager.fetchResponseByPOST('/vid/play', param: param);
final result =
await httpManager.fetchResponseByPOST('/vid/play', param: param);
return result.isSuccess;
}
@@ -122,7 +123,8 @@ class VidService {
'bountyPoint': bountyPoint,
};
param.removeWhere((k, v) => v == null);
final result = await httpManager.fetchResponseByPOST('/vid/submit', param: param);
final result =
await httpManager.fetchResponseByPOST('/vid/submit', param: param);
if (!result.isSuccess) {
showToast(result.toast);
}
@@ -133,7 +135,11 @@ class VidService {
/// [moduleSort] 默认视频排序 1、最新,2、最热,3、最多播放量或者推荐,4、十分钟以上视频,5、精华,6、视频 9 最新热评
/// [showType]0 默认为hj
static Future<ModuleDetailModel?> getModuleDetail(String? subModuleID,
{int? moduleSort, int pageNumber = 1, int pageSize = 10, int? showType, String? tagId}) async {
{int? moduleSort,
int pageNumber = 1,
int pageSize = 10,
int? showType,
String? tagId}) async {
final param = <String, dynamic>{
'pageSize': pageSize,
'pageNumber': pageNumber,
@@ -154,7 +160,9 @@ class VidService {
/// 只回 allVideoInfo,不含专题/精选等结构,调用方别整个替换 dataSource
/// [refreshToken] 每次用户主动下拉换新 UUID;同一 token 重取顺序不变,所以网络层自动重试是安全的
static Future<ModuleDetailModel?> refreshRandomModule(String? subModuleID,
{int? moduleSort, required String refreshToken, int pageSize = 30}) async {
{int? moduleSort,
required String refreshToken,
int pageSize = 30}) async {
final param = <String, dynamic>{
'moduleSort': moduleSort,
'pageSize': pageSize,
@@ -170,7 +178,8 @@ class VidService {
}
///sortType 1:最新 2:本周热门 4:本月最热 5:年度最热
static Future<VideoListResp?> getNewestModule({int? sortType, int pageNumber = 1, int pageSize = 10}) async {
static Future<VideoListResp?> getNewestModule(
{int? sortType, int pageNumber = 1, int pageSize = 10}) async {
final param = <String, dynamic>{
'pageSize': pageSize,
'pageNumber': pageNumber,
@@ -186,7 +195,8 @@ class VidService {
}
static Future<dynamic> getShopAddress() async {
final result = await httpManager.fetchResponseByGET('/ping/store_url', param: {});
final result =
await httpManager.fetchResponseByGET('/ping/store_url', param: {});
return result.isSuccess ? result.data : null;
}
@@ -290,14 +300,18 @@ class VidService {
/// 获取福利任务下面的视频
static Future<List<WareDiscountAreaData>?> fetchFreeSource() async {
final result = await httpManager.fetchResponseByGET('/vid/discount/area',
param: {}, jsonTransformation: (json) => (json['List'] as List?)?.map((e) => WareDiscountAreaData.fromJson(e)).toList());
param: {},
jsonTransformation: (json) => (json['List'] as List?)
?.map((e) => WareDiscountAreaData.fromJson(e))
.toList());
return result.isSuccess ? result.data : null;
}
/// 获取免费福利视频数据
/// [sortType] 0 = 福利任务下面 1 最新 2最热
static Future<ListBaseModel<VideoModel>> fetchFreeSourceList(String id, {int page = 1, int size = 10, required int sortType}) async {
static Future<ListBaseModel<VideoModel>> fetchFreeSourceList(String id,
{int page = 1, int size = 10, required int sortType}) async {
final param = {
'pageNumber': page,
'pageSize': size,
@@ -305,7 +319,8 @@ class VidService {
'sortType': sortType,
};
final result = await httpManager.fetchResponseByGET('/vid/discount/list',
param: param, jsonTransformation: (json) => ListBaseModel<VideoModel>.fromJson(json));
param: param,
jsonTransformation: (json) => ListBaseModel<VideoModel>.fromJson(json));
//返回类型非空,给不了 null:失败时这里抛,由调用方 try/catch 兜底(改可空要连调用方一起改)
return result.data;
}
@@ -313,7 +328,8 @@ class VidService {
/// 获取跑马灯数据
static Future<List<MarqueeModel>?> fetchAnnounce(int type) async {
final param = <String, dynamic>{"type": type};
final result = await httpManager.fetchResponseByGET('/mine/announce/list', param: param);
final result = await httpManager.fetchResponseByGET('/mine/announce/list',
param: param);
final List<MarqueeModel> list = [];
if (result.isSuccess) {
@@ -368,15 +384,17 @@ class VidService {
/// 获取片库筛选条件
static Future<HomeVideoLibrary> fetchLibrary() async {
final result =
await httpManager.fetchResponseByGET('/vid/library', param: {}, jsonTransformation: (json) => HomeVideoLibrary.fromJson(json));
final result = await httpManager.fetchResponseByGET('/vid/library',
param: {},
jsonTransformation: (json) => HomeVideoLibrary.fromJson(json));
//返回类型非空,给不了 null:失败时这里抛,由调用方 try/catch 兜底(改可空要连调用方一起改)
return result.data;
}
///视频专题样式-更换一批
static Future<VideoListResp> sectionVideoExchange(String? sectionID) async {
final result = await httpManager.fetchResponseByGET('/vid/section/changeVideo/$sectionID', param: {});
final result = await httpManager
.fetchResponseByGET('/vid/section/changeVideo/$sectionID', param: {});
//失败时 data 是原始结构,别拿它当模型解析;fromJson 内部 json ??= {},传 null 就是空列表
return VideoListResp.fromJson(result.isSuccess ? result.data : null);
}