waflog.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package admin
  2. import (
  3. "github.com/gin-gonic/gin"
  4. v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
  5. adminApi "github.com/go-nunu/nunu-layout-advanced/api/v1/admin"
  6. "github.com/go-nunu/nunu-layout-advanced/internal/handler"
  7. "github.com/go-nunu/nunu-layout-advanced/internal/service/admin"
  8. "github.com/mcuadros/go-defaults"
  9. "net/http"
  10. )
  11. type WafLogHandler struct {
  12. *handler.Handler
  13. wafLogService admin.WafLogService
  14. }
  15. func NewWafLogHandler(
  16. handler *handler.Handler,
  17. wafLogService admin.WafLogService,
  18. ) *WafLogHandler {
  19. return &WafLogHandler{
  20. Handler: handler,
  21. wafLogService: wafLogService,
  22. }
  23. }
  24. func (h *WafLogHandler) GetWafLog(ctx *gin.Context) {
  25. var req adminApi.WafLog
  26. if err := ctx.ShouldBind(&req); err != nil {
  27. v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
  28. return
  29. }
  30. defaults.SetDefaults(&req)
  31. res, err := h.wafLogService.GetWafLog(ctx, int64(req.Id))
  32. if err != nil {
  33. v1.HandleError(ctx, http.StatusInternalServerError, err, err.Error())
  34. return
  35. }
  36. v1.HandleSuccess(ctx, res)
  37. }
  38. func (h *WafLogHandler) GetWafLogList(ctx *gin.Context) {
  39. var req adminApi.SearchWafLogParams
  40. if err := ctx.ShouldBind(&req); err != nil {
  41. v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
  42. return
  43. }
  44. defaults.SetDefaults(&req)
  45. res, err := h.wafLogService.GetWafLogList(ctx, req)
  46. if err != nil {
  47. v1.HandleError(ctx, http.StatusInternalServerError, err, err.Error())
  48. return
  49. }
  50. v1.HandleSuccess(ctx, res)
  51. }
  52. // ExportWafLog 导出WAF日志为Excel文件
  53. func (h *WafLogHandler) ExportWafLog(ctx *gin.Context) {
  54. var req adminApi.ExportWafLog
  55. if err := ctx.ShouldBind(&req); err != nil {
  56. v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
  57. return
  58. }
  59. defaults.SetDefaults(&req)
  60. // 调用服务层的智能导出方法
  61. err := h.wafLogService.SmartExportWafLog(ctx, req, ctx.Writer)
  62. if err != nil {
  63. v1.HandleError(ctx, http.StatusInternalServerError, err, err.Error())
  64. return
  65. }
  66. }
  67. // GetApiDescriptions 获取API描述映射
  68. func (h *WafLogHandler) GetApiDescriptions(ctx *gin.Context) {
  69. res := h.wafLogService.GetApiDescriptions(ctx)
  70. v1.HandleSuccess(ctx, res)
  71. }