项目正常启动
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import i18n from '@/i18n/index.uts'
|
||||
import i18n from '@/uni_modules/i18n/index.uts'
|
||||
|
||||
// 包装一个带参数智能判断的 t 函数,支持缺省值
|
||||
export function tt(key: string, values: any | null = null, locale: string | null = null): string {
|
||||
|
||||
88
utils/sapi.uts
Normal file
88
utils/sapi.uts
Normal file
@@ -0,0 +1,88 @@
|
||||
import supa, { supaReady } from '@/components/supadb/aksupainstance.uts'
|
||||
import type { UserProfile } from '@/pages/user/types.uts'
|
||||
|
||||
/**
|
||||
* 确保用户资料存在,如果不存在则创建基础资料
|
||||
* @param sessionUser 会话用户对象 (UTSJSONObject)
|
||||
* @returns 创建的用户资料,如果创建失败则返回 null
|
||||
*/
|
||||
export async function ensureUserProfile(sessionUser: UTSJSONObject): Promise<UserProfile | null> {
|
||||
try {
|
||||
await supaReady
|
||||
|
||||
// 从 sessionUser 中获取用户ID和邮箱
|
||||
const userId = sessionUser.getString('id')
|
||||
const email = sessionUser.getString('email') ?? ''
|
||||
|
||||
if (userId == null || userId === '') {
|
||||
console.error('无法获取用户ID')
|
||||
return null
|
||||
}
|
||||
|
||||
// 检查用户是否已存在
|
||||
const checkRes = await supa.from('ak_users')
|
||||
.select('*', {})
|
||||
.eq('id', userId)
|
||||
.single()
|
||||
.execute()
|
||||
|
||||
if (checkRes.status >= 200 && checkRes.status < 300 && checkRes.data != null) {
|
||||
// 用户已存在,返回现有资料
|
||||
const existingUser = checkRes.data as UTSJSONObject
|
||||
return {
|
||||
id: existingUser.getString('id'),
|
||||
username: existingUser.getString('username') ?? '',
|
||||
email: existingUser.getString('email') ?? email,
|
||||
gender: existingUser.getString('gender'),
|
||||
birthday: existingUser.getString('birthday'),
|
||||
height_cm: existingUser.getNumber('height_cm'),
|
||||
weight_kg: existingUser.getNumber('weight_kg'),
|
||||
bio: existingUser.getString('bio'),
|
||||
avatar_url: existingUser.getString('avatar_url'),
|
||||
preferred_language: existingUser.getString('preferred_language'),
|
||||
role: existingUser.getString('role'),
|
||||
school_id: existingUser.getString('school_id'),
|
||||
grade_id: existingUser.getString('grade_id'),
|
||||
class_id: existingUser.getString('class_id')
|
||||
} as UserProfile
|
||||
}
|
||||
|
||||
// 用户不存在,创建新用户资料
|
||||
const newUserData = new UTSJSONObject()
|
||||
newUserData.set('id', userId)
|
||||
newUserData.set('email', email)
|
||||
newUserData.set('username', email.split('@')[0] ?? 'user') // 默认用户名为邮箱前缀
|
||||
|
||||
const insertRes = await supa.from('ak_users')
|
||||
.insert(newUserData)
|
||||
.select('*', {})
|
||||
.single()
|
||||
.execute()
|
||||
|
||||
if (insertRes.status >= 200 && insertRes.status < 300 && insertRes.data != null) {
|
||||
const newUser = insertRes.data as UTSJSONObject
|
||||
return {
|
||||
id: newUser.getString('id'),
|
||||
username: newUser.getString('username') ?? '',
|
||||
email: newUser.getString('email') ?? email,
|
||||
gender: newUser.getString('gender'),
|
||||
birthday: newUser.getString('birthday'),
|
||||
height_cm: newUser.getNumber('height_cm'),
|
||||
weight_kg: newUser.getNumber('weight_kg'),
|
||||
bio: newUser.getString('bio'),
|
||||
avatar_url: newUser.getString('avatar_url'),
|
||||
preferred_language: newUser.getString('preferred_language'),
|
||||
role: newUser.getString('role'),
|
||||
school_id: newUser.getString('school_id'),
|
||||
grade_id: newUser.getString('grade_id'),
|
||||
class_id: newUser.getString('class_id')
|
||||
} as UserProfile
|
||||
} else {
|
||||
console.error('创建用户资料失败:', insertRes.status)
|
||||
return null
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('ensureUserProfile 异常:', error)
|
||||
return null
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
// 通用 UTSJSONObject 转任意 type 的函数
|
||||
// UTS 2024
|
||||
|
||||
import i18n from '../i18n/index.uts';
|
||||
import i18n from '@/uni_modules/i18n/index.uts';
|
||||
|
||||
/**
|
||||
* 切换应用语言设置
|
||||
@@ -13,7 +13,9 @@ export function switchLocale(locale: string) {
|
||||
|
||||
// 设置 i18n 语言
|
||||
try {
|
||||
i18n.global.locale.value = locale;
|
||||
if (i18n != null && i18n.global != null) {
|
||||
i18n.global.locale.value = locale;
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Failed to switch locale:', err);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user