mirror of
https://github.com/lzh-1625/go_process_manager.git
synced 2025-10-05 16:06:51 +08:00
bug fix
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
@@ -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)
|
||||
}
|
||||
|
@@ -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 {
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
}
|
||||
|
@@ -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)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user