sitesAnalysisControllers.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. /*
  2. * Sites Analysis API List
  3. * /sitesAnalysis/manage/analysisList - GET
  4. * /sitesAnalysis/manage/config - POST 创建新配置
  5. * /sitesAnalysis/manage/config/{id} - GET & POST & DELETE 获取、更新、删除配置
  6. * /sitesAnalysis/data/{id} - GET 获取指定ID的分析数据
  7. */
  8. package controllers
  9. import (
  10. "fwh-toolbox-server/domain"
  11. "fwh-toolbox-server/services"
  12. "strconv"
  13. "github.com/gofiber/fiber/v2"
  14. "go.mongodb.org/mongo-driver/bson/primitive"
  15. )
  16. // 获取站点分析管理名称表
  17. // /sitesAnalysis/manage/analysisList
  18. func GetSitesAnalysisList(c *fiber.Ctx) error {
  19. pageInt, _ := strconv.Atoi(c.Query("pageNum", "1"))
  20. sizeInt, _ := strconv.Atoi(c.Query("pageSize", "20"))
  21. if pageInt <= 0 || sizeInt <= 0 {
  22. return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
  23. "code": 400,
  24. "message": "Invalid request para",
  25. })
  26. }
  27. sn := c.Query("sn", "")
  28. progress := c.Query("progress", "")
  29. var snP *string = nil
  30. if sn != "" {
  31. snP = &sn
  32. }
  33. var progressP *string = nil
  34. if progress != "" {
  35. progressP = &progress
  36. }
  37. listPage, err := services.GetSiteAnalysisManageList(uint(pageInt), uint(sizeInt), snP, progressP)
  38. if err != nil {
  39. return JSONResponseNoData(c, 500, "Database read failed. (MongoDb)")
  40. }
  41. return JSONResponse(c, 0, "success", listPage)
  42. }
  43. // 创建一个分析配置
  44. // /sitesAnalysis/manage/config
  45. func CreateSitesAnalysis(c *fiber.Ctx) error {
  46. var body domain.SiteAnalysisConfigWrite
  47. if err := c.BodyParser(&body); err != nil {
  48. return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
  49. "code": 400,
  50. "message": "Invalid request body",
  51. })
  52. }
  53. if err := services.InsertSiteAnalysisConfig(body); err != nil {
  54. return JSONResponseNoData(c, 500, "Database write failed. (MongoDb)")
  55. }
  56. return JSONResponse(c, 0, "success", body)
  57. }
  58. // 获取单个分析配置
  59. // /sitesAnalysis/manage/config/:id
  60. func GetOneSiteAnalysisConfig(c *fiber.Ctx) error {
  61. id := c.Params("id")
  62. objID, err := primitive.ObjectIDFromHex(id)
  63. if err != nil {
  64. return JSONResponseNoData(c, 400, "Invalid request para :id")
  65. }
  66. config, err := services.GetSiteAnalysisConfig(objID)
  67. if err != nil {
  68. return JSONResponseNoData(c, 500, "Database read failed. (MongoDb)")
  69. }
  70. return JSONResponse(c, 0, "success", config)
  71. }
  72. // 更新一个分析配置
  73. // /sitesAnalysis/manage/config/:id
  74. func UpdateOneSiteAnalysisConfig(c *fiber.Ctx) error {
  75. id := c.Params("id")
  76. var body domain.SiteAnalysisConfigWrite
  77. if err := c.BodyParser(&body); err != nil {
  78. return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
  79. "code": 400,
  80. "message": "Invalid request body",
  81. })
  82. }
  83. objID, err := primitive.ObjectIDFromHex(id)
  84. if err != nil {
  85. return JSONResponseNoData(c, 400, "Invalid request para :id")
  86. }
  87. if err := services.UpdateSiteAnalysisConfig(objID, body); err != nil {
  88. return JSONResponseNoData(c, 500, "Database write failed. (MongoDb)")
  89. }
  90. return JSONResponse(c, 0, "success", body)
  91. }
  92. // 更新一个分析配置
  93. // /sitesAnalysis/manage/description/:id
  94. func UpdateOneSiteAnalysisDescription(c *fiber.Ctx) error {
  95. id := c.Params("id")
  96. var body string
  97. if err := c.BodyParser(&body); err != nil {
  98. return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
  99. "code": 400,
  100. "message": "Invalid request body",
  101. })
  102. }
  103. objID, err := primitive.ObjectIDFromHex(id)
  104. if err != nil {
  105. return JSONResponseNoData(c, 400, "Invalid request para :id")
  106. }
  107. if err := services.UpdateSiteAnalysisDescription(objID, body); err != nil {
  108. return JSONResponseNoData(c, 500, "Database write failed. (MongoDb)")
  109. }
  110. return JSONResponse(c, 0, "success", body)
  111. }
  112. // 删除一个分析数据
  113. // /sitesAnalysis/manage/config/:id
  114. func DeleteOneSiteAnalysis(c *fiber.Ctx) error {
  115. id := c.Params("id")
  116. objID, err := primitive.ObjectIDFromHex(id)
  117. if err != nil {
  118. return JSONResponseNoData(c, 400, "Invalid request para :id")
  119. }
  120. err = services.DeleteSiteAnalysisConfig(objID)
  121. if err != nil {
  122. return JSONResponseNoData(c, 500, "Database delete failed. (MongoDb)")
  123. }
  124. return JSONResponseNoData(c, 0, "success")
  125. }
  126. // 获取指定ID的分析数据
  127. // /sitesAnalysis/data/:id
  128. func GetOneSiteAnalysisData(c *fiber.Ctx) error {
  129. id := c.Params("id")
  130. objID, err := primitive.ObjectIDFromHex(id)
  131. if err != nil {
  132. return JSONResponseNoData(c, 400, "Invalid request para :id")
  133. }
  134. data, err := services.GetSiteAnalysisData(objID)
  135. if err != nil {
  136. return JSONResponseNoData(c, 500, "Database read failed. (MongoDb)")
  137. }
  138. return JSONResponse(c, 0, "success", data)
  139. }