feat: add vo model

This commit is contained in:
engigu
2026-02-10 17:20:59 +08:00
parent cca069dd98
commit 2aab7e976c
15 changed files with 578 additions and 53 deletions
+4 -3
View File
@@ -10,6 +10,7 @@ import (
"github.com/engigu/baihu-panel/internal/constant"
"github.com/engigu/baihu-panel/internal/logger"
"github.com/engigu/baihu-panel/internal/models"
"github.com/engigu/baihu-panel/internal/models/vo"
"github.com/engigu/baihu-panel/internal/services"
"github.com/engigu/baihu-panel/internal/services/tasks"
"github.com/engigu/baihu-panel/internal/utils"
@@ -43,7 +44,7 @@ func NewAgentController(settingsService *services.SettingsService) *AgentControl
// List 获取 Agent 列表
func (c *AgentController) List(ctx *gin.Context) {
agents := c.agentService.List()
utils.Success(ctx, agents)
utils.Success(ctx, vo.ToAgentVOListFromModels(agents))
}
// Update 更新 Agent
@@ -644,7 +645,7 @@ func (c *AgentController) NotifyTaskUpdate(agentID uint) {
// ListTokens 获取令牌列表
func (c *AgentController) ListTokens(ctx *gin.Context) {
tokens := c.agentService.ListTokens()
utils.Success(ctx, tokens)
utils.Success(ctx, vo.ToAgentTokenVOListFromModels(tokens))
}
// CreateToken 创建令牌
@@ -676,7 +677,7 @@ func (c *AgentController) CreateToken(ctx *gin.Context) {
return
}
utils.Success(ctx, token)
utils.Success(ctx, vo.ToAgentTokenVO(token))
}
// DeleteToken 删除令牌
+2 -1
View File
@@ -7,6 +7,7 @@ import (
"github.com/engigu/baihu-panel/internal/constant"
"github.com/engigu/baihu-panel/internal/middleware"
"github.com/engigu/baihu-panel/internal/models/vo"
"github.com/engigu/baihu-panel/internal/services"
"github.com/engigu/baihu-panel/internal/utils"
@@ -135,5 +136,5 @@ func (ac *AuthController) Register(c *gin.Context) {
}
user := ac.userService.CreateUser(req.Username, req.Email, req.Password, "user")
utils.Success(c, user)
utils.Success(c, vo.ToUserVO(user))
}
@@ -5,6 +5,7 @@ import (
"strings"
"github.com/engigu/baihu-panel/internal/models"
"github.com/engigu/baihu-panel/internal/models/vo"
"github.com/engigu/baihu-panel/internal/services"
"github.com/engigu/baihu-panel/internal/utils"
@@ -29,7 +30,11 @@ func (c *DependencyController) List(ctx *gin.Context) {
utils.ServerError(ctx, "获取依赖列表失败")
return
}
utils.Success(ctx, deps)
vos := vo.ToDependencyVOListFromModels(deps)
for i := range vos {
vos[i].Log = "" // 列表不返回日志
}
utils.Success(ctx, vos)
}
// Create 添加依赖
@@ -63,7 +68,7 @@ func (c *DependencyController) Create(ctx *gin.Context) {
return
}
utils.Success(ctx, dep)
utils.Success(ctx, vo.ToDependencyVO(dep))
}
// Delete 删除依赖
+6 -5
View File
@@ -3,6 +3,7 @@ package controllers
import (
"strconv"
"github.com/engigu/baihu-panel/internal/models/vo"
"github.com/engigu/baihu-panel/internal/services"
"github.com/engigu/baihu-panel/internal/utils"
@@ -38,7 +39,7 @@ func (ec *EnvController) CreateEnvVar(c *gin.Context) {
}
envVar := ec.envService.CreateEnvVar(req.Name, req.Value, req.Remark, hidden, userID)
utils.Success(c, envVar)
utils.Success(c, vo.ToEnvVO(envVar))
}
func (ec *EnvController) GetEnvVars(c *gin.Context) {
@@ -46,13 +47,13 @@ func (ec *EnvController) GetEnvVars(c *gin.Context) {
p := utils.ParsePagination(c)
name := c.DefaultQuery("name", "")
envVars, total := ec.envService.GetEnvVarsWithPagination(userID, name, p.Page, p.PageSize)
utils.PaginatedResponse(c, envVars, total, p)
utils.PaginatedResponse(c, vo.ToEnvVOListFromModels(envVars), total, p)
}
func (ec *EnvController) GetAllEnvVars(c *gin.Context) {
userID := 1
envVars := ec.envService.GetEnvVarsByUserID(userID)
utils.Success(c, envVars)
utils.Success(c, vo.ToEnvVOListFromModels(envVars))
}
func (ec *EnvController) GetEnvVar(c *gin.Context) {
@@ -68,7 +69,7 @@ func (ec *EnvController) GetEnvVar(c *gin.Context) {
return
}
utils.Success(c, envVar)
utils.Success(c, vo.ToEnvVO(envVar))
}
func (ec *EnvController) UpdateEnvVar(c *gin.Context) {
@@ -107,7 +108,7 @@ func (ec *EnvController) UpdateEnvVar(c *gin.Context) {
return
}
utils.Success(c, envVar)
utils.Success(c, vo.ToEnvVO(envVar))
}
func (ec *EnvController) DeleteEnvVar(c *gin.Context) {
+18 -4
View File
@@ -3,6 +3,7 @@ package controllers
import (
"strconv"
"github.com/engigu/baihu-panel/internal/models/vo"
"github.com/engigu/baihu-panel/internal/services/tasks"
"github.com/engigu/baihu-panel/internal/utils"
@@ -24,8 +25,21 @@ func (ec *ExecutorController) ExecuteTask(c *gin.Context) {
return
}
result := ec.executorService.ExecuteTask(id)
utils.Success(c, result)
var req struct {
Envs map[string]string `json:"envs"`
}
// 尝试绑定 JSON 体,但不强制要求
_ = c.ShouldBindJSON(&req)
var extraEnvs []string
if req.Envs != nil {
for k, v := range req.Envs {
extraEnvs = append(extraEnvs, k+"="+v)
}
}
result := ec.executorService.ExecuteTask(id, extraEnvs)
utils.Success(c, vo.ToExecutionResultVO(result))
}
func (ec *ExecutorController) ExecuteCommand(c *gin.Context) {
@@ -39,7 +53,7 @@ func (ec *ExecutorController) ExecuteCommand(c *gin.Context) {
}
result := ec.executorService.ExecuteCommand(req.Command)
utils.Success(c, result)
utils.Success(c, vo.ToExecutionResultVO(result))
}
func (ec *ExecutorController) GetLastResults(c *gin.Context) {
@@ -51,5 +65,5 @@ func (ec *ExecutorController) GetLastResults(c *gin.Context) {
}
results := ec.executorService.GetLastResults(count)
utils.Success(c, results)
utils.Success(c, vo.ToExecutionResultVOList(results))
}
+6 -27
View File
@@ -5,6 +5,7 @@ import (
"github.com/engigu/baihu-panel/internal/database"
"github.com/engigu/baihu-panel/internal/models"
"github.com/engigu/baihu-panel/internal/models/vo"
"github.com/engigu/baihu-panel/internal/utils"
"github.com/gin-gonic/gin"
@@ -16,19 +17,6 @@ func NewLogController() *LogController {
return &LogController{}
}
type TaskLogResponse struct {
ID uint `json:"id"`
TaskID uint `json:"task_id"`
TaskName string `json:"task_name"`
TaskType string `json:"task_type"`
Command string `json:"command"`
Status string `json:"status"`
Duration int64 `json:"duration"`
StartTime *models.LocalTime `json:"start_time"`
EndTime *models.LocalTime `json:"end_time"`
CreatedAt models.LocalTime `json:"created_at"`
}
func (lc *LogController) GetLogs(c *gin.Context) {
p := utils.ParsePagination(c)
taskID, _ := strconv.Atoi(c.DefaultQuery("task_id", "0"))
@@ -49,7 +37,7 @@ func (lc *LogController) GetLogs(c *gin.Context) {
if len(taskIDs) > 0 {
query = query.Where("task_id IN ?", taskIDs)
} else {
utils.PaginatedResponse(c, []TaskLogResponse{}, 0, p)
utils.PaginatedResponse(c, []vo.TaskLogVO{}, 0, p)
return
}
}
@@ -69,18 +57,19 @@ func (lc *LogController) GetLogs(c *gin.Context) {
taskMap[t.ID] = t
}
result := make([]TaskLogResponse, len(logs))
result := make([]vo.TaskLogVO, len(logs))
for i, log := range logs {
task := taskMap[log.TaskID]
taskType := task.Type
if taskType == "" {
taskType = "task"
}
result[i] = TaskLogResponse{
result[i] = vo.TaskLogVO{
ID: log.ID,
TaskID: log.TaskID,
TaskName: task.Name,
TaskType: taskType,
AgentID: log.AgentID,
Command: log.Command,
Status: log.Status,
Duration: log.Duration,
@@ -106,15 +95,5 @@ func (lc *LogController) GetLogDetail(c *gin.Context) {
return
}
utils.Success(c, gin.H{
"id": log.ID,
"task_id": log.TaskID,
"command": log.Command,
"output": log.Output,
"status": log.Status,
"duration": log.Duration,
"start_time": log.StartTime,
"end_time": log.EndTime,
"created_at": log.CreatedAt,
})
utils.Success(c, vo.ToTaskLogVO(&log))
}
+9 -4
View File
@@ -3,6 +3,7 @@ package controllers
import (
"strconv"
"github.com/engigu/baihu-panel/internal/models/vo"
"github.com/engigu/baihu-panel/internal/services"
"github.com/engigu/baihu-panel/internal/utils"
@@ -31,13 +32,17 @@ func (sc *ScriptController) CreateScript(c *gin.Context) {
}
script := sc.scriptService.CreateScript(req.Name, req.Content, userID)
utils.Success(c, script)
utils.Success(c, vo.ToScriptVO(script))
}
func (sc *ScriptController) GetScripts(c *gin.Context) {
userID := 1
scripts := sc.scriptService.GetScriptsByUserID(userID)
utils.Success(c, scripts)
vos := vo.ToScriptVOListFromModels(scripts)
for i := range vos {
vos[i].Content = "" // 列表不返回内容
}
utils.Success(c, vos)
}
func (sc *ScriptController) GetScript(c *gin.Context) {
@@ -53,7 +58,7 @@ func (sc *ScriptController) GetScript(c *gin.Context) {
return
}
utils.Success(c, script)
utils.Success(c, vo.ToScriptVO(script))
}
func (sc *ScriptController) UpdateScript(c *gin.Context) {
@@ -79,7 +84,7 @@ func (sc *ScriptController) UpdateScript(c *gin.Context) {
return
}
utils.Success(c, script)
utils.Success(c, vo.ToScriptVO(script))
}
func (sc *ScriptController) DeleteScript(c *gin.Context) {
+2 -1
View File
@@ -12,6 +12,7 @@ import (
"github.com/engigu/baihu-panel/internal/constant"
"github.com/engigu/baihu-panel/internal/database"
"github.com/engigu/baihu-panel/internal/models"
"github.com/engigu/baihu-panel/internal/models/vo"
"github.com/engigu/baihu-panel/internal/services"
"github.com/engigu/baihu-panel/internal/services/tasks"
"github.com/engigu/baihu-panel/internal/utils"
@@ -256,7 +257,7 @@ func (sc *SettingsController) GetLoginLogs(c *gin.Context) {
}
utils.Success(c, gin.H{
"data": logs,
"data": vo.ToLoginLogVOListFromModels(logs),
"total": total,
"page": page,
"page_size": pageSize,
+5 -4
View File
@@ -5,6 +5,7 @@ import (
"strconv"
"github.com/engigu/baihu-panel/internal/constant"
"github.com/engigu/baihu-panel/internal/models/vo"
"github.com/engigu/baihu-panel/internal/services"
"github.com/engigu/baihu-panel/internal/services/tasks"
"github.com/engigu/baihu-panel/internal/utils"
@@ -94,7 +95,7 @@ func (tc *TaskController) CreateTask(c *gin.Context) {
tc.executorService.AddCronTask(task)
}
utils.Success(c, task)
utils.Success(c, vo.ToTaskVO(task))
}
func (tc *TaskController) GetTasks(c *gin.Context) {
@@ -111,7 +112,7 @@ func (tc *TaskController) GetTasks(c *gin.Context) {
}
tasks, total := tc.taskService.GetTasksWithPagination(p.Page, p.PageSize, name, agentID)
utils.PaginatedResponse(c, tasks, total, p)
utils.PaginatedResponse(c, vo.ToTaskVOListFromModels(tasks), total, p)
}
func (tc *TaskController) GetTask(c *gin.Context) {
@@ -127,7 +128,7 @@ func (tc *TaskController) GetTask(c *gin.Context) {
return
}
utils.Success(c, task)
utils.Success(c, vo.ToTaskVO(task))
}
func (tc *TaskController) UpdateTask(c *gin.Context) {
@@ -204,7 +205,7 @@ func (tc *TaskController) UpdateTask(c *gin.Context) {
}
}
utils.Success(c, task)
utils.Success(c, vo.ToTaskVO(task))
}
func (tc *TaskController) DeleteTask(c *gin.Context) {