model_object_service.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package service
  2. import (
  3. "errors"
  4. "xps/cache"
  5. "xps/datamodel"
  6. "xps/datasource"
  7. "xps/repositories"
  8. "xps/viewmodel"
  9. )
  10. type ModelObjectService interface {
  11. GetList(m map[string]interface{}) ([]viewmodel.ModelObjectInfo, error)
  12. GetPage(m map[string]interface{}) (*viewmodel.PageResult, error)
  13. GetById(modelId, objectId int64) (*viewmodel.ModelObjectInfo, error)
  14. GetListById(modelId int64) ([]viewmodel.ModelObjectInfo, error)
  15. Create(o *datamodel.ModelObject) error
  16. Update(o *datamodel.ModelObject) error
  17. Delete(m map[string]interface{}) error
  18. Select(modelId, bizId, objectId int64) ([]viewmodel.ModelObjectInfo, error)
  19. CacheModelObject(modelId, objectId int64) error
  20. }
  21. type modelObjectService struct {
  22. modelObjectRepo *repositories.ModelObjectRepo
  23. modelObjectAttrRepo *repositories.ModelObjectAttrRepo
  24. }
  25. func NewModelObjectService() ModelObjectService {
  26. return &modelObjectService{
  27. modelObjectRepo: repositories.NewModelObjectRepo(datasource.InstanceMaster()),
  28. modelObjectAttrRepo: repositories.NewModelObjectAttrRepo(datasource.InstanceMaster()),
  29. }
  30. }
  31. func (s *modelObjectService) GetList(m map[string]interface{}) ([]viewmodel.ModelObjectInfo, error) {
  32. return s.modelObjectRepo.GetList(m)
  33. }
  34. func (s *modelObjectService) GetListById(modelId int64) ([]viewmodel.ModelObjectInfo, error) {
  35. return s.modelObjectRepo.GetListById(modelId)
  36. }
  37. func (s *modelObjectService) Select(modelId, targetBizId, targetObjectId int64) ([]viewmodel.ModelObjectInfo, error) {
  38. return s.modelObjectRepo.SelectForBizObjectMapping(modelId, targetBizId, targetObjectId)
  39. }
  40. func (s *modelObjectService) GetPage(m map[string]interface{}) (*viewmodel.PageResult, error) {
  41. return s.modelObjectRepo.GetPage(m)
  42. }
  43. func (s *modelObjectService) GetById(modelId, objectId int64) (*viewmodel.ModelObjectInfo, error) {
  44. return s.modelObjectRepo.GetById(modelId, objectId)
  45. }
  46. func (s *modelObjectService) Create(o *datamodel.ModelObject) error {
  47. objectId := NewID()
  48. o.ObjectId = objectId
  49. err := s.modelObjectRepo.Create(o)
  50. if err != nil {
  51. return err
  52. }
  53. modelId := o.ModelId
  54. return s.CacheModelObject(modelId, objectId)
  55. }
  56. func (s *modelObjectService) Update(o *datamodel.ModelObject) error {
  57. err := s.modelObjectRepo.Update(o)
  58. if err != nil {
  59. return err
  60. }
  61. modelId := o.ModelId
  62. objectId := o.ObjectId
  63. return s.CacheModelObject(modelId, objectId)
  64. }
  65. func (s *modelObjectService) Delete(m map[string]interface{}) error {
  66. modelId := m["modelId"].(int64)
  67. objectId := m["objectId"].(int64)
  68. err := s.modelObjectRepo.Delete(m)
  69. if err != nil {
  70. return err
  71. }
  72. return s.modelObjectAttrRepo.DeleteByObjectId(modelId, objectId)
  73. }
  74. func (s *modelObjectService) CacheModelObject(modelId, objectId int64) error {
  75. o, err1 := s.modelObjectRepo.GetById(modelId, objectId)
  76. if err1 != nil {
  77. return err1
  78. }
  79. err2 := cache.SetModelObject(o.ObjectCode, o)
  80. if err2 != nil {
  81. return errors.New("Redis缓存Biz Object数据失败")
  82. }
  83. return nil
  84. }