flutter架 构项目基础
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
import 'package:new_learn/core/api/class/model.dart';
|
||||
import 'package:new_learn/core/network/dio_client.dart';
|
||||
|
||||
/// ============================================================
|
||||
/// 【class 模块接口】班级模块请求 —— 对标 Vue3 端 api/class/index.ts + api/userPoint/index.ts
|
||||
///
|
||||
/// ClassApi:班级动态/成员/点赞/评论
|
||||
/// getUserClassPost → 班级动态分页(游标 pageIndex + prevPageId)
|
||||
/// getClassUsers → 班级成员在线状态
|
||||
/// addUserLike → 点赞 / 取消点赞
|
||||
/// addUserComment → 评论
|
||||
///
|
||||
/// UserRankApi:积分排行榜
|
||||
/// getUserCount → 排行榜总人数(本班级 / 同年级 / 同云校)
|
||||
/// getRankPage → 排行榜分页(游标分页:pageIndex + prevPageId)
|
||||
///
|
||||
/// 注意:页面只调这里,不直接碰 Dio;异常不在这里 catch,交页面统一处理。
|
||||
/// ============================================================
|
||||
class ClassApi {
|
||||
ClassApi._();
|
||||
|
||||
static final ClassApi instance = ClassApi._();
|
||||
|
||||
/// 班级动态列表(queryType: 0 我的动态 / 1 班级动态)
|
||||
Future<UserPostResponse> getUserClassPost({
|
||||
int queryType = 1,
|
||||
int pageIndex = 1,
|
||||
int pageSize = 10,
|
||||
int prevPageId = 0,
|
||||
}) async {
|
||||
final data = await DioClient.instance.get(
|
||||
'/api/v1/UserPost/GetUserClassPost',
|
||||
query: {
|
||||
'queryType': queryType,
|
||||
'pageIndex': pageIndex,
|
||||
'pageSize': pageSize,
|
||||
'prevPageId': prevPageId,
|
||||
},
|
||||
);
|
||||
return UserPostResponse.fromJson(data as Map<String, dynamic>);
|
||||
}
|
||||
|
||||
/// 班级成员(在线状态)
|
||||
Future<List<ClassUser>> getClassUsers() async {
|
||||
final data = await DioClient.instance.get('/api/v1/User/GetClassUsers');
|
||||
final list = data is Map<String, dynamic> ? data['data'] : data;
|
||||
if (list is List) {
|
||||
return list
|
||||
.whereType<Map<String, dynamic>>()
|
||||
.map(ClassUser.fromJson)
|
||||
.toList();
|
||||
}
|
||||
return const [];
|
||||
}
|
||||
|
||||
/// 点赞 / 取消点赞(likeStatus: true 点赞 / false 取消)
|
||||
Future<void> addUserLike({
|
||||
required int userPostId,
|
||||
required bool likeStatus,
|
||||
}) async {
|
||||
await DioClient.instance.post('/api/v1/UserLike/AddUserLike', data: {
|
||||
'userPostId': userPostId,
|
||||
'likeStatus': likeStatus,
|
||||
});
|
||||
}
|
||||
|
||||
/// 评论动态
|
||||
Future<void> addUserComment({
|
||||
required int userPostId,
|
||||
required String content,
|
||||
}) async {
|
||||
await DioClient.instance.post('/api/v1/UserPost/AddUserCommon', data: {
|
||||
'userPostId': userPostId,
|
||||
'content': content,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/// 积分排行榜接口
|
||||
class UserRankApi {
|
||||
UserRankApi._();
|
||||
|
||||
static final UserRankApi instance = UserRankApi._();
|
||||
|
||||
/// 排行榜总人数(本班级 / 同年级 / 同云校)
|
||||
Future<UserCountResult> getUserCount() async {
|
||||
final data = await DioClient.instance.get(
|
||||
'/api/v1/UserPointsRecord/GetUserCount',
|
||||
);
|
||||
return UserCountResult.fromJson(data as Map<String, dynamic>);
|
||||
}
|
||||
|
||||
/// 排行榜分页(游标分页:pageIndex + prevPageId)
|
||||
/// [userRankType] 0 总榜 / 1 本周 / 2 上周 / 3 今天 / 4 昨天
|
||||
/// [userClass] 0 本班级 / 1 同年级 / 2 同云校
|
||||
Future<UserRankPagedList> getRankPage({
|
||||
required int pageIndex,
|
||||
required int pageSize,
|
||||
required int prevPageId,
|
||||
required int userRankType,
|
||||
required int userClass,
|
||||
required bool desc,
|
||||
}) async {
|
||||
final data = await DioClient.instance.get(
|
||||
'/api/v1/UserPointsRecord/GetUserRank',
|
||||
query: {
|
||||
'pageIndex': pageIndex,
|
||||
'pageSize': pageSize,
|
||||
'prevPageId': prevPageId,
|
||||
'UserRankType': userRankType,
|
||||
'UserClass': userClass,
|
||||
'desc': desc,
|
||||
},
|
||||
);
|
||||
return UserRankPagedList.fromJson(data as Map<String, dynamic>);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user