logController.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package logapi
  2. import (
  3. "context"
  4. "github.com/gin-gonic/gin"
  5. "github.com/olivere/elastic"
  6. "iot_manager_service/util/common"
  7. "iot_manager_service/util/es"
  8. "net/http"
  9. "strconv"
  10. "time"
  11. )
  12. var LogController = new(logController)
  13. type logController struct {
  14. }
  15. // List 查询日志
  16. func (l logController) List(ctx *gin.Context) {
  17. //处理分页参数,索引名
  18. var indexName, logDate string
  19. //var logDate date.Date
  20. var page, size int
  21. var err1, err2 error
  22. if logDate = ctx.Query("time"); logDate == "" {
  23. indexName = defaultIndex()
  24. } else {
  25. indexName = logDate
  26. }
  27. if page, err1 = strconv.Atoi(ctx.Query("current")); err1 != nil {
  28. page = 1
  29. }
  30. if size, err2 = strconv.Atoi(ctx.Query("size")); err2 != nil {
  31. size = 10
  32. }
  33. //查询条件
  34. level := ctx.Query("level")
  35. reqUri := ctx.Query("req_uri")
  36. query := elastic.NewBoolQuery()
  37. var q1, q2 *elastic.MatchQuery
  38. if level != "" {
  39. q1 = elastic.NewMatchQuery("level", level)
  40. query.Must(q1)
  41. }
  42. if reqUri != "" {
  43. q2 = elastic.NewMatchQuery("req_uri", reqUri)
  44. query.Must(q2)
  45. }
  46. //执行并响应
  47. result, err3 := LogService.search(indexName, page, size, query)
  48. if err3 != nil {
  49. ctx.JSON(http.StatusOK, common.SuccessResponse("es错误", nil))
  50. } else if result != nil {
  51. ctx.JSON(http.StatusOK, common.SuccessResponse(common.Success, result))
  52. } else {
  53. //todo 修改前端代码 data为空时前端一直处于加载页面,前端不会改
  54. ctx.JSON(http.StatusOK, common.SuccessResponse(common.Succeeded, res{
  55. Current: 0,
  56. Pages: 0,
  57. Size: 0,
  58. Total: 0,
  59. Records: nil,
  60. }))
  61. }
  62. }
  63. // AddDoc 存储日志 DelIndex 删除索引 在util/es下
  64. // Detail 日志详情
  65. func (l logController) Detail(ctx *gin.Context) {
  66. var id, indexName string
  67. indexName = ctx.Query("indexName")
  68. id = ctx.Query("id")
  69. do, err := es.Client.Get().Index(indexName).Type("_doc").Id(id).Do(context.Background())
  70. if err != nil {
  71. ctx.JSON(http.StatusInternalServerError, common.SuccessResponse("查询失败", err))
  72. } else {
  73. //响应数据给前端
  74. ctx.JSON(http.StatusOK, common.SuccessResponse(common.Succeeded, do))
  75. }
  76. }
  77. // 当天日期作为索引名
  78. func defaultIndex() string {
  79. return time.Now().Format("2006-01-02")
  80. }