路由架构修改,定时任务修复

This commit is contained in:
yxh
2020-08-07 12:13:39 +08:00
parent 913184f09e
commit 7c85e49905
20 changed files with 831 additions and 229 deletions
+95
View File
@@ -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
}