init
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
import '../../../core/models/api_response.dart';
|
||||
import '../../../core/services/enhanced_api_service.dart';
|
||||
import '../models/learning_progress_model.dart';
|
||||
|
||||
/// 学习进度服务
|
||||
class LearningProgressService {
|
||||
static final LearningProgressService _instance = LearningProgressService._internal();
|
||||
factory LearningProgressService() => _instance;
|
||||
LearningProgressService._internal();
|
||||
|
||||
final EnhancedApiService _enhancedApiService = EnhancedApiService();
|
||||
|
||||
// 缓存时长配置
|
||||
static const Duration _shortCacheDuration = Duration(minutes: 5);
|
||||
|
||||
/// 获取用户学习进度列表
|
||||
Future<ApiResponse<List<LearningProgress>>> getUserLearningProgress({
|
||||
int page = 1,
|
||||
int limit = 20,
|
||||
}) async {
|
||||
try {
|
||||
final response = await _enhancedApiService.get<List<LearningProgress>>(
|
||||
'/user/learning-progress',
|
||||
queryParameters: {
|
||||
'page': page,
|
||||
'limit': limit,
|
||||
},
|
||||
cacheDuration: _shortCacheDuration,
|
||||
fromJson: (data) {
|
||||
final progressList = data['progress'] as List?;
|
||||
print('=== 学习进度数据解析 ===');
|
||||
print('progress字段: $progressList');
|
||||
print('数据条数: ${progressList?.length ?? 0}');
|
||||
if (progressList == null || progressList.isEmpty) {
|
||||
// 返回空列表,不使用默认数据
|
||||
print('后端返回空数据,显示空状态');
|
||||
return [];
|
||||
}
|
||||
final result = progressList.map((json) => LearningProgress.fromJson(json)).toList();
|
||||
print('解析后的数据条数: ${result.length}');
|
||||
return result;
|
||||
},
|
||||
);
|
||||
|
||||
if (response.success && response.data != null) {
|
||||
return ApiResponse.success(message: '获取成功', data: response.data!);
|
||||
} else {
|
||||
// 如果API失败,返回空列表
|
||||
return ApiResponse.success(
|
||||
message: '获取失败',
|
||||
data: [],
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
// 出错时返回空列表
|
||||
print('获取学习进度异常: $e');
|
||||
return ApiResponse.success(
|
||||
message: '获取失败',
|
||||
data: [],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// 获取用户学习统计
|
||||
Future<ApiResponse<Map<String, dynamic>>> getUserStats({
|
||||
String timeRange = 'all',
|
||||
}) async {
|
||||
try {
|
||||
final response = await _enhancedApiService.get<Map<String, dynamic>>(
|
||||
'/user/stats',
|
||||
queryParameters: {
|
||||
'time_range': timeRange,
|
||||
},
|
||||
cacheDuration: _shortCacheDuration,
|
||||
fromJson: (data) => data,
|
||||
);
|
||||
|
||||
if (response.success && response.data != null) {
|
||||
return ApiResponse.success(message: '获取成功', data: response.data!);
|
||||
} else {
|
||||
return ApiResponse.error(message: response.message);
|
||||
}
|
||||
} catch (e) {
|
||||
return ApiResponse.error(message: '获取统计数据失败: $e');
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user