This commit is contained in:
akrike
2025-03-20 01:13:57 +08:00
parent d488e89e57
commit 8eb8888a5a
10 changed files with 54 additions and 53 deletions

View File

@@ -67,3 +67,9 @@ func getQueryString(ctx *gin.Context, query string) (s string) {
errCheck(ctx, s == "", "Invalid parameters!")
return
}
func bind[T any](ctx *gin.Context) T {
var data T
errCheck(ctx, ctx.ShouldBind(&data) != nil, "Invalid parameters!")
return data
}

View File

@@ -15,7 +15,8 @@ func (c *configApi) GetSystemConfiguration(ctx *gin.Context) {
rOk(ctx, "Operation successful!", result)
}
func (c *configApi) SetSystemConfiguration(ctx *gin.Context, req map[string]string) {
func (c *configApi) SetSystemConfiguration(ctx *gin.Context) {
req := bind[map[string]string](ctx)
errCheck(ctx, logic.ConfigLogic.SetSystemConfiguration(req) != nil, "Set config fail!")
rOk(ctx, "Operation successful!", nil)
}

View File

@@ -15,7 +15,8 @@ type logApi struct{}
var LogApi = new(logApi)
func (a *logApi) GetLog(ctx *gin.Context, req model.GetLogReq) {
func (a *logApi) GetLog(ctx *gin.Context) {
req := bind[model.GetLogReq](ctx)
if isAdmin(ctx) {
rOk(ctx, "Query successful!", logic.LogLogicImpl.Search(req, req.FilterName...))
} else {

View File

@@ -11,7 +11,8 @@ var PermissionApi = new(permissionApi)
type permissionApi struct{}
func (p *permissionApi) EditPermssion(ctx *gin.Context, req model.Permission) {
func (p *permissionApi) EditPermssion(ctx *gin.Context) {
req := bind[model.Permission](ctx)
err := repository.PermissionRepository.EditPermssion(req)
errCheck(ctx, err != nil, err)
rOk(ctx, "Operation successful!", nil)

View File

@@ -12,7 +12,8 @@ type procApi struct{}
var ProcApi = new(procApi)
func (p *procApi) CreateNewProcess(ctx *gin.Context, req model.Process) {
func (p *procApi) CreateNewProcess(ctx *gin.Context) {
req := bind[model.Process](ctx)
index, err := repository.ProcessRepository.AddProcessConfig(req)
errCheck(ctx, err != nil, err)
req.Uuid = index
@@ -83,7 +84,8 @@ func (p *procApi) GetProcessList(ctx *gin.Context) {
}
}
func (p *procApi) UpdateProcessConfig(ctx *gin.Context, req model.Process) {
func (p *procApi) UpdateProcessConfig(ctx *gin.Context) {
req := bind[model.Process](ctx)
logic.ProcessCtlLogic.UpdateProcessConfig(req)
err := repository.ProcessRepository.UpdateProcessConfig(req)
errCheck(ctx, err != nil, err)

View File

@@ -20,13 +20,15 @@ func (p *pushApi) GetPushById(ctx *gin.Context) {
rOk(ctx, "Query successful!", repository.PushRepository.GetPushConfigById(id))
}
func (p *pushApi) AddPushConfig(ctx *gin.Context, req model.Push) {
func (p *pushApi) AddPushConfig(ctx *gin.Context) {
req := bind[model.Push](ctx)
err := repository.PushRepository.AddPushConfig(req)
errCheck(ctx, err != nil, err)
rOk(ctx, "Operation successful!", nil)
}
func (p *pushApi) UpdatePushConfig(ctx *gin.Context, req model.Push) {
func (p *pushApi) UpdatePushConfig(ctx *gin.Context) {
req := bind[model.Push](ctx)
err := repository.PushRepository.UpdatePushConfig(req)
errCheck(ctx, err != nil, err)
rOk(ctx, "Operation successful!", nil)

View File

@@ -12,7 +12,8 @@ type taskApi struct{}
var TaskApi = new(taskApi)
func (t *taskApi) CreateTask(ctx *gin.Context, req model.Task) {
func (t *taskApi) CreateTask(ctx *gin.Context) {
req := bind[model.Task](ctx)
err := logic.TaskLogic.CreateTask(req)
errCheck(ctx, err != nil, err)
rOk(ctx, "Operation successful!", nil)
@@ -45,13 +46,15 @@ func (t *taskApi) StopTask(ctx *gin.Context) {
rOk(ctx, "Operation successful!", nil)
}
func (t *taskApi) EditTask(ctx *gin.Context, req model.Task) {
func (t *taskApi) EditTask(ctx *gin.Context) {
req := bind[model.Task](ctx)
err := logic.TaskLogic.EditTask(req)
errCheck(ctx, err != nil, err)
rOk(ctx, "Operation successful!", nil)
}
func (t *taskApi) EditTaskEnable(ctx *gin.Context, req model.Task) {
func (t *taskApi) EditTaskEnable(ctx *gin.Context) {
req := bind[model.Task](ctx)
err := logic.TaskLogic.EditTaskEnable(req.Id, req.Enable)
errCheck(ctx, err != nil, err)
rOk(ctx, "Operation successful!", nil)

View File

@@ -16,7 +16,8 @@ var UserApi = new(userApi)
const DEFAULT_ROOT_PASSWORD = "root"
func (u *userApi) LoginHandler(ctx *gin.Context, req map[string]string) {
func (u *userApi) LoginHandler(ctx *gin.Context) {
req := bind[map[string]string](ctx)
account := req["account"]
password := req["password"]
errCheck(ctx, !u.checkLoginInfo(account, password), "Incorrect username or password!")
@@ -29,7 +30,8 @@ func (u *userApi) LoginHandler(ctx *gin.Context, req map[string]string) {
})
}
func (u *userApi) CreateUser(ctx *gin.Context, req model.User) {
func (u *userApi) CreateUser(ctx *gin.Context) {
req := bind[model.User](ctx)
errCheck(ctx, req.Role == constants.ROLE_ROOT, "Creation of root accounts is forbidden!")
errCheck(ctx, req.Account == constants.CONSOLE, "Operation failed!")
errCheck(ctx, len(req.Password) < config.CF.UserPassWordMinLength, "Password is too short")
@@ -38,7 +40,8 @@ func (u *userApi) CreateUser(ctx *gin.Context, req model.User) {
rOk(ctx, "Operation successful!", nil)
}
func (u *userApi) ChangePassword(ctx *gin.Context, req model.User) {
func (u *userApi) ChangePassword(ctx *gin.Context) {
req := bind[model.User](ctx)
reqUser := getUserName(ctx)
errCheck(ctx, getRole(ctx) != constants.ROLE_ROOT && req.Account != "", "Invalid parameters!")
var userName string

View File

@@ -148,7 +148,6 @@ func (t *taskLogic) EditTask(data model.Task) error {
return errors.New("can't edit task while it is running")
}
// 如果 Cron 已经存在,停止并清理
if tj.Cron != nil {
tj.Cron.Stop()
tj.Cron = nil
@@ -182,7 +181,6 @@ func (t *taskLogic) EditTask(data model.Task) error {
if data.Enable {
c.Start()
}
tj.Cron = c
// 更新任务到数据库
@@ -203,7 +201,7 @@ func (t *taskLogic) EditTaskEnable(id int, status bool) error {
} else if status {
return errors.New("cron job create failed")
}
tj.Task.Enable = status
if err := repository.TaskRepository.EditTaskEnable(id, status); err != nil {
return err
}

View File

@@ -70,33 +70,33 @@ func routePathInit(r *gin.Engine) {
proConfigGroup := processGroup.Group("/config")
{
proConfigGroup.POST("", middle.RolePermission(constants.ROLE_ROOT), middle.ProcessWaitCond.WaitTriggerMiddel, bind(api.ProcApi.CreateNewProcess))
proConfigGroup.POST("", middle.RolePermission(constants.ROLE_ROOT), middle.ProcessWaitCond.WaitTriggerMiddel, api.ProcApi.CreateNewProcess)
proConfigGroup.DELETE("", middle.RolePermission(constants.ROLE_ROOT), middle.ProcessWaitCond.WaitTriggerMiddel, api.ProcApi.DeleteNewProcess)
proConfigGroup.PUT("", middle.RolePermission(constants.ROLE_ROOT), bind(api.ProcApi.UpdateProcessConfig))
proConfigGroup.PUT("", middle.RolePermission(constants.ROLE_ROOT), api.ProcApi.UpdateProcessConfig)
proConfigGroup.GET("", middle.RolePermission(constants.ROLE_ADMIN), api.ProcApi.GetProcessConfig)
}
}
taskGroup := apiGroup.Group("/task").Use(middle.RolePermission(constants.ROLE_ADMIN))
taskGroup := apiGroup.Group("/task")
{
taskGroup.GET("", api.TaskApi.GetTaskById)
taskGroup.GET("/all", api.TaskApi.GetTaskList)
taskGroup.GET("/all/wait", middle.TaskWaitCond.WaitGetMiddel, api.TaskApi.GetTaskList)
taskGroup.POST("", middle.TaskWaitCond.WaitTriggerMiddel, bind(api.TaskApi.CreateTask))
taskGroup.DELETE("", middle.TaskWaitCond.WaitTriggerMiddel, api.TaskApi.DeleteTaskById)
taskGroup.PUT("", middle.TaskWaitCond.WaitTriggerMiddel, bind(api.TaskApi.EditTask))
taskGroup.PUT("/enable", middle.TaskWaitCond.WaitTriggerMiddel, bind(api.TaskApi.EditTaskEnable))
taskGroup.GET("/start", api.TaskApi.StartTask)
taskGroup.GET("/stop", api.TaskApi.StopTask)
taskGroup.POST("/key", api.TaskApi.CreateTaskApiKey)
taskGroup.GET("", middle.RolePermission(constants.ROLE_ADMIN), api.TaskApi.GetTaskById)
taskGroup.GET("/all", middle.RolePermission(constants.ROLE_ADMIN), api.TaskApi.GetTaskList)
taskGroup.GET("/all/wait", middle.RolePermission(constants.ROLE_ADMIN), middle.TaskWaitCond.WaitGetMiddel, api.TaskApi.GetTaskList)
taskGroup.POST("", middle.RolePermission(constants.ROLE_ADMIN), middle.TaskWaitCond.WaitTriggerMiddel, api.TaskApi.CreateTask)
taskGroup.DELETE("", middle.RolePermission(constants.ROLE_ADMIN), middle.TaskWaitCond.WaitTriggerMiddel, api.TaskApi.DeleteTaskById)
taskGroup.PUT("", middle.RolePermission(constants.ROLE_ADMIN), middle.TaskWaitCond.WaitTriggerMiddel, api.TaskApi.EditTask)
taskGroup.PUT("/enable", middle.RolePermission(constants.ROLE_ADMIN), middle.TaskWaitCond.WaitTriggerMiddel, api.TaskApi.EditTaskEnable)
taskGroup.GET("/start", middle.RolePermission(constants.ROLE_ADMIN), api.TaskApi.StartTask)
taskGroup.GET("/stop", middle.RolePermission(constants.ROLE_ADMIN), api.TaskApi.StopTask)
taskGroup.POST("/key", middle.RolePermission(constants.ROLE_ADMIN), api.TaskApi.CreateTaskApiKey)
taskGroup.GET("/api-key/:key", api.TaskApi.RunTaskByKey)
}
userGroup := apiGroup.Group("/user")
{
userGroup.POST("/login", bind(api.UserApi.LoginHandler))
userGroup.POST("", middle.RolePermission(constants.ROLE_ROOT), bind((api.UserApi.CreateUser)))
userGroup.PUT("/password", middle.RolePermission(constants.ROLE_USER), bind(api.UserApi.ChangePassword))
userGroup.POST("/login", api.UserApi.LoginHandler)
userGroup.POST("", middle.RolePermission(constants.ROLE_ROOT), api.UserApi.CreateUser)
userGroup.PUT("/password", middle.RolePermission(constants.ROLE_USER), api.UserApi.ChangePassword)
userGroup.DELETE("", middle.RolePermission(constants.ROLE_ROOT), api.UserApi.DeleteUser)
userGroup.GET("", middle.RolePermission(constants.ROLE_ROOT), api.UserApi.GetUserList)
}
@@ -105,8 +105,8 @@ func routePathInit(r *gin.Engine) {
{
pushGroup.GET("/list", api.PushApi.GetPushList)
pushGroup.GET("", api.PushApi.GetPushById)
pushGroup.POST("", bind(api.PushApi.AddPushConfig))
pushGroup.PUT("", bind(api.PushApi.UpdatePushConfig))
pushGroup.POST("", api.PushApi.AddPushConfig)
pushGroup.PUT("", api.PushApi.UpdatePushConfig)
pushGroup.DELETE("", api.PushApi.DeletePushConfig)
}
@@ -120,36 +120,20 @@ func routePathInit(r *gin.Engine) {
permissionGroup := apiGroup.Group("/permission").Use(middle.RolePermission(constants.ROLE_ROOT))
{
permissionGroup.GET("/list", api.PermissionApi.GetPermissionList)
permissionGroup.PUT("", middle.ProcessWaitCond.WaitTriggerMiddel, bind(api.PermissionApi.EditPermssion))
permissionGroup.PUT("", middle.ProcessWaitCond.WaitTriggerMiddel, api.PermissionApi.EditPermssion)
}
logGroup := apiGroup.Group("/log").Use(middle.RolePermission(constants.ROLE_USER))
{
logGroup.POST("", bind(api.LogApi.GetLog))
logGroup.POST("", api.LogApi.GetLog)
logGroup.GET("/running", api.LogApi.GetRunningLog)
}
configGroup := apiGroup.Group("/config").Use(middle.RolePermission(constants.ROLE_ROOT))
{
configGroup.GET("", api.ConfigApi.GetSystemConfiguration)
configGroup.PUT("", bind(api.ConfigApi.SetSystemConfiguration))
configGroup.PUT("", api.ConfigApi.SetSystemConfiguration)
configGroup.PUT("/es", api.ConfigApi.EsConfigReload)
}
}
}
func bind[T any](f func(ctx *gin.Context, req T)) func(ctx *gin.Context) {
return func(ctx *gin.Context) {
var data T
err := ctx.ShouldBindJSON(&data)
if err != nil {
ctx.JSON(500, gin.H{
"code": -1,
"msg": "Invalid parameters!",
})
ctx.Abort()
return
}
f(ctx, data)
}
}