model_object_attr_service.go 2.5 KB

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