v1.0.1
This commit is contained in:
169
lib/requests/comment_request.dart
Normal file
169
lib/requests/comment_request.dart
Normal file
@@ -0,0 +1,169 @@
|
||||
import 'package:flutter_dmzj/app/app_error.dart';
|
||||
import 'package:flutter_dmzj/models/comment/comment_item.dart';
|
||||
import 'package:flutter_dmzj/models/comment/user_comment_item.dart';
|
||||
import 'package:flutter_dmzj/requests/common/api.dart';
|
||||
import 'package:flutter_dmzj/requests/common/http_client.dart';
|
||||
import 'package:flutter_dmzj/services/user_service.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:html_unescape/html_unescape.dart';
|
||||
|
||||
class CommentRequest {
|
||||
var unescape = HtmlUnescape();
|
||||
|
||||
/// 读取最新的评论
|
||||
/// - [type] 类型
|
||||
/// - [objId] ID
|
||||
/// - [page] 页数
|
||||
/// - [pageSize] 每页数量
|
||||
Future<List<CommentItem>> getComment({
|
||||
required int type,
|
||||
required int objId,
|
||||
int sort = 1,
|
||||
int page = 1,
|
||||
int pageSize = 30,
|
||||
}) async {
|
||||
List<CommentItem> ls = [];
|
||||
Map result = await HttpClient.instance.getJson(
|
||||
'/comment/list',
|
||||
baseUrl: Api.BASE_URL,
|
||||
queryParameters: {
|
||||
"type": type,
|
||||
"objId": objId,
|
||||
"sort": sort,
|
||||
"page": page - 1,
|
||||
"size": pageSize,
|
||||
},
|
||||
);
|
||||
if (result["errno"] != 0) {
|
||||
throw AppError(result["errmsg"].toString());
|
||||
}
|
||||
if (result["data"]["commentIdList"] == null) {
|
||||
return [];
|
||||
}
|
||||
var ids = result["data"]["commentIdList"];
|
||||
var comments = result["data"]["commentList"];
|
||||
for (String id in ids) {
|
||||
var idSplit = id.split(",");
|
||||
var item = _parseLatestCommentItem(comments, idSplit.first, type);
|
||||
if (idSplit.length > 1) {
|
||||
item.parents = [];
|
||||
for (var id2 in idSplit.skip(1)) {
|
||||
item.parents.insert(0, _parseLatestCommentItem(comments, id2, type));
|
||||
}
|
||||
}
|
||||
if (item.id != 0) {
|
||||
ls.add(item);
|
||||
}
|
||||
}
|
||||
return ls;
|
||||
}
|
||||
|
||||
CommentItem _parseLatestCommentItem(Map comments, String id, int type) {
|
||||
if (!comments.containsKey(id)) {
|
||||
return CommentItem.createEmpty();
|
||||
}
|
||||
var item = comments[id];
|
||||
//返回的类型非常随机,有时候是int,有时候是string,所以使用int.tryParse
|
||||
return CommentItem(
|
||||
type: type,
|
||||
id: int.tryParse(item["id"].toString()) ?? 0,
|
||||
objId: int.tryParse(item["obj_id"].toString()) ?? 0,
|
||||
content: unescape.convert(item["content"].toString()),
|
||||
photo: item["photo"].toString(),
|
||||
createTime: int.tryParse(item["create_time"].toString()) ?? 0,
|
||||
images: item["upload_images"]
|
||||
.toString()
|
||||
.split(",")
|
||||
.where((x) => x.isNotEmpty)
|
||||
.toList(),
|
||||
likeAmount: (int.tryParse(item["like_amount"].toString()) ?? 0).obs,
|
||||
nickname: item["nickname"].toString(),
|
||||
replyAmount: int.tryParse(item["reply_amount"].toString()) ?? 0,
|
||||
gender: int.tryParse(item["sex"].toString()) ?? 0,
|
||||
userId: int.tryParse(item["sender_uid"].toString()) ?? 0,
|
||||
originId: int.tryParse(item["origin_comment_id"].toString()) ?? 0,
|
||||
);
|
||||
}
|
||||
|
||||
/// 发表评论
|
||||
/// - [objId] ID
|
||||
/// - [type] 类型 ,见AppConstant
|
||||
/// - [content] 内容
|
||||
/// - [toCommentId] 回复评论ID
|
||||
/// - [originCommentId] 原始评论ID
|
||||
/// - [toUid] 回复用户
|
||||
Future<bool> sendComment({
|
||||
required int objId,
|
||||
required int type,
|
||||
required String content,
|
||||
String toCommentId = "0",
|
||||
String originCommentId = "0",
|
||||
String toUid = "0",
|
||||
}) async {
|
||||
var result = await HttpClient.instance.postJson(
|
||||
"/v1/$type/new/add/app",
|
||||
baseUrl: Api.BASE_URL,
|
||||
data: {
|
||||
"obj_id": objId,
|
||||
"to_comment_id": toCommentId,
|
||||
"origin_comment_id": originCommentId,
|
||||
"to_uid": toUid,
|
||||
"sender_terminal": 1,
|
||||
"content": content,
|
||||
"dmzj_token": UserService.instance.dmzjToken,
|
||||
"_debug": 0
|
||||
},
|
||||
);
|
||||
if (result["code"] != 0) {
|
||||
throw AppError(result["msg"].toString());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/// 评论点赞
|
||||
Future<bool> likeComment({
|
||||
required int commentId,
|
||||
required int objId,
|
||||
required int type,
|
||||
}) async {
|
||||
await HttpClient.instance.getJson(
|
||||
"/v1/$type/like/$commentId",
|
||||
baseUrl: Api.BASE_URL,
|
||||
queryParameters: {
|
||||
"comment_id": commentId,
|
||||
"obj_id": objId,
|
||||
"type": type,
|
||||
},
|
||||
needLogin: true,
|
||||
withDefaultParameter: true,
|
||||
checkCode: true,
|
||||
);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// 读取用户的评论
|
||||
/// - [type] 类型 0=漫画,1=轻小说,2=新闻
|
||||
/// - [uid] 用户ID
|
||||
/// - [page] 页数,从0开始
|
||||
Future<List<UserCommentItem>> getUserComment({
|
||||
required int type,
|
||||
required int uid,
|
||||
int page = 0,
|
||||
}) async {
|
||||
List<UserCommentItem> ls = [];
|
||||
var result = await HttpClient.instance.getJson(
|
||||
type == 1
|
||||
? '/comment/owner/1/$uid/$page.json'
|
||||
: '/v3/old/comment/owner/$type/$uid/$page.json',
|
||||
baseUrl: Api.BASE_URL,
|
||||
withDefaultParameter: true,
|
||||
needLogin: true,
|
||||
);
|
||||
for (var item in result) {
|
||||
ls.add(UserCommentItem.fromJson(item));
|
||||
}
|
||||
|
||||
return ls;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user