Files
hjsq_server/web/middleware/limitHandler/limit.go
T
2026-10-08 16:50:13 +08:00

30 lines
700 B
Go

package limitHandler
import (
"91jd-server/common"
"91jd-server/common/stderr"
"91jd-server/web/webg"
"fmt"
"github.com/gin-gonic/gin"
"time"
)
// FilterRequestByExport 限制用户短时间内的导出请求次数,limit决定限制时间
func FilterRequestByExport() gin.HandlerFunc {
return func(ctx *gin.Context) {
manager, err := common.GetAdminAct(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
ctx.Abort()
return
}
key := fmt.Sprintf("export_excel:%v", manager)
if webg.Redis.IsExist(key) {
common.ServeJSON(ctx, stderr.VisitLimit, err)
ctx.Abort()
return
}
go func() { _ = webg.Redis.Set(key, "-", time.Second*3) }()
}
}