package service import ( "time" "xps/datamodel" "xps/datasource" "xps/repositories" "xps/viewmodel" ) type AppPermitService interface { GetList(m map[string]interface{})([]viewmodel.AppPermitInfo, error) GetListById(appId, roleId int64)([]viewmodel.AppPermitInfo, error) GetById(appId, roleId, permitId int64) (*viewmodel.AppPermitInfo, error) Create(permit *datamodel.AppPermit) error Update(permit *datamodel.AppPermit) error Delete(m map[string]interface{}) error } type appPermitService struct { repo *repositories.AppPermitRepo } func NewAppPermitService() AppPermitService { return &appPermitService{ repo: repositories.NewAppPermitRepo(datasource.InstanceMaster()), } } func (s *appPermitService) GetList(m map[string]interface{})([]viewmodel.AppPermitInfo, error) { return s.repo.GetList(m) } func (s *appPermitService) GetListById(appId, roleId int64)([]viewmodel.AppPermitInfo, error) { return s.repo.GetListById(appId, roleId) } func (s *appPermitService) GetById(appId, roleId, permitId int64) (*viewmodel.AppPermitInfo, error) { return s.repo.GetById(appId, roleId, permitId) } func (s *appPermitService) Create(p *datamodel.AppPermit) error { permitId := NewID() parentId := p.ParentId p.PermitId = permitId if parentId == 0 { p.RootId = permitId } else { appId := p.AppId roleId := p.RoleId parent, err := s.GetById(appId, roleId, parentId) if err != nil { return err } p.RootId = parent.RootId } p.CreatedAt = time.Now() return s.repo.Create(p) } func (s *appPermitService) Update(p *datamodel.AppPermit) error { p.UpdatedAt = time.Now() return s.repo.Update(p) } func (s *appPermitService) Delete(m map[string]interface{}) error { appId := m["appId"].(int64) roleId := m["roleId"].(int64) permitId := m["permitId"].(int64) return s.repo.Delete(appId, roleId, permitId) }