153 lines
3.2 KiB
JavaScript
153 lines
3.2 KiB
JavaScript
import { request, setToken, clearToken, clearAllCache, clearCache } from '@/utils/request.js'
|
|
|
|
// ========== 登录相关API ==========
|
|
|
|
/**
|
|
* 微信小程序登录
|
|
* @param {object} data - 登录参数
|
|
* @param {string} data.code - 微信登录code
|
|
* @param {string} [data.encryptedData] - 加密数据
|
|
* @param {string} [data.iv] - 加密向量
|
|
* @returns {Promise} 登录结果
|
|
*/
|
|
export const login = (data) => {
|
|
return request({
|
|
url: '/member/auth/miniapp/login',
|
|
method: 'POST',
|
|
data: data,
|
|
needToken: false // 登录请求不需要token
|
|
}).then(res => {
|
|
// 登录成功,保存token
|
|
if (res.data && res.data.token) {
|
|
setToken(res.data.token)
|
|
}
|
|
return res
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 退出登录
|
|
* @returns {Promise} 退出结果
|
|
*/
|
|
export const logout = () => {
|
|
return request({
|
|
url: '/member/auth/logout',
|
|
method: 'POST'
|
|
}).then(res => {
|
|
// 退出成功,清除token和缓存
|
|
clearToken()
|
|
clearAllCache()
|
|
return res
|
|
}).catch(err => {
|
|
// 即使请求失败,也清除本地token
|
|
clearToken()
|
|
clearAllCache()
|
|
throw err
|
|
})
|
|
}
|
|
|
|
// ========== 签到相关API ==========
|
|
|
|
/**
|
|
* 获取签到二维码
|
|
* @param {boolean} [cache=true] - 是否启用缓存
|
|
* @returns {Promise} 二维码数据
|
|
*/
|
|
export const getQRCode = (cache = true) => {
|
|
return request({
|
|
url: '/checkIn/qrcode',
|
|
method: 'GET',
|
|
cache: cache,
|
|
cacheTime: 5 * 60 * 1000 // 5分钟缓存
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 扫码签到
|
|
* @param {string} qrContent - 二维码内容
|
|
* @returns {Promise} 签到结果
|
|
*/
|
|
export const checkIn = (qrContent) => {
|
|
return request({
|
|
url: '/checkIn/scan',
|
|
method: 'POST',
|
|
data: { qrContent }
|
|
})
|
|
}
|
|
|
|
// ========== 用户相关API ==========
|
|
|
|
/**
|
|
* 获取用户信息
|
|
* @param {boolean} [cache=true] - 是否启用缓存
|
|
* @returns {Promise} 用户信息
|
|
*/
|
|
export const getUserInfo = (cache = true) => {
|
|
return request({
|
|
url: '/member/info',
|
|
method: 'GET',
|
|
cache: cache,
|
|
cacheTime: 30 * 60 * 1000 // 30分钟缓存
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 更新用户信息
|
|
* @param {object} data - 用户信息
|
|
* @returns {Promise} 更新结果
|
|
*/
|
|
export const updateUserInfo = (data) => {
|
|
return request({
|
|
url: '/member/info',
|
|
method: 'PUT',
|
|
data: data
|
|
}).then(res => {
|
|
// 更新成功,清除用户信息缓存
|
|
const cacheKey = `GET_/member/info_{}`
|
|
clearCache(cacheKey)
|
|
return res
|
|
})
|
|
}
|
|
|
|
// ========== 课程相关API ==========
|
|
|
|
/**
|
|
* 获取推荐课程列表
|
|
* @param {boolean} [cache=true] - 是否启用缓存
|
|
* @returns {Promise} 课程列表
|
|
*/
|
|
export const getRecommendCourses = (cache = true) => {
|
|
return request({
|
|
url: '/course/recommend',
|
|
method: 'GET',
|
|
cache: cache,
|
|
cacheTime: 10 * 60 * 1000 // 10分钟缓存
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 获取课程详情
|
|
* @param {number} id - 课程ID
|
|
* @param {boolean} [cache=true] - 是否启用缓存
|
|
* @returns {Promise} 课程详情
|
|
*/
|
|
export const getCourseDetail = (id, cache = true) => {
|
|
return request({
|
|
url: `/course/${id}`,
|
|
method: 'GET',
|
|
cache: cache,
|
|
cacheTime: 15 * 60 * 1000 // 15分钟缓存
|
|
})
|
|
}
|
|
|
|
export default {
|
|
login,
|
|
logout,
|
|
getQRCode,
|
|
checkIn,
|
|
getUserInfo,
|
|
updateUserInfo,
|
|
getRecommendCourses,
|
|
getCourseDetail
|
|
}
|