project.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package service
  2. import (
  3. "context"
  4. "go-common/app/admin/ep/saga/conf"
  5. "go-common/app/admin/ep/saga/model"
  6. )
  7. // FavoriteProjects list user's favorite projects
  8. func (s *Service) FavoriteProjects(c context.Context, req *model.Pagination, userName string) (resp *model.FavoriteProjectsResp, err error) {
  9. var (
  10. favorite *model.ProjectFavorite
  11. favorites []*model.ProjectFavorite
  12. projectInfo *model.ProjectInfo
  13. )
  14. resp = &model.FavoriteProjectsResp{}
  15. if favorites, err = s.dao.FavoriteProjects(userName); err != nil {
  16. return
  17. }
  18. for _, favorite = range favorites {
  19. if projectInfo, err = s.dao.ProjectInfoByID(favorite.ProjID); err != nil {
  20. return
  21. }
  22. myProject := &model.MyProjectInfo{
  23. ProjectInfo: projectInfo,
  24. }
  25. myProject.Star = true
  26. resp.Projects = append(resp.Projects, myProject)
  27. }
  28. resp.PageSize = req.PageSize
  29. resp.PageNum = req.PageNum
  30. resp.Total = len(favorites)
  31. return
  32. }
  33. // EditFavorite edit user's favorites, star/unstar
  34. func (s *Service) EditFavorite(c context.Context, req *model.EditFavoriteReq, userName string) (resp *model.EmptyResp, err error) {
  35. var (
  36. projID = req.ProjID
  37. favorites []*model.ProjectFavorite
  38. exist bool
  39. )
  40. resp = &model.EmptyResp{}
  41. if favorites, err = s.dao.FavoriteProjects(userName); err != nil {
  42. return
  43. }
  44. if req.Star {
  45. if !inFavorites(favorites, projID) {
  46. if exist, err = s.dao.ProjectExist(projID); err != nil {
  47. return
  48. }
  49. if exist {
  50. if err = s.dao.AddFavorite(userName, projID); err != nil {
  51. return
  52. }
  53. }
  54. }
  55. } else {
  56. if inFavorites(favorites, projID) {
  57. if err = s.dao.DelFavorite(userName, projID); err != nil {
  58. return
  59. }
  60. }
  61. }
  62. return
  63. }
  64. // inFavorites ...
  65. func inFavorites(favorites []*model.ProjectFavorite, projID int) bool {
  66. var (
  67. f *model.ProjectFavorite
  68. )
  69. for _, f = range favorites {
  70. if projID == f.ProjID {
  71. return true
  72. }
  73. }
  74. return false
  75. }
  76. // QueryCommonProjects ...
  77. func (s *Service) QueryCommonProjects(c context.Context) (result []string, err error) {
  78. var (
  79. projectInfo *model.ProjectInfo
  80. )
  81. ids := conf.Conf.Property.DefaultProject.ProjectIDs
  82. for _, id := range ids {
  83. if projectInfo, err = s.dao.ProjectInfoByID(id); err != nil {
  84. return
  85. }
  86. result = append(result, projectInfo.Name)
  87. }
  88. return
  89. }
  90. // QueryProjectInfo query project info.
  91. func (s *Service) QueryProjectInfo(c context.Context, req *model.ProjectInfoRequest) (resp *model.ProjectInfoResp, err error) {
  92. var (
  93. projectInfo []*model.ProjectInfo
  94. project *model.ProjectInfo
  95. total int
  96. saga int
  97. runner int
  98. sagaScale int
  99. runnerScale int
  100. mproject *model.MyProjectInfo
  101. favorites []*model.ProjectFavorite
  102. projectInfoResp []*model.MyProjectInfo
  103. )
  104. userName := req.Username
  105. if total, projectInfo, err = s.dao.QueryProjectInfo(true, req); err != nil {
  106. return
  107. }
  108. if favorites, err = s.dao.FavoriteProjects(userName); err != nil {
  109. return
  110. }
  111. for _, project = range projectInfo {
  112. mproject = &model.MyProjectInfo{
  113. ProjectInfo: project,
  114. }
  115. if !inFavorites(favorites, project.ProjectID) {
  116. mproject.Star = false
  117. } else {
  118. mproject.Star = true
  119. }
  120. projectInfoResp = append(projectInfoResp, mproject)
  121. }
  122. if saga, err = s.dao.QueryConfigInfo(req.Name, req.Department, req.Business, "saga"); err != nil {
  123. return
  124. }
  125. if runner, err = s.dao.QueryConfigInfo(req.Name, req.Department, req.Business, "runner"); err != nil {
  126. return
  127. }
  128. if total != 0 {
  129. sagaScale = saga * 100 / total
  130. runnerScale = runner * 100 / total
  131. }
  132. resp = &model.ProjectInfoResp{
  133. PageNum: req.PageNum,
  134. PageSize: req.PageSize,
  135. Total: total,
  136. Saga: saga,
  137. Runner: runner,
  138. SagaScale: sagaScale,
  139. RunnerScale: runnerScale,
  140. ProjectInfo: projectInfoResp,
  141. }
  142. return
  143. }