优化启动程序时初始化数据的代码逻辑

This commit is contained in:
dushixiang 2021-03-21 15:00:39 +08:00
parent fc631d2304
commit f3e2f81609
6 changed files with 79 additions and 33 deletions

View File

@ -34,9 +34,10 @@ func Run() error {
// 为了兼容之前调用global包的代码 后期预期会改为调用pgk/config // 为了兼容之前调用global包的代码 后期预期会改为调用pgk/config
global.Config = config.GlobalCfg global.Config = config.GlobalCfg
global.Cache = api.SetupCache()
db := api.SetupDB() db := api.SetupDB()
e := api.SetupRoutes(db) e := api.SetupRoutes(db)
global.Cache = api.SetupCache()
if global.Config.ResetPassword != "" { if global.Config.ResetPassword != "" {
return api.ResetPassword() return api.ResetPassword()
} }

View File

@ -260,7 +260,7 @@ func (r JobService) ExecJobById(id string) (err error) {
func (r JobService) InitJob() error { func (r JobService) InitJob() error {
jobs, _ := r.jobRepository.FindByFunc(constant.FuncCheckAssetStatusJob) jobs, _ := r.jobRepository.FindByFunc(constant.FuncCheckAssetStatusJob)
if jobs == nil { if len(jobs) == 0 {
job := model.Job{ job := model.Job{
ID: utils.UUID(), ID: utils.UUID(),
Name: "资产状态检测", Name: "资产状态检测",

31
pkg/service/num.go Normal file
View File

@ -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
}

View File

@ -15,12 +15,13 @@ func NewSessionService(sessionRepository *repository.SessionRepository) *Session
return &SessionService{sessionRepository: sessionRepository} return &SessionService{sessionRepository: sessionRepository}
} }
func (r SessionService) Fix() { func (r SessionService) FixSessionState() error {
sessions, _ := r.sessionRepository.FindByStatus(constant.Connected) sessions, err := r.sessionRepository.FindByStatus(constant.Connected)
if sessions == nil { if err != nil {
return return err
} }
if len(sessions) > 0 {
for i := range sessions { for i := range sessions {
session := model.Session{ session := model.Session{
Status: constant.Disconnected, Status: constant.Disconnected,
@ -29,4 +30,6 @@ func (r SessionService) Fix() {
_ = r.sessionRepository.UpdateById(&session, sessions[i].ID) _ = r.sessionRepository.UpdateById(&session, sessions[i].ID)
} }
}
return nil
} }

View File

@ -58,12 +58,13 @@ func (r UserService) InitUser() (err error) {
return nil return nil
} }
func (r UserService) FixedOnlineState() error { func (r UserService) FixedUserOnlineState() error {
// 修正用户登录状态 // 修正用户登录状态
onlineUsers, err := r.userRepository.FindOnlineUsers() onlineUsers, err := r.userRepository.FindOnlineUsers()
if err != nil { if err != nil {
return err return err
} }
if len(onlineUsers) > 0 {
for i := range onlineUsers { for i := range onlineUsers {
logs, err := r.loginLogRepository.FindAliveLoginLogsByUserId(onlineUsers[i].ID) logs, err := r.loginLogRepository.FindAliveLoginLogsByUserId(onlineUsers[i].ID)
if err != nil { if err != nil {
@ -75,6 +76,7 @@ func (r UserService) FixedOnlineState() error {
} }
} }
} }
}
return nil return nil
} }

View File

@ -3,7 +3,6 @@ package api
import ( import (
"fmt" "fmt"
"net/http" "net/http"
"strconv"
"strings" "strings"
"time" "time"
@ -45,6 +44,7 @@ var (
userService *service.UserService userService *service.UserService
sessionService *service.SessionService sessionService *service.SessionService
mailService *service.MailService mailService *service.MailService
numService *service.NumService
) )
func SetupRoutes(db *gorm.DB) *echo.Echo { func SetupRoutes(db *gorm.DB) *echo.Echo {
@ -56,6 +56,10 @@ func SetupRoutes(db *gorm.DB) *echo.Echo {
log.WithError(err).Error("初始化数据异常") log.WithError(err).Error("初始化数据异常")
} }
if err := ReloadData(); err != nil {
return nil
}
e := echo.New() e := echo.New()
e.HideBanner = true e.HideBanner = true
//e.Logger = log.GetEchoLogger() //e.Logger = log.GetEchoLogger()
@ -213,6 +217,17 @@ func SetupRoutes(db *gorm.DB) *echo.Echo {
return e 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) { func InitRepository(db *gorm.DB) {
userRepository = repository.NewUserRepository(db) userRepository = repository.NewUserRepository(db)
userGroupRepository = repository.NewUserGroupRepository(db) userGroupRepository = repository.NewUserGroupRepository(db)
@ -235,34 +250,28 @@ func InitService() {
userService = service.NewUserService(userRepository, loginLogRepository) userService = service.NewUserService(userRepository, loginLogRepository)
sessionService = service.NewSessionService(sessionRepository) sessionService = service.NewSessionService(sessionRepository)
mailService = service.NewMailService(propertyRepository) mailService = service.NewMailService(propertyRepository)
numService = service.NewNumService(numRepository)
} }
func InitDBData() (err error) { func InitDBData() (err error) {
if err := propertyService.InitProperties(); err != nil { if err := propertyService.InitProperties(); err != nil {
return err return err
} }
if err := userService.InitUser(); err != nil { if err := numService.InitNums(); err != nil {
return err return err
} }
if err := userService.FixedOnlineState(); err != nil { if err := userService.InitUser(); err != nil {
return err return err
} }
if err := jobService.InitJob(); err != nil { if err := jobService.InitJob(); err != nil {
return err return err
} }
if err := userService.FixedUserOnlineState(); err != nil {
sessionService.Fix()
if err := ReloadAccessSecurity(); err != nil {
return err return err
} }
nums, _ := numRepository.FindAll() if err := sessionService.FixSessionState(); err != nil {
if nums == nil {
for i := 0; i <= 30; i++ {
if err := numRepository.Create(&model.Num{I: strconv.Itoa(i)}); err != nil {
return err return err
} }
}
}
return nil return nil
} }