| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- 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 {
- user_online.Model.Delete("id", entity.Id)
- }
- }
- 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
- }
|