init
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"github.com/goravel/framework/contracts/http"
|
||||
|
||||
"goravel/app/http/helpers"
|
||||
)
|
||||
|
||||
// TimezoneQuery 时区查询参数转换中间件
|
||||
// 自动将查询参数中的时间字段从本地时区转换为 UTC 时间用于数据库查询
|
||||
func TimezoneQuery() http.Middleware {
|
||||
return func(ctx http.Context) {
|
||||
// 定义需要转换的时间查询参数名称
|
||||
timeParams := []string{
|
||||
"start_time",
|
||||
"end_time",
|
||||
"created_at_start",
|
||||
"created_at_end",
|
||||
"updated_at_start",
|
||||
"updated_at_end",
|
||||
"deleted_at_start",
|
||||
"deleted_at_end",
|
||||
}
|
||||
|
||||
// 转换每个时间参数
|
||||
for _, paramName := range timeParams {
|
||||
timeStr := ctx.Request().Query(paramName, "")
|
||||
if timeStr != "" {
|
||||
// 转换为 UTC 时间并存储在 context 中
|
||||
utcTime := helpers.ConvertTimeToUTC(ctx, timeStr)
|
||||
// 将转换后的时间存储在 context 中,供控制器使用
|
||||
ctx.WithValue("timezone_query_"+paramName, utcTime)
|
||||
}
|
||||
}
|
||||
|
||||
// 继续处理请求
|
||||
ctx.Request().Next()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user