mirror of
https://github.com/tiger1103/gfast.git
synced 2026-09-21 02:04:07 +00:00
路由架构修改,定时任务修复
This commit is contained in:
@@ -1,5 +1,15 @@
|
||||
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"
|
||||
@@ -12,6 +22,12 @@ func init() {
|
||||
task2.Param = nil
|
||||
task2.Run = Test2
|
||||
Add(task2)
|
||||
|
||||
var checkUserOnline Entity
|
||||
checkUserOnline.FuncName = "checkUserOnline"
|
||||
checkUserOnline.Param = nil
|
||||
checkUserOnline.Run = CheckUserOnline
|
||||
Add(checkUserOnline)
|
||||
}
|
||||
|
||||
//无参测试
|
||||
@@ -30,3 +46,82 @@ func Test2() {
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user