feat: 定义共享类型,改造用户 API(新增 wxLogin)
- 创建 src/api/types.ts,统一定义所有业务共享类型 - 改造 src/api/user.ts,类型迁移至 types.ts,新增 wxLogin 接口 - 更新 src/api/index.ts barrel 导出(card/order 模块待后续任务创建) - 同步更新 src/store/user.ts 适配新的 WxLoginResult 返回结构 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
c3896f9227
commit
4cd1040e5d
+4
-1
@@ -1,2 +1,5 @@
|
||||
export * from './types'
|
||||
export * from './user'
|
||||
export * from './request'
|
||||
export * from './card'
|
||||
export * from './order'
|
||||
export { get, post, put, del, getToken, setToken, removeToken } from './request'
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
/** 用户信息 */
|
||||
export interface UserInfo {
|
||||
id: number
|
||||
nickname: string
|
||||
avatarUrl: string
|
||||
phone?: string
|
||||
}
|
||||
|
||||
/** 微信登录结果 */
|
||||
export interface WxLoginResult {
|
||||
accessToken: string
|
||||
refreshToken: string
|
||||
userId: number
|
||||
}
|
||||
|
||||
/** 账号密码登录参数(降级方案) */
|
||||
export interface LoginParams {
|
||||
username: string
|
||||
password: string
|
||||
}
|
||||
|
||||
/** 年卡基本信息 */
|
||||
export interface CardInfo {
|
||||
id: string
|
||||
name: string
|
||||
price: number
|
||||
originalPrice: number
|
||||
coverImage: string
|
||||
description: string
|
||||
scenicCount: number
|
||||
}
|
||||
|
||||
/** 年卡详情 */
|
||||
export interface CardDetail extends CardInfo {
|
||||
benefits: string[]
|
||||
scenicSpots: ScenicSpot[]
|
||||
validDays: number
|
||||
detail: string
|
||||
}
|
||||
|
||||
/** 景区信息 */
|
||||
export interface ScenicSpot {
|
||||
id: string
|
||||
name: string
|
||||
image: string
|
||||
address?: string
|
||||
}
|
||||
|
||||
/** 我的年卡 */
|
||||
export interface MyCard {
|
||||
id: string
|
||||
cardId: string
|
||||
cardName: string
|
||||
coverImage: string
|
||||
userName: string
|
||||
expireDate: string
|
||||
status: 'active' | 'expired' | 'inactive'
|
||||
}
|
||||
|
||||
/** 激活年卡参数 */
|
||||
export interface ActivateParams {
|
||||
realName: string
|
||||
idCard: string
|
||||
phone: string
|
||||
}
|
||||
|
||||
/** 入园码信息 */
|
||||
export interface QrCodeInfo {
|
||||
qrCode: string
|
||||
expireTime: string
|
||||
cardName: string
|
||||
userName: string
|
||||
expireDate: string
|
||||
}
|
||||
|
||||
/** 订单信息 */
|
||||
export interface OrderInfo {
|
||||
id: string
|
||||
cardId: string
|
||||
cardName: string
|
||||
price: number
|
||||
status: 'pending' | 'paid' | 'cancelled'
|
||||
createTime: string
|
||||
}
|
||||
|
||||
/** 创建订单参数 */
|
||||
export interface CreateOrderParams {
|
||||
cardId: string
|
||||
}
|
||||
|
||||
/** 模拟支付结果 */
|
||||
export interface MockPayResult {
|
||||
success: boolean
|
||||
orderId: string
|
||||
}
|
||||
+11
-17
@@ -1,25 +1,19 @@
|
||||
import { get, post } from './request'
|
||||
import type { UserInfo, WxLoginResult, LoginParams } from './types'
|
||||
|
||||
export interface UserInfo {
|
||||
id: number
|
||||
nickname: string
|
||||
avatarUrl: string
|
||||
/** 微信授权登录 */
|
||||
export function wxLogin(code: string): Promise<WxLoginResult> {
|
||||
return post<WxLoginResult>('/auth/wx-login', { code }, false)
|
||||
}
|
||||
|
||||
export interface LoginParams {
|
||||
username: string
|
||||
password: string
|
||||
}
|
||||
|
||||
export interface LoginResult {
|
||||
token: string
|
||||
userInfo: UserInfo
|
||||
}
|
||||
|
||||
export function login(params: LoginParams): Promise<LoginResult> {
|
||||
return post<LoginResult>('/api/login', params, false)
|
||||
/** 账号密码登录(降级方案) */
|
||||
export function login(params: LoginParams): Promise<WxLoginResult> {
|
||||
return post<WxLoginResult>('/auth/login', params, false)
|
||||
}
|
||||
|
||||
/** 获取当前用户信息 */
|
||||
export function getUserInfo(): Promise<UserInfo> {
|
||||
return get<UserInfo>('/api/user/info')
|
||||
return get<UserInfo>('/user/info')
|
||||
}
|
||||
|
||||
export type { UserInfo, WxLoginResult, LoginParams }
|
||||
|
||||
+4
-3
@@ -11,9 +11,10 @@ export const useUserStore = defineStore('user', () => {
|
||||
|
||||
async function login(params: LoginParams) {
|
||||
const result = await apiLogin(params)
|
||||
token.value = result.token
|
||||
userInfo.value = result.userInfo
|
||||
setToken(result.token)
|
||||
token.value = result.accessToken
|
||||
setToken(result.accessToken)
|
||||
// 登录成功后获取用户信息
|
||||
await fetchUserInfo()
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user