init_service.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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. objectRepo *repositories.ObjectRepo
  16. objectAttrRepo *repositories.ObjectAttrRepo
  17. apiRepo *repositories.ApiRepo
  18. apiTransUnitRepo *repositories.ApiTransUnitRepo
  19. }
  20. func NewInitService() InitService {
  21. return &initService{
  22. objectRepo: repositories.NewObjectRepo(datasource.InstanceMaster()),
  23. objectAttrRepo: repositories.NewObjectAttrRepo(datasource.InstanceMaster()),
  24. apiRepo: repositories.NewApiRepo(datasource.InstanceMaster()),
  25. apiTransUnitRepo: repositories.NewApiTransUnitRepo(datasource.InstanceMaster()),
  26. }
  27. }
  28. func (s *initService) CacheObjectData() error {
  29. objectList, err1 := s.objectRepo.GetAll()
  30. if err1 != nil {
  31. return err1
  32. }
  33. attrsList, err2 := s.objectAttrRepo.GetAll()
  34. if err2 != nil {
  35. return err2
  36. }
  37. for _, object := range objectList {
  38. objectId := object.ObjectId
  39. attrs := make([]viewmodels.ObjectAttrInfo, 0)
  40. for _, attr := range attrsList {
  41. if attr.ObjectId == objectId {
  42. attrs = append(attrs, attr)
  43. }
  44. }
  45. cacheData := &viewmodels.ObjectDataInfo{
  46. ModelId: object.ModelId,
  47. ModelTitle: object.ModelTitle,
  48. ObjectId: object.ObjectId,
  49. ObjectType: object.ObjectType,
  50. ObjectTitle: object.ObjectTitle,
  51. ObjectCode: object.ObjectCode,
  52. Comment: object.Comment,
  53. IsFixed: object.IsFixed,
  54. Attrs: attrs,
  55. }
  56. // 缓存数据
  57. err3 := cache.SetObjectData(object.ObjectCode, cacheData)
  58. if err3 != nil {
  59. return errors.New("Redis缓存Object数据失败")
  60. }
  61. }
  62. return nil
  63. }
  64. func (s *initService) CacheApiData() error {
  65. apiList, err1 := s.apiRepo.GetAll()
  66. if err1 != nil {
  67. return nil
  68. }
  69. transList, err2 := s.apiTransUnitRepo.GetAll()
  70. if err2 != nil {
  71. return nil
  72. }
  73. for _, api := range apiList {
  74. apiId := api.ApiId
  75. trans := make([]viewmodels.ApiTransUnitInfo, 0)
  76. for _, tran := range transList{
  77. if tran.ApiId == apiId {
  78. trans = append(trans, tran)
  79. }
  80. }
  81. cacheData := &viewmodels.ApiDataInfo{
  82. ModId: api.ModId,
  83. ModTitle: api.ModTitle,
  84. ApiId: api.ApiId,
  85. ApiCode: api.ApiCode,
  86. ApiTitle: api.ApiTitle,
  87. ApiType: api.ApiType,
  88. ApiParams: api.ApiParams,
  89. ApiDesc: api.ApiDesc,
  90. Status: api.Status,
  91. TransUnits: trans,
  92. }
  93. // 缓存数据
  94. err3 := cache.SetApiData(api.ApiCode, cacheData)
  95. if err3 != nil {
  96. return errors.New("Redis缓存Api数据失败")
  97. }
  98. }
  99. return nil
  100. }
  101. func (i initService) CacheDBData() error {
  102. return nil
  103. }