From d04c5b4df883c99bf67dc6b54363260074f2edd2 Mon Sep 17 00:00:00 2001 From: liuzhihang1 <1625167628@qq.com> Date: Mon, 10 Feb 2025 17:23:02 +0800 Subject: [PATCH] rename service --- boot/boot.go | 16 ++++---- internal/app/api/config.go | 8 ++-- internal/app/api/file.go | 8 ++-- internal/app/api/log.go | 8 ++-- internal/app/api/proc.go | 34 ++++++++--------- internal/app/api/task.go | 20 +++++----- internal/app/api/ws.go | 6 +-- internal/app/{service => logic}/config.go | 12 +++--- internal/app/{service => logic}/es.go | 20 +++++----- internal/app/{service => logic}/file.go | 16 ++++---- .../app/{service => logic}/log_handler.go | 4 +- .../log_service.go => logic/log_logic.go} | 14 +++---- internal/app/{service => logic}/process.go | 6 +-- .../process_logic.go} | 38 +++++++++---------- .../{service => logic}/process_pty_linux.go | 2 +- .../{service => logic}/process_pty_windows.go | 2 +- .../app/{service => logic}/process_std.go | 2 +- internal/app/{service => logic}/push.go | 10 ++--- internal/app/{service => logic}/task.go | 10 ++--- .../task_service.go => logic/task_logic.go} | 30 +++++++-------- internal/app/termui/tui.go | 12 +++--- internal/app/test/cgroup_test.go | 4 +- 22 files changed, 141 insertions(+), 141 deletions(-) rename internal/app/{service => logic}/config.go (91%) rename internal/app/{service => logic}/es.go (88%) rename internal/app/{service => logic}/file.go (74%) rename internal/app/{service => logic}/log_handler.go (90%) rename internal/app/{service/log_service.go => logic/log_logic.go} (83%) rename internal/app/{service => logic}/process.go (98%) rename internal/app/{service/process_service.go => logic/process_logic.go} (81%) rename internal/app/{service => logic}/process_pty_linux.go (99%) rename internal/app/{service => logic}/process_pty_windows.go (99%) rename internal/app/{service => logic}/process_std.go (99%) rename internal/app/{service => logic}/push.go (71%) rename internal/app/{service => logic}/task.go (93%) rename internal/app/{service/task_service.go => logic/task_logic.go} (83%) diff --git a/boot/boot.go b/boot/boot.go index 17df582..22be640 100644 --- a/boot/boot.go +++ b/boot/boot.go @@ -10,9 +10,9 @@ import ( "github.com/lzh-1625/go_process_manager/config" "github.com/lzh-1625/go_process_manager/internal/app/constants" + "github.com/lzh-1625/go_process_manager/internal/app/logic" "github.com/lzh-1625/go_process_manager/internal/app/middle" "github.com/lzh-1625/go_process_manager/internal/app/repository" - "github.com/lzh-1625/go_process_manager/internal/app/service" "github.com/lzh-1625/go_process_manager/internal/app/termui" logger "github.com/lzh-1625/go_process_manager/log" "github.com/lzh-1625/go_process_manager/utils" @@ -83,11 +83,11 @@ func initLog() { } func initEs() { - service.EsService.InitEs() + logic.EsLogic.InitEs() } func initProcess() { - service.ProcessCtlService.ProcessInit() + logic.ProcessCtlLogic.ProcessInit() } func initJwtSecret() { @@ -101,7 +101,7 @@ func initJwtSecret() { } func initLogHanler() { - service.InitLog() + logic.InitLog() } func initTui() { @@ -109,12 +109,12 @@ func initTui() { } func InitTask() { - service.TaskService.InitTaskJob() + logic.TaskLogic.InitTaskJob() } func initResetConfig() { if len(os.Args) >= 2 && os.Args[1] == "reset" { - err := service.ConfigService.ResetSystemConfiguration() + err := logic.ConfigLogic.ResetSystemConfiguration() if err != nil { log.Panic(err) } @@ -128,7 +128,7 @@ func initListenKillSignal() { sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) <-sigs - service.ProcessCtlService.KillAllProcess() + logic.ProcessCtlLogic.KillAllProcess() log.Print("已停止所有进程") os.Exit(0) }() @@ -139,5 +139,5 @@ func initCondTiming() { } func initLogHandle() { - service.InitLogHandle() + logic.InitLogHandle() } diff --git a/internal/app/api/config.go b/internal/app/api/config.go index 9254a46..dac218c 100644 --- a/internal/app/api/config.go +++ b/internal/app/api/config.go @@ -1,7 +1,7 @@ package api import ( - "github.com/lzh-1625/go_process_manager/internal/app/service" + "github.com/lzh-1625/go_process_manager/internal/app/logic" "github.com/gin-gonic/gin" ) @@ -11,16 +11,16 @@ type configApi struct{} var ConfigApi = new(configApi) func (c *configApi) GetSystemConfiguration(ctx *gin.Context) { - result := service.ConfigService.GetSystemConfiguration() + result := logic.ConfigLogic.GetSystemConfiguration() rOk(ctx, "Operation successful!", result) } func (c *configApi) SetSystemConfiguration(ctx *gin.Context, req map[string]string) { - errCheck(ctx, service.ConfigService.SetSystemConfiguration(req) != nil, "Set config fail!") + errCheck(ctx, logic.ConfigLogic.SetSystemConfiguration(req) != nil, "Set config fail!") rOk(ctx, "Operation successful!", nil) } func (c *configApi) EsConfigReload(ctx *gin.Context) { - errCheck(ctx, !service.EsService.InitEs(), "Incorrect username or password!") + errCheck(ctx, !logic.EsLogic.InitEs(), "Incorrect username or password!") rOk(ctx, "Operation successful!", nil) } diff --git a/internal/app/api/file.go b/internal/app/api/file.go index b154f84..0c3d365 100644 --- a/internal/app/api/file.go +++ b/internal/app/api/file.go @@ -1,7 +1,7 @@ package api import ( - "github.com/lzh-1625/go_process_manager/internal/app/service" + "github.com/lzh-1625/go_process_manager/internal/app/logic" "github.com/gin-gonic/gin" ) @@ -12,7 +12,7 @@ var FileApi = new(file) func (f *file) FilePathHandler(ctx *gin.Context) { path := getQueryString(ctx, "path") - rOk(ctx, "Operation successful!", service.FileService.GetFileAndDirByPath(path)) + rOk(ctx, "Operation successful!", logic.FileLogic.GetFileAndDirByPath(path)) } func (f *file) FileWriteHandler(ctx *gin.Context) { @@ -20,14 +20,14 @@ func (f *file) FileWriteHandler(ctx *gin.Context) { fi, err := ctx.FormFile("data") errCheck(ctx, err != nil, "Read file data failed!") fiReader, _ := fi.Open() - err = service.FileService.UpdateFileData(path, fiReader, fi.Size) + err = logic.FileLogic.UpdateFileData(path, fiReader, fi.Size) errCheck(ctx, err != nil, "Update file data operation failed!") rOk(ctx, "Operation successful!", nil) } func (f *file) FileReadHandler(ctx *gin.Context) { path := getQueryString(ctx, "filePath") - bytes, err := service.FileService.ReadFileFromPath(path) + bytes, err := logic.FileLogic.ReadFileFromPath(path) errCheck(ctx, err != nil, "Operation failed!") rOk(ctx, "Operation successful!", string(bytes)) } diff --git a/internal/app/api/log.go b/internal/app/api/log.go index 056b223..7dc34b2 100644 --- a/internal/app/api/log.go +++ b/internal/app/api/log.go @@ -4,9 +4,9 @@ import ( "slices" "github.com/lzh-1625/go_process_manager/internal/app/constants" + "github.com/lzh-1625/go_process_manager/internal/app/logic" "github.com/lzh-1625/go_process_manager/internal/app/model" "github.com/lzh-1625/go_process_manager/internal/app/repository" - "github.com/lzh-1625/go_process_manager/internal/app/service" "github.com/gin-gonic/gin" ) @@ -17,7 +17,7 @@ var LogApi = new(logApi) func (a *logApi) GetLog(ctx *gin.Context, req model.GetLogReq) { if isAdmin(ctx) { - rOk(ctx, "Query successful!", service.LogServiceImpl.Search(req, req.FilterName...)) + rOk(ctx, "Query successful!", logic.LogLogicImpl.Search(req, req.FilterName...)) } else { processNameList := repository.PermissionRepository.GetProcessNameByPermission(getUserName(ctx), constants.OPERATION_LOG) filterName := slices.DeleteFunc(req.FilterName, func(s string) bool { @@ -27,10 +27,10 @@ func (a *logApi) GetLog(ctx *gin.Context, req model.GetLogReq) { filterName = processNameList } errCheck(ctx, len(filterName) == 0, "No information found!") - rOk(ctx, "Query successful!", service.LogServiceImpl.Search(req, filterName...)) + rOk(ctx, "Query successful!", logic.LogLogicImpl.Search(req, filterName...)) } } func (a *logApi) GetRunningLog(ctx *gin.Context) { - rOk(ctx, "Query successful!", service.Loghandler.GetRunning()) + rOk(ctx, "Query successful!", logic.Loghandler.GetRunning()) } diff --git a/internal/app/api/proc.go b/internal/app/api/proc.go index 16a1a37..6382bb2 100644 --- a/internal/app/api/proc.go +++ b/internal/app/api/proc.go @@ -1,9 +1,9 @@ package api import ( + "github.com/lzh-1625/go_process_manager/internal/app/logic" "github.com/lzh-1625/go_process_manager/internal/app/model" "github.com/lzh-1625/go_process_manager/internal/app/repository" - "github.com/lzh-1625/go_process_manager/internal/app/service" "github.com/gin-gonic/gin" ) @@ -16,9 +16,9 @@ func (p *procApi) CreateNewProcess(ctx *gin.Context, req model.Process) { index, err := repository.ProcessRepository.AddProcessConfig(req) errCheck(ctx, err != nil, err) req.Uuid = index - proc, err := service.ProcessCtlService.RunNewProcess(req) + proc, err := logic.ProcessCtlLogic.RunNewProcess(req) errCheck(ctx, err != nil, err) - service.ProcessCtlService.AddProcess(req.Uuid, proc) + logic.ProcessCtlLogic.AddProcess(req.Uuid, proc) rOk(ctx, "Operation successful!", gin.H{ "id": req.Uuid, }) @@ -26,8 +26,8 @@ func (p *procApi) CreateNewProcess(ctx *gin.Context, req model.Process) { func (p *procApi) DeleteNewProcess(ctx *gin.Context) { uuid := getQueryInt(ctx, "uuid") - service.ProcessCtlService.KillProcess(uuid) - service.ProcessCtlService.DeleteProcess(uuid) + logic.ProcessCtlLogic.KillProcess(uuid) + logic.ProcessCtlLogic.DeleteProcess(uuid) err := repository.ProcessRepository.DeleteProcessConfig(uuid) errCheck(ctx, err != nil, err) rOk(ctx, "Operation successful!", nil) @@ -35,18 +35,18 @@ func (p *procApi) DeleteNewProcess(ctx *gin.Context) { func (p *procApi) KillProcess(ctx *gin.Context) { uuid := getQueryInt(ctx, "uuid") - err := service.ProcessCtlService.KillProcess(uuid) + err := logic.ProcessCtlLogic.KillProcess(uuid) errCheck(ctx, err != nil, err) rOk(ctx, "Operation successful!", nil) } func (p *procApi) StartProcess(ctx *gin.Context) { uuid := getQueryInt(ctx, "uuid") - prod, err := service.ProcessCtlService.GetProcess(uuid) + prod, err := logic.ProcessCtlLogic.GetProcess(uuid) if err != nil { // 进程不存在则创建 - proc, err := service.ProcessCtlService.RunNewProcess(repository.ProcessRepository.GetProcessConfigById(uuid)) + proc, err := logic.ProcessCtlLogic.RunNewProcess(repository.ProcessRepository.GetProcessConfigById(uuid)) errCheck(ctx, err != nil, err) - service.ProcessCtlService.AddProcess(uuid, proc) + logic.ProcessCtlLogic.AddProcess(uuid, proc) rOk(ctx, "Operation successful!", nil) return } @@ -59,32 +59,32 @@ func (p *procApi) StartProcess(ctx *gin.Context) { func (p *procApi) StartAllProcess(ctx *gin.Context) { if isAdmin(ctx) { - service.ProcessCtlService.ProcessStartAll() + logic.ProcessCtlLogic.ProcessStartAll() } else { - service.ProcessCtlService.ProcesStartAllByUsername(getUserName(ctx)) + logic.ProcessCtlLogic.ProcesStartAllByUsername(getUserName(ctx)) } rOk(ctx, "Operation successful!", nil) } func (p *procApi) KillAllProcess(ctx *gin.Context) { if isAdmin(ctx) { - service.ProcessCtlService.KillAllProcess() + logic.ProcessCtlLogic.KillAllProcess() } else { - service.ProcessCtlService.KillAllProcessByUserName(getUserName(ctx)) + logic.ProcessCtlLogic.KillAllProcessByUserName(getUserName(ctx)) } rOk(ctx, "Operation successful!", nil) } func (p *procApi) GetProcessList(ctx *gin.Context) { if isAdmin(ctx) { - rOk(ctx, "Query successful!", service.ProcessCtlService.GetProcessList()) + rOk(ctx, "Query successful!", logic.ProcessCtlLogic.GetProcessList()) } else { - rOk(ctx, "Query successful!", service.ProcessCtlService.GetProcessListByUser(getUserName(ctx))) + rOk(ctx, "Query successful!", logic.ProcessCtlLogic.GetProcessListByUser(getUserName(ctx))) } } func (p *procApi) UpdateProcessConfig(ctx *gin.Context, req model.Process) { - service.ProcessCtlService.UpdateProcessConfig(req) + logic.ProcessCtlLogic.UpdateProcessConfig(req) err := repository.ProcessRepository.UpdateProcessConfig(req) errCheck(ctx, err != nil, err) rOk(ctx, "Operation successful!", nil) @@ -100,7 +100,7 @@ func (p *procApi) GetProcessConfig(ctx *gin.Context) { func (p *procApi) ProcessControl(ctx *gin.Context) { user := getUserName(ctx) uuid := getQueryInt(ctx, "uuid") - proc, err := service.ProcessCtlService.GetProcess(uuid) + proc, err := logic.ProcessCtlLogic.GetProcess(uuid) errCheck(ctx, err != nil, err) proc.ProcessControl(user) rOk(ctx, "Operation successful!", nil) diff --git a/internal/app/api/task.go b/internal/app/api/task.go index 8150f82..c2ef62e 100644 --- a/internal/app/api/task.go +++ b/internal/app/api/task.go @@ -1,9 +1,9 @@ package api import ( + "github.com/lzh-1625/go_process_manager/internal/app/logic" "github.com/lzh-1625/go_process_manager/internal/app/model" "github.com/lzh-1625/go_process_manager/internal/app/repository" - "github.com/lzh-1625/go_process_manager/internal/app/service" "github.com/gin-gonic/gin" ) @@ -13,7 +13,7 @@ type taskApi struct{} var TaskApi = new(taskApi) func (t *taskApi) CreateTask(ctx *gin.Context, req model.Task) { - err := service.TaskService.CreateTask(req) + err := logic.TaskLogic.CreateTask(req) errCheck(ctx, err != nil, err) rOk(ctx, "Operation successful!", nil) } @@ -25,46 +25,46 @@ func (t *taskApi) GetTaskById(ctx *gin.Context) { } func (t *taskApi) GetTaskList(ctx *gin.Context) { - result := service.TaskService.GetAllTaskJob() + result := logic.TaskLogic.GetAllTaskJob() rOk(ctx, "Operation successful!", result) } func (t *taskApi) DeleteTaskById(ctx *gin.Context) { - err := service.TaskService.DeleteTask(getQueryInt(ctx, "id")) + err := logic.TaskLogic.DeleteTask(getQueryInt(ctx, "id")) errCheck(ctx, err != nil, err) rOk(ctx, "Operation successful!", nil) } func (t *taskApi) StartTask(ctx *gin.Context) { - go service.TaskService.RunTaskById(getQueryInt(ctx, "id")) + go logic.TaskLogic.RunTaskById(getQueryInt(ctx, "id")) rOk(ctx, "Operation successful!", nil) } func (t *taskApi) StopTask(ctx *gin.Context) { - errCheck(ctx, service.TaskService.StopTaskJob(getQueryInt(ctx, "id")) != nil, "Operation failed!") + errCheck(ctx, logic.TaskLogic.StopTaskJob(getQueryInt(ctx, "id")) != nil, "Operation failed!") rOk(ctx, "Operation successful!", nil) } func (t *taskApi) EditTask(ctx *gin.Context, req model.Task) { - err := service.TaskService.EditTask(req) + 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) { - err := service.TaskService.EditTaskEnable(req.Id, req.Enable) + err := logic.TaskLogic.EditTaskEnable(req.Id, req.Enable) errCheck(ctx, err != nil, err) rOk(ctx, "Operation successful!", nil) } func (t *taskApi) RunTaskByKey(ctx *gin.Context) { - err := service.TaskService.RunTaskByKey(ctx.Param("key")) + err := logic.TaskLogic.RunTaskByKey(ctx.Param("key")) errCheck(ctx, err != nil, err) rOk(ctx, "Operation successful!", nil) } func (t *taskApi) CreateTaskApiKey(ctx *gin.Context) { - err := service.TaskService.CreateApiKey(getQueryInt(ctx, "id")) + err := logic.TaskLogic.CreateApiKey(getQueryInt(ctx, "id")) errCheck(ctx, err != nil, err) rOk(ctx, "Operation successful!", nil) } diff --git a/internal/app/api/ws.go b/internal/app/api/ws.go index 5277c2c..7d0db11 100644 --- a/internal/app/api/ws.go +++ b/internal/app/api/ws.go @@ -5,8 +5,8 @@ import ( "time" "github.com/lzh-1625/go_process_manager/internal/app/constants" + "github.com/lzh-1625/go_process_manager/internal/app/logic" "github.com/lzh-1625/go_process_manager/internal/app/middle" - "github.com/lzh-1625/go_process_manager/internal/app/service" "github.com/lzh-1625/go_process_manager/log" "github.com/lzh-1625/go_process_manager/utils" @@ -42,7 +42,7 @@ var upgrader = websocket.Upgrader{ func (w *wsApi) WebsocketHandle(ctx *gin.Context) { reqUser := getUserName(ctx) uuid := getQueryInt(ctx, "uuid") - proc, err := service.ProcessCtlService.GetProcess(uuid) + proc, err := logic.ProcessCtlLogic.GetProcess(uuid) errCheck(ctx, err != nil, "Operation failed!") errCheck(ctx, proc.HasWsConn(reqUser), "A connection already exists; unable to establish a new one!") errCheck(ctx, proc.State.State != 1, "The process is currently running.") @@ -83,7 +83,7 @@ func (w *wsApi) WebsocketHandle(ctx *gin.Context) { conn.Close() } -func (w *wsApi) startWsConnect(conn *websocket.Conn, proc service.Process, write bool) { +func (w *wsApi) startWsConnect(conn *websocket.Conn, proc logic.Process, write bool) { log.Logger.Debugw("ws读取线程已启动") go func() { for { diff --git a/internal/app/service/config.go b/internal/app/logic/config.go similarity index 91% rename from internal/app/service/config.go rename to internal/app/logic/config.go index 5db82fc..57df15a 100644 --- a/internal/app/service/config.go +++ b/internal/app/logic/config.go @@ -1,4 +1,4 @@ -package service +package logic import ( "reflect" @@ -9,13 +9,13 @@ import ( "github.com/lzh-1625/go_process_manager/internal/app/repository" ) -type configService struct{} +type configLogic struct{} var ( - ConfigService = new(configService) + ConfigLogic = new(configLogic) ) -func (c *configService) GetSystemConfiguration() []model.SystemConfigurationVo { +func (c *configLogic) GetSystemConfiguration() []model.SystemConfigurationVo { result := []model.SystemConfigurationVo{} typeElem := reflect.TypeOf(config.CF).Elem() valueElem := reflect.ValueOf(config.CF).Elem() @@ -49,7 +49,7 @@ func (c *configService) GetSystemConfiguration() []model.SystemConfigurationVo { return result } -func (c *configService) SetSystemConfiguration(kv map[string]string) error { +func (c *configLogic) SetSystemConfiguration(kv map[string]string) error { typeElem := reflect.TypeOf(config.CF).Elem() valueElem := reflect.ValueOf(config.CF).Elem() for i := 0; i < typeElem.NumField(); i++ { @@ -96,7 +96,7 @@ func (c *configService) SetSystemConfiguration(kv map[string]string) error { } // reset system config to default -func (c *configService) ResetSystemConfiguration() error { +func (c *configLogic) ResetSystemConfiguration() error { typeElem := reflect.TypeOf(config.CF).Elem() valueElem := reflect.ValueOf(config.CF).Elem() for i := 0; i < typeElem.NumField(); i++ { diff --git a/internal/app/service/es.go b/internal/app/logic/es.go similarity index 88% rename from internal/app/service/es.go rename to internal/app/logic/es.go index 8fec602..2ddccde 100644 --- a/internal/app/service/es.go +++ b/internal/app/logic/es.go @@ -1,4 +1,4 @@ -package service +package logic import ( "context" @@ -13,22 +13,22 @@ import ( "github.com/olivere/elastic/v7" ) -type esService struct { +type esLogic struct { esClient *elastic.Client } var ( - EsService = new(esService) + EsLogic = new(esLogic) ) -func (e *esService) InitEs() bool { +func (e *esLogic) InitEs() bool { if !config.CF.EsEnable { log.Logger.Debug("不使用es") return false } var err error - EsService.esClient, err = elastic.NewClient( + EsLogic.esClient, err = elastic.NewClient( elastic.SetURL(config.CF.EsUrl), elastic.SetBasicAuth(config.CF.EsUsername, config.CF.EsPassword), elastic.SetSniff(false), @@ -38,11 +38,11 @@ func (e *esService) InitEs() bool { log.Logger.Warnw("Failed to connect to es", "err", err) return false } - EsService.CreateIndexIfNotExists(config.CF.EsIndex) + EsLogic.CreateIndexIfNotExists(config.CF.EsIndex) return true } -func (e *esService) Insert(logContent string, processName string, using string, ts int64) { +func (e *esLogic) Insert(logContent string, processName string, using string, ts int64) { data := model.ProcessLog{ Log: logContent, Name: processName, @@ -55,7 +55,7 @@ func (e *esService) Insert(logContent string, processName string, using string, } } -func (e *esService) CreateIndexIfNotExists(index string) error { +func (e *esLogic) CreateIndexIfNotExists(index string) error { ctx := context.Background() exists, err := e.esClient.IndexExists(index).Do(ctx) @@ -76,7 +76,7 @@ func (e *esService) CreateIndexIfNotExists(index string) error { return nil } -func (e *esService) Search(req model.GetLogReq, filterProcessName ...string) model.LogResp { +func (e *esLogic) Search(req model.GetLogReq, filterProcessName ...string) model.LogResp { // 检查 req 是否为 nil if req.Page.From < 0 || req.Page.Size <= 0 { log.Logger.Error("无效的分页请求参数") @@ -144,7 +144,7 @@ func (e *esService) Search(req model.GetLogReq, filterProcessName ...string) mod } // 通过反射得到mapping -func (e *esService) structToJSON() string { +func (e *esLogic) structToJSON() string { typ := reflect.TypeOf(model.ProcessLog{}) properties := make(map[string]map[string]string) for i := 0; i < typ.NumField(); i++ { diff --git a/internal/app/service/file.go b/internal/app/logic/file.go similarity index 74% rename from internal/app/service/file.go rename to internal/app/logic/file.go index 53f9e5d..875afea 100644 --- a/internal/app/service/file.go +++ b/internal/app/logic/file.go @@ -1,4 +1,4 @@ -package service +package logic import ( "fmt" @@ -10,11 +10,11 @@ import ( "github.com/lzh-1625/go_process_manager/log" ) -type fileService struct{} +type fileLogic struct{} -var FileService = new(fileService) +var FileLogic = new(fileLogic) -func (f *fileService) ReadFileFromPath(path string) (result []byte, err error) { +func (f *fileLogic) ReadFileFromPath(path string) (result []byte, err error) { fi, err := os.Open(path) if err != nil { return @@ -36,7 +36,7 @@ func (f *fileService) ReadFileFromPath(path string) (result []byte, err error) { return } -func (f *fileService) UpdateFileData(filePath string, file io.Reader, size int64) error { +func (f *fileLogic) UpdateFileData(filePath string, file io.Reader, size int64) error { if size := float64(size) / 1e6; size > config.CF.FileSizeLimit { return fmt.Errorf("写入数据大小%vMB,超过%vMB限制", size, config.CF.FileSizeLimit) } @@ -52,7 +52,7 @@ func (f *fileService) UpdateFileData(filePath string, file io.Reader, size int64 return nil } -func (f *fileService) GetFileAndDirByPath(srcPath string) []model.FileStruct { +func (f *fileLogic) GetFileAndDirByPath(srcPath string) []model.FileStruct { result := []model.FileStruct{} files, err := os.ReadDir(srcPath) if err != nil { @@ -67,11 +67,11 @@ func (f *fileService) GetFileAndDirByPath(srcPath string) []model.FileStruct { return result } -func (f *fileService) CreateNewDir(path string, name string) error { +func (f *fileLogic) CreateNewDir(path string, name string) error { _, err := os.Create(path + name) return err } -func (f *fileService) CreateNewFile(path string, name string) error { +func (f *fileLogic) CreateNewFile(path string, name string) error { return os.MkdirAll(path+name, os.ModeDir) } diff --git a/internal/app/service/log_handler.go b/internal/app/logic/log_handler.go similarity index 90% rename from internal/app/service/log_handler.go rename to internal/app/logic/log_handler.go index 76de514..4501c92 100644 --- a/internal/app/service/log_handler.go +++ b/internal/app/logic/log_handler.go @@ -1,4 +1,4 @@ -package service +package logic import ( "time" @@ -26,7 +26,7 @@ func InitLogHandle() { func (l *loghandler) AddLog(data model.ProcessLog) { if err := l.antsPool.Submit(func() { - LogServiceImpl.Insert(data.Log, data.Name, data.Using, data.Time) + LogLogicImpl.Insert(data.Log, data.Name, data.Using, data.Time) }); err != nil { log.Logger.Warnw("协程池添加任务失败", "err", err, "当前运行数量", l.antsPool.Running()) } diff --git a/internal/app/service/log_service.go b/internal/app/logic/log_logic.go similarity index 83% rename from internal/app/service/log_service.go rename to internal/app/logic/log_logic.go index a2adbf3..771149d 100644 --- a/internal/app/service/log_service.go +++ b/internal/app/logic/log_logic.go @@ -1,4 +1,4 @@ -package service +package logic import ( "github.com/lzh-1625/go_process_manager/config" @@ -6,18 +6,18 @@ import ( "github.com/lzh-1625/go_process_manager/internal/app/repository" ) -type LogService interface { +type LogLogic interface { Search(req model.GetLogReq, filterProcessName ...string) model.LogResp Insert(log string, processName string, using string, ts int64) } -var LogServiceImpl LogService +var LogLogicImpl LogLogic func InitLog() { if config.CF.EsEnable { - LogServiceImpl = LogEs + LogLogicImpl = LogEs } else { - LogServiceImpl = LogSqlite + LogLogicImpl = LogSqlite } } @@ -48,9 +48,9 @@ type logEs struct{} var LogEs = new(logEs) func (l *logEs) Search(req model.GetLogReq, filterProcessName ...string) model.LogResp { - return EsService.Search(req, filterProcessName...) + return EsLogic.Search(req, filterProcessName...) } func (l *logEs) Insert(log string, processName string, using string, ts int64) { - EsService.Insert(log, processName, using, ts) + EsLogic.Insert(log, processName, using, ts) } diff --git a/internal/app/service/process.go b/internal/app/logic/process.go similarity index 98% rename from internal/app/service/process.go rename to internal/app/logic/process.go index 2996f72..9eb2f52 100644 --- a/internal/app/service/process.go +++ b/internal/app/logic/process.go @@ -1,4 +1,4 @@ -package service +package logic import ( "fmt" @@ -151,7 +151,7 @@ func (p *ProcessBase) SetState(state constants.ProcessState, fn ...func() bool) } p.State.State = state middle.ProcessWaitCond.Trigger() - go TaskService.RunTaskByTriggerEvent(p.Name, state) + go TaskLogic.RunTaskByTriggerEvent(p.Name, state) return true } @@ -237,7 +237,7 @@ func (p *ProcessBase) push(message string) { "{$message}": message, "{$status}": strconv.Itoa(int(p.State.State)), } - PushService.Push(p.Config.PushIds, messagePlaceholders) + PushLogic.Push(p.Config.PushIds, messagePlaceholders) } } diff --git a/internal/app/service/process_service.go b/internal/app/logic/process_logic.go similarity index 81% rename from internal/app/service/process_service.go rename to internal/app/logic/process_logic.go index 6bbcfe9..2d7b8dd 100644 --- a/internal/app/service/process_service.go +++ b/internal/app/logic/process_logic.go @@ -1,4 +1,4 @@ -package service +package logic import ( "errors" @@ -13,19 +13,19 @@ import ( "github.com/lzh-1625/go_process_manager/utils" ) -type processCtlService struct { +type processCtlLogic struct { processMap sync.Map } var ( - ProcessCtlService = new(processCtlService) + ProcessCtlLogic = new(processCtlLogic) ) -func (p *processCtlService) AddProcess(uuid int, process *ProcessBase) { +func (p *processCtlLogic) AddProcess(uuid int, process *ProcessBase) { p.processMap.Store(uuid, process) } -func (p *processCtlService) KillProcess(uuid int) error { +func (p *processCtlLogic) KillProcess(uuid int) error { value, ok := p.processMap.Load(uuid) if !ok { return errors.New("进程不存在") @@ -41,7 +41,7 @@ func (p *processCtlService) KillProcess(uuid int) error { return result.Kill() } -func (p *processCtlService) GetProcess(uuid int) (*ProcessBase, error) { +func (p *processCtlLogic) GetProcess(uuid int) (*ProcessBase, error) { process, ok := p.processMap.Load(uuid) if !ok { return nil, errors.New("进程获取失败") @@ -54,7 +54,7 @@ func (p *processCtlService) GetProcess(uuid int) (*ProcessBase, error) { return result, nil } -func (p *processCtlService) KillAllProcess() { +func (p *processCtlLogic) KillAllProcess() { wg := sync.WaitGroup{} p.processMap.Range(func(key, value any) bool { process := value.(*ProcessBase) @@ -72,7 +72,7 @@ func (p *processCtlService) KillAllProcess() { wg.Wait() } -func (p *processCtlService) KillAllProcessByUserName(userName string) { +func (p *processCtlLogic) KillAllProcessByUserName(userName string) { stopPermissionProcess := repository.PermissionRepository.GetProcessNameByPermission(userName, constants.OPERATION_STOP) wg := sync.WaitGroup{} p.processMap.Range(func(key, value any) bool { @@ -90,21 +90,21 @@ func (p *processCtlService) KillAllProcessByUserName(userName string) { wg.Wait() } -func (p *processCtlService) DeleteProcess(uuid int) { +func (p *processCtlLogic) DeleteProcess(uuid int) { p.processMap.Delete(uuid) } -func (p *processCtlService) GetProcessList() []model.ProcessInfo { +func (p *processCtlLogic) GetProcessList() []model.ProcessInfo { processConfiglist := repository.ProcessRepository.GetAllProcessConfig() return p.getProcessInfoList(processConfiglist) } -func (p *processCtlService) GetProcessListByUser(username string) []model.ProcessInfo { +func (p *processCtlLogic) GetProcessListByUser(username string) []model.ProcessInfo { processConfiglist := repository.ProcessRepository.GetProcessConfigByUser(username) return p.getProcessInfoList(processConfiglist) } -func (p *processCtlService) getProcessInfoList(processConfiglist []model.Process) []model.ProcessInfo { +func (p *processCtlLogic) getProcessInfoList(processConfiglist []model.Process) []model.ProcessInfo { processInfoList := []model.ProcessInfo{} for _, v := range processConfiglist { pi := model.ProcessInfo{ @@ -130,7 +130,7 @@ func (p *processCtlService) getProcessInfoList(processConfiglist []model.Process return processInfoList } -func (p *processCtlService) ProcessStartAll() { +func (p *processCtlLogic) ProcessStartAll() { p.processMap.Range(func(key, value any) bool { process := value.(*ProcessBase) err := process.Start() @@ -141,7 +141,7 @@ func (p *processCtlService) ProcessStartAll() { }) } -func (p *processCtlService) RunPrcessById(id int) (*ProcessBase, error) { +func (p *processCtlLogic) RunPrcessById(id int) (*ProcessBase, error) { config := repository.ProcessRepository.GetProcessConfigById(id) proc, err := p.RunNewProcess(config) if err != nil { @@ -152,7 +152,7 @@ func (p *processCtlService) RunPrcessById(id int) (*ProcessBase, error) { return proc, nil } -func (p *processCtlService) ProcessInit() { +func (p *processCtlLogic) ProcessInit() { config := repository.ProcessRepository.GetAllProcessConfig() for _, v := range config { @@ -172,7 +172,7 @@ func (p *processCtlService) ProcessInit() { } } -func (p *processCtlService) ProcesStartAllByUsername(userName string) { +func (p *processCtlLogic) ProcesStartAllByUsername(userName string) { startPermissionProcess := repository.PermissionRepository.GetProcessNameByPermission(userName, constants.OPERATION_START) p.processMap.Range(func(key, value any) bool { process := value.(*ProcessBase) @@ -187,7 +187,7 @@ func (p *processCtlService) ProcesStartAllByUsername(userName string) { }) } -func (p *processCtlService) UpdateProcessConfig(config model.Process) error { +func (p *processCtlLogic) UpdateProcessConfig(config model.Process) error { process, ok := p.processMap.Load(config.Uuid) if !ok { return errors.New("进程获取失败") @@ -213,7 +213,7 @@ func (p *processCtlService) UpdateProcessConfig(config model.Process) error { return nil } -func (p *processCtlService) RunNewProcess(config model.Process) (proc *ProcessBase, err error) { +func (p *processCtlLogic) RunNewProcess(config model.Process) (proc *ProcessBase, err error) { switch config.TermType { case constants.TERMINAL_STD: proc, err = RunNewProcessStd(config) @@ -225,7 +225,7 @@ func (p *processCtlService) RunNewProcess(config model.Process) (proc *ProcessBa return } -func (p *processCtlService) NewProcess(config model.Process) (proc *ProcessBase, err error) { +func (p *processCtlLogic) NewProcess(config model.Process) (proc *ProcessBase, err error) { switch config.TermType { case constants.TERMINAL_STD: proc = NewProcessStd(config) diff --git a/internal/app/service/process_pty_linux.go b/internal/app/logic/process_pty_linux.go similarity index 99% rename from internal/app/service/process_pty_linux.go rename to internal/app/logic/process_pty_linux.go index 89483c8..3b3760d 100644 --- a/internal/app/service/process_pty_linux.go +++ b/internal/app/logic/process_pty_linux.go @@ -1,4 +1,4 @@ -package service +package logic import ( "bytes" diff --git a/internal/app/service/process_pty_windows.go b/internal/app/logic/process_pty_windows.go similarity index 99% rename from internal/app/service/process_pty_windows.go rename to internal/app/logic/process_pty_windows.go index f70f853..e132708 100644 --- a/internal/app/service/process_pty_windows.go +++ b/internal/app/logic/process_pty_windows.go @@ -1,4 +1,4 @@ -package service +package logic import ( "bytes" diff --git a/internal/app/service/process_std.go b/internal/app/logic/process_std.go similarity index 99% rename from internal/app/service/process_std.go rename to internal/app/logic/process_std.go index ce7d14b..5350e0f 100644 --- a/internal/app/service/process_std.go +++ b/internal/app/logic/process_std.go @@ -1,4 +1,4 @@ -package service +package logic import ( "bufio" diff --git a/internal/app/service/push.go b/internal/app/logic/push.go similarity index 71% rename from internal/app/service/push.go rename to internal/app/logic/push.go index ebe3e00..6dcb224 100644 --- a/internal/app/service/push.go +++ b/internal/app/logic/push.go @@ -1,4 +1,4 @@ -package service +package logic import ( "net/http" @@ -9,11 +9,11 @@ import ( "github.com/levigross/grequests" ) -type pushService struct{} +type pushLogic struct{} -var PushService = new(pushService) +var PushLogic = new(pushLogic) -func (p *pushService) Push(ids []int, placeholders map[string]string) { +func (p *pushLogic) Push(ids []int, placeholders map[string]string) { pl := repository.PushRepository.GetPushConfigByIds(ids) for _, v := range pl { if v.Enable { @@ -29,7 +29,7 @@ func (p *pushService) Push(ids []int, placeholders map[string]string) { } } -func (p *pushService) getReplaceMessage(placeholders map[string]string, message string) string { +func (p *pushLogic) getReplaceMessage(placeholders map[string]string, message string) string { for k, v := range placeholders { message = strings.ReplaceAll(message, k, v) } diff --git a/internal/app/service/task.go b/internal/app/logic/task.go similarity index 93% rename from internal/app/service/task.go rename to internal/app/logic/task.go index 34be7f2..30ace74 100644 --- a/internal/app/service/task.go +++ b/internal/app/logic/task.go @@ -1,4 +1,4 @@ -package service +package logic import ( "context" @@ -12,7 +12,7 @@ import ( "github.com/lzh-1625/go_process_manager/log" ) -func (t *taskService) RunTaskById(id int) error { +func (t *taskLogic) RunTaskById(id int) error { v, ok := t.taskJobMap.Load(id) if !ok { return errors.New("don't exist task id") @@ -28,7 +28,7 @@ func (t *taskService) RunTaskById(id int) error { return nil } -func (t *taskService) run(ctx context.Context, data *model.TaskJob) { +func (t *taskLogic) run(ctx context.Context, data *model.TaskJob) { data.Running = true middle.TaskWaitCond.Trigger() defer func() { @@ -42,7 +42,7 @@ func (t *taskService) run(ctx context.Context, data *model.TaskJob) { if data.Task.Condition == constants.PASS { ok = true } else { - proc, err := ProcessCtlService.GetProcess(data.Task.OperationTarget) + proc, err := ProcessCtlLogic.GetProcess(data.Task.OperationTarget) if err != nil { return } @@ -53,7 +53,7 @@ func (t *taskService) run(ctx context.Context, data *model.TaskJob) { return } - proc, err := ProcessCtlService.GetProcess(data.Task.OperationTarget) + proc, err := ProcessCtlLogic.GetProcess(data.Task.OperationTarget) if err != nil { log.Logger.Debugw("不存在该进程,结束任务") return diff --git a/internal/app/service/task_service.go b/internal/app/logic/task_logic.go similarity index 83% rename from internal/app/service/task_service.go rename to internal/app/logic/task_logic.go index 786b23d..053d321 100644 --- a/internal/app/service/task_service.go +++ b/internal/app/logic/task_logic.go @@ -1,4 +1,4 @@ -package service +package logic import ( "context" @@ -15,13 +15,13 @@ import ( "github.com/robfig/cron/v3" ) -type taskService struct { +type taskLogic struct { taskJobMap sync.Map } -var TaskService taskService +var TaskLogic taskLogic -func (t *taskService) InitTaskJob() { +func (t *taskLogic) InitTaskJob() { for _, v := range repository.TaskRepository.GetAllTask() { tj := &model.TaskJob{ Task: &v, @@ -43,7 +43,7 @@ func (t *taskService) InitTaskJob() { } } -func (t *taskService) cronHandle(data *model.TaskJob) func() { +func (t *taskLogic) cronHandle(data *model.TaskJob) func() { return func() { log.Logger.AddAdditionalInfo("id", data.Task.Id) defer log.Logger.DeleteAdditionalInfo(1) @@ -60,7 +60,7 @@ func (t *taskService) cronHandle(data *model.TaskJob) func() { } } -func (t *taskService) StopTaskJob(id int) error { +func (t *taskLogic) StopTaskJob(id int) error { c, ok := t.taskJobMap.Load(id) if !ok { return errors.New("id不存在") @@ -72,7 +72,7 @@ func (t *taskService) StopTaskJob(id int) error { return nil } -func (t *taskService) StartTaskJob(id int) error { +func (t *taskLogic) StartTaskJob(id int) error { c, ok := t.taskJobMap.Load(id) if !ok { return errors.New("id不存在") @@ -82,7 +82,7 @@ func (t *taskService) StartTaskJob(id int) error { return nil } -func (t *taskService) GetAllTaskJob() []model.TaskVo { +func (t *taskLogic) GetAllTaskJob() []model.TaskVo { result := repository.TaskRepository.GetAllTaskWithProcessName() for i, v := range result { item, ok := t.taskJobMap.Load(v.Id) @@ -97,7 +97,7 @@ func (t *taskService) GetAllTaskJob() []model.TaskVo { return result } -func (t *taskService) DeleteTask(id int) (err error) { +func (t *taskLogic) DeleteTask(id int) (err error) { t.StopTaskJob(id) t.EditTaskEnable(id, false) t.taskJobMap.Delete(id) @@ -108,7 +108,7 @@ func (t *taskService) DeleteTask(id int) (err error) { return } -func (t *taskService) CreateTask(data model.Task) error { +func (t *taskLogic) CreateTask(data model.Task) error { tj := &model.TaskJob{ Task: &data, StartTime: time.Now(), @@ -132,7 +132,7 @@ func (t *taskService) CreateTask(data model.Task) error { return nil } -func (t *taskService) EditTask(data model.Task) error { +func (t *taskLogic) EditTask(data model.Task) error { if data.Cron != nil { if _, err := cron.ParseStandard(*data.Cron); err != nil { return err @@ -147,7 +147,7 @@ func (t *taskService) EditTask(data model.Task) error { return repository.TaskRepository.EditTask(data) } -func (t *taskService) EditTaskEnable(id int, status bool) error { +func (t *taskLogic) EditTaskEnable(id int, status bool) error { v, ok := t.taskJobMap.Load(id) if !ok { return errors.New("don't exist this task id") @@ -165,7 +165,7 @@ func (t *taskService) EditTaskEnable(id int, status bool) error { return nil } -func (t *taskService) CreateApiKey(id int) error { +func (t *taskLogic) CreateApiKey(id int) error { data, err := repository.TaskRepository.GetTaskById(id) if err != nil { return err @@ -176,7 +176,7 @@ func (t *taskService) CreateApiKey(id int) error { return nil } -func (t *taskService) RunTaskByKey(key string) error { +func (t *taskLogic) RunTaskByKey(key string) error { data, err := repository.TaskRepository.GetTaskByKey(key) if err != nil { return errors.New("don't exist key") @@ -185,7 +185,7 @@ func (t *taskService) RunTaskByKey(key string) error { return nil } -func (t *taskService) RunTaskByTriggerEvent(processName string, event constants.ProcessState) { +func (t *taskLogic) RunTaskByTriggerEvent(processName string, event constants.ProcessState) { taskList := repository.TaskRepository.GetTriggerTask(processName, event) if len(taskList) == 0 { return diff --git a/internal/app/termui/tui.go b/internal/app/termui/tui.go index de2d091..2af7e9f 100644 --- a/internal/app/termui/tui.go +++ b/internal/app/termui/tui.go @@ -7,7 +7,7 @@ import ( "github.com/lzh-1625/go_process_manager/config" "github.com/lzh-1625/go_process_manager/internal/app/constants" - "github.com/lzh-1625/go_process_manager/internal/app/service" + "github.com/lzh-1625/go_process_manager/internal/app/logic" "github.com/lzh-1625/go_process_manager/log" "github.com/lzh-1625/go_process_manager/utils" @@ -44,7 +44,7 @@ func (t *tui) TermuiInit() { func (t *tui) drawProcessList() { t.app = tview.NewApplication() list := tview.NewList() - for i, v := range service.ProcessCtlService.GetProcessList() { + for i, v := range logic.ProcessCtlLogic.GetProcessList() { if i >= 'r' { i++ } @@ -67,7 +67,7 @@ func (t *tui) drawProcessList() { } func (t *tui) teminal(uuid int) { - p, err := service.ProcessCtlService.GetProcess(uuid) + p, err := logic.ProcessCtlLogic.GetProcess(uuid) if err != nil { log.Logger.Error("不存在uuid", "uuid", uuid) } @@ -89,7 +89,7 @@ func (t *tui) teminal(uuid int) { log.Logger.Info("tui quit") } -func (t *tui) startConnect(p service.Process, ctx context.Context, cancel context.CancelFunc) { +func (t *tui) startConnect(p logic.Process, ctx context.Context, cancel context.CancelFunc) { switch p.Type() { case constants.TERMINAL_PTY: { @@ -102,7 +102,7 @@ func (t *tui) startConnect(p service.Process, ctx context.Context, cancel contex } } -func (t *tui) ptyConnect(p service.Process, ctx context.Context, cancel context.CancelFunc) { +func (t *tui) ptyConnect(p logic.Process, ctx context.Context, cancel context.CancelFunc) { buf := make([]byte, 1024) for { select { @@ -124,7 +124,7 @@ func (t *tui) ptyConnect(p service.Process, ctx context.Context, cancel context. } } -func (t *tui) stdConnect(p service.Process, ctx context.Context, cancel context.CancelFunc) { +func (t *tui) stdConnect(p logic.Process, ctx context.Context, cancel context.CancelFunc) { buf := make([]byte, 1024) var line string for { diff --git a/internal/app/test/cgroup_test.go b/internal/app/test/cgroup_test.go index 6500e45..69df730 100644 --- a/internal/app/test/cgroup_test.go +++ b/internal/app/test/cgroup_test.go @@ -6,8 +6,8 @@ import ( _ "github.com/lzh-1625/go_process_manager/boot" "github.com/lzh-1625/go_process_manager/internal/app/constants" + "github.com/lzh-1625/go_process_manager/internal/app/logic" "github.com/lzh-1625/go_process_manager/internal/app/model" - "github.com/lzh-1625/go_process_manager/internal/app/service" "github.com/containerd/cgroups/v3/cgroup1" "github.com/opencontainers/runtime-spec/specs-go" @@ -28,7 +28,7 @@ func TestCgroup(t *testing.T) { panic(err) } defer control.Delete() - p, err := service.ProcessCtlService.RunNewProcess(model.Process{ + p, err := logic.ProcessCtlLogic.RunNewProcess(model.Process{ Name: "test", Cmd: "bash", Cwd: `/root`,