门店信息

This commit is contained in:
liu
2026-08-10 10:09:30 +08:00
parent 0203c84357
commit b288502e0e
19 changed files with 1001 additions and 748 deletions
+20 -20
View File
@@ -1,7 +1,7 @@
import { create } from 'zustand'
import Taro from '@tarojs/taro'
import { bindPhoneApi, wxLoginApi } from '@/services/auth'
import type { WxLoginParams } from '@/services/auth'
import { registerApi, wxLoginApi } from '@/services/auth'
import type { RegisterParams, WxLoginParams } from '@/services/auth'
import type { User } from '@/types/user'
/** 存储 key */
@@ -26,13 +26,23 @@ function loadFromStorage(): { user: User | null; token: string | null } {
return { user: null, token: null }
}
/** 登录 / 注册成功后持久化 token 与用户信息 */
function persistAuth(token: string, user: User): void {
try {
Taro.setStorageSync(STORAGE_KEYS.TOKEN, token)
Taro.setStorageSync(STORAGE_KEYS.USER, JSON.stringify(user))
} catch {
// storage 写入失败不阻塞登录流程
}
}
interface AuthState {
user: User | null
token: string | null
loading: boolean
login: (params: WxLoginParams) => Promise<void>
/** 微信手机号授权码绑定手机号(自动匹配门店/供应商 */
bindPhone: (phoneCode: string) => Promise<void>
/** 微信注册(手机号授权 + 门店编码绑定门店 */
register: (params: RegisterParams) => Promise<void>
logout: () => void
/** 更新用户信息(用于编辑资料后同步 store) */
setUser: (user: User) => void
@@ -47,30 +57,20 @@ const useAuthStore = create<AuthState>((set) => {
token: initial.token,
loading: !!(initial.token && initial.user), // 已恢复则立即 ready
/** 登录 */
/** 登录(仅已注册用户可登录,未注册由页面引导去注册) */
login: async (params: WxLoginParams) => {
const res = await wxLoginApi(params)
const { token, user } = res.data
set({ user, token })
try {
Taro.setStorageSync(STORAGE_KEYS.TOKEN, token)
Taro.setStorageSync(STORAGE_KEYS.USER, JSON.stringify(user))
} catch {
// storage 写入失败不阻塞登录流程
}
persistAuth(token, user)
},
/** 绑定手机号POST /mini/auth/phone(登录后 type=0 待绑定时调用) */
bindPhone: async (phoneCode: string) => {
const res = await bindPhoneApi({ phoneCode })
/** 注册POST /mini/auth/register */
register: async (params: RegisterParams) => {
const res = await registerApi(params)
const { token, user } = res.data
set({ user, token })
try {
Taro.setStorageSync(STORAGE_KEYS.TOKEN, token)
Taro.setStorageSync(STORAGE_KEYS.USER, JSON.stringify(user))
} catch {
// storage 写入失败不阻塞绑定流程
}
persistAuth(token, user)
},
/** 退出登录 */