biz_object_oam_rule_service.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package service
  2. import (
  3. "errors"
  4. "xps/cache"
  5. "xps/datamodels"
  6. "xps/datasource"
  7. "xps/repositories"
  8. "xps/viewmodels"
  9. )
  10. type BizObjectOAMRuleService interface {
  11. GetList(m map[string]interface{}) ([]viewmodels.BizObjectOAMRuleInfo, error)
  12. GetById(bizId, objectId, oamId, orId int64) (*viewmodels.BizObjectOAMRuleInfo, error)
  13. Create(or *datamodels.BizObjectOAMRule) error
  14. Update(or *datamodels.BizObjectOAMRule) error
  15. Delete(m map[string]interface{}) error
  16. }
  17. type bizObjectOAMRuleService struct {
  18. oamRepo *repositories.BizObjectOAMRepo
  19. oamRuleRepo *repositories.BizObjectOAMRuleRepo
  20. }
  21. func NewBizObjectOAMRuleService() BizObjectOAMRuleService {
  22. return &bizObjectOAMRuleService{
  23. oamRepo: repositories.NewBizObjectOAMRepo(datasource.InstanceMaster()),
  24. oamRuleRepo: repositories.NewBizObjectOAMRuleRepo(datasource.InstanceMaster()),
  25. }
  26. }
  27. func (s *bizObjectOAMRuleService) GetList(m map[string]interface{}) ([]viewmodels.BizObjectOAMRuleInfo, error) {
  28. return s.oamRuleRepo.GetList(m)
  29. }
  30. func (s *bizObjectOAMRuleService) GetById(bizId, objectId, oamId, orId int64) (*viewmodels.BizObjectOAMRuleInfo, error) {
  31. return s.oamRuleRepo.GetById(bizId, objectId, oamId, orId)
  32. }
  33. func (s *bizObjectOAMRuleService) Create(or *datamodels.BizObjectOAMRule) error {
  34. orId := NewID()
  35. or.OrId = orId
  36. err1 := s.oamRuleRepo.Create(or)
  37. if err1 != nil {
  38. return err1
  39. }
  40. return s.CacheObjectOAMData(or.BizId, or.ObjectId, or.OamId)
  41. }
  42. func (s *bizObjectOAMRuleService) Update(or *datamodels.BizObjectOAMRule) error {
  43. err1 := s.oamRuleRepo.Update(or)
  44. if err1 != nil {
  45. return err1
  46. }
  47. return s.CacheObjectOAMData(or.BizId, or.ObjectId, or.OamId)
  48. }
  49. func (s *bizObjectOAMRuleService) Delete(m map[string]interface{}) error {
  50. err1 := s.oamRuleRepo.Delete(m)
  51. if err1 != nil {
  52. return err1
  53. }
  54. return nil
  55. }
  56. func (s *bizObjectOAMRuleService) CacheObjectOAMData(bizId, objectId, oamId int64) error {
  57. oam, err1 := s.oamRepo.GetById(bizId, objectId, oamId)
  58. if err1 != nil {
  59. return err1
  60. }
  61. oamRules, err2 := s.oamRuleRepo.GetListById(bizId, objectId, oamId)
  62. if err2 != nil {
  63. return err2
  64. }
  65. oamData := &viewmodels.BizObjectOAMData{
  66. BizId: oam.BizId,
  67. ObjectId: oam.ObjectId,
  68. OamId: oam.OamId,
  69. OamCode: oam.OamCode,
  70. OamType: oam.OamType,
  71. OamTitle: oam.OamTitle,
  72. OamRules: oamRules,
  73. }
  74. // 缓存数据
  75. err3 := cache.SetBizObjectOAMData(oam.ObjectCode, oam.OamCode, oamData)
  76. if err3 != nil {
  77. return errors.New("Redis缓存Model数据失败")
  78. }
  79. return nil
  80. }