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:
jacobxu666
2026-06-14 17:21:18 +08:00
co-authored by Claude Opus 4.8
parent c3896f9227
commit 4cd1040e5d
4 changed files with 114 additions and 21 deletions
+4 -1
View File
@@ -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'
+95
View File
@@ -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
View File
@@ -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
View File
@@ -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
}