package service import ( "errors" "xps/cache" "xps/datamodels" "xps/datasource" "xps/repositories" "xps/viewmodels" ) type BizObjectOAMRuleService interface { GetList(m map[string]interface{}) ([]viewmodels.BizObjectOAMRuleInfo, error) GetById(bizId, objectId, oamId, orId int64) (*viewmodels.BizObjectOAMRuleInfo, error) Create(or *datamodels.BizObjectOAMRule) error Update(or *datamodels.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{}) ([]viewmodels.BizObjectOAMRuleInfo, error) { return s.oamRuleRepo.GetList(m) } func (s *bizObjectOAMRuleService) GetById(bizId, objectId, oamId, orId int64) (*viewmodels.BizObjectOAMRuleInfo, error) { return s.oamRuleRepo.GetById(bizId, objectId, oamId, orId) } func (s *bizObjectOAMRuleService) Create(or *datamodels.BizObjectOAMRule) error { orId := NewID() or.OrId = orId err1 := s.oamRuleRepo.Create(or) if err1 != nil { return err1 } return s.CacheObjectOAMRules(or.BizId, or.ObjectId, or.OamId) } func (s *bizObjectOAMRuleService) Update(or *datamodels.BizObjectOAMRule) error { err1 := s.oamRuleRepo.Update(or) if err1 != nil { return err1 } return s.CacheObjectOAMRules(or.BizId, or.ObjectId, or.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 }