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 './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 { get, post } from './request'
|
||||||
|
import type { UserInfo, WxLoginResult, LoginParams } from './types'
|
||||||
|
|
||||||
export interface UserInfo {
|
/** 微信授权登录 */
|
||||||
id: number
|
export function wxLogin(code: string): Promise<WxLoginResult> {
|
||||||
nickname: string
|
return post<WxLoginResult>('/auth/wx-login', { code }, false)
|
||||||
avatarUrl: string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface LoginParams {
|
/** 账号密码登录(降级方案) */
|
||||||
username: string
|
export function login(params: LoginParams): Promise<WxLoginResult> {
|
||||||
password: string
|
return post<WxLoginResult>('/auth/login', params, false)
|
||||||
}
|
|
||||||
|
|
||||||
export interface LoginResult {
|
|
||||||
token: string
|
|
||||||
userInfo: UserInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
export function login(params: LoginParams): Promise<LoginResult> {
|
|
||||||
return post<LoginResult>('/api/login', params, false)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 获取当前用户信息 */
|
||||||
export function getUserInfo(): Promise<UserInfo> {
|
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) {
|
async function login(params: LoginParams) {
|
||||||
const result = await apiLogin(params)
|
const result = await apiLogin(params)
|
||||||
token.value = result.token
|
token.value = result.accessToken
|
||||||
userInfo.value = result.userInfo
|
setToken(result.accessToken)
|
||||||
setToken(result.token)
|
// 登录成功后获取用户信息
|
||||||
|
await fetchUserInfo()
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user