| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package controller
- import (
- "strconv"
- "time"
- "github.com/gin-gonic/gin"
- )
- const timeFormat = "2006-01-02T15:04:05Z07:00"
- // parseUintParam 将路径参数转换为 uint64。
- func parseUintParam(c *gin.Context, name string) (uint64, error) {
- value := c.Param(name)
- return strconv.ParseUint(value, 10, 64)
- }
- // parseUintQuery 将查询参数转换为 uint64。
- func parseUintQuery(c *gin.Context, name string) (uint64, error) {
- value := c.Query(name)
- if value == "" {
- return 0, strconv.ErrSyntax
- }
- return strconv.ParseUint(value, 10, 64)
- }
- // getUserIDFromHeader 从请求头 X-User-Id 读取当前用户 ID(用于知识库开关校验)
- // 若未设置则返回 0(调用方可按需放行或拒绝)
- func getUserIDFromHeader(c *gin.Context) uint {
- value := c.GetHeader("X-User-Id")
- if value == "" {
- return 0
- }
- id, err := strconv.ParseUint(value, 10, 64)
- if err != nil {
- return 0
- }
- return uint(id)
- }
- // formatTimeValue 按统一格式输出时间字符串。
- func formatTimeValue(t time.Time) string {
- return t.Format(timeFormat)
- }
- // formatTimePointer 在指针为空时返回空字符串。
- func formatTimePointer(t *time.Time) string {
- if t == nil {
- return ""
- }
- return t.Format(timeFormat)
- }
- // getTraceID 从请求上下文读取 trace_id(由中间件注入)。
- func getTraceID(c *gin.Context) string {
- if v, ok := c.Get("trace_id"); ok {
- if s, ok2 := v.(string); ok2 {
- return s
- }
- }
- return ""
- }
|