fix some error
This commit is contained in:
parent
78e435f60c
commit
8c12ec72a1
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user