logController.go 2.3 KB

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