使用统一方法pgk进行调用

This commit is contained in:
ayflying
2025-03-04 18:58:10 +08:00
parent 6eeb5a57cd
commit 0e55698a47
24 changed files with 1452 additions and 112 deletions

View File

@@ -13,6 +13,7 @@ type Mod struct {
// return pgk.Cache
//}
// Deprecated: Use pgk.Cache()
func New(_name ...string) gcache.Adapter {
var cacheAdapterObj gcache.Adapter

View File

@@ -1,101 +0,0 @@
package elasticsearch
import (
"context"
"encoding/json"
"fmt"
"github.com/elastic/go-elasticsearch/v8"
)
var (
es *elasticsearch.TypedClient
)
type elastic struct {
client *elasticsearch.TypedClient
}
func New(name ...string) *elastic {
// ES 配置
cfg := elasticsearch.Config{
Addresses: []string{
"http://ay.cname.com:9200",
},
}
if es == nil {
var err error
es, err = elasticsearch.NewTypedClient(cfg)
if err != nil {
fmt.Printf("elasticsearch.NewTypedClient failed, err:%v\n", err)
return &elastic{}
}
}
return &elastic{
client: es,
}
}
// createIndex 创建索引
func (s *elastic) CreateIndex(name string) {
resp, err := s.client.Indices.
Create(name).
Do(context.Background())
if err != nil {
fmt.Printf("create index failed, err:%v\n", err)
return
}
fmt.Printf("index:%#v\n", resp.Index)
}
// indexDocument 索引文档
func (s *elastic) IndexDocument(name string, key string, data interface{}) {
// 添加文档
resp, err := s.client.Index(name).
Id(key).
Document(data).
Do(context.Background())
if err != nil {
fmt.Printf("indexing document failed, err:%v\n", err)
return
}
fmt.Printf("result:%#v\n", resp.Result)
}
// getDocument 获取文档
func (s *elastic) GetDocument(name string, id string) (res json.RawMessage) {
resp, err := s.client.Get(name, id).
Do(context.Background())
if err != nil {
fmt.Printf("get document by id failed, err:%v\n", err)
return
}
fmt.Printf("fileds:%s\n", resp.Source_)
res = resp.Source_
return
}
// updateDocument 更新文档
func (s *elastic) UpdateDocument(name string, key string, data interface{}) {
resp, err := s.client.Update(name, key).
Doc(data). // 使用结构体变量更新
Do(context.Background())
if err != nil {
fmt.Printf("update document failed, err:%v\n", err)
return
}
fmt.Printf("result:%v\n", resp.Result)
}
// deleteDocument 删除 document
func (s *elastic) DeleteDocument(name string, key string) {
resp, err := s.client.Delete(name, key).
Do(context.Background())
if err != nil {
fmt.Printf("delete document failed, err:%v\n", err)
return
}
fmt.Printf("result:%v\n", resp.Result)
}

View File

@@ -1,11 +0,0 @@
package message
type MessageType int32
const (
DingTalk MessageType = iota
Wechat
Email
Sms
Voice
)

View File

@@ -1,43 +0,0 @@
package drive
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
"github.com/gogf/gf/v2/os/gtime"
)
type Mod struct {
DingTalkWebHook string
}
func Load(webHook string) *Mod {
return &Mod{
DingTalkWebHook: webHook,
}
}
func (m Mod) Send(value string) {
ctx := gctx.New()
// 从配置中获取发送者名称
name, _ := g.Cfg().Get(ctx, "name")
// 定义钉钉机器人发送消息的URL其中access_token为固定值
url := m.DingTalkWebHook
url += "&timestamp=" + gtime.Now().TimestampMilliStr()
// 使用goroutine异步发送消息
var post = g.Map{
"msgtype": "text",
"text": g.Map{
"content": "通知姬 " + name.String() + "\n" + value + "\n" + gtime.Now().String(),
},
}
// 构建发送的消息体,包含消息类型和内容
_, err := g.Client().Discovery(nil).ContentJson().Post(ctx, url, post)
if err != nil {
g.Log().Info(ctx, err)
}
return
}

View File

@@ -1,16 +0,0 @@
package message
import "github.com/ayflying/utility_go/package/message/drive"
type MessageV1 interface {
Send(value string)
}
func New(typ MessageType, host string) MessageV1 {
switch typ {
case DingTalk:
return drive.Load(host)
}
return nil
}

View File

@@ -1,51 +0,0 @@
package utility
import (
"github.com/ayflying/utility_go/tools"
"math/rand"
"time"
)
// rands 结构体用于封装 rand.Rand 实例,以提供随机数生成功能。
// 该结构体目前不包含锁,因此在多线程环境下使用时应注意同步问题。
type rands struct {
r *rand.Rand
// lock sync.Mutex
}
// Rand 是一个全局的 rands 实例,用于在整个程序中生成随机数。
// 它使用当前时间的毫秒值作为随机源,以确保每次程序运行时都能获得不同的随机数序列。
var Rand = rands{
r: rand.New(rand.NewSource(time.Now().UnixMilli())),
}
// RandByArrInt 函数从一个整数数组中按权重选择一个索引,并返回该索引。
// 权重是数组中相应元素的值。该函数通过计算累积和来确定选择的索引。
// 参数 v 是一个泛型参数,限制为实现了 Number 接口的类型。
// 返回值是一个整数,表示在数组中的索引。
func RandByArrInt[v tools.Number](s []v) int {
sv := 0
for i := range s {
sv += int(s[i])
}
r := Rand.Intn(sv)
var all v
for i := range s {
all += s[i]
if all > v(r) {
return i
}
}
return 0
}
// Intn 方法通过给定的整数 i 生成一个 0 到 i-1 之间的随机数。
// 如果 i 为0则会触发 panic。
// 参数 i 是一个整数,表示生成随机数的上限(不包含)。
// 返回值 ret 是一个在 0 到 i-1 范围内的随机整数。
func (r rands) Intn(i int) (ret int) {
if i == 0 {
panic(1)
}
return rand.Intn(i)
}

View File

@@ -21,13 +21,14 @@ type F64CountRank struct {
updateTs string // 更新时间key
}
type Data struct {
type RankData struct {
Id int64
Score int64
Rank int32
UpdateTs int64
}
// Deprecated:Use pgk.Rank()
func New() *Mod {
return &Mod{}
}
@@ -44,6 +45,8 @@ func (s *Mod) Load() {
// 返回值:
//
// *F64CountRank: 返回一个指向新创建的F64CountRank实例的指针
//
// Deprecated:Use pgk.Rank().CreateF64CountRank(fmt.Sprintf("rank:%v", 1))
func (s *Mod) CreateF64CountRank(name string) *F64CountRank {
// 初始化F64CountRank实例的name和updateTs字段
// name字段用于标识排行榜的名称格式为"rank:<name>:score"
@@ -318,7 +321,7 @@ func (r *F64CountRank) UpdateScore(id int64, score int64) (err error) {
//
// list - 排名信息列表
// err - 错误信息,如果执行过程中遇到错误
func (r *F64CountRank) GetRankInfosNotTs(offset, count int) (list []*Data, err error) {
func (r *F64CountRank) GetRankInfosNotTs(offset, count int) (list []*RankData, err error) {
// 初始化存储成员ID的切片
var members []int64
@@ -338,7 +341,7 @@ func (r *F64CountRank) GetRankInfosNotTs(offset, count int) (list []*Data, err e
}
// 根据获取的成员ID数量初始化排名信息列表
list = make([]*Data, len(members))
list = make([]*RankData, len(members))
for i := range members {
// 获取当前成员ID
id := members[i]
@@ -358,9 +361,9 @@ func (r *F64CountRank) GetRankInfosNotTs(offset, count int) (list []*Data, err e
// 返回值:
//
// rankInfo - 包含id的分数和排名信息的指针如果没有找到则返回nil
func (r *F64CountRank) GetIdRankNotTs(id int64) (rankInfo *Data) {
func (r *F64CountRank) GetIdRankNotTs(id int64) (rankInfo *RankData) {
// 初始化rankInfo结构体设置id其他字段将通过查询填充
rankInfo = &Data{Id: id}
rankInfo = &RankData{Id: id}
// 查询有序集合中指定id的分数
score, err := g.Redis().ZScore(ctx, r.name, id)

View File

@@ -36,6 +36,7 @@ type Mod struct {
cfg DataType
}
// Deprecated: Use Pgk.S3()
func New(_name ...string) *Mod {
var name string
if len(_name) > 0 {