Apply .gitignore rules
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
package zlibUtil
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"compress/zlib"
|
||||
"io"
|
||||
)
|
||||
|
||||
// 压缩
|
||||
// in:待压缩数据
|
||||
// level:压缩等级
|
||||
// 返回值:
|
||||
// 压缩后数据
|
||||
// 对应的错误
|
||||
func Compress(data []byte, level int) ([]byte, error) {
|
||||
var buffer bytes.Buffer
|
||||
compressor, err := zlib.NewWriterLevelDict(&buffer, level, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
compressor.Write(data)
|
||||
compressor.Close()
|
||||
|
||||
return buffer.Bytes(), nil
|
||||
}
|
||||
|
||||
// 解压缩
|
||||
// in:待解压缩数据
|
||||
// 返回值:
|
||||
// 解压缩后数据
|
||||
// 对应的错误
|
||||
func Decompress(data []byte) ([]byte, error) {
|
||||
dataReader := bytes.NewReader(data)
|
||||
zlibReader, err := zlib.NewReader(dataReader)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer zlibReader.Close()
|
||||
|
||||
var buffer bytes.Buffer
|
||||
_, err = io.Copy(&buffer, zlibReader)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return buffer.Bytes(), nil
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package coroutine_timer
|
||||
|
||||
// timerObj
|
||||
// @description: 定时调度对象
|
||||
type timerObj struct {
|
||||
// id 调度id
|
||||
id string
|
||||
|
||||
// tick 执行时间
|
||||
tick int64
|
||||
|
||||
// excuteAction 执行方法
|
||||
excuteAction func(interface{})
|
||||
|
||||
// paramObj 携带的参数
|
||||
paramObj interface{}
|
||||
|
||||
// needCheckId 是否需要校验id
|
||||
needCheckId bool
|
||||
}
|
||||
|
||||
// newTimerObj
|
||||
// @description: 构造调度对象
|
||||
// parameter:
|
||||
// @_id:id
|
||||
// @t:调度时间
|
||||
// @ea:调度方法
|
||||
// @pm:调度参数
|
||||
// return:
|
||||
// @*timerObj:
|
||||
func newTimerObj(_id string, t int64, ea func(interface{}), pm interface{}) *timerObj {
|
||||
result := &timerObj{
|
||||
id: _id,
|
||||
tick: t,
|
||||
excuteAction: ea,
|
||||
paramObj: pm,
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
package webServer
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
//已经登录的用户
|
||||
loginUserMap = make(map[int64]*TokenInfo)
|
||||
|
||||
//锁
|
||||
lock sync.RWMutex
|
||||
)
|
||||
|
||||
type TokenInfo struct {
|
||||
//管理员id
|
||||
Id int64
|
||||
|
||||
//管理员账号
|
||||
Account string
|
||||
|
||||
//过期时间
|
||||
ExpireTime time.Time
|
||||
}
|
||||
|
||||
// AddLoginUserToken 添加登录用户及其令牌信息到缓存中
|
||||
// 参数:
|
||||
//
|
||||
// token: 用户的登录令牌
|
||||
// tokenInfo: 令牌的详细信息,包括过期时间等
|
||||
func AddLoginUserToken(token int64, tokenInfo *TokenInfo) {
|
||||
|
||||
//添加锁防止并发
|
||||
lock.Lock()
|
||||
defer lock.Unlock()
|
||||
|
||||
// 默认24小时过期
|
||||
tokenInfo.ExpireTime = time.Now().Add(time.Hour * 24)
|
||||
|
||||
//移除旧的令牌
|
||||
for tokenKey, tokenInfoValue := range loginUserMap {
|
||||
if tokenInfo.Id == tokenInfoValue.Id {
|
||||
delete(loginUserMap, tokenKey)
|
||||
}
|
||||
}
|
||||
|
||||
// 将令牌与用户信息添加到全局的登录用户映射中
|
||||
loginUserMap[token] = tokenInfo
|
||||
}
|
||||
|
||||
// CheckToken 检查令牌是否有效
|
||||
// 参数:
|
||||
//
|
||||
// token: 需要检查的令牌字符串
|
||||
//
|
||||
// 返回值:
|
||||
//
|
||||
// bool: 表示令牌是否有效的布尔值,true表示有效,false表示无效
|
||||
func CheckToken(token int64) bool {
|
||||
|
||||
//添加锁防止并发
|
||||
lock.Lock()
|
||||
defer lock.Unlock()
|
||||
|
||||
// 获取当前时间
|
||||
now := time.Now()
|
||||
|
||||
// 获取令牌对应的用户信息
|
||||
tokenInfo, ok := loginUserMap[token]
|
||||
if !ok {
|
||||
// 如果没有找到对应的用户信息,则令牌无效
|
||||
return false
|
||||
}
|
||||
|
||||
// 获取令牌过期时间
|
||||
expireTime := tokenInfo.ExpireTime
|
||||
|
||||
// 如果令牌过期时间早于当前时间,则令牌无效
|
||||
if expireTime.Before(now) {
|
||||
|
||||
//移除令牌
|
||||
delete(loginUserMap, token)
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
//如果生效的话,则更新过期时间
|
||||
tokenInfo.ExpireTime = now.Add(time.Hour * 24)
|
||||
|
||||
return true
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
package initMgr
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
. "Framework/startMgr"
|
||||
"goutil/logUtil"
|
||||
)
|
||||
|
||||
var (
|
||||
funcMap = make(map[string]*FuncItem)
|
||||
mutex sync.Mutex
|
||||
operateName = "Init"
|
||||
)
|
||||
|
||||
// 注册方法(如果名称重复会panic)
|
||||
// name:方法名称(唯一标识)
|
||||
// moduleType:模块类型
|
||||
// definition:方法定义
|
||||
func Register(name string, moduleType ModuleType, definition func() error) {
|
||||
mutex.Lock()
|
||||
defer mutex.Unlock()
|
||||
|
||||
if _, exists := funcMap[name]; exists {
|
||||
panic(fmt.Sprintf("%s已经存在,请重新命名", name))
|
||||
}
|
||||
|
||||
funcMap[name] = NewFuncItem(name, moduleType, definition)
|
||||
}
|
||||
|
||||
// 调用一个方法
|
||||
// name:方法名称(唯一标识)
|
||||
// 返回值:
|
||||
// 错误对象
|
||||
func CallOne(name string) (err error) {
|
||||
mutex.Lock()
|
||||
defer mutex.Unlock()
|
||||
|
||||
if item, exists := funcMap[name]; !exists {
|
||||
panic(fmt.Sprintf("%s不存在", name))
|
||||
} else {
|
||||
// 调用方法
|
||||
err = item.Call2(operateName)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// 调用任意数量的方法
|
||||
// nameList:任意数量的方法名称
|
||||
// 返回值:
|
||||
// 错误列表
|
||||
func CallAny(nameList ...string) (errList []error) {
|
||||
mutex.Lock()
|
||||
defer mutex.Unlock()
|
||||
|
||||
for _, name := range nameList {
|
||||
if item, exists := funcMap[name]; !exists {
|
||||
panic(fmt.Sprintf("%s不存在", name))
|
||||
} else {
|
||||
// 调用方法
|
||||
if err := item.Call2(operateName); err != nil {
|
||||
errList = append(errList, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// 调用所有方法
|
||||
// 返回值:
|
||||
// 错误列表
|
||||
func CallAll() (errList []error) {
|
||||
mutex.Lock()
|
||||
defer mutex.Unlock()
|
||||
|
||||
startTime := time.Now()
|
||||
defer func() {
|
||||
logUtil.InfoLog(fmt.Sprintf("%s 执行总时间:%s", operateName, time.Since(startTime)))
|
||||
}()
|
||||
|
||||
for _, item := range funcMap {
|
||||
// 调用方法
|
||||
if err := item.Call2(operateName); err != nil {
|
||||
errList = append(errList, err)
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// 按照模块类型进行调用
|
||||
// moduleType:模块类型
|
||||
// 返回值:
|
||||
// errList:错误列表
|
||||
func CallType(moduleType ModuleType) (errList []error) {
|
||||
mutex.Lock()
|
||||
defer mutex.Unlock()
|
||||
|
||||
startTime := time.Now()
|
||||
defer func() {
|
||||
logUtil.InfoLog(fmt.Sprintf("%v %s 执行总时间:%s", moduleType, operateName, time.Since(startTime)))
|
||||
}()
|
||||
|
||||
for _, item := range funcMap {
|
||||
|
||||
if item.ModuleType != moduleType {
|
||||
continue
|
||||
}
|
||||
|
||||
// 调用方法
|
||||
if err := item.Call2(operateName); err != nil {
|
||||
errList = append(errList, err)
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user