From 759863f1aad0ac90f691ce4b21612b019797f0f5 Mon Sep 17 00:00:00 2001 From: kenneth <1185230223@qq.com> Date: Tue, 17 Jun 2025 11:16:24 +0800 Subject: [PATCH] update --- internal/erpserver/handler/captcha/captcha.go | 8 +++--- internal/erpserver/handler/captcha/route.go | 2 +- .../erpserver/handler/system/audit/audit.go | 8 +++--- .../erpserver/handler/system/audit/route.go | 2 +- .../erpserver/handler/system/auth/auth.go | 12 ++++----- .../erpserver/handler/system/auth/route.go | 2 +- .../erpserver/handler/system/config/config.go | 20 +++++++------- .../erpserver/handler/system/config/route.go | 2 +- .../handler/system/department/department.go | 22 ++++++++-------- .../handler/system/department/route.go | 2 +- .../erpserver/handler/system/home/home.go | 12 ++++----- .../erpserver/handler/system/home/route.go | 2 +- .../handler/system/loginlog/login_log.go | 8 +++--- .../handler/system/loginlog/route.go | 2 +- .../erpserver/handler/system/menu/menu.go | 22 ++++++++-------- .../erpserver/handler/system/menu/route.go | 2 +- .../erpserver/handler/system/role/role.go | 26 +++++++++---------- .../erpserver/handler/system/role/route.go | 2 +- .../erpserver/handler/system/user/route.go | 2 +- .../erpserver/handler/system/user/user.go | 20 +++++++------- internal/pkg/know/pearadmin/pearadmin.go | 2 +- internal/pkg/session/redis.go | 11 +++++++- internal/pkg/session/session.go | 3 ++- modd.conf | 1 + 24 files changed, 103 insertions(+), 92 deletions(-) diff --git a/internal/erpserver/handler/captcha/captcha.go b/internal/erpserver/handler/captcha/captcha.go index bf790e2..6d5d39c 100644 --- a/internal/erpserver/handler/captcha/captcha.go +++ b/internal/erpserver/handler/captcha/captcha.go @@ -8,14 +8,14 @@ import ( "management/internal/pkg/render" ) -type App struct { +type app struct { config *config.Config render render.Renderer captchaService v1.CaptchaService } -func NewApp(config *config.Config, render render.Renderer, captchaService v1.CaptchaService) *App { - return &App{ +func newApp(config *config.Config, render render.Renderer, captchaService v1.CaptchaService) *app { + return &app{ config: config, render: render, captchaService: captchaService, @@ -29,7 +29,7 @@ type Response struct { OpenCaptcha int `json:"open_captcha"` } -func (a *App) captcha(w http.ResponseWriter, _ *http.Request) { +func (a *app) captcha(w http.ResponseWriter, _ *http.Request) { id, b64s, _, err := a.captchaService.Generate( a.config.Captcha.ImgHeight, a.config.Captcha.ImgWidth, diff --git a/internal/erpserver/handler/captcha/route.go b/internal/erpserver/handler/captcha/route.go index 8926b3a..f59f122 100644 --- a/internal/erpserver/handler/captcha/route.go +++ b/internal/erpserver/handler/captcha/route.go @@ -15,6 +15,6 @@ type Config struct { } func Routes(r chi.Router, cfg Config) { - app := NewApp(cfg.Conf, cfg.Render, cfg.CaptchaService) + app := newApp(cfg.Conf, cfg.Render, cfg.CaptchaService) r.Get("/captcha", app.captcha) } diff --git a/internal/erpserver/handler/system/audit/audit.go b/internal/erpserver/handler/system/audit/audit.go index 88afbef..58be2de 100644 --- a/internal/erpserver/handler/system/audit/audit.go +++ b/internal/erpserver/handler/system/audit/audit.go @@ -10,19 +10,19 @@ import ( "management/internal/pkg/render" ) -type App struct { +type app struct { render render.Renderer auditLogService v1.AuditLogService } -func NewApp(render render.Renderer, auditLogService v1.AuditLogService) *App { - return &App{ +func newApp(render render.Renderer, auditLogService v1.AuditLogService) *app { + return &app{ render: render, auditLogService: auditLogService, } } -func (a *App) list(w http.ResponseWriter, r *http.Request) { +func (a *app) list(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: ctx := r.Context() diff --git a/internal/erpserver/handler/system/audit/route.go b/internal/erpserver/handler/system/audit/route.go index 7e2d7e8..0c2c2a5 100644 --- a/internal/erpserver/handler/system/audit/route.go +++ b/internal/erpserver/handler/system/audit/route.go @@ -16,7 +16,7 @@ type Config struct { } func Routes(r chi.Router, cfg Config) { - app := NewApp(cfg.Render, cfg.AuditLogService) + app := newApp(cfg.Render, cfg.AuditLogService) r.Route("/audit_log", func(r chi.Router) { r.Get("/list", app.list) diff --git a/internal/erpserver/handler/system/auth/auth.go b/internal/erpserver/handler/system/auth/auth.go index 43f0998..b1dd1b9 100644 --- a/internal/erpserver/handler/system/auth/auth.go +++ b/internal/erpserver/handler/system/auth/auth.go @@ -16,7 +16,7 @@ import ( "github.com/drhin/logger" ) -type App struct { +type app struct { log *logger.Logger sm session.Manager render render.Renderer @@ -24,14 +24,14 @@ type App struct { userService v1.UserService } -func NewApp( +func newApp( log *logger.Logger, sm session.Manager, render render.Renderer, captchaService v1.CaptchaService, userService v1.UserService, -) *App { - return &App{ +) *app { + return &app{ log: log, sm: sm, render: render, @@ -40,7 +40,7 @@ func NewApp( } } -func (a *App) login(w http.ResponseWriter, r *http.Request) { +func (a *app) login(w http.ResponseWriter, r *http.Request) { ctx := r.Context() switch r.Method { case http.MethodGet: @@ -88,7 +88,7 @@ func (a *App) login(w http.ResponseWriter, r *http.Request) { } } -func (a *App) logout(w http.ResponseWriter, r *http.Request) { +func (a *app) logout(w http.ResponseWriter, r *http.Request) { err := a.sm.Destroy(r.Context()) if err != nil { a.log.Error(err.Error(), err) diff --git a/internal/erpserver/handler/system/auth/route.go b/internal/erpserver/handler/system/auth/route.go index 569a179..2b7ed1c 100644 --- a/internal/erpserver/handler/system/auth/route.go +++ b/internal/erpserver/handler/system/auth/route.go @@ -20,7 +20,7 @@ type Config struct { } func Routes(r chi.Router, cfg Config) { - app := NewApp(cfg.Log, cfg.Sm, cfg.Render, cfg.CaptchaService, cfg.UserService) + app := newApp(cfg.Log, cfg.Sm, cfg.Render, cfg.CaptchaService, cfg.UserService) r.Get("/", app.login) r.Post("/login", app.login) diff --git a/internal/erpserver/handler/system/config/config.go b/internal/erpserver/handler/system/config/config.go index 52b80f1..20d97a8 100644 --- a/internal/erpserver/handler/system/config/config.go +++ b/internal/erpserver/handler/system/config/config.go @@ -15,19 +15,19 @@ import ( "management/internal/pkg/render" ) -type App struct { +type app struct { render render.Renderer configService systemService.ConfigService } -func NewApp(render render.Renderer, configService systemService.ConfigService) *App { - return &App{ +func newApp(render render.Renderer, configService systemService.ConfigService) *app { + return &app{ render: render, configService: configService, } } -func (a *App) list(w http.ResponseWriter, r *http.Request) { +func (a *app) list(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: ctx := r.Context() @@ -57,12 +57,12 @@ func (a *App) list(w http.ResponseWriter, r *http.Request) { } } -func (a *App) add(w http.ResponseWriter, r *http.Request) { +func (a *app) add(w http.ResponseWriter, r *http.Request) { ctx := r.Context() a.render.Render(ctx, w, config.Edit(ctx, &view.EditSysConfig{Config: &systemModel.Config{}})) } -func (a *App) edit(w http.ResponseWriter, r *http.Request) { +func (a *app) edit(w http.ResponseWriter, r *http.Request) { ctx := r.Context() vars := r.URL.Query() id := convertor.QueryInt[int32](vars, "id", 0) @@ -77,7 +77,7 @@ func (a *App) edit(w http.ResponseWriter, r *http.Request) { a.render.Render(ctx, w, config.Edit(ctx, vm)) } -func (a *App) save(w http.ResponseWriter, r *http.Request) { +func (a *app) save(w http.ResponseWriter, r *http.Request) { id := convertor.ConvertInt[int32](r.PostFormValue("ID"), 0) key := r.PostFormValue("Key") value := r.PostFormValue("Value") @@ -125,7 +125,7 @@ func (a *App) save(w http.ResponseWriter, r *http.Request) { } } -func (a *App) refreshCache(w http.ResponseWriter, r *http.Request) { +func (a *app) refreshCache(w http.ResponseWriter, r *http.Request) { key := r.FormValue("key") err := a.configService.RefreshCache(r.Context(), strings.ToLower(key)) if err != nil { @@ -136,7 +136,7 @@ func (a *App) refreshCache(w http.ResponseWriter, r *http.Request) { a.render.JSONOk(w, "刷新成功") } -func (a *App) resetPear(w http.ResponseWriter, r *http.Request) { +func (a *app) resetPear(w http.ResponseWriter, r *http.Request) { err := a.configService.ResetPear(r.Context()) if err != nil { a.render.JSONErr(w, err.Error()) @@ -145,7 +145,7 @@ func (a *App) resetPear(w http.ResponseWriter, r *http.Request) { a.render.JSONOk(w, "重置成功") } -func (a *App) pear(w http.ResponseWriter, r *http.Request) { +func (a *app) pear(w http.ResponseWriter, r *http.Request) { pear, err := a.configService.Pear(r.Context()) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) diff --git a/internal/erpserver/handler/system/config/route.go b/internal/erpserver/handler/system/config/route.go index 7ca2f31..8d007ad 100644 --- a/internal/erpserver/handler/system/config/route.go +++ b/internal/erpserver/handler/system/config/route.go @@ -19,7 +19,7 @@ type Config struct { } func Routes(r chi.Router, cfg Config) { - app := NewApp(cfg.Render, cfg.ConfigService) + app := newApp(cfg.Render, cfg.ConfigService) r.Get("/pear.json", app.pear) r.Route("/config", func(r chi.Router) { diff --git a/internal/erpserver/handler/system/department/department.go b/internal/erpserver/handler/system/department/department.go index bfa05fe..43d7e87 100644 --- a/internal/erpserver/handler/system/department/department.go +++ b/internal/erpserver/handler/system/department/department.go @@ -13,19 +13,19 @@ import ( "management/internal/pkg/render" ) -type App struct { +type app struct { render render.Renderer departmentService v1.DepartmentService } -func NewApp(render render.Renderer, departmentService v1.DepartmentService) *App { - return &App{ +func newApp(render render.Renderer, departmentService v1.DepartmentService) *app { + return &app{ render: render, departmentService: departmentService, } } -func (a *App) list(w http.ResponseWriter, r *http.Request) { +func (a *app) list(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: ctx := r.Context() @@ -57,12 +57,12 @@ func (a *App) list(w http.ResponseWriter, r *http.Request) { } } -func (a *App) add(w http.ResponseWriter, r *http.Request) { +func (a *app) add(w http.ResponseWriter, r *http.Request) { ctx := r.Context() a.render.Render(ctx, w, department.Edit(ctx, &systemmodel.Department{Sort: 6666})) } -func (a *App) addChildren(w http.ResponseWriter, r *http.Request) { +func (a *app) addChildren(w http.ResponseWriter, r *http.Request) { vars := r.URL.Query() parentID := convertor.QueryInt[int32](vars, "parentID", 0) vm := &systemmodel.Department{ParentID: parentID, Sort: 6666} @@ -70,7 +70,7 @@ func (a *App) addChildren(w http.ResponseWriter, r *http.Request) { a.render.Render(ctx, w, department.Edit(ctx, vm)) } -func (a *App) edit(w http.ResponseWriter, r *http.Request) { +func (a *app) edit(w http.ResponseWriter, r *http.Request) { ctx := r.Context() vars := r.URL.Query() id := convertor.QueryInt[int32](vars, "id", 0) @@ -81,7 +81,7 @@ func (a *App) edit(w http.ResponseWriter, r *http.Request) { a.render.Render(ctx, w, department.Edit(ctx, vm)) } -func (a *App) save(w http.ResponseWriter, r *http.Request) { +func (a *app) save(w http.ResponseWriter, r *http.Request) { var req form.Department if err := binding.Form.Bind(r, &req); err != nil { a.render.JSONErr(w, binding.ValidatorErrors(err)) @@ -107,7 +107,7 @@ func (a *App) save(w http.ResponseWriter, r *http.Request) { } } -func (a *App) data(w http.ResponseWriter, r *http.Request) { +func (a *app) data(w http.ResponseWriter, r *http.Request) { ctx := r.Context() vars := r.URL.Query() t := vars.Get("type") @@ -130,7 +130,7 @@ func (a *App) data(w http.ResponseWriter, r *http.Request) { } } -func (a *App) refreshCache(w http.ResponseWriter, r *http.Request) { +func (a *app) refreshCache(w http.ResponseWriter, r *http.Request) { err := a.departmentService.RefreshCache(r.Context()) if err != nil { a.render.JSONErr(w, err.Error()) @@ -140,7 +140,7 @@ func (a *App) refreshCache(w http.ResponseWriter, r *http.Request) { a.render.JSONOk(w, "缓存刷新成功") } -func (a *App) rebuildParentPath(w http.ResponseWriter, r *http.Request) { +func (a *app) rebuildParentPath(w http.ResponseWriter, r *http.Request) { ctx := r.Context() err := a.departmentService.RebuildParentPath(ctx) if err != nil { diff --git a/internal/erpserver/handler/system/department/route.go b/internal/erpserver/handler/system/department/route.go index 6b7ba0d..ef584db 100644 --- a/internal/erpserver/handler/system/department/route.go +++ b/internal/erpserver/handler/system/department/route.go @@ -19,7 +19,7 @@ type Config struct { } func Routes(r chi.Router, cfg Config) { - app := NewApp(cfg.Render, cfg.DepartmentService) + app := newApp(cfg.Render, cfg.DepartmentService) r.Route("/department", func(r chi.Router) { r.Use(mid.Audit(cfg.Sm, cfg.Log)) diff --git a/internal/erpserver/handler/system/home/home.go b/internal/erpserver/handler/system/home/home.go index 371e8e7..64e6738 100644 --- a/internal/erpserver/handler/system/home/home.go +++ b/internal/erpserver/handler/system/home/home.go @@ -9,20 +9,20 @@ import ( "management/internal/pkg/render" ) -type App struct { +type app struct { render render.Renderer userService v1.UserService menuService v1.MenuService loginLogService v1.LoginLogService } -func NewApp( +func newApp( render render.Renderer, userService v1.UserService, menuService v1.MenuService, loginLogService v1.LoginLogService, -) *App { - return &App{ +) *app { + return &app{ render: render, userService: userService, menuService: menuService, @@ -30,12 +30,12 @@ func NewApp( } } -func (a *App) home(w http.ResponseWriter, r *http.Request) { +func (a *app) home(w http.ResponseWriter, r *http.Request) { ctx := r.Context() a.render.Render(ctx, w, home.Home(ctx)) } -func (a *App) dashboard(w http.ResponseWriter, r *http.Request) { +func (a *app) dashboard(w http.ResponseWriter, r *http.Request) { ctx := r.Context() auth := mid.GetUser(ctx) lt, _ := a.loginLogService.LoginTime(ctx, auth.Email) diff --git a/internal/erpserver/handler/system/home/route.go b/internal/erpserver/handler/system/home/route.go index d9ba1b9..ae83cc2 100644 --- a/internal/erpserver/handler/system/home/route.go +++ b/internal/erpserver/handler/system/home/route.go @@ -18,7 +18,7 @@ type Config struct { } func Routes(r chi.Router, cfg Config) { - app := NewApp(cfg.Render, cfg.UserService, cfg.MenuService, cfg.LoginLogService) + app := newApp(cfg.Render, cfg.UserService, cfg.MenuService, cfg.LoginLogService) r.With(mid.Authorize(cfg.Sm, cfg.MenuService)).Get("/home.html", app.home) r.With(mid.Authorize(cfg.Sm, cfg.MenuService)).Get("/dashboard", app.dashboard) diff --git a/internal/erpserver/handler/system/loginlog/login_log.go b/internal/erpserver/handler/system/loginlog/login_log.go index 1ab7725..b271103 100644 --- a/internal/erpserver/handler/system/loginlog/login_log.go +++ b/internal/erpserver/handler/system/loginlog/login_log.go @@ -10,19 +10,19 @@ import ( "management/internal/pkg/render" ) -type App struct { +type app struct { render render.Renderer loginLogService v1.LoginLogService } -func NewApp(render render.Renderer, loginLogService v1.LoginLogService) *App { - return &App{ +func newApp(render render.Renderer, loginLogService v1.LoginLogService) *app { + return &app{ render: render, loginLogService: loginLogService, } } -func (a *App) list(w http.ResponseWriter, r *http.Request) { +func (a *app) list(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: ctx := r.Context() diff --git a/internal/erpserver/handler/system/loginlog/route.go b/internal/erpserver/handler/system/loginlog/route.go index 376fb25..ee7b253 100644 --- a/internal/erpserver/handler/system/loginlog/route.go +++ b/internal/erpserver/handler/system/loginlog/route.go @@ -16,7 +16,7 @@ type Config struct { } func Routes(r chi.Router, cfg Config) { - app := NewApp(cfg.Render, cfg.LoginLogService) + app := newApp(cfg.Render, cfg.LoginLogService) r.Route("/login_log", func(r chi.Router) { r.Get("/list", app.list) diff --git a/internal/erpserver/handler/system/menu/menu.go b/internal/erpserver/handler/system/menu/menu.go index f303308..a746635 100644 --- a/internal/erpserver/handler/system/menu/menu.go +++ b/internal/erpserver/handler/system/menu/menu.go @@ -19,19 +19,19 @@ import ( const style = "layui-btn-primary layui-btn-sm" -type App struct { +type app struct { render render.Renderer menuService v1.MenuService } -func NewApp(render render.Renderer, menuService v1.MenuService) *App { - return &App{ +func newApp(render render.Renderer, menuService v1.MenuService) *app { + return &app{ render: render, menuService: menuService, } } -func (a *App) menus(w http.ResponseWriter, r *http.Request) { +func (a *app) menus(w http.ResponseWriter, r *http.Request) { ctx := r.Context() user := mid.GetUser(ctx) menus, err := a.menuService.OwerMenus(ctx, user.RoleID) @@ -43,7 +43,7 @@ func (a *App) menus(w http.ResponseWriter, r *http.Request) { a.render.JSON(w, menus) } -func (a *App) list(w http.ResponseWriter, r *http.Request) { +func (a *app) list(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: ctx := r.Context() @@ -67,12 +67,12 @@ func (a *App) list(w http.ResponseWriter, r *http.Request) { } } -func (a *App) add(w http.ResponseWriter, r *http.Request) { +func (a *app) add(w http.ResponseWriter, r *http.Request) { ctx := r.Context() a.render.Render(ctx, w, menu.Edit(ctx, &systemmodel.Menu{Style: style, Visible: true, Sort: 6666})) } -func (a *App) addChildren(w http.ResponseWriter, r *http.Request) { +func (a *app) addChildren(w http.ResponseWriter, r *http.Request) { ctx := r.Context() vars := r.URL.Query() parentID := convertor.QueryInt[int32](vars, "parentID", 0) @@ -88,7 +88,7 @@ func (a *App) addChildren(w http.ResponseWriter, r *http.Request) { a.render.Render(ctx, w, menu.Edit(ctx, vm)) } -func (a *App) edit(w http.ResponseWriter, r *http.Request) { +func (a *app) edit(w http.ResponseWriter, r *http.Request) { ctx := r.Context() vars := r.URL.Query() id := convertor.QueryInt[int32](vars, "id", 0) @@ -99,7 +99,7 @@ func (a *App) edit(w http.ResponseWriter, r *http.Request) { a.render.Render(ctx, w, menu.Edit(ctx, vm)) } -func (a *App) save(w http.ResponseWriter, r *http.Request) { +func (a *app) save(w http.ResponseWriter, r *http.Request) { id := convertor.ConvertInt[int32](r.PostFormValue("ID"), 0) name := r.PostFormValue("Name") displayName := r.PostFormValue("DisplayName") @@ -190,7 +190,7 @@ func (a *App) save(w http.ResponseWriter, r *http.Request) { } } -func (a *App) data(w http.ResponseWriter, r *http.Request) { +func (a *app) data(w http.ResponseWriter, r *http.Request) { ctx := r.Context() vars := r.URL.Query() t := vars.Get("type") @@ -216,7 +216,7 @@ func (a *App) data(w http.ResponseWriter, r *http.Request) { a.render.JSON(w, nil) } -func (a *App) refreshCache(w http.ResponseWriter, r *http.Request) { +func (a *app) refreshCache(w http.ResponseWriter, r *http.Request) { err := a.menuService.RefreshCache(r.Context()) if err != nil { a.render.JSONErr(w, err.Error()) diff --git a/internal/erpserver/handler/system/menu/route.go b/internal/erpserver/handler/system/menu/route.go index b36a383..2cdc2ad 100644 --- a/internal/erpserver/handler/system/menu/route.go +++ b/internal/erpserver/handler/system/menu/route.go @@ -18,7 +18,7 @@ type Config struct { } func Routes(r chi.Router, cfg Config) { - app := NewApp(cfg.Render, cfg.MenuService) + app := newApp(cfg.Render, cfg.MenuService) r.Get("/menus", app.menus) r.Route("/menu", func(r chi.Router) { diff --git a/internal/erpserver/handler/system/role/role.go b/internal/erpserver/handler/system/role/role.go index 180c678..dcbc5ab 100644 --- a/internal/erpserver/handler/system/role/role.go +++ b/internal/erpserver/handler/system/role/role.go @@ -15,21 +15,21 @@ import ( "management/internal/pkg/render" ) -type App struct { +type app struct { render render.Renderer roleService v1.RoleService menuService v1.MenuService } -func NewApp(render render.Renderer, roleService v1.RoleService, menuService v1.MenuService) *App { - return &App{ +func newApp(render render.Renderer, roleService v1.RoleService, menuService v1.MenuService) *app { + return &app{ render: render, roleService: roleService, menuService: menuService, } } -func (a *App) list(w http.ResponseWriter, r *http.Request) { +func (a *app) list(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: ctx := r.Context() @@ -61,12 +61,12 @@ func (a *App) list(w http.ResponseWriter, r *http.Request) { } } -func (a *App) add(w http.ResponseWriter, r *http.Request) { +func (a *app) add(w http.ResponseWriter, r *http.Request) { ctx := r.Context() a.render.Render(ctx, w, role.Edit(ctx, &system.Role{Sort: 6666})) } -func (a *App) addChildren(w http.ResponseWriter, r *http.Request) { +func (a *app) addChildren(w http.ResponseWriter, r *http.Request) { vars := r.URL.Query() parentID := convertor.QueryInt[int32](vars, "parentID", 0) vm := &system.Role{ParentID: parentID, Sort: 6666} @@ -74,7 +74,7 @@ func (a *App) addChildren(w http.ResponseWriter, r *http.Request) { a.render.Render(ctx, w, role.Edit(ctx, vm)) } -func (a *App) edit(w http.ResponseWriter, r *http.Request) { +func (a *app) edit(w http.ResponseWriter, r *http.Request) { ctx := r.Context() vars := r.URL.Query() id := convertor.QueryInt[int32](vars, "id", 0) @@ -85,7 +85,7 @@ func (a *App) edit(w http.ResponseWriter, r *http.Request) { a.render.Render(ctx, w, role.Edit(ctx, vm)) } -func (a *App) save(w http.ResponseWriter, r *http.Request) { +func (a *app) save(w http.ResponseWriter, r *http.Request) { var req form.Role if err := binding.Form.Bind(r, &req); err != nil { a.render.JSONErr(w, binding.ValidatorErrors(err)) @@ -110,7 +110,7 @@ func (a *App) save(w http.ResponseWriter, r *http.Request) { } } -func (a *App) data(w http.ResponseWriter, r *http.Request) { +func (a *app) data(w http.ResponseWriter, r *http.Request) { ctx := r.Context() vars := r.URL.Query() t := vars.Get("type") @@ -131,7 +131,7 @@ func (a *App) data(w http.ResponseWriter, r *http.Request) { } } -func (a *App) refreshCache(w http.ResponseWriter, r *http.Request) { +func (a *app) refreshCache(w http.ResponseWriter, r *http.Request) { err := a.roleService.RefreshCache(r.Context()) if err != nil { a.render.JSONErr(w, err.Error()) @@ -141,7 +141,7 @@ func (a *App) refreshCache(w http.ResponseWriter, r *http.Request) { a.render.JSONOk(w, "缓存刷新成功") } -func (a *App) rebuildParentPath(w http.ResponseWriter, r *http.Request) { +func (a *app) rebuildParentPath(w http.ResponseWriter, r *http.Request) { ctx := r.Context() err := a.roleService.RebuildParentPath(ctx) if err != nil { @@ -152,7 +152,7 @@ func (a *App) rebuildParentPath(w http.ResponseWriter, r *http.Request) { a.render.JSONOk(w, "重建成功") } -func (a *App) refreshRoleMenus(w http.ResponseWriter, r *http.Request) { +func (a *app) refreshRoleMenus(w http.ResponseWriter, r *http.Request) { ctx := r.Context() // 获取需要刷新的角色ID @@ -191,7 +191,7 @@ func (a *App) refreshRoleMenus(w http.ResponseWriter, r *http.Request) { a.render.JSONOk(w, "刷新成功") } -func (a *App) setMenu(w http.ResponseWriter, r *http.Request) { +func (a *app) setMenu(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: vars := r.URL.Query() diff --git a/internal/erpserver/handler/system/role/route.go b/internal/erpserver/handler/system/role/route.go index 6edd080..ee29bc2 100644 --- a/internal/erpserver/handler/system/role/route.go +++ b/internal/erpserver/handler/system/role/route.go @@ -19,7 +19,7 @@ type Config struct { } func Routes(r chi.Router, cfg Config) { - app := NewApp(cfg.Render, cfg.RoleService, cfg.MenuService) + app := newApp(cfg.Render, cfg.RoleService, cfg.MenuService) r.Route("/role", func(r chi.Router) { r.Use(mid.Audit(cfg.Sm, cfg.Log)) diff --git a/internal/erpserver/handler/system/user/route.go b/internal/erpserver/handler/system/user/route.go index 278e485..10fd20c 100644 --- a/internal/erpserver/handler/system/user/route.go +++ b/internal/erpserver/handler/system/user/route.go @@ -21,7 +21,7 @@ type Config struct { } func Routes(r chi.Router, cfg Config) { - app := NewApp( + app := newApp( cfg.Log, cfg.Sm, cfg.Render, diff --git a/internal/erpserver/handler/system/user/user.go b/internal/erpserver/handler/system/user/user.go index 13b392b..09c6c66 100644 --- a/internal/erpserver/handler/system/user/user.go +++ b/internal/erpserver/handler/system/user/user.go @@ -17,7 +17,7 @@ import ( "github.com/drhin/logger" ) -type App struct { +type app struct { log *logger.Logger sm session.Manager render render.Renderer @@ -26,15 +26,15 @@ type App struct { departmentService v1.DepartmentService } -func NewApp( +func newApp( log *logger.Logger, sm session.Manager, render render.Renderer, userService v1.UserService, roleService v1.RoleService, departmentService v1.DepartmentService, -) *App { - return &App{ +) *app { + return &app{ log: log, sm: sm, render: render, @@ -44,12 +44,12 @@ func NewApp( } } -func (a *App) add(w http.ResponseWriter, r *http.Request) { +func (a *app) add(w http.ResponseWriter, r *http.Request) { ctx := r.Context() a.render.Render(ctx, w, user.Edit(ctx, &systemmodel.User{HashedPassword: nil})) } -func (a *App) edit(w http.ResponseWriter, r *http.Request) { +func (a *app) edit(w http.ResponseWriter, r *http.Request) { ctx := r.Context() vars := r.URL.Query() id := convertor.QueryInt[int32](vars, "id", 0) @@ -63,7 +63,7 @@ func (a *App) edit(w http.ResponseWriter, r *http.Request) { a.render.Render(ctx, w, user.Edit(ctx, vm)) } -func (a *App) save(w http.ResponseWriter, r *http.Request) { +func (a *app) save(w http.ResponseWriter, r *http.Request) { var req form.User if err := binding.Form.Bind(r, &req); err != nil { a.render.JSONErr(w, binding.ValidatorErrors(err)) @@ -103,7 +103,7 @@ func (a *App) save(w http.ResponseWriter, r *http.Request) { } } -func (a *App) list(w http.ResponseWriter, r *http.Request) { +func (a *app) list(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: ctx := r.Context() @@ -135,14 +135,14 @@ func (a *App) list(w http.ResponseWriter, r *http.Request) { } } -func (a *App) profile(w http.ResponseWriter, r *http.Request) { +func (a *app) profile(w http.ResponseWriter, r *http.Request) { ctx := r.Context() u := mid.GetUser(ctx) vm, _ := a.userService.Get(ctx, u.ID) a.render.Render(ctx, w, user.Profile(ctx, vm)) } -func (a *App) data(w http.ResponseWriter, r *http.Request) { +func (a *app) data(w http.ResponseWriter, r *http.Request) { vars := r.URL.Query() t := vars.Get("type") if t == "xm_select" { diff --git a/internal/pkg/know/pearadmin/pearadmin.go b/internal/pkg/know/pearadmin/pearadmin.go index 1d44f92..034b8c4 100644 --- a/internal/pkg/know/pearadmin/pearadmin.go +++ b/internal/pkg/know/pearadmin/pearadmin.go @@ -65,7 +65,7 @@ var PearJson = &dto.PearConfig{ }, }, Other: dto.Other{ - KeepLoad: "200", + KeepLoad: "100", AutoHead: false, Footer: false, }, diff --git a/internal/pkg/session/redis.go b/internal/pkg/session/redis.go index 82c2072..56aae0b 100644 --- a/internal/pkg/session/redis.go +++ b/internal/pkg/session/redis.go @@ -17,12 +17,15 @@ const redisTimeout = 200 * time.Millisecond type RedisStore struct { // 内嵌 go-redis 客户端 client *redis.Client + // 存储键前缀 + prefix string } // NewRedisStore 是 RedisStore 的构造函数。 -func NewRedisStore(client *redis.Client) *RedisStore { +func NewRedisStore(client *redis.Client, prefix string) *RedisStore { return &RedisStore{ client: client, + prefix: prefix, } } @@ -34,6 +37,8 @@ func (s *RedisStore) Find(token string) ([]byte, bool, error) { // ✅ 必须: 无论函数如何返回,都调用 cancel() 来释放上下文资源 defer cancel() + token = s.prefix + token + // 使用 go-redis 的 Get 方法 data, err := s.client.Get(ctx, token).Bytes() if err != nil { @@ -59,6 +64,8 @@ func (s *RedisStore) Commit(token string, b []byte, expiry time.Time) error { // time.Until(expiry) 会计算出当前时间到 expiry 之间的时间差 ttl := time.Until(expiry) + token = s.prefix + token + // 使用 go-redis 的 Set 方法,并设置过期时间 // 如果 expiry 时间已经过去,ttl 会是负数,Redis 会立即删除这个 key,这正是我们期望的行为。 err := s.client.Set(ctx, token, b, ttl).Err() @@ -76,6 +83,8 @@ func (s *RedisStore) Delete(token string) error { // ✅ 必须: 无论函数如何返回,都调用 cancel() 来释放上下文资源 defer cancel() + token = s.prefix + token + // 使用 go-redis 的 Del 方法 err := s.client.Del(ctx, token).Err() if err != nil { diff --git a/internal/pkg/session/session.go b/internal/pkg/session/session.go index 005ccc7..68bb118 100644 --- a/internal/pkg/session/session.go +++ b/internal/pkg/session/session.go @@ -51,7 +51,8 @@ func NewSCSManager(client *redis.Client, conf *config.Config) (Manager, error) { // github.com/alexedwards/scs/pgxstore // sessionManager.Store = pgxstore.New(pool) // redis - sessionManager.Store = NewRedisStore(client) + prefix := "m:scs:" + sessionManager.Store = NewRedisStore(client, prefix) return &SCSSession{manager: sessionManager}, nil } diff --git a/modd.conf b/modd.conf index 324beef..48d316e 100644 --- a/modd.conf +++ b/modd.conf @@ -1,5 +1,6 @@ # start manage **/*.go **/**/**/*.tmpl **/**/**/**/*.tmpl !web/*.go !**/*_test.go { + prep: make templ prep: go build -o ./management . daemon +sigterm: ./management erp -c configs/config.dev.yaml } \ No newline at end of file