init_service.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package service
  2. import (
  3. "errors"
  4. "xps/cache"
  5. "xps/datasource"
  6. "xps/repositories"
  7. "xps/viewmodels"
  8. )
  9. type InitService interface {
  10. CacheObjectData() error
  11. CacheApiData() error
  12. CacheDBData() error
  13. }
  14. type initService struct {
  15. modelObjectRepo *repositories.ModelObjectRepo
  16. modelObjectAttrRepo *repositories.ModelObjectAttrRepo
  17. apiRepo *repositories.ApiRepo
  18. }
  19. func NewInitService() InitService {
  20. return &initService{
  21. modelObjectRepo: repositories.NewModelObjectRepo(datasource.InstanceMaster()),
  22. modelObjectAttrRepo: repositories.NewModelObjectAttrRepo(datasource.InstanceMaster()),
  23. apiRepo: repositories.NewApiRepo(datasource.InstanceMaster()),
  24. }
  25. }
  26. func (s *initService) CacheObjectData() error {
  27. objectList, err1 := s.modelObjectRepo.GetAll()
  28. if err1 != nil {
  29. return err1
  30. }
  31. attrsList, err2 := s.modelObjectAttrRepo.GetAll()
  32. if err2 != nil {
  33. return err2
  34. }
  35. for _, object := range objectList {
  36. objectId := object.ObjectId
  37. attrs := make([]viewmodels.ModelObjectAttrInfo, 0)
  38. for _, attr := range attrsList {
  39. if attr.ObjectId == objectId {
  40. attrs = append(attrs, attr)
  41. }
  42. }
  43. cacheData := &viewmodels.ModelObjectDataInfo{
  44. ModelId: object.ModelId,
  45. ModelTitle: object.ModelTitle,
  46. ObjectId: object.ObjectId,
  47. ObjectType: object.ObjectType,
  48. ObjectTitle: object.ObjectTitle,
  49. ObjectCode: object.ObjectCode,
  50. Comment: object.Comment,
  51. IsFixed: object.IsFixed,
  52. Attrs: attrs,
  53. }
  54. // 缓存数据
  55. err3 := cache.SetModelObjectData(object.ObjectCode, cacheData)
  56. if err3 != nil {
  57. return errors.New("Redis缓存Object数据失败")
  58. }
  59. }
  60. return nil
  61. }
  62. func (s *initService) CacheApiData() error {
  63. apiList, err1 := s.apiRepo.GetAll()
  64. if err1 != nil {
  65. return nil
  66. }
  67. for _, api := range apiList {
  68. // 缓存数据
  69. err3 := cache.SetApiData(api.ObjectCode, api.OamCode, &api)
  70. if err3 != nil {
  71. return errors.New("Redis缓存Api数据失败")
  72. }
  73. }
  74. return nil
  75. }
  76. func (s *initService) CacheDBData() error {
  77. return nil
  78. }