使用统一方法pgk进行调用
This commit is contained in:
@@ -13,6 +13,7 @@ type Mod struct {
|
||||
// return pgk.Cache
|
||||
//}
|
||||
|
||||
// Deprecated: Use pgk.Cache()
|
||||
func New(_name ...string) gcache.Adapter {
|
||||
|
||||
var cacheAdapterObj gcache.Adapter
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
package message
|
||||
|
||||
type MessageType int32
|
||||
|
||||
const (
|
||||
DingTalk MessageType = iota
|
||||
Wechat
|
||||
Email
|
||||
Sms
|
||||
Voice
|
||||
)
|
||||
@@ -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 += "×tamp=" + 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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user