package service import ( "errors" "xps/cache" "xps/datamodel" "xps/datasource" "xps/repositories" "xps/viewmodel" ) type BizObjectOAMMappingService interface { GetList(m map[string]interface{}) ([]viewmodel.BizObjectOAMMappingInfo, error) GetById(bizId, objectId, oamId, mappingId int64) (*viewmodel.BizObjectOAMMappingInfo, error) Create(param *datamodel.BizObjectOAMMapping) error Update(param *datamodel.BizObjectOAMMapping) error Delete(m map[string]interface{}) error CacheObjectOAMMapping(bizId, objectId, oamId int64) error } type bizObjectOAMMappingService struct { oamRepo *repositories.BizObjectOAMRepo oamMappingRepo *repositories.BizObjectOAMMappingRepo } func NewBizObjectOAMMappingService() BizObjectOAMMappingService { return &bizObjectOAMMappingService{ oamRepo: repositories.NewBizObjectOAMRepo(datasource.InstanceMaster()), oamMappingRepo: repositories.NewBizObjectOAMMappingRepo(datasource.InstanceMaster()), } } func (s *bizObjectOAMMappingService) GetList(m map[string]interface{}) ([]viewmodel.BizObjectOAMMappingInfo, error) { return s.oamMappingRepo.GetList(m) } func (s *bizObjectOAMMappingService) GetById(bizId, objectId, oamId, mappingId int64) (*viewmodel.BizObjectOAMMappingInfo, error) { return s.oamMappingRepo.GetById(bizId, objectId, oamId, mappingId) } func (s *bizObjectOAMMappingService) Create(m *datamodel.BizObjectOAMMapping) error { mappingId := NewID() m.MappingId = mappingId err1 := s.oamMappingRepo.Create(m) if err1 != nil { return err1 } bizId := m.BizId objectId := m.ObjectId oamId := m.OamId return s.CacheObjectOAMMapping(bizId, objectId, oamId) } func (s *bizObjectOAMMappingService) Update(param *datamodel.BizObjectOAMMapping) error { err1 := s.oamMappingRepo.Update(param) if err1 != nil { return err1 } bizId := param.BizId objectId := param.ObjectId oamId := param.OamId return s.CacheObjectOAMMapping(bizId, objectId, oamId) } func (s *bizObjectOAMMappingService) Delete(m map[string]interface{}) error { err1 := s.oamMappingRepo.Delete(m) if err1 != nil { return err1 } return nil } func (s *bizObjectOAMMappingService) CacheObjectOAMMapping(bizId, objectId, oamId int64) error { dataList, err1 := s.oamMappingRepo.GetListById(bizId, objectId, oamId) if err1 != nil { return err1 } if len(dataList) <= 0 { return nil } objectCode := dataList[0].ObjectCode oamCode := dataList[0].OamCode // 缓存数据 err3 := cache.SetBizObjectOAMMapping(objectCode, oamCode, dataList) if err3 != nil { return errors.New("Redis缓存Model数据失败") } return nil }