package service import ( "errors" "xps/cache" "xps/datamodels" "xps/datasource" "xps/repositories" "xps/viewmodels" ) type BizObjectOAMParamsService interface { GetList(m map[string]interface{}) ([]viewmodels.BizObjectOAMParamsInfo, error) GetById(bizId, objectId, oamId, paramsId int64) (*viewmodels.BizObjectOAMParamsInfo, error) Create(param *datamodels.BizObjectOAMParams) error Update(param *datamodels.BizObjectOAMParams) error Delete(m map[string]interface{}) error } type bizObjectOAMParamsService struct { oamRepo *repositories.BizObjectOAMRepo oamParamsRepo *repositories.BizObjectOAMParamsRepo } func NewBizObjectOAMParamsService() BizObjectOAMParamsService { return &bizObjectOAMParamsService{ oamRepo: repositories.NewBizObjectOAMRepo(datasource.InstanceMaster()), oamParamsRepo: repositories.NewBizObjectOAMParamsRepo(datasource.InstanceMaster()), } } func (s *bizObjectOAMParamsService) GetList(m map[string]interface{}) ([]viewmodels.BizObjectOAMParamsInfo, error) { return s.oamParamsRepo.GetList(m) } func (s *bizObjectOAMParamsService) GetById(bizId, objectId, oamId, paramsId int64) (*viewmodels.BizObjectOAMParamsInfo, error) { return s.oamParamsRepo.GetById(bizId, objectId, oamId, paramsId) } func (s *bizObjectOAMParamsService) Create(param *datamodels.BizObjectOAMParams) error { paramsId := NewID() param.ParamsId = paramsId err1 := s.oamParamsRepo.Create(param) if err1 != nil { return err1 } return s.CacheObjectOAMData(param.BizId, param.ObjectId, param.OamId) } func (s *bizObjectOAMParamsService) Update(param *datamodels.BizObjectOAMParams) error { err1 := s.oamParamsRepo.Update(param) if err1 != nil { return err1 } return s.CacheObjectOAMData(param.BizId, param.ObjectId, param.OamId) } func (s *bizObjectOAMParamsService) Delete(m map[string]interface{}) error { err1 := s.oamParamsRepo.Delete(m) if err1 != nil { return err1 } return nil } func (s *bizObjectOAMParamsService) CacheObjectOAMData(bizId, objectId, oamId int64) error { oam, err1 := s.oamRepo.GetById(bizId, objectId, oamId) if err1 != nil { return err1 } oamParams, err2 := s.oamParamsRepo.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, OamParams: oamParams, } // 缓存数据 err3 := cache.SetBizObjectOAMData(oam.ObjectCode, oam.OamCode, oamData) if err3 != nil { return errors.New("Redis缓存Model数据失败") } return nil }