package service import ( "errors" "xps/cache" "xps/datamodels" "xps/datasource" "xps/repositories" "xps/viewmodels" ) type BizObjectOAMService interface { GetList(m map[string]interface{}) ([]viewmodels.BizObjectOAMInfo, error) GetById(bizId, objectId, oamId int64) (*viewmodels.BizObjectOAMInfo, error) Create(d *datamodels.BizObjectOAM) error Update(d *datamodels.BizObjectOAM) error Delete(m map[string]interface{}) error CacheObjectOAMData(bizId, objectId, oamId int64) error } type bizObjectOAMService struct { repo *repositories.BizObjectOAMRepo oamRuleRepo *repositories.BizObjectOAMRuleRepo } func NewBizObjectOAMService() BizObjectOAMService { return &bizObjectOAMService{ repo: repositories.NewBizObjectOAMRepo(datasource.InstanceMaster()), oamRuleRepo: repositories.NewBizObjectOAMRuleRepo(datasource.InstanceMaster()), } } func (s *bizObjectOAMService) GetList(m map[string]interface{}) ([]viewmodels.BizObjectOAMInfo, error) { return s.repo.GetList(m) } func (s *bizObjectOAMService) GetById(bizId, objectId, oamId int64) (*viewmodels.BizObjectOAMInfo, error) { return s.repo.GetById(bizId, objectId, oamId) } func (s *bizObjectOAMService) Create(oam *datamodels.BizObjectOAM) error { bizId := oam.BizId objectId := oam.ObjectId oamId := NewID() oam.OamId = oamId err := s.repo.Create(oam) if err != nil { return err } return s.CacheObjectOAMData(bizId, objectId, oamId) } func (s *bizObjectOAMService) Update(oam *datamodels.BizObjectOAM) error { bizId := oam.BizId objectId := oam.ObjectId oamId := oam.OamId err := s.repo.Update(oam) if err != nil { return err } return s.CacheObjectOAMData(bizId, objectId, oamId) } func (s *bizObjectOAMService) Delete(m map[string]interface{}) error { return s.repo.Delete(m) } func (s *bizObjectOAMService) CacheObjectOAMData(bizId, objectId, oamId int64) error { oam, err1 := s.repo.GetById(bizId, objectId, oamId) if err1 != nil { return err1 } oamRules, err2 := s.oamRuleRepo.GetListById(bizId, objectId, oamId) if err2 != nil { return err2 } oamData := &viewmodels.BizObjectOAMData{ BizId: oam.BizId, ObjectId: oam.ObjectId, OamId: oam.OamId, OamCode: oam.OamCode, OamType: oam.OamType, OamTitle: oam.OamTitle, OamRules: oamRules, } // 缓存数据 err3 := cache.SetBizObjectOAMData(oam.ObjectCode, oam.OamCode, oamData) if err3 != nil { return errors.New("Redis缓存Model数据失败") } return nil }