Add internal/service/admin.go
This commit is contained in:
53
internal/service/admin.go
Normal file
53
internal/service/admin.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"gotest/internal/model"
|
||||
"gotest/internal/repository"
|
||||
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
)
|
||||
|
||||
// AdminService 管理员服务,负责管理员检查与初始化
|
||||
type AdminService struct {
|
||||
userRepo *repository.UserRepository
|
||||
}
|
||||
|
||||
// NewAdminService 创建管理员服务实例
|
||||
func NewAdminService(userRepo *repository.UserRepository) *AdminService {
|
||||
return &AdminService{userRepo: userRepo}
|
||||
}
|
||||
|
||||
// CheckAdmin 检查管理员是否已存在
|
||||
func (s *AdminService) CheckAdmin() (bool, error) {
|
||||
count, err := s.userRepo.Count()
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return count > 0, nil
|
||||
}
|
||||
|
||||
// InitAdmin 初始化管理员账号(仅在无任何用户时允许)
|
||||
func (s *AdminService) InitAdmin(username, password string) error {
|
||||
// 已存在用户时禁止初始化
|
||||
count, err := s.userRepo.Count()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if count > 0 {
|
||||
return errors.New("系统已初始化,禁止重复操作")
|
||||
}
|
||||
|
||||
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return s.userRepo.Create(&model.User{
|
||||
Username: username,
|
||||
Password: string(hashedPassword),
|
||||
Role: "admin",
|
||||
Status: 1,
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user