package service import ( "errors" "xps/cache" "xps/datamodel" "xps/datasource" "xps/repositories" "xps/viewmodel" ) type BizObjectOAMRuleService interface { GetList(m map[string]interface{}) ([]viewmodel.BizObjectOAMRuleInfo, error) GetById(bizId, objectId, oamId, orId int64) (*viewmodel.BizObjectOAMRuleInfo, error) Create(or *datamodel.BizObjectOAMRule) error Update(or *datamodel.BizObjectOAMRule) error Delete(m map[string]interface{}) error CacheObjectOAMRules(bizId, objectId, oamId int64) error } type bizObjectOAMRuleService struct { oamRepo *repositories.BizObjectOAMRepo oamRuleRepo *repositories.BizObjectOAMRuleRepo } func NewBizObjectOAMRuleService() BizObjectOAMRuleService { return &bizObjectOAMRuleService{ oamRepo: repositories.NewBizObjectOAMRepo(datasource.InstanceMaster()), oamRuleRepo: repositories.NewBizObjectOAMRuleRepo(datasource.InstanceMaster()), } } func (s *bizObjectOAMRuleService) GetList(m map[string]interface{}) ([]viewmodel.BizObjectOAMRuleInfo, error) { return s.oamRuleRepo.GetList(m) } func (s *bizObjectOAMRuleService) GetById(bizId, objectId, oamId, orId int64) (*viewmodel.BizObjectOAMRuleInfo, error) { return s.oamRuleRepo.GetById(bizId, objectId, oamId, orId) } func (s *bizObjectOAMRuleService) Create(or *datamodel.BizObjectOAMRule) error { orId := NewID() or.OrId = orId err := s.oamRuleRepo.Create(or) if err != nil { return err } bizId := or.BizId objectId := or.ObjectId oamId := or.OamId return s.CacheObjectOAMRules(bizId, objectId, oamId) } func (s *bizObjectOAMRuleService) Update(or *datamodel.BizObjectOAMRule) error { err := s.oamRuleRepo.Update(or) if err != nil { return err } bizId := or.BizId objectId := or.ObjectId oamId := or.OamId return s.CacheObjectOAMRules(bizId, objectId, oamId) } func (s *bizObjectOAMRuleService) Delete(m map[string]interface{}) error { err1 := s.oamRuleRepo.Delete(m) if err1 != nil { return err1 } return nil } func (s *bizObjectOAMRuleService) CacheObjectOAMRules(bizId, objectId, oamId int64) error { oamRules, err2 := s.oamRuleRepo.GetListById(bizId, objectId, oamId) if err2 != nil { return err2 } if len(oamRules) <= 0 { return nil } objectCode := oamRules[0].ObjectCode oamCode := oamRules[0].OamCode // 缓存数据 err3 := cache.SetBizObjectOAMRules(objectCode, oamCode, oamRules) if err3 != nil { return errors.New("Redis缓存Model数据失败") } return nil }