完善资源关闭逻辑,添加数据库和Redis连接的退出处理
This commit is contained in:
@@ -52,33 +52,33 @@ func loginByPhone(c *fiber.Ctx, req *LoginReq) error {
|
||||
}
|
||||
|
||||
// 查找用户 todo 获取权限信息
|
||||
var tx = q.Q.Begin()
|
||||
|
||||
var user *models.User
|
||||
user, err = tx.User.
|
||||
Where(tx.User.Phone.Eq(req.Username)).
|
||||
Take()
|
||||
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return err
|
||||
}
|
||||
|
||||
// 如果用户不存在,初始化用户 todo 保存默认权限信息
|
||||
if user == nil {
|
||||
user = &models.User{
|
||||
Phone: req.Username,
|
||||
Name: req.Username,
|
||||
err = q.Q.Transaction(func(tx *q.Query) error {
|
||||
user, err = tx.User.
|
||||
Where(tx.User.Phone.Eq(req.Username)).
|
||||
Take()
|
||||
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// 更新用户的登录时间
|
||||
user.LastLogin = time.Now()
|
||||
user.LastLoginHost = c.IP()
|
||||
user.LastLoginAgent = c.Get("User-Agent")
|
||||
if err := tx.User.Omit(q.User.AdminID).Save(user); err != nil {
|
||||
return err
|
||||
}
|
||||
// 如果用户不存在,初始化用户 todo 保存默认权限信息
|
||||
if user == nil {
|
||||
user = &models.User{
|
||||
Phone: req.Username,
|
||||
Name: req.Username,
|
||||
}
|
||||
}
|
||||
|
||||
err = tx.Commit()
|
||||
// 更新用户的登录时间
|
||||
user.LastLogin = time.Now()
|
||||
user.LastLoginHost = c.IP()
|
||||
user.LastLoginAgent = c.Get("User-Agent")
|
||||
if err := tx.User.Omit(q.User.AdminID).Save(user); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"platform/pkg/rds"
|
||||
q "platform/web/queries"
|
||||
"time"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
)
|
||||
|
||||
func Temp(c *fiber.Ctx) error {
|
||||
|
||||
id := c.Query("id")
|
||||
result, err := rds.Client.Get(c.Context(), "channel:"+id).Result()
|
||||
channels, err := q.Channel.Debug().Where(
|
||||
q.Channel.Expiration.Lt(time.Now().Add(3 * time.Minute)),
|
||||
).Find()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return c.JSON(fiber.Map{
|
||||
"result": result,
|
||||
"result": channels,
|
||||
})
|
||||
}
|
||||
|
||||
11
web/web.go
11
web/web.go
@@ -10,6 +10,8 @@ import (
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/gofiber/fiber/v2/middleware/logger"
|
||||
"github.com/gofiber/fiber/v2/middleware/requestid"
|
||||
"github.com/google/uuid"
|
||||
"github.com/jxskiss/base62"
|
||||
)
|
||||
|
||||
import _ "net/http/pprof"
|
||||
@@ -36,6 +38,7 @@ func New(config *Config) (*Server, error) {
|
||||
|
||||
func (s *Server) Run() error {
|
||||
|
||||
// config
|
||||
s.fiber = fiber.New(fiber.Config{
|
||||
ErrorHandler: ErrorHandler,
|
||||
})
|
||||
@@ -43,7 +46,12 @@ func (s *Server) Run() error {
|
||||
s.fiber.Use(logger.New(logger.Config{
|
||||
DisableColors: false,
|
||||
}))
|
||||
s.fiber.Use(requestid.New())
|
||||
s.fiber.Use(requestid.New(requestid.Config{
|
||||
Generator: func() string {
|
||||
binary, _ := uuid.New().MarshalBinary()
|
||||
return base62.EncodeToString(binary)
|
||||
},
|
||||
}))
|
||||
|
||||
ApplyRouters(s.fiber)
|
||||
|
||||
@@ -56,6 +64,7 @@ func (s *Server) Run() error {
|
||||
}
|
||||
}()
|
||||
|
||||
// listen
|
||||
port := env.AppPort
|
||||
slog.Info("Server started on :" + port)
|
||||
err := s.fiber.Listen(":" + port)
|
||||
|
||||
Reference in New Issue
Block a user