更新管理员相关接口

This commit is contained in:
WuYuuuub
2026-04-05 11:57:47 +08:00
parent a630ae733e
commit 8457cf1450
8 changed files with 808 additions and 0 deletions

View File

@@ -181,6 +181,68 @@ type AdminLoginResult struct {
Admin *model.Admin
}
// CreateAdmin 创建管理员账号
func (s *AuthService) CreateAdmin(ctx context.Context, username, password, nickname string, role int8) (*model.Admin, error) {
// 检查用户名是否已存在
existingAdmin, err := s.adminRepo.GetByUsername(ctx, username)
if err != nil {
return nil, fmt.Errorf("failed to check existing admin: %w", err)
}
if existingAdmin != nil {
return nil, errors.New("username already exists")
}
// 对密码进行哈希处理
passwordHash, err := HashPassword(password)
if err != nil {
return nil, fmt.Errorf("failed to hash password: %w", err)
}
// 创建管理员
admin := &model.Admin{
Username: username,
PasswordHash: passwordHash,
Nickname: nickname,
Role: role,
}
if err := s.adminRepo.Create(ctx, admin); err != nil {
return nil, fmt.Errorf("failed to create admin: %w", err)
}
return admin, nil
}
// UpdateAdmin 更新管理员信息
func (s *AuthService) UpdateAdmin(ctx context.Context, id int32, nickname string, role int8) (*model.Admin, error) {
admin, err := s.adminRepo.GetByID(ctx, id)
if err != nil {
return nil, fmt.Errorf("failed to get admin: %w", err)
}
if admin == nil {
return nil, errors.New("admin not found")
}
admin.Nickname = nickname
admin.Role = role
if err := s.adminRepo.Update(ctx, admin); err != nil {
return nil, fmt.Errorf("failed to update admin: %w", err)
}
return admin, nil
}
// DeleteAdmin 删除管理员
func (s *AuthService) DeleteAdmin(ctx context.Context, id int32) error {
return s.adminRepo.Delete(ctx, id)
}
// GetAdminList 获取管理员列表
func (s *AuthService) GetAdminList(ctx context.Context, page, pageSize int) ([]model.Admin, int64, error) {
return s.adminRepo.List(ctx, page, pageSize)
}
// HashPassword creates a bcrypt hash of the password
func HashPassword(password string) (string, error) {
bytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)