model_object_attr_service.go 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package service
  2. import (
  3. "errors"
  4. "xps/cmd/cache"
  5. "xps/cmd/datasource"
  6. "xps/pkg/base"
  7. "xps/pkg/model/datamodel"
  8. "xps/pkg/model/repository"
  9. "xps/pkg/model/viewmodel"
  10. )
  11. type ModelObjectAttrService interface {
  12. GetList(m map[string]interface{}) ([]viewmodel.ModelObjectAttrInfo, error)
  13. GetPage(m map[string]interface{}) (*base.PageResult, error)
  14. GetById(modelId, objectId, attrId int64) (*viewmodel.ModelObjectAttrInfo, error)
  15. GetListById(modelId, objectId int64) ([]viewmodel.ModelObjectAttrInfo, error)
  16. Create(d *datamodel.ModelObjectAttr) error
  17. Update(d *datamodel.ModelObjectAttr) error
  18. Delete(m map[string]interface{}) error
  19. CacheModelObjectAttrs(modelId, objectId int64) error
  20. }
  21. type modelObjectAttrService struct {
  22. repo *repository.ModelObjectAttrRepo
  23. }
  24. func NewModelObjectAttrService() ModelObjectAttrService {
  25. return &modelObjectAttrService{
  26. repo: repository.NewModelObjectAttrRepo(datasource.InstanceMaster()),
  27. }
  28. }
  29. func (s *modelObjectAttrService) GetList(m map[string]interface{}) ([]viewmodel.ModelObjectAttrInfo, error) {
  30. return s.repo.GetList(m)
  31. }
  32. func (s *modelObjectAttrService) GetPage(m map[string]interface{}) (*base.PageResult, error) {
  33. return s.repo.GetPage(m)
  34. }
  35. func (s *modelObjectAttrService) GetById(modelId, objectId, attrId int64) (*viewmodel.ModelObjectAttrInfo, error) {
  36. return s.repo.GetById(modelId, objectId, attrId)
  37. }
  38. func (s *modelObjectAttrService) GetListById(modelId, objectId int64) ([]viewmodel.ModelObjectAttrInfo, error) {
  39. return s.repo.GetListById(modelId, objectId)
  40. }
  41. func (s *modelObjectAttrService) Create(attr *datamodel.ModelObjectAttr) error {
  42. attrId := NewID()
  43. attr.AttrId = attrId
  44. err := s.repo.Create(attr)
  45. if err != nil {
  46. return err
  47. }
  48. modelId := attr.ModelId
  49. objectId := attr.ObjectId
  50. return s.CacheModelObjectAttrs(modelId, objectId)
  51. }
  52. func (s *modelObjectAttrService) Update(attr *datamodel.ModelObjectAttr) error {
  53. err := s.repo.Update(attr)
  54. if err != nil {
  55. return err
  56. }
  57. modelId := attr.ModelId
  58. objectId := attr.ObjectId
  59. return s.CacheModelObjectAttrs(modelId, objectId)
  60. }
  61. func (s *modelObjectAttrService) Delete(m map[string]interface{}) error {
  62. return s.repo.Delete(m)
  63. }
  64. func (s *modelObjectAttrService) CacheModelObjectAttrs(modelId, objectId int64) error {
  65. attrList, err1 := s.repo.GetListById(modelId, objectId)
  66. if err1 != nil {
  67. return err1
  68. }
  69. if len(attrList) <= 0 {
  70. return errors.New("biz Object Attrs Not Exist")
  71. }
  72. objectCode := attrList[0].ObjectCode
  73. err2 := cache.SetModelObjectAttrs(objectCode, attrList)
  74. if err2 != nil {
  75. return errors.New("Redis缓存Model数据失败")
  76. }
  77. return nil
  78. }