首次提交:初始化项目代码

This commit is contained in:
sunct
2026-07-31 14:44:48 +08:00
commit a4fe393571
119 changed files with 29105 additions and 0 deletions
+154
View File
@@ -0,0 +1,154 @@
// Package handler 处理所有 HTTP 请求,负责参数校验、调用 Service 层和返回响应
// 按业务模块分为简历管理、后台管理、AI 能力、文档处理、聊天对话等处理器
package handler
import (
"encoding/json"
"net/http"
"github.com/gin-gonic/gin"
)
// APIResponse 统一 API 响应结构体,所有接口返回格式遵循此结构
type APIResponse struct {
Success bool `json:"success"` // 请求是否成功
Message string `json:"message,omitempty"`// 提示消息
Data interface{} `json:"data,omitempty"` // 响应数据
Error string `json:"error,omitempty"` // 错误信息
}
// OK 返回 200 成功响应,附带数据和可选消息
// @param c Gin 上下文
// @param data 响应数据
// @param message 可选提示消息
// @author sunct
func OK(c *gin.Context, data interface{}, message ...string) {
msg := ""
if len(message) > 0 {
msg = message[0]
}
c.JSON(http.StatusOK, APIResponse{
Success: true,
Data: data,
Message: msg,
})
}
// Created 返回 201 创建成功响应
// @param c Gin 上下文
// @param data 创建的资源数据
// @param message 可选提示消息
// @author sunct
func Created(c *gin.Context, data interface{}, message ...string) {
msg := ""
if len(message) > 0 {
msg = message[0]
}
c.JSON(http.StatusCreated, APIResponse{
Success: true,
Data: data,
Message: msg,
})
}
// Success 返回 200 成功响应,仅包含提示消息
// @param c Gin 上下文
// @param message 成功提示消息
// @author sunct
func Success(c *gin.Context, message string) {
c.JSON(http.StatusOK, APIResponse{
Success: true,
Message: message,
})
}
// BadRequest 返回 400 参数错误响应
// @param c Gin 上下文
// @param message 错误提示消息
// @author sunct
func BadRequest(c *gin.Context, message string) {
c.JSON(http.StatusBadRequest, APIResponse{
Success: false,
Message: message,
})
}
// NotFound 返回 404 资源不存在响应
// @param c Gin 上下文
// @param message 错误提示消息
// @author sunct
func NotFound(c *gin.Context, message string) {
c.JSON(http.StatusNotFound, APIResponse{
Success: false,
Message: message,
})
}
// Conflict 返回 409 资源冲突响应(如重复创建)
// @param c Gin 上下文
// @param message 错误提示消息
// @author sunct
func Conflict(c *gin.Context, message string) {
c.JSON(http.StatusConflict, APIResponse{
Success: false,
Message: message,
})
}
// Unauthorized 返回 401 未授权响应
// @param c Gin 上下文
// @param message 错误提示消息
// @author sunct
func Unauthorized(c *gin.Context, message string) {
c.JSON(http.StatusUnauthorized, APIResponse{
Success: false,
Message: message,
})
}
// TooManyRequests 返回 429 请求过于频繁响应(限流)
// @param c Gin 上下文
// @param message 错误提示消息
// @author sunct
func TooManyRequests(c *gin.Context, message string) {
c.JSON(http.StatusTooManyRequests, APIResponse{
Success: false,
Message: message,
})
}
// Error 返回 500 服务器内部错误响应
// @param c Gin 上下文
// @param message 错误提示消息
// @author sunct
func Error(c *gin.Context, message string) {
c.JSON(http.StatusInternalServerError, APIResponse{
Success: false,
Message: message,
})
}
// SuccessResponse 返回成功响应(支持标准库 http.ResponseWriter
// @param w http.ResponseWriter
// @param data 响应数据
func SuccessResponse(w http.ResponseWriter, data interface{}) {
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(APIResponse{
Success: true,
Data: data,
})
}
// ErrorResponse 返回错误响应(支持标准库 http.ResponseWriter
// @param w http.ResponseWriter
// @param statusCode HTTP 状态码
// @param message 错误消息
func ErrorResponse(w http.ResponseWriter, statusCode int, message string) {
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.WriteHeader(statusCode)
json.NewEncoder(w).Encode(APIResponse{
Success: false,
Message: message,
})
}