package system import ( "resume-platform/internal/model" "resume-platform/internal/repository" "github.com/google/uuid" ) type SystemService interface { GetAllMenus() ([]*model.Menu, error) CreateMenu(menu *model.Menu) error UpdateMenu(id string, menu *model.Menu) error DeleteMenu(id string) error GetSystemConfig() (*model.SystemConfig, error) CreateSystemConfig(config *model.SystemConfig) error UpdateSystemConfig(id string, config *model.SystemConfig) error InitDefaultMenus() error } type systemService struct { repo repository.ResumeRepository } func NewSystemService(repo repository.ResumeRepository) SystemService { return &systemService{repo: repo} } func (s *systemService) GetAllMenus() ([]*model.Menu, error) { return s.repo.GetAllMenus() } func (s *systemService) CreateMenu(menu *model.Menu) error { if menu.ID == "" { menu.ID = uuid.New().String() } return s.repo.CreateMenu(menu) } func (s *systemService) UpdateMenu(id string, menu *model.Menu) error { return s.repo.UpdateMenu(id, menu) } func (s *systemService) DeleteMenu(id string) error { return s.repo.DeleteMenu(id) } func (s *systemService) GetSystemConfig() (*model.SystemConfig, error) { return s.repo.GetSystemConfig() } func (s *systemService) CreateSystemConfig(config *model.SystemConfig) error { if config.ID == "" { config.ID = "default" } return s.repo.CreateSystemConfig(config) } func (s *systemService) UpdateSystemConfig(id string, config *model.SystemConfig) error { return s.repo.UpdateSystemConfig(id, config) } func (s *systemService) InitDefaultMenus() error { menus, err := s.repo.GetAllMenus() if err != nil { return err } if len(menus) > 0 { return nil } defaultMenus := []*model.Menu{ {ID: "menu-user", Name: "人员管理", Icon: "fas fa-users", Path: "user", ParentID: "", SortOrder: 1, IsFixed: true, IsEnabled: true}, {ID: "menu-menu", Name: "菜单管理", Icon: "fas fa-list", Path: "menu", ParentID: "", SortOrder: 2, IsFixed: true, IsEnabled: true}, {ID: "menu-settings", Name: "系统设置", Icon: "fas fa-cog", Path: "settings", ParentID: "", SortOrder: 3, IsFixed: true, IsEnabled: true}, } for _, menu := range defaultMenus { if err := s.repo.CreateMenu(menu); err != nil { return err } } return nil }