init_service.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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. apiTransUnitRepo *repositories.ApiTransUnitRepo
  19. }
  20. func NewInitService() InitService {
  21. return &initService{
  22. modelObjectRepo: repositories.NewModelObjectRepo(datasource.InstanceMaster()),
  23. modelObjectAttrRepo: repositories.NewModelObjectAttrRepo(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.modelObjectRepo.GetAll()
  30. if err1 != nil {
  31. return err1
  32. }
  33. attrsList, err2 := s.modelObjectAttrRepo.GetAll()
  34. if err2 != nil {
  35. return err2
  36. }
  37. for _, object := range objectList {
  38. objectId := object.ObjectId
  39. attrs := make([]viewmodels.ModelObjectAttrInfo, 0)
  40. for _, attr := range attrsList {
  41. if attr.ObjectId == objectId {
  42. attrs = append(attrs, attr)
  43. }
  44. }
  45. cacheData := &viewmodels.ModelObjectDataInfo{
  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.SetModelObjectData(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. moduleId := api.ModuleId
  75. apiId := api.ApiId
  76. trans := make([]viewmodels.ApiTransUnitInfo, 0)
  77. for _, tran := range transList{
  78. if tran.ModuleId == moduleId && tran.ApiId == apiId {
  79. trans = append(trans, tran)
  80. }
  81. }
  82. cacheData := &viewmodels.ApiDataInfo{
  83. ModuleId: api.ModuleId,
  84. ModuleTitle: api.ModuleTitle,
  85. ApiId: api.ApiId,
  86. ApiCode: api.ApiCode,
  87. ApiTitle: api.ApiTitle,
  88. ApiType: api.ApiType,
  89. ApiParams: api.ApiParams,
  90. ApiDesc: api.ApiDesc,
  91. Status: api.Status,
  92. TransUnits: trans,
  93. }
  94. // 缓存数据
  95. err3 := cache.SetApiData(api.ApiCode, cacheData)
  96. if err3 != nil {
  97. return errors.New("Redis缓存Api数据失败")
  98. }
  99. }
  100. return nil
  101. }
  102. func (s *initService) CacheDBData() error {
  103. return nil
  104. }