Files
lone-services/admin/internal/logic/loginitemslogic.go
T
gjs 867cee46bb
CI / changes (push) Successful in 2s
CI / docker-bff (push) Has been skipped
CI / docker-product (push) Has been skipped
CI / docker-admin (push) Successful in 3m28s
admin loginitems, longinkickedout
2026-08-14 11:59:56 +08:00

71 lines
1.6 KiB
Go

package logic
import (
"admin/internal/dao"
"context"
"admin/admin"
"admin/internal/svc"
jsoniter "github.com/json-iterator/go"
"github.com/zeromicro/go-zero/core/logx"
"pkg.local/redis"
"pkg.local/utils"
)
type LoginItemsLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
BaseLogic
}
func NewLoginItemsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *LoginItemsLogic {
return &LoginItemsLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *LoginItemsLogic) LoginItems(in *admin.AdminEmptyRequest) (*admin.Response, error) {
var items utils.LoginRedis
var info dao.JwtInfo
var infos []dao.JwtInfo
cursor := uint64(0)
match := utils.GetLoginKeysKey(utils.LoginTypeAdmin, "*")
count := int64(100000)
scanKeys, _, err := redis.Client.Scan(l.ctx, cursor, match, count).Result()
if err != nil {
l.Logger.Error(err)
return l.out(utils.Fail, "获取登录信息失败")
}
for _, scanKey := range scanKeys {
json, err := redis.Client.Get(l.ctx, scanKey).Result()
if err != nil {
l.Logger.Error(err)
return l.out(utils.Fail, "获取登录信息失败")
}
err = jsoniter.Unmarshal([]byte(json), &items)
if err != nil {
l.Logger.Error(err)
return l.fail(utils.ErrorJsonDataError)
}
err = jsoniter.Unmarshal(items.Info, &info)
if err != nil {
l.Logger.Error(err)
return l.fail(utils.ErrorJsonDataError)
}
infos = append(infos, dao.JwtInfo{
Id: info.Id,
Phone: info.Phone,
Name: info.Name,
Avatar: info.Avatar,
Email: info.Email,
LastTime: info.LastTime,
})
}
return l.ok(infos)
}