web-学习

This commit is contained in:
2025-10-24 18:28:35 +08:00
parent 8968409b2d
commit bc84bd82cc
16 changed files with 1090 additions and 239 deletions

View File

@@ -17,7 +17,7 @@ export const learningRecordApi = {
* @returns Promise<ResultDomain<LearningRecord>>
*/
async getRecordList(filter?: Partial<LearningRecord>): Promise<ResultDomain<LearningRecord>> {
const response = await api.get<LearningRecord>('/study/learning-record/list', filter);
const response = await api.post<LearningRecord>('/study/records/list', filter);
return response.data;
},
@@ -27,45 +27,51 @@ export const learningRecordApi = {
* @returns Promise<ResultDomain<LearningRecord>>
*/
async createRecord(record: LearningRecord): Promise<ResultDomain<LearningRecord>> {
const response = await api.post<LearningRecord>('/study/learning-record/create', record);
const response = await api.post<LearningRecord>('/study/records/record', record);
return response.data;
},
/**
* 更新学习记录
* 更新学习记录(禁用 loading 动画,避免影响视频播放)
* @param record 记录数据
* @returns Promise<ResultDomain<LearningRecord>>
*/
async updateRecord(record: LearningRecord): Promise<ResultDomain<LearningRecord>> {
const response = await api.put<LearningRecord>('/study/learning-record/update', record);
async updateRecord(record: Partial<LearningRecord>): Promise<ResultDomain<LearningRecord>> {
const response = await api.put<LearningRecord>('/study/records/record', record, {
showLoading: false // 禁用 loading 动画
} as any);
return response.data;
},
/**
* 获取用户学习统计
* @param userID 用户ID
* @param timeRange 时间范围
* @returns Promise<ResultDomain<LearningRecordStatistics>>
* 删除学习记录
* @param recordId 记录ID
* @returns Promise<ResultDomain<boolean>>
*/
async getUserLearningStatistics(userID: string, timeRange?: string): Promise<ResultDomain<LearningRecordStatistics>> {
const response = await api.get<LearningRecordStatistics>('/study/learning-record/statistics', {
userID,
timeRange
});
async deleteRecord(recordId: string): Promise<ResultDomain<boolean>> {
const response = await api.delete<boolean>('/study/records/record', { ID: recordId });
return response.data;
},
/**
* 获取学习时长图表数据
* @param userID 用户ID
* @param timeRange 时间范围
* @returns Promise<ResultDomain<LearningRecordStatistics>>
* 标记学习完成(禁用 loading 动画,避免影响视频播放)
* @param record 记录数据
* @returns Promise<ResultDomain<LearningRecord>>
*/
async getLearningDurationChart(userID: string, timeRange?: string): Promise<ResultDomain<LearningRecordStatistics>> {
const response = await api.get<LearningRecordStatistics>('/study/learning-record/duration-chart', {
userID,
timeRange
});
async markComplete(record: Partial<LearningRecord>): Promise<ResultDomain<LearningRecord>> {
const response = await api.put<LearningRecord>('/study/records/complete', record, {
showLoading: false // 禁用 loading 动画
} as any);
return response.data;
}
},
/**
* 查询用户课程的学习记录
* @param filter 过滤条件(包含 userID 和 resourceID
* @returns Promise<ResultDomain<LearningRecord>>
*/
async getCourseLearningRecord(filter: Partial<LearningRecord>): Promise<ResultDomain<LearningRecord>> {
const response = await api.post<LearningRecord>('/study/records/course/records', filter);
return response.data;
},
};

View File

@@ -32,6 +32,16 @@ export const learningTaskApi = {
return response.data;
},
/**
* 根据ID获取用户任务详情
* @param taskID 任务ID
* @returns Promise<ResultDomain<TaskVO>>
*/
async getUserTask(taskID: string): Promise<ResultDomain<TaskVO>> {
const response = await api.get<TaskVO>(`${this.learningTaskPrefix}/${taskID}/user`);
return response.data;
},
/**
* 获取任务分页列表
* @param pageParam 分页参数

View File

@@ -11,6 +11,7 @@ import type { UserCollection, ResultDomain } from '@/types';
* 用户收藏API服务
*/
export const userCollectionApi = {
baseUrl: '/usercenter/collections',
/**
* 获取用户收藏列表
* @param userID 用户ID
@@ -18,7 +19,7 @@ export const userCollectionApi = {
* @returns Promise<ResultDomain<UserCollection>>
*/
async getUserCollections(userID: string, collectionType?: number): Promise<ResultDomain<UserCollection>> {
const response = await api.get<UserCollection>('/usercenter/collection/list', {
const response = await api.get<UserCollection>(`${this.baseUrl}/list`, {
userID,
collectionType
});
@@ -31,7 +32,7 @@ export const userCollectionApi = {
* @returns Promise<ResultDomain<UserCollection>>
*/
async addCollection(collection: UserCollection): Promise<ResultDomain<UserCollection>> {
const response = await api.post<UserCollection>('/usercenter/collection/add', collection);
const response = await api.post<UserCollection>(`${this.baseUrl}/collect`, collection);
return response.data;
},
@@ -43,7 +44,7 @@ export const userCollectionApi = {
* @returns Promise<ResultDomain<boolean>>
*/
async removeCollection(userID: string, collectionType: number, collectionID: string): Promise<ResultDomain<boolean>> {
const response = await api.delete<boolean>('/usercenter/collection/remove', {
const response = await api.delete<boolean>(`${this.baseUrl}/collect`, {
userID,
collectionType,
collectionID
@@ -58,9 +59,8 @@ export const userCollectionApi = {
* @param collectionID 收藏对象ID
* @returns Promise<ResultDomain<boolean>>
*/
async isCollected(userID: string, collectionType: number, collectionID: string): Promise<ResultDomain<boolean>> {
const response = await api.get<boolean>('/usercenter/collection/check', {
userID,
async isCollected(collectionType: number, collectionID: string): Promise<ResultDomain<boolean>> {
const response = await api.get<boolean>(`${this.baseUrl}/check`, {
collectionType,
collectionID
});