Files
gym-manage/gym-manage-uniapp/request_api/main.js
T

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
}