71 lines
1.6 KiB
Go
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)
|
|
}
|