fix: bff add configID
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
package logic
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"user/internal/dao"
|
||||
"user/user"
|
||||
|
||||
jsoniter "github.com/json-iterator/go"
|
||||
"pkg.local/redis"
|
||||
"pkg.local/utils"
|
||||
)
|
||||
|
||||
func okResponse(data any) *user.Response {
|
||||
buf, _ := json.Marshal(data)
|
||||
return &user.Response{
|
||||
Code: utils.Ok.Code,
|
||||
Msg: utils.Ok.Msg,
|
||||
Data: string(buf),
|
||||
}
|
||||
}
|
||||
|
||||
func failResponse(status utils.Status) *user.Response {
|
||||
return &user.Response{
|
||||
Code: status.Code,
|
||||
Msg: status.Msg,
|
||||
}
|
||||
}
|
||||
|
||||
func outResponse(status utils.Status, msg string) *user.Response {
|
||||
return &user.Response{
|
||||
Code: status.Code,
|
||||
Msg: msg,
|
||||
}
|
||||
}
|
||||
|
||||
func decryptMobile(mobile string) string {
|
||||
if mobile == utils.StringEmpty {
|
||||
return utils.StringEmpty
|
||||
}
|
||||
plain, err := utils.Crypto{}.AESDecryptECB(mobile)
|
||||
if err != nil {
|
||||
return utils.StringEmpty
|
||||
}
|
||||
return plain
|
||||
}
|
||||
|
||||
func toSession(info dao.UserInfo, mobilePlain string) dao.UserLoginSession {
|
||||
return dao.UserLoginSession{
|
||||
Id: info.Id,
|
||||
Openid: info.Openid,
|
||||
Username: info.Username,
|
||||
Nickname: info.Nickname,
|
||||
Avatar: info.Avatar,
|
||||
Mobile: mobilePlain,
|
||||
Gender: info.Gender,
|
||||
Birthday: info.Birthday,
|
||||
Type: info.Type,
|
||||
Account: info.Account,
|
||||
AppId: info.AppId,
|
||||
LastTime: utils.Now(),
|
||||
}
|
||||
}
|
||||
|
||||
func buildToken(session dao.UserLoginSession) dao.Token {
|
||||
seed := session.Mobile + session.Openid + utils.Now().String()
|
||||
token := utils.MD5Encrypt(seed)
|
||||
return dao.Token{
|
||||
Token: token,
|
||||
Refresh: utils.MD5Encrypt(seed + token),
|
||||
Info: session,
|
||||
}
|
||||
}
|
||||
|
||||
func setLogin(token, refresh string, session dao.UserLoginSession) utils.Status {
|
||||
expireMin := utils.GetConfigInt("base.login_out_time")
|
||||
expire := time.Duration(expireMin) * time.Minute
|
||||
refreshMin := utils.GetConfigInt("base.login_refresh_out_time")
|
||||
refreshExpire := time.Duration(refreshMin) * time.Minute
|
||||
|
||||
ctx := context.Background()
|
||||
userStr, _ := jsoniter.Marshal(session)
|
||||
|
||||
redisKey := utils.GetLoginKey(utils.LoginTypeUser, token)
|
||||
if err := redis.Client.Set(ctx, redisKey, userStr, expire).Err(); err != nil {
|
||||
return utils.Fail
|
||||
}
|
||||
|
||||
redisKeysKey := utils.GetLoginKeysKey(utils.LoginTypeUser, strconv.FormatInt(session.Id, utils.NumberTen))
|
||||
var loginInfo utils.LoginRedis
|
||||
if oldAuth, err := redis.Client.Get(ctx, redisKeysKey).Result(); err == nil {
|
||||
_ = jsoniter.Unmarshal([]byte(oldAuth), &loginInfo)
|
||||
if len(loginInfo.Token) > utils.NumberOne {
|
||||
redis.Client.Del(ctx, utils.GetLoginKey(utils.LoginTypeUser, loginInfo.Token))
|
||||
}
|
||||
if len(loginInfo.Refresh) > utils.NumberOne {
|
||||
redis.Client.Del(ctx, utils.GetLoginRefreshKey(utils.LoginTypeUser, loginInfo.Refresh))
|
||||
}
|
||||
}
|
||||
|
||||
loginInfo.Token = token
|
||||
loginInfo.Refresh = refresh
|
||||
loginInfo.Info = userStr
|
||||
newStr, _ := jsoniter.Marshal(loginInfo)
|
||||
if err := redis.Client.Set(ctx, redisKeysKey, newStr, refreshExpire).Err(); err != nil {
|
||||
return utils.Fail
|
||||
}
|
||||
refreshKey := utils.GetLoginRefreshKey(utils.LoginTypeUser, refresh)
|
||||
if err := redis.Client.Set(ctx, refreshKey, strconv.FormatInt(session.Id, utils.NumberTen), refreshExpire).Err(); err != nil {
|
||||
return utils.Fail
|
||||
}
|
||||
return utils.Ok
|
||||
}
|
||||
Reference in New Issue
Block a user