This commit is contained in:
2026-03-07 17:24:59 +08:00
parent 4418ebecac
commit b0ec8ab4bd
417 changed files with 42546 additions and 2 deletions

View File

@@ -0,0 +1,134 @@
import 'dart:convert';
import 'package:flutter_dmzj/app/app_error.dart';
import 'package:flutter_dmzj/models/news/news_banner_model.dart';
import 'package:flutter_dmzj/models/news/news_list_item_model.dart';
import 'package:flutter_dmzj/models/news/news_stat_model.dart';
import 'package:flutter_dmzj/models/news/news_tag_model.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';
class NewsRequest {
/// 新闻分类
Future<List<NewsTagModel>> category() async {
var list = <NewsTagModel>[];
var result = await HttpClient.instance.getJson(
'/news/category',
);
for (var item in result["data"]["cateList"]) {
list.add(NewsTagModel.fromJson(item));
}
return list;
}
/// 新闻Banner
Future<List<NewsBannerModel>> banner() async {
var list = <NewsBannerModel>[];
var result = await HttpClient.instance.getJson('/news/recommend');
for (var item in result["data"]["recommendList"]) {
list.add(NewsBannerModel.fromJson(item));
}
return list;
}
/// 读取新闻列表
/// - [id] 新闻分类ID
/// - [page] 页数从1开始
Future<List<NewsListItemModel>> getNewsList(int id, int page) async {
var result = await HttpClient.instance.getJson(
'/news/list/$id/${id == 0 ? 2 : 3}/$page',
);
if (result["errno"] != 0) {
throw AppError(result["errmsg"]);
}
var list = <NewsListItemModel>[];
for (var item in result["data"]["newsList"]) {
list.add(NewsListItemModel.fromJson(item));
}
return list;
}
/// 新闻数据
/// - [newsId] 新闻ID
Future<NewsStatModel> stat(int newsId) async {
var result = await HttpClient.instance.getJson(
'/v3/article/total/$newsId.json',
checkCode: true,
);
return NewsStatModel.fromJson(result);
}
/// 新闻点赞
/// - [newsId] 新闻ID
Future<bool> like(int newsId) async {
await HttpClient.instance.getJson(
'/article/mood/$newsId',
checkCode: true,
);
return true;
}
/// 新闻检查收藏
/// - [newsId] 新闻ID
Future<bool> checkCollect(int newsId) async {
var uid = UserService.instance.userId;
var par = {"uid": int.parse(uid), "sub_id": newsId};
var parJson = jsonEncode(par);
var sign = Api.sign(parJson, 'app_news_sub');
var result = await HttpClient.instance.postJson(
'/api/news/subscribe/check',
baseUrl: Api.BASE_URL_INTERFACE,
data: {
"parm": parJson,
"sign": sign,
},
);
return json.decode(result)["result"] == 809;
}
/// 新闻收藏
/// - [newsId] 新闻ID
Future<bool> collect(int newsId) async {
var uid = UserService.instance.userId;
var par = {"uid": int.parse(uid), "sub_id": newsId};
var parJson = jsonEncode(par);
var sign = Api.sign(parJson, 'app_news_sub');
var result = await HttpClient.instance.postJson(
'/api/news/subscribe/add',
baseUrl: Api.BASE_URL_INTERFACE,
data: {
"parm": parJson,
"sign": sign,
},
);
return json.decode(result)["result"] == 1000;
}
/// 移除收藏
/// - [newsId] 新闻ID
Future<bool> delCollect(int newsId) async {
var uid = UserService.instance.userId;
var par = {"uid": int.parse(uid), "sub_id": newsId};
var parJson = jsonEncode(par);
var sign = Api.sign(parJson, 'app_news_sub');
var result = await HttpClient.instance.postJson(
'/api/news/subscribe/del',
baseUrl: Api.BASE_URL_INTERFACE,
data: {
"parm": parJson,
"sign": sign,
},
);
return json.decode(result)["result"] == 1000;
}
}