2023-12-25 02:15:59 +08:00
|
|
|
|
package tokenDAO
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"PersonalMain/internal/model/do"
|
2023-12-26 15:34:38 +08:00
|
|
|
|
"PersonalMain/utility/CustomError"
|
2023-12-25 02:15:59 +08:00
|
|
|
|
"PersonalMain/utility/Processing"
|
|
|
|
|
"context"
|
|
|
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// CreateToken
|
|
|
|
|
//
|
|
|
|
|
// 创建Token业务
|
|
|
|
|
func CreateToken() do.TokenDO {
|
|
|
|
|
token := do.TokenDO{
|
|
|
|
|
Id: nil,
|
|
|
|
|
UserId: nil,
|
|
|
|
|
Token: Processing.CreateToken(),
|
|
|
|
|
ExpiredAt: time.Now().Add(time.Minute * 10),
|
|
|
|
|
CreatedAt: time.Now(),
|
|
|
|
|
}
|
|
|
|
|
_, err := g.Model("xf_token").Data(token).OmitEmpty().Insert()
|
|
|
|
|
if err == nil {
|
2023-12-26 15:34:38 +08:00
|
|
|
|
g.Log().Cat("Database").Cat("Token").Notice(context.Background(), "Token", token.Token, "创建成功")
|
2023-12-25 02:15:59 +08:00
|
|
|
|
return token
|
|
|
|
|
} else {
|
2023-12-26 15:34:38 +08:00
|
|
|
|
g.Log().Cat("Database").Cat("Token").Error(context.Background(), err.Error())
|
2023-12-25 02:15:59 +08:00
|
|
|
|
return do.TokenDO{}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GetToken
|
|
|
|
|
//
|
|
|
|
|
// 获取Token业务
|
|
|
|
|
func GetToken(token string) *do.TokenDO {
|
|
|
|
|
var tokenDO do.TokenDO
|
|
|
|
|
result, err := g.Model("xf_token").Where("token = ?", token).One()
|
|
|
|
|
if err == nil {
|
|
|
|
|
// 检查数据库是否为空
|
|
|
|
|
if !result.IsEmpty() {
|
|
|
|
|
err := result.Struct(&tokenDO)
|
|
|
|
|
if err != nil {
|
2023-12-26 15:34:38 +08:00
|
|
|
|
g.Log().Cat("Database").Cat("Token").Error(context.Background(), err.Error())
|
2023-12-25 02:15:59 +08:00
|
|
|
|
return nil
|
|
|
|
|
} else {
|
2023-12-26 15:34:38 +08:00
|
|
|
|
g.Log().Cat("Database").Cat("Token").Notice(context.Background(), "Token", tokenDO.Token, "获取成功")
|
2023-12-25 02:15:59 +08:00
|
|
|
|
return &tokenDO
|
|
|
|
|
}
|
|
|
|
|
} else {
|
2023-12-26 15:34:38 +08:00
|
|
|
|
g.Log().Cat("Database").Cat("Token").Notice(context.Background(), "Token", token, "获取失败,原因:Token不存在")
|
2023-12-25 02:15:59 +08:00
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
} else {
|
2023-12-26 15:34:38 +08:00
|
|
|
|
g.Log().Cat("Database").Cat("Token").Error(context.Background(), err.Error())
|
2023-12-25 02:15:59 +08:00
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// DeleteToken
|
|
|
|
|
//
|
|
|
|
|
// 删除Token业务
|
2023-12-26 15:34:38 +08:00
|
|
|
|
func DeleteToken(token string) bool {
|
2023-12-25 02:15:59 +08:00
|
|
|
|
_, err := g.Model("xf_token").Where("token = ?", token).Delete()
|
|
|
|
|
if err != nil {
|
2023-12-26 15:34:38 +08:00
|
|
|
|
g.Log().Cat("Database").Cat("Token").Error(context.Background(), err.Error())
|
|
|
|
|
return false
|
2023-12-25 02:15:59 +08:00
|
|
|
|
} else {
|
2023-12-26 15:34:38 +08:00
|
|
|
|
g.Log().Cat("Database").Cat("Token").Notice(context.Background(), "Token", token, "删除成功")
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// UpdateToken
|
|
|
|
|
//
|
|
|
|
|
// 更新Token业务
|
2023-12-27 01:48:24 +08:00
|
|
|
|
func UpdateToken(token string, userId *uint64) (*do.TokenDO, error) {
|
2023-12-26 15:34:38 +08:00
|
|
|
|
// 查找 token
|
|
|
|
|
getTokenDO := GetToken(token)
|
|
|
|
|
if getTokenDO != nil {
|
|
|
|
|
if getTokenDO.UserId == nil {
|
|
|
|
|
newTokenDO := do.TokenDO{
|
|
|
|
|
Id: nil,
|
|
|
|
|
UserId: userId,
|
|
|
|
|
Token: (*getTokenDO).Token,
|
|
|
|
|
ExpiredAt: time.Now().Add(time.Hour * 24),
|
|
|
|
|
CreatedAt: (*getTokenDO).CreatedAt,
|
|
|
|
|
}
|
|
|
|
|
_, err := g.Model("xf_token").Data(newTokenDO).Where("token = ?", getTokenDO.Token).Update()
|
|
|
|
|
if err != nil {
|
|
|
|
|
g.Log().Cat("Database").Cat("Token").Error(context.Background(), err.Error())
|
|
|
|
|
errorData := &CustomError.CustomError{Message: "DatabaseError"}
|
|
|
|
|
return nil, errorData
|
|
|
|
|
} else {
|
|
|
|
|
g.Log().Cat("Database").Cat("Token").Notice(context.Background(), "Token", getTokenDO.Token, "更新成功")
|
|
|
|
|
return &newTokenDO, nil
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
g.Log().Cat("Database").Cat("Token").Notice(context.Background(), "Token", getTokenDO.Token, "更新失败,原因:该Token已登陆")
|
|
|
|
|
errorData := &CustomError.CustomError{Message: "AlreadyLogin"}
|
|
|
|
|
return nil, errorData
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
errorData := &CustomError.CustomError{Message: "TokenNotFound"}
|
|
|
|
|
return nil, errorData
|
2023-12-25 02:15:59 +08:00
|
|
|
|
}
|
|
|
|
|
}
|