import { PrismaClient } from '@prisma/client'; import * as argon2 from 'argon2'; const prisma = new PrismaClient(); async function main() { const username = '18115604840'; const password = '123456'; const role = await prisma.role.findFirst({ where: { code: 'admin' } }); if (!role) throw new Error('缺少 admin 角色,请先执行 prisma seed'); const root = (await prisma.department.findFirst({ where: { code: 'ROOT' } })) || (await prisma.department.findFirst({ orderBy: { sortNo: 'asc' } })); if (!root) throw new Error('缺少部门'); let emp = await prisma.employee.findFirst({ where: { mobile: username } }); if (!emp) { emp = await prisma.employee.create({ data: { name: '系统管理员', employeeNo: 'E-ADMIN', departmentId: root.id, title: '管理员', restSchedule: 'DOUBLE', employmentStatus: 'REGULAR', mobile: username, hiredAt: new Date(), }, }); } else if (!emp.mobile) { emp = await prisma.employee.update({ where: { id: emp.id }, data: { mobile: username } }); } const hash = await argon2.hash(password); let user = await prisma.user.findFirst({ where: { username } }); if (!user) { user = await prisma.user.create({ data: { username, passwordHash: hash, displayName: emp.name, employeeId: emp.id, mustChangePassword: false, status: 'ACTIVE', }, }); } else { user = await prisma.user.update({ where: { id: user.id }, data: { employeeId: emp.id, status: 'ACTIVE' }, }); } await prisma.userRole.upsert({ where: { userId_roleId: { userId: user.id, roleId: role.id } }, create: { userId: user.id, roleId: role.id }, update: {}, }); console.log('prod admin ok', username); } main() .then(() => prisma.$disconnect()) .catch(async (e) => { console.error(e); await prisma.$disconnect(); process.exit(1); });