Files
venue-miniapp/miniprogram/src/modules/comprehensive/api/auth.js
T
2026-06-08 20:54:25 +08:00

45 lines
1.2 KiB
JavaScript

import { authStorage, request } from './request'
import { toNumber } from './mappers'
const toMember = (backendMember = {}) => ({
id: backendMember.id ?? null,
openid: backendMember.openid || '',
unionid: backendMember.unionid || '',
nickname: backendMember.nickname || '',
phone: backendMember.phone || '',
avatar_url: backendMember.avatar_url || '',
balance: backendMember.balance || '0.00',
is_active: backendMember.is_active === true,
created_at: backendMember.created_at || ''
})
const toWechatLogin = (backendData = {}) => ({
access_token: backendData.access_token || '',
token_type: backendData.token_type || 'Bearer',
expires_in: toNumber(backendData.expires_in),
member: toMember(backendData.member)
})
export const authApi = {
async wechatLogin(payload = {}) {
const data = typeof payload === 'string' ? { code: payload } : payload
const loginData = await request({
url: '/api/auth/wechat-login',
method: 'POST',
data: {
code: data.code,
nickname: data.nickname || '',
avatar_url: data.avatar_url || ''
}
}).then(toWechatLogin)
authStorage.setToken(loginData.access_token)
return loginData
},
logout() {
authStorage.clear()
}
}
export { authStorage }