251 lines
7.3 KiB
Go
251 lines
7.3 KiB
Go
package system
|
|
|
|
import (
|
|
"time"
|
|
|
|
"kra/internal/biz/system"
|
|
"kra/pkg/response"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type ErrorApi struct{}
|
|
|
|
// SysErrorRequest 错误日志请求
|
|
type SysErrorRequest struct {
|
|
ID int64 `json:"id"`
|
|
Form string `json:"form" binding:"required"`
|
|
Info string `json:"info"`
|
|
Level string `json:"level"`
|
|
Solution string `json:"solution"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
// SysErrorSearchRequest 错误日志搜索请求
|
|
type SysErrorSearchRequest struct {
|
|
Page int `json:"page" form:"page"`
|
|
PageSize int `json:"pageSize" form:"pageSize"`
|
|
Form *string `json:"form" form:"form"`
|
|
Info *string `json:"info" form:"info"`
|
|
CreatedAtRange []time.Time `json:"createdAtRange" form:"createdAtRange[]"`
|
|
}
|
|
|
|
// CreateSysError
|
|
// @Tags SysError
|
|
// @Summary 创建错误日志
|
|
// @Security ApiKeyAuth
|
|
// @accept application/json
|
|
// @Produce application/json
|
|
// @Param data body SysErrorRequest true "错误日志模型"
|
|
// @Success 200 {object} response.Response{msg=string} "创建错误日志"
|
|
// @Router /sysError/createSysError [post]
|
|
func (e *ErrorApi) CreateSysError(c *gin.Context) {
|
|
var req SysErrorRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
response.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
sysError := &system.SysError{
|
|
Form: req.Form,
|
|
Info: req.Info,
|
|
Level: req.Level,
|
|
Status: "未处理",
|
|
}
|
|
|
|
if err := errorUsecase.CreateSysError(c.Request.Context(), sysError); err != nil {
|
|
response.FailWithMessage("创建失败:"+err.Error(), c)
|
|
return
|
|
}
|
|
response.OkWithMessage("创建成功", c)
|
|
}
|
|
|
|
// DeleteSysError
|
|
// @Tags SysError
|
|
// @Summary 删除错误日志
|
|
// @Security ApiKeyAuth
|
|
// @accept application/json
|
|
// @Produce application/json
|
|
// @Param ID query string true "错误日志ID"
|
|
// @Success 200 {object} response.Response{msg=string} "删除错误日志"
|
|
// @Router /sysError/deleteSysError [delete]
|
|
func (e *ErrorApi) DeleteSysError(c *gin.Context) {
|
|
id := c.Query("ID")
|
|
if id == "" {
|
|
response.FailWithMessage("缺少参数: ID", c)
|
|
return
|
|
}
|
|
|
|
if err := errorUsecase.DeleteSysError(c.Request.Context(), id); err != nil {
|
|
response.FailWithMessage("删除失败:"+err.Error(), c)
|
|
return
|
|
}
|
|
response.OkWithMessage("删除成功", c)
|
|
}
|
|
|
|
// DeleteSysErrorByIds
|
|
// @Tags SysError
|
|
// @Summary 批量删除错误日志
|
|
// @Security ApiKeyAuth
|
|
// @accept application/json
|
|
// @Produce application/json
|
|
// @Param IDs[] query []string true "错误日志ID列表"
|
|
// @Success 200 {object} response.Response{msg=string} "批量删除错误日志"
|
|
// @Router /sysError/deleteSysErrorByIds [delete]
|
|
func (e *ErrorApi) DeleteSysErrorByIds(c *gin.Context) {
|
|
ids := c.QueryArray("IDs[]")
|
|
if len(ids) == 0 {
|
|
response.FailWithMessage("缺少参数: IDs", c)
|
|
return
|
|
}
|
|
|
|
if err := errorUsecase.DeleteSysErrorByIds(c.Request.Context(), ids); err != nil {
|
|
response.FailWithMessage("批量删除失败:"+err.Error(), c)
|
|
return
|
|
}
|
|
response.OkWithMessage("批量删除成功", c)
|
|
}
|
|
|
|
// UpdateSysError
|
|
// @Tags SysError
|
|
// @Summary 更新错误日志
|
|
// @Security ApiKeyAuth
|
|
// @accept application/json
|
|
// @Produce application/json
|
|
// @Param data body SysErrorRequest true "错误日志模型"
|
|
// @Success 200 {object} response.Response{msg=string} "更新错误日志"
|
|
// @Router /sysError/updateSysError [put]
|
|
func (e *ErrorApi) UpdateSysError(c *gin.Context) {
|
|
var req SysErrorRequest
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
response.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
sysError := &system.SysError{
|
|
ID: req.ID,
|
|
Form: req.Form,
|
|
Info: req.Info,
|
|
Level: req.Level,
|
|
Solution: req.Solution,
|
|
Status: req.Status,
|
|
}
|
|
|
|
if err := errorUsecase.UpdateSysError(c.Request.Context(), sysError); err != nil {
|
|
response.FailWithMessage("更新失败:"+err.Error(), c)
|
|
return
|
|
}
|
|
response.OkWithMessage("更新成功", c)
|
|
}
|
|
|
|
// FindSysError
|
|
// @Tags SysError
|
|
// @Summary 根据ID获取错误日志
|
|
// @Security ApiKeyAuth
|
|
// @accept application/json
|
|
// @Produce application/json
|
|
// @Param ID query string true "错误日志ID"
|
|
// @Success 200 {object} response.Response{data=map[string]interface{},msg=string} "获取错误日志"
|
|
// @Router /sysError/findSysError [get]
|
|
func (e *ErrorApi) FindSysError(c *gin.Context) {
|
|
id := c.Query("ID")
|
|
if id == "" {
|
|
response.FailWithMessage("缺少参数: ID", c)
|
|
return
|
|
}
|
|
|
|
sysError, err := errorUsecase.GetSysError(c.Request.Context(), id)
|
|
if err != nil {
|
|
response.FailWithMessage("查询失败:"+err.Error(), c)
|
|
return
|
|
}
|
|
response.OkWithData(toErrorResponse(sysError), c)
|
|
}
|
|
|
|
// GetSysErrorList
|
|
// @Tags SysError
|
|
// @Summary 分页获取错误日志列表
|
|
// @Security ApiKeyAuth
|
|
// @accept application/json
|
|
// @Produce application/json
|
|
// @Param data query SysErrorSearchRequest true "页码, 每页大小, 搜索条件"
|
|
// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "分页获取错误日志列表,返回包括列表,总数,页码,每页数量"
|
|
// @Router /sysError/getSysErrorList [get]
|
|
func (e *ErrorApi) GetSysErrorList(c *gin.Context) {
|
|
var req SysErrorSearchRequest
|
|
if err := c.ShouldBindQuery(&req); err != nil {
|
|
response.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
if req.Page == 0 {
|
|
req.Page = 1
|
|
}
|
|
if req.PageSize == 0 {
|
|
req.PageSize = 10
|
|
}
|
|
|
|
searchReq := &system.ErrorSearchReq{
|
|
Page: req.Page,
|
|
PageSize: req.PageSize,
|
|
Form: req.Form,
|
|
Info: req.Info,
|
|
CreatedAtRange: req.CreatedAtRange,
|
|
}
|
|
|
|
list, total, err := errorUsecase.GetSysErrorInfoList(c.Request.Context(), searchReq)
|
|
if err != nil {
|
|
response.FailWithMessage("获取失败:"+err.Error(), c)
|
|
return
|
|
}
|
|
|
|
result := make([]map[string]interface{}, len(list))
|
|
for i, item := range list {
|
|
result[i] = toErrorResponse(item)
|
|
}
|
|
|
|
response.OkWithDetailed(response.PageResult{
|
|
List: result,
|
|
Total: total,
|
|
Page: req.Page,
|
|
PageSize: req.PageSize,
|
|
}, "获取成功", c)
|
|
}
|
|
|
|
// GetSysErrorSolution
|
|
// @Tags SysError
|
|
// @Summary 触发AI处理错误日志
|
|
// @Security ApiKeyAuth
|
|
// @accept application/json
|
|
// @Produce application/json
|
|
// @Param id query string true "错误日志ID"
|
|
// @Success 200 {object} response.Response{msg=string} "已提交至AI处理"
|
|
// @Router /sysError/getSysErrorSolution [get]
|
|
func (e *ErrorApi) GetSysErrorSolution(c *gin.Context) {
|
|
id := c.Query("id")
|
|
if id == "" {
|
|
response.FailWithMessage("缺少参数: id", c)
|
|
return
|
|
}
|
|
|
|
if err := errorUsecase.GetSysErrorSolution(c.Request.Context(), id); err != nil {
|
|
response.FailWithMessage("处理触发失败:"+err.Error(), c)
|
|
return
|
|
}
|
|
response.OkWithMessage("已提交至AI处理", c)
|
|
}
|
|
|
|
// toErrorResponse 转换错误日志响应
|
|
func toErrorResponse(e *system.SysError) map[string]interface{} {
|
|
return map[string]interface{}{
|
|
"id": e.ID,
|
|
"form": e.Form,
|
|
"info": e.Info,
|
|
"level": e.Level,
|
|
"solution": e.Solution,
|
|
"status": e.Status,
|
|
"createdAt": e.CreatedAt,
|
|
"updatedAt": e.UpdatedAt,
|
|
}
|
|
}
|