From f3e2f816094b727c8462246068bcea5cf8230f40 Mon Sep 17 00:00:00 2001 From: dushixiang Date: Sun, 21 Mar 2021 15:00:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=90=AF=E5=8A=A8=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E6=97=B6=E5=88=9D=E5=A7=8B=E5=8C=96=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 3 ++- pkg/service/job.go | 2 +- pkg/service/num.go | 31 +++++++++++++++++++++++++++++++ pkg/service/session.go | 23 +++++++++++++---------- pkg/service/user.go | 18 ++++++++++-------- server/api/routes.go | 35 ++++++++++++++++++++++------------- 6 files changed, 79 insertions(+), 33 deletions(-) create mode 100644 pkg/service/num.go diff --git a/main.go b/main.go index b597bea..22ecc86 100644 --- a/main.go +++ b/main.go @@ -34,9 +34,10 @@ func Run() error { // 为了兼容之前调用global包的代码 后期预期会改为调用pgk/config global.Config = config.GlobalCfg + global.Cache = api.SetupCache() db := api.SetupDB() e := api.SetupRoutes(db) - global.Cache = api.SetupCache() + if global.Config.ResetPassword != "" { return api.ResetPassword() } diff --git a/pkg/service/job.go b/pkg/service/job.go index 81c6ea2..d923ebc 100644 --- a/pkg/service/job.go +++ b/pkg/service/job.go @@ -260,7 +260,7 @@ func (r JobService) ExecJobById(id string) (err error) { func (r JobService) InitJob() error { jobs, _ := r.jobRepository.FindByFunc(constant.FuncCheckAssetStatusJob) - if jobs == nil { + if len(jobs) == 0 { job := model.Job{ ID: utils.UUID(), Name: "资产状态检测", diff --git a/pkg/service/num.go b/pkg/service/num.go new file mode 100644 index 0000000..04cf7ba --- /dev/null +++ b/pkg/service/num.go @@ -0,0 +1,31 @@ +package service + +import ( + "strconv" + + "next-terminal/server/model" + "next-terminal/server/repository" +) + +type NumService struct { + numRepository *repository.NumRepository +} + +func NewNumService(numRepository *repository.NumRepository) *NumService { + return &NumService{numRepository: numRepository} +} + +func (r NumService) InitNums() error { + nums, err := r.numRepository.FindAll() + if err != nil { + return err + } + if len(nums) == 0 { + for i := 0; i <= 30; i++ { + if err := r.numRepository.Create(&model.Num{I: strconv.Itoa(i)}); err != nil { + return err + } + } + } + return nil +} diff --git a/pkg/service/session.go b/pkg/service/session.go index 670e415..ae6b267 100644 --- a/pkg/service/session.go +++ b/pkg/service/session.go @@ -15,18 +15,21 @@ func NewSessionService(sessionRepository *repository.SessionRepository) *Session return &SessionService{sessionRepository: sessionRepository} } -func (r SessionService) Fix() { - sessions, _ := r.sessionRepository.FindByStatus(constant.Connected) - if sessions == nil { - return +func (r SessionService) FixSessionState() error { + sessions, err := r.sessionRepository.FindByStatus(constant.Connected) + if err != nil { + return err } - for i := range sessions { - session := model.Session{ - Status: constant.Disconnected, - DisconnectedTime: utils.NowJsonTime(), + if len(sessions) > 0 { + for i := range sessions { + session := model.Session{ + Status: constant.Disconnected, + DisconnectedTime: utils.NowJsonTime(), + } + + _ = r.sessionRepository.UpdateById(&session, sessions[i].ID) } - - _ = r.sessionRepository.UpdateById(&session, sessions[i].ID) } + return nil } diff --git a/pkg/service/user.go b/pkg/service/user.go index 84dc418..b57f67c 100644 --- a/pkg/service/user.go +++ b/pkg/service/user.go @@ -58,21 +58,23 @@ func (r UserService) InitUser() (err error) { return nil } -func (r UserService) FixedOnlineState() error { +func (r UserService) FixedUserOnlineState() error { // 修正用户登录状态 onlineUsers, err := r.userRepository.FindOnlineUsers() if err != nil { return err } - for i := range onlineUsers { - logs, err := r.loginLogRepository.FindAliveLoginLogsByUserId(onlineUsers[i].ID) - if err != nil { - return err - } - if len(logs) == 0 { - if err := r.userRepository.UpdateOnline(onlineUsers[i].ID, false); err != nil { + if len(onlineUsers) > 0 { + for i := range onlineUsers { + logs, err := r.loginLogRepository.FindAliveLoginLogsByUserId(onlineUsers[i].ID) + if err != nil { return err } + if len(logs) == 0 { + if err := r.userRepository.UpdateOnline(onlineUsers[i].ID, false); err != nil { + return err + } + } } } return nil diff --git a/server/api/routes.go b/server/api/routes.go index 094d332..0a67e1b 100644 --- a/server/api/routes.go +++ b/server/api/routes.go @@ -3,7 +3,6 @@ package api import ( "fmt" "net/http" - "strconv" "strings" "time" @@ -45,6 +44,7 @@ var ( userService *service.UserService sessionService *service.SessionService mailService *service.MailService + numService *service.NumService ) func SetupRoutes(db *gorm.DB) *echo.Echo { @@ -56,6 +56,10 @@ func SetupRoutes(db *gorm.DB) *echo.Echo { log.WithError(err).Error("初始化数据异常") } + if err := ReloadData(); err != nil { + return nil + } + e := echo.New() e.HideBanner = true //e.Logger = log.GetEchoLogger() @@ -213,6 +217,17 @@ func SetupRoutes(db *gorm.DB) *echo.Echo { return e } +func ReloadData() error { + if err := ReloadAccessSecurity(); err != nil { + return err + } + + if err := ReloadToken(); err != nil { + return err + } + return nil +} + func InitRepository(db *gorm.DB) { userRepository = repository.NewUserRepository(db) userGroupRepository = repository.NewUserGroupRepository(db) @@ -235,33 +250,27 @@ func InitService() { userService = service.NewUserService(userRepository, loginLogRepository) sessionService = service.NewSessionService(sessionRepository) mailService = service.NewMailService(propertyRepository) + numService = service.NewNumService(numRepository) } func InitDBData() (err error) { if err := propertyService.InitProperties(); err != nil { return err } - if err := userService.InitUser(); err != nil { + if err := numService.InitNums(); err != nil { return err } - if err := userService.FixedOnlineState(); err != nil { + if err := userService.InitUser(); err != nil { return err } if err := jobService.InitJob(); err != nil { return err } - - sessionService.Fix() - if err := ReloadAccessSecurity(); err != nil { + if err := userService.FixedUserOnlineState(); err != nil { return err } - nums, _ := numRepository.FindAll() - if nums == nil { - for i := 0; i <= 30; i++ { - if err := numRepository.Create(&model.Num{I: strconv.Itoa(i)}); err != nil { - return err - } - } + if err := sessionService.FixSessionState(); err != nil { + return err } return nil }