fix some error

This commit is contained in:
songtianlun 2025-08-27 07:14:38 +08:00
parent 78e435f60c
commit 8c12ec72a1

View File

@ -13,14 +13,16 @@ export async function POST() {
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 })
}
// 检查用户是否存在于Prisma数据库中
const existingUser = await prisma.user.findUnique({
// 检查用户是否存在
let user = await prisma.user.findUnique({
where: { id: supabaseUser.id }
})
if (existingUser) {
let isNewUser = false
if (user) {
// 用户已存在,更新信息
const updatedUser = await prisma.user.update({
user = await prisma.user.update({
where: { id: supabaseUser.id },
data: {
email: supabaseUser.email!,
@ -31,40 +33,68 @@ export async function POST() {
updatedAt: new Date()
}
})
return NextResponse.json({
message: 'User updated successfully',
user: updatedUser
})
} else {
// 用户不存在,创建新用户
const newUser = await prisma.user.create({
// 用户不存在,需要创建
try {
user = await prisma.user.create({
data: {
id: supabaseUser.id,
email: supabaseUser.email!,
username: supabaseUser.user_metadata?.username || supabaseUser.user_metadata?.full_name || null,
avatar: supabaseUser.user_metadata?.avatar_url || null,
bio: supabaseUser.user_metadata?.bio || null,
language: supabaseUser.user_metadata?.language || 'en'
language: supabaseUser.user_metadata?.language || 'en',
subscriptionPlanId: 'free'
}
})
isNewUser = true
} catch (createError: unknown) {
// 如果是唯一约束错误,可能是并发创建导致的
const prismaError = createError as { code?: string }
if (prismaError.code === 'P2002') {
console.warn(`Concurrent user creation detected for ${supabaseUser.id}, fetching existing user`)
user = await prisma.user.findUnique({
where: { id: supabaseUser.id }
})
if (!user) {
throw createError // 如果还是找不到用户,重新抛出错误
}
} else {
throw createError
}
}
}
// isNewUser 变量已经在上面定义了
if (isNewUser) {
// 为新用户添加系统赠送的5USD信用额度1个月后过期
const expiresAt = new Date()
expiresAt.setMonth(expiresAt.getMonth() + 1)
try {
await addCredit(
newUser.id,
user.id,
5.0,
'system_gift',
'系统赠送 - 新用户礼包',
expiresAt
)
console.log(`Added welcome credit for new user: ${user.id}`)
} catch (creditError) {
console.error('Failed to add welcome credit:', creditError)
// 不影响用户创建流程
}
return NextResponse.json({
message: 'User created successfully',
user: newUser
user
}, { status: 201 })
} else {
return NextResponse.json({
message: 'User updated successfully',
user
})
}
} catch (error) {