Apply .gitignore rules

This commit is contained in:
皮蛋13361098506
2025-01-06 16:21:36 +08:00
parent 1b77f62820
commit ccd2c530cf
580 changed files with 69806 additions and 0 deletions

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}