项目初始化
This commit is contained in:
56
web/src/api/frontend/index.ts
Normal file
56
web/src/api/frontend/index.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import createAxios from '/@/utils/axios'
|
||||
import { useSiteConfig } from '/@/stores/siteConfig'
|
||||
import { useMemberCenter } from '/@/stores/memberCenter'
|
||||
import { debounce, setTitleFromRoute } from '/@/utils/common'
|
||||
import { handleFrontendRoute } from '/@/utils/router'
|
||||
import { useUserInfo } from '/@/stores/userInfo'
|
||||
import router from '/@/router/index'
|
||||
import { isEmpty } from 'lodash-es'
|
||||
|
||||
export const indexUrl = '/api/index/'
|
||||
|
||||
/**
|
||||
* 前台初始化请求,获取站点配置信息,动态路由信息等
|
||||
* 1. 首次初始化携带了会员token时,一共只初始化一次
|
||||
* 2. 首次初始化未带会员token,将在登录后再初始化一次
|
||||
*/
|
||||
export function initialize(callback?: (res: ApiResponse) => void, requiredLogin?: boolean) {
|
||||
debounce(() => {
|
||||
if (router.currentRoute.value.meta.initialize === false) return
|
||||
|
||||
const userInfo = useUserInfo()
|
||||
const siteConfig = useSiteConfig()
|
||||
if (!userInfo.isLogin() && siteConfig.initialize) return
|
||||
if (userInfo.isLogin() && siteConfig.userInitialize) return
|
||||
|
||||
const memberCenter = useMemberCenter()
|
||||
|
||||
createAxios({
|
||||
url: indexUrl + 'index',
|
||||
method: 'get',
|
||||
params: {
|
||||
requiredLogin: requiredLogin ? 1 : 0,
|
||||
},
|
||||
}).then((res) => {
|
||||
handleFrontendRoute(res.data.rules, res.data.menus)
|
||||
siteConfig.dataFill(res.data.site)
|
||||
memberCenter.setStatus(res.data.openMemberCenter)
|
||||
|
||||
if (!isEmpty(res.data.userInfo)) {
|
||||
userInfo.dataFill(res.data.userInfo)
|
||||
|
||||
// 请求到会员信息才设置会员中心初始化是成功的
|
||||
siteConfig.setUserInitialize(true)
|
||||
}
|
||||
|
||||
if (!res.data.openMemberCenter) memberCenter.setLayoutMode('Disable')
|
||||
|
||||
siteConfig.setInitialize(true)
|
||||
|
||||
// 根据当前路由重设页面标题
|
||||
setTitleFromRoute()
|
||||
|
||||
typeof callback == 'function' && callback(res)
|
||||
})
|
||||
}, 200)()
|
||||
}
|
||||
120
web/src/api/frontend/user/index.ts
Normal file
120
web/src/api/frontend/user/index.ts
Normal file
@@ -0,0 +1,120 @@
|
||||
import createAxios from '/@/utils/axios'
|
||||
import { useUserInfo } from '/@/stores/userInfo'
|
||||
|
||||
export const userUrl = '/api/user/'
|
||||
export const accountUrl = '/api/account/'
|
||||
|
||||
export function checkIn(method: 'get' | 'post', params: object = {}) {
|
||||
return createAxios({
|
||||
url: userUrl + 'checkIn',
|
||||
data: params,
|
||||
method: method,
|
||||
})
|
||||
}
|
||||
|
||||
export function overview() {
|
||||
return createAxios({
|
||||
url: accountUrl + 'overview',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
export function postProfile(params: anyObj) {
|
||||
return createAxios(
|
||||
{
|
||||
url: accountUrl + 'profile',
|
||||
method: 'POST',
|
||||
data: params,
|
||||
},
|
||||
{
|
||||
showSuccessMessage: true,
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
export function getProfile() {
|
||||
return createAxios({
|
||||
url: accountUrl + 'profile',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
export function postVerification(data: anyObj) {
|
||||
return createAxios({
|
||||
url: accountUrl + 'verification',
|
||||
method: 'post',
|
||||
data: data,
|
||||
})
|
||||
}
|
||||
|
||||
export function postChangeBind(data: anyObj) {
|
||||
return createAxios(
|
||||
{
|
||||
url: accountUrl + 'changeBind',
|
||||
method: 'post',
|
||||
data: data,
|
||||
},
|
||||
{
|
||||
showSuccessMessage: true,
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
export function changePassword(params: anyObj) {
|
||||
return createAxios(
|
||||
{
|
||||
url: accountUrl + 'changePassword',
|
||||
method: 'POST',
|
||||
data: params,
|
||||
},
|
||||
{
|
||||
showSuccessMessage: true,
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
export function getBalanceLog(page: number, pageSize: number) {
|
||||
return createAxios({
|
||||
url: accountUrl + 'balance',
|
||||
method: 'GET',
|
||||
params: {
|
||||
page: page,
|
||||
limit: pageSize,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
export function getIntegralLog(page: number, pageSize: number) {
|
||||
return createAxios({
|
||||
url: accountUrl + 'integral',
|
||||
method: 'GET',
|
||||
params: {
|
||||
page: page,
|
||||
limit: pageSize,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
export function postLogout() {
|
||||
const userInfo = useUserInfo()
|
||||
return createAxios({
|
||||
url: userUrl + 'logout',
|
||||
method: 'POST',
|
||||
data: {
|
||||
refreshToken: userInfo.getToken('refresh'),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
export function retrievePassword(params: anyObj) {
|
||||
return createAxios(
|
||||
{
|
||||
url: accountUrl + 'retrievePassword',
|
||||
method: 'POST',
|
||||
data: params,
|
||||
},
|
||||
{
|
||||
showSuccessMessage: true,
|
||||
}
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user