'use server' import prisma from '@/lib/prisma' import { revalidatePath } from 'next/cache' import bcrypt from 'bcryptjs' import type { User } from '@/generated/client' export async function createAdmin(data: Omit & { password?: string }) { let password = data.password if (password) { password = await bcrypt.hash(password, 10) } await prisma.user.create({ data: { ...data, password, role: 'ADMIN' } }) revalidatePath('/usermanagement/admin') } export async function updateAdmin(id: string, data: Partial>) { let updateData = { ...data } // 如果包含密码字段且不为空,则进行加密 if (data.password && data.password.trim() !== '') { updateData.password = await bcrypt.hash(data.password, 10) } else { // 如果密码为空,则从更新数据中移除密码字段,保持原密码不变 delete updateData.password } await prisma.user.update({ where: { id }, data: updateData }) revalidatePath('/usermanagement/admin') } export async function deleteAdmin(id: string) { await prisma.user.delete({ where: { id } }) revalidatePath('/usermanagement/admin') }