mirror of
https://github.com/tiger1103/gfast.git
synced 2026-09-21 02:04:07 +00:00
128 lines
2.5 KiB
Go
128 lines
2.5 KiB
Go
package task
|
|
|
|
import (
|
|
"gfast/app/model/admin/user_online"
|
|
"gfast/boot"
|
|
"github.com/goflyfox/gtoken/gtoken"
|
|
"github.com/gogf/gf/encoding/gjson"
|
|
"github.com/gogf/gf/frame/g"
|
|
"github.com/gogf/gf/os/gcache"
|
|
"github.com/gogf/gf/util/gconv"
|
|
)
|
|
|
|
func init() {
|
|
var task1 Entity
|
|
task1.FuncName = "test1"
|
|
task1.Param = nil
|
|
task1.Run = Test1
|
|
Add(task1)
|
|
|
|
var task2 Entity
|
|
task2.FuncName = "test2"
|
|
task2.Param = nil
|
|
task2.Run = Test2
|
|
Add(task2)
|
|
|
|
var checkUserOnline Entity
|
|
checkUserOnline.FuncName = "checkUserOnline"
|
|
checkUserOnline.Param = nil
|
|
checkUserOnline.Run = CheckUserOnline
|
|
Add(checkUserOnline)
|
|
}
|
|
|
|
//无参测试
|
|
func Test1() {
|
|
println("无参测试")
|
|
}
|
|
|
|
//传参测试
|
|
func Test2() {
|
|
//获取参数
|
|
task := GetByName("test2")
|
|
if task == nil {
|
|
return
|
|
}
|
|
for _, v := range task.Param {
|
|
println(v)
|
|
}
|
|
}
|
|
|
|
//检查在线用户
|
|
func CheckUserOnline() {
|
|
param := &user_online.ReqListSearch{
|
|
PageNum: 1,
|
|
PageSize: 50,
|
|
}
|
|
var total int
|
|
for {
|
|
var (
|
|
list []*user_online.Entity
|
|
err error
|
|
)
|
|
total, _, list, err = user_online.GetOnlineListPage(param, true)
|
|
if err != nil {
|
|
g.Log().Error(err)
|
|
break
|
|
}
|
|
if list == nil {
|
|
break
|
|
}
|
|
for _, entity := range list {
|
|
onlineInfo := GetOnlineInfo(entity.Token)
|
|
if onlineInfo == nil {
|
|
entity.Delete()
|
|
}
|
|
}
|
|
param.PageNum++
|
|
if param.PageNum*param.PageSize >= total {
|
|
break
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
//通过token获取登录用户数据
|
|
func GetOnlineInfo(token string) g.Map {
|
|
uuid, userKey := GetUuidUserKeyByToken(token)
|
|
cacheKey := boot.AdminGfToken.CacheKey + userKey
|
|
switch boot.AdminGfToken.CacheMode {
|
|
case gtoken.CacheModeCache:
|
|
userCacheValue := gcache.Get(cacheKey)
|
|
if userCacheValue == nil {
|
|
return nil
|
|
}
|
|
return gconv.Map(userCacheValue)
|
|
case gtoken.CacheModeRedis:
|
|
var userCache g.Map
|
|
userCacheJson, err := g.Redis().Do("GET", cacheKey)
|
|
if err != nil {
|
|
g.Log().Error("[GToken]cache get error", err)
|
|
return nil
|
|
}
|
|
if userCacheJson == nil {
|
|
return nil
|
|
}
|
|
err = gjson.DecodeTo(userCacheJson, &userCache)
|
|
if err != nil {
|
|
g.Log().Error("[GToken]cache get json error", err)
|
|
return nil
|
|
}
|
|
if uuid != userCache["uuid"] {
|
|
return nil
|
|
}
|
|
return userCache
|
|
}
|
|
return nil
|
|
}
|
|
|
|
//通过token获取uuid和userKey
|
|
func GetUuidUserKeyByToken(token string) (uuid, userKey string) {
|
|
decryptToken := boot.AdminGfToken.DecryptToken(token)
|
|
if !decryptToken.Success() {
|
|
return
|
|
}
|
|
userKey = decryptToken.GetString("userKey")
|
|
uuid = decryptToken.GetString("uuid")
|
|
return
|
|
}
|