Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d9ab1be2e7 | ||
|
|
4b77cd140d |
237
api/pkg/v1/pkg.pb.go
Normal file
237
api/pkg/v1/pkg.pb.go
Normal file
@@ -0,0 +1,237 @@
|
||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.28.1
|
||||
// protoc v3.20.0
|
||||
// source: pkg/v1/pkg.proto
|
||||
|
||||
package v1
|
||||
|
||||
import (
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
)
|
||||
|
||||
const (
|
||||
// Verify that this generated code is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||
)
|
||||
|
||||
// 定义 NoticeType 枚举
|
||||
type NoticeType int32
|
||||
|
||||
const (
|
||||
NoticeType_DINGTALK NoticeType = 0
|
||||
NoticeType_WECHAT NoticeType = 1
|
||||
NoticeType_EMAIL NoticeType = 2
|
||||
NoticeType_SMS NoticeType = 3
|
||||
NoticeType_VOICE NoticeType = 4
|
||||
)
|
||||
|
||||
// Enum value maps for NoticeType.
|
||||
var (
|
||||
NoticeType_name = map[int32]string{
|
||||
0: "DINGTALK",
|
||||
1: "WECHAT",
|
||||
2: "EMAIL",
|
||||
3: "SMS",
|
||||
4: "VOICE",
|
||||
}
|
||||
NoticeType_value = map[string]int32{
|
||||
"DINGTALK": 0,
|
||||
"WECHAT": 1,
|
||||
"EMAIL": 2,
|
||||
"SMS": 3,
|
||||
"VOICE": 4,
|
||||
}
|
||||
)
|
||||
|
||||
func (x NoticeType) Enum() *NoticeType {
|
||||
p := new(NoticeType)
|
||||
*p = x
|
||||
return p
|
||||
}
|
||||
|
||||
func (x NoticeType) String() string {
|
||||
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||
}
|
||||
|
||||
func (NoticeType) Descriptor() protoreflect.EnumDescriptor {
|
||||
return file_pkg_v1_pkg_proto_enumTypes[0].Descriptor()
|
||||
}
|
||||
|
||||
func (NoticeType) Type() protoreflect.EnumType {
|
||||
return &file_pkg_v1_pkg_proto_enumTypes[0]
|
||||
}
|
||||
|
||||
func (x NoticeType) Number() protoreflect.EnumNumber {
|
||||
return protoreflect.EnumNumber(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use NoticeType.Descriptor instead.
|
||||
func (NoticeType) EnumDescriptor() ([]byte, []int) {
|
||||
return file_pkg_v1_pkg_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
// 排行榜数据
|
||||
type RankData struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
|
||||
Score int64 `protobuf:"varint,2,opt,name=score,proto3" json:"score,omitempty"`
|
||||
Rank int32 `protobuf:"varint,3,opt,name=rank,proto3" json:"rank,omitempty"`
|
||||
UpdateTs int64 `protobuf:"varint,4,opt,name=update_ts,json=updateTs,proto3" json:"update_ts,omitempty"`
|
||||
}
|
||||
|
||||
func (x *RankData) Reset() {
|
||||
*x = RankData{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_pkg_v1_pkg_proto_msgTypes[0]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *RankData) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*RankData) ProtoMessage() {}
|
||||
|
||||
func (x *RankData) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_pkg_v1_pkg_proto_msgTypes[0]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use RankData.ProtoReflect.Descriptor instead.
|
||||
func (*RankData) Descriptor() ([]byte, []int) {
|
||||
return file_pkg_v1_pkg_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
func (x *RankData) GetId() int64 {
|
||||
if x != nil {
|
||||
return x.Id
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *RankData) GetScore() int64 {
|
||||
if x != nil {
|
||||
return x.Score
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *RankData) GetRank() int32 {
|
||||
if x != nil {
|
||||
return x.Rank
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *RankData) GetUpdateTs() int64 {
|
||||
if x != nil {
|
||||
return x.UpdateTs
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
var File_pkg_v1_pkg_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_pkg_v1_pkg_proto_rawDesc = []byte{
|
||||
0x0a, 0x10, 0x70, 0x6b, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6b, 0x67, 0x2e, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x12, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x22, 0x61, 0x0a, 0x08, 0x52,
|
||||
0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
|
||||
0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a,
|
||||
0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e,
|
||||
0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x73, 0x18, 0x04,
|
||||
0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x73, 0x2a, 0x45,
|
||||
0x0a, 0x0a, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08,
|
||||
0x44, 0x49, 0x4e, 0x47, 0x54, 0x41, 0x4c, 0x4b, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x57, 0x45,
|
||||
0x43, 0x48, 0x41, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10,
|
||||
0x02, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x4d, 0x53, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x4f,
|
||||
0x49, 0x43, 0x45, 0x10, 0x04, 0x42, 0x2b, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
|
||||
0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x79, 0x66, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x2f, 0x75, 0x74, 0x69,
|
||||
0x6c, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6b, 0x67, 0x2f,
|
||||
0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
file_pkg_v1_pkg_proto_rawDescOnce sync.Once
|
||||
file_pkg_v1_pkg_proto_rawDescData = file_pkg_v1_pkg_proto_rawDesc
|
||||
)
|
||||
|
||||
func file_pkg_v1_pkg_proto_rawDescGZIP() []byte {
|
||||
file_pkg_v1_pkg_proto_rawDescOnce.Do(func() {
|
||||
file_pkg_v1_pkg_proto_rawDescData = protoimpl.X.CompressGZIP(file_pkg_v1_pkg_proto_rawDescData)
|
||||
})
|
||||
return file_pkg_v1_pkg_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_pkg_v1_pkg_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
||||
var file_pkg_v1_pkg_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
|
||||
var file_pkg_v1_pkg_proto_goTypes = []interface{}{
|
||||
(NoticeType)(0), // 0: package.NoticeType
|
||||
(*RankData)(nil), // 1: package.RankData
|
||||
}
|
||||
var file_pkg_v1_pkg_proto_depIdxs = []int32{
|
||||
0, // [0:0] is the sub-list for method output_type
|
||||
0, // [0:0] is the sub-list for method input_type
|
||||
0, // [0:0] is the sub-list for extension type_name
|
||||
0, // [0:0] is the sub-list for extension extendee
|
||||
0, // [0:0] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_pkg_v1_pkg_proto_init() }
|
||||
func file_pkg_v1_pkg_proto_init() {
|
||||
if File_pkg_v1_pkg_proto != nil {
|
||||
return
|
||||
}
|
||||
if !protoimpl.UnsafeEnabled {
|
||||
file_pkg_v1_pkg_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*RankData); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
File: protoimpl.DescBuilder{
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_pkg_v1_pkg_proto_rawDesc,
|
||||
NumEnums: 1,
|
||||
NumMessages: 1,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
GoTypes: file_pkg_v1_pkg_proto_goTypes,
|
||||
DependencyIndexes: file_pkg_v1_pkg_proto_depIdxs,
|
||||
EnumInfos: file_pkg_v1_pkg_proto_enumTypes,
|
||||
MessageInfos: file_pkg_v1_pkg_proto_msgTypes,
|
||||
}.Build()
|
||||
File_pkg_v1_pkg_proto = out.File
|
||||
file_pkg_v1_pkg_proto_rawDesc = nil
|
||||
file_pkg_v1_pkg_proto_goTypes = nil
|
||||
file_pkg_v1_pkg_proto_depIdxs = nil
|
||||
}
|
||||
83
drivers/db/elasticsearch/elasticsearch.go
Normal file
83
drivers/db/elasticsearch/elasticsearch.go
Normal file
@@ -0,0 +1,83 @@
|
||||
package elasticsearch
|
||||
|
||||
import (
|
||||
"github.com/elastic/go-elasticsearch/v8"
|
||||
)
|
||||
|
||||
var (
|
||||
es *elasticsearch.TypedClient
|
||||
)
|
||||
|
||||
type elastic struct {
|
||||
client *elasticsearch.TypedClient
|
||||
}
|
||||
|
||||
//func (d *Driver) Insert(ctx context.Context, table string, data interface{}, batch ...int) (res sql.Result, err error) {
|
||||
//
|
||||
// return
|
||||
//}
|
||||
//
|
||||
//// createIndex 创建索引
|
||||
//func (d *Driver) CreateIndex(name string) {
|
||||
//
|
||||
// resp, err := d.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 (d *Driver) IndexDocument(name string, key string, data interface{}) {
|
||||
//
|
||||
// // 添加文档
|
||||
// resp, err := d.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 (d *Driver) GetDocument(name string, id string) (res json.RawMessage) {
|
||||
// resp, err := d.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:%d\n", resp.Source_)
|
||||
// res = resp.Source_
|
||||
// return
|
||||
//}
|
||||
//
|
||||
//// updateDocument 更新文档
|
||||
//func (d *Driver) UpdateDocument(name string, key string, data interface{}) {
|
||||
//
|
||||
// resp, err := d.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 (d *Driver) DeleteDocument(name string, key string) {
|
||||
// resp, err := d.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)
|
||||
//}
|
||||
39
drivers/db/elasticsearch/es_open.go
Normal file
39
drivers/db/elasticsearch/es_open.go
Normal file
@@ -0,0 +1,39 @@
|
||||
package elasticsearch
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"github.com/elastic/go-elasticsearch/v8"
|
||||
"github.com/gogf/gf/v2/database/gdb"
|
||||
"github.com/gogf/gf/v2/errors/gcode"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
)
|
||||
|
||||
func (d *Driver) Open(config *gdb.ConfigNode) (db *sql.DB, err error) {
|
||||
var (
|
||||
source string
|
||||
underlyingDriverName = "elasticsearch"
|
||||
)
|
||||
source = config.Host
|
||||
|
||||
cfg := elasticsearch.Config{
|
||||
Addresses: []string{
|
||||
config.Host,
|
||||
},
|
||||
}
|
||||
|
||||
es, err = elasticsearch.NewTypedClient(cfg)
|
||||
//if err != nil {
|
||||
// fmt.Printf("elasticsearch.NewTypedClient failed, err:%v\n", err)
|
||||
// return
|
||||
//}
|
||||
|
||||
if db, err = sql.Open(underlyingDriverName, source); err != nil {
|
||||
err = gerror.WrapCodef(
|
||||
gcode.CodeDbOperationError, err,
|
||||
`sql.Open failed for driver "%s" by source "%s"`, underlyingDriverName, source,
|
||||
)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
47
drivers/db/elasticsearch/load.go
Normal file
47
drivers/db/elasticsearch/load.go
Normal file
@@ -0,0 +1,47 @@
|
||||
package elasticsearch
|
||||
|
||||
import (
|
||||
"github.com/gogf/gf/v2/database/gdb"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// Driver is the driver for mysql database.
|
||||
type Driver struct {
|
||||
*gdb.Core
|
||||
}
|
||||
|
||||
const (
|
||||
quoteChar = "`"
|
||||
)
|
||||
|
||||
func init() {
|
||||
var (
|
||||
err error
|
||||
driverObj = New()
|
||||
driverNames = g.SliceStr{"es", "elasticsearch"}
|
||||
)
|
||||
for _, driverName := range driverNames {
|
||||
if err = gdb.Register(driverName, driverObj); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// New create and returns a driver that implements gdb.Driver, which supports operations for MySQL.
|
||||
func New() gdb.Driver {
|
||||
return &Driver{}
|
||||
}
|
||||
|
||||
// New creates and returns a database object for mysql.
|
||||
// It implements the interface of gdb.Driver for extra database driver installation.
|
||||
func (d *Driver) New(core *gdb.Core, node *gdb.ConfigNode) (res gdb.DB, err error) {
|
||||
res = &Driver{
|
||||
Core: core,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// GetChars returns the security char for this type of database.
|
||||
func (d *Driver) GetChars() (charLeft string, charRight string) {
|
||||
return quoteChar, quoteChar
|
||||
}
|
||||
53
drivers/db/found/found.go
Normal file
53
drivers/db/found/found.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package found
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"github.com/gogf/gf/v2/database/gdb"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
// Driver is the driver for mysql database.
|
||||
type Driver struct {
|
||||
*gdb.Core
|
||||
}
|
||||
|
||||
func (d *Driver) Open(config *gdb.ConfigNode) (*sql.DB, error) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
const (
|
||||
quoteChar = "`"
|
||||
)
|
||||
|
||||
func init() {
|
||||
var (
|
||||
err error
|
||||
driverObj = New()
|
||||
driverNames = g.SliceStr{"es", "found"}
|
||||
)
|
||||
for _, driverName := range driverNames {
|
||||
if err = gdb.Register(driverName, driverObj); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// New create and returns a driver that implements gdb.Driver, which supports operations for MySQL.
|
||||
func New() gdb.Driver {
|
||||
return &Driver{}
|
||||
}
|
||||
|
||||
// New creates and returns a database object for mysql.
|
||||
// It implements the interface of gdb.Driver for extra database driver installation.
|
||||
func (d *Driver) New(core *gdb.Core, node *gdb.ConfigNode) (res gdb.DB, err error) {
|
||||
res = &Driver{
|
||||
Core: core,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// GetChars returns the security char for this type of database.
|
||||
func (d *Driver) GetChars() (charLeft string, charRight string) {
|
||||
return quoteChar, quoteChar
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
syntax = "proto3";
|
||||
package package;
|
||||
|
||||
option go_package = "github.com/ayflying/utility_go/api/pgk/v1";
|
||||
option go_package = "github.com/ayflying/utility_go/api/pkg/v1";
|
||||
|
||||
|
||||
// 定义 NoticeType 枚举
|
||||
189
pkg/config/config.go
Normal file
189
pkg/config/config.go
Normal file
@@ -0,0 +1,189 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/apolloconfig/agollo/v4"
|
||||
apolloConfig "github.com/apolloconfig/agollo/v4/env/config"
|
||||
"github.com/apolloconfig/agollo/v4/storage"
|
||||
"github.com/gogf/gf/contrib/config/apollo/v2"
|
||||
"github.com/gogf/gf/v2/container/gvar"
|
||||
"github.com/gogf/gf/v2/encoding/gjson"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gfile"
|
||||
"github.com/gogf/gf/v2/os/gres"
|
||||
"github.com/gogf/gf/v2/text/gstr"
|
||||
"sync"
|
||||
)
|
||||
|
||||
var (
|
||||
//ApolloCfg *apolloConfig.AppConfig
|
||||
ApolloCfg *apollo.Config
|
||||
ApolloListener []string
|
||||
Item2Obj = map[string]Load{}
|
||||
)
|
||||
|
||||
// load接口定义了Load方法,用于加载数据
|
||||
type Load interface {
|
||||
Load(cfg ...string)
|
||||
}
|
||||
|
||||
func NewV1() *Cfg {
|
||||
return &Cfg{}
|
||||
}
|
||||
|
||||
type Cfg struct {
|
||||
Lock sync.Mutex
|
||||
}
|
||||
|
||||
func (c *Cfg) GetDbFile(name string) (res *g.Var, err error) {
|
||||
get2, err := g.Model("game_config").
|
||||
Where("name", name).Master().Value("data")
|
||||
err = get2.Scan(&res)
|
||||
if res == nil {
|
||||
res = &gvar.Var{}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (c *Cfg) GetFile(filename string, obj ...Load) (jsonObj *gjson.Json, err error) {
|
||||
pathStr := "manifest/game/"
|
||||
filePath := pathStr + filename + ".json"
|
||||
//err := gres.Load(pathStr + filename)
|
||||
|
||||
//载入静态资源到文件对象
|
||||
err = gres.Load(filePath)
|
||||
var bytes []byte
|
||||
|
||||
if gfile.IsFile(filePath) {
|
||||
bytes = gfile.GetBytes(filePath)
|
||||
} else {
|
||||
bytes = gres.GetContent(filePath)
|
||||
}
|
||||
|
||||
jsonObj, err = gjson.DecodeToJson(bytes)
|
||||
//g.Dump(filePath, jsonObj)
|
||||
return
|
||||
}
|
||||
|
||||
// getUrlFile 获取远程配置
|
||||
func (c *Cfg) GetUrlFile(name string) (jsonObj *gjson.Json, err error) {
|
||||
urlStr := fmt.Sprintf("http://sdf.sdfs.sdf/%s.json", name)
|
||||
getUrl, err := g.Client().Discovery(nil).Get(nil, urlStr)
|
||||
bytes := getUrl.ReadAll()
|
||||
jsonObj, err = gjson.DecodeToJson(bytes)
|
||||
return
|
||||
}
|
||||
|
||||
// 获取阿波罗
|
||||
//func (c *Cfg) GetApollo(name string, obj Load) (jsonObj *gjson.Json, err error) {
|
||||
// jsonObj, err = c.GetApolloV2(name, obj)
|
||||
// return
|
||||
//
|
||||
// //c.Lock.Lock()
|
||||
// //defer c.Lock.Unlock()
|
||||
// //
|
||||
// //Item2Obj[name+".json"] = obj
|
||||
// //var cfg = apolloConfig.AppConfig{
|
||||
// // AppID: ApolloCfg.AppID,
|
||||
// // Cluster: ApolloCfg.Cluster,
|
||||
// // IP: ApolloCfg.IP,
|
||||
// // NamespaceName: name + ".json",
|
||||
// // Secret: ApolloCfg.Secret,
|
||||
// // IsBackupConfig: ApolloCfg.IsBackupConfig,
|
||||
// // BackupConfigPath: ApolloCfg.BackupConfigPath,
|
||||
// // SyncServerTimeout: 60,
|
||||
// // MustStart: true,
|
||||
// //}
|
||||
// ////cfg.NamespaceName = name + ".json"
|
||||
// //
|
||||
// //client, err := agollo.StartWithConfig(func() (*apolloConfig.AppConfig, error) {
|
||||
// // return ApolloCfg, nil
|
||||
// //})
|
||||
// //if client == nil {
|
||||
// // return
|
||||
// //}
|
||||
// //var getStr string
|
||||
// //var getApollo *storage.Config
|
||||
// //for range 5 {
|
||||
// // getApollo = client.GetConfig(cfg.NamespaceName)
|
||||
// // if getApollo != nil {
|
||||
// // break
|
||||
// // }
|
||||
// // time.Sleep(time.Second * 5)
|
||||
// //}
|
||||
// //
|
||||
// //if getApollo != nil {
|
||||
// // getStr = getApollo.GetValue("content")
|
||||
// // if getStr != "" {
|
||||
// // //写入配置
|
||||
// // gfile.PutContents(path.Join("manifest", "game", name+".json"), getStr)
|
||||
// // }
|
||||
// //} else {
|
||||
// // jsonObj, err = c.GetFile(name)
|
||||
// //}
|
||||
// //jsonObj, err = gjson.DecodeToJson(getStr)
|
||||
// ////首次运行加入监听器
|
||||
// //if !gstr.InArray(ApolloListener, name) {
|
||||
// // c2 := &CustomChangeListener{}
|
||||
// // client.AddChangeListener(c2)
|
||||
// // ApolloListener = append(ApolloListener, name)
|
||||
// //}
|
||||
// //return
|
||||
//}
|
||||
|
||||
func (c *Cfg) GetApollo(name string, obj Load) (jsonObj *gjson.Json, err error) {
|
||||
Item2Obj[name+".json"] = obj
|
||||
|
||||
// 接入阿波罗配置
|
||||
ApolloCfg.NamespaceName = name + ".json"
|
||||
adapter, err := apollo.New(nil, *ApolloCfg)
|
||||
if err != nil {
|
||||
g.Log().Fatalf(nil, `%+v`, err)
|
||||
}
|
||||
// Change the adapter of default configuration instance.
|
||||
g.Cfg(name).SetAdapter(adapter)
|
||||
|
||||
//首次运行加入监听器
|
||||
if !gstr.InArray(ApolloListener, name+".json") {
|
||||
//放置监听器
|
||||
client, _ := agollo.StartWithConfig(func() (*apolloConfig.AppConfig, error) {
|
||||
return &apolloConfig.AppConfig{
|
||||
AppID: ApolloCfg.AppID,
|
||||
Cluster: ApolloCfg.Cluster,
|
||||
NamespaceName: ApolloCfg.NamespaceName,
|
||||
IP: ApolloCfg.IP,
|
||||
IsBackupConfig: ApolloCfg.IsBackupConfig,
|
||||
BackupConfigPath: ApolloCfg.BackupConfigPath,
|
||||
Secret: ApolloCfg.Secret,
|
||||
SyncServerTimeout: ApolloCfg.SyncServerTimeout,
|
||||
MustStart: ApolloCfg.MustStart,
|
||||
}, nil
|
||||
})
|
||||
c2 := &CustomChangeListener{}
|
||||
client.AddChangeListener(c2)
|
||||
ApolloListener = append(ApolloListener, name+".json")
|
||||
}
|
||||
|
||||
cfg, err := g.Cfg(name).Get(nil, "content")
|
||||
cfg.Scan(&jsonObj)
|
||||
return
|
||||
}
|
||||
|
||||
// 阿波罗监听器
|
||||
type CustomChangeListener struct {
|
||||
wg sync.WaitGroup
|
||||
}
|
||||
|
||||
func (c *CustomChangeListener) OnChange(changeEvent *storage.ChangeEvent) {
|
||||
g.Log().Debugf(nil, "当前Namespace变化了:%v", changeEvent.Namespace)
|
||||
filename := changeEvent.Namespace
|
||||
if obj, ok := Item2Obj[filename]; ok {
|
||||
//重载配置文件
|
||||
obj.Load(changeEvent.Changes["content"].NewValue.(string))
|
||||
}
|
||||
}
|
||||
|
||||
func (c *CustomChangeListener) OnNewestChange(event *storage.FullChangeEvent) {
|
||||
//write your code here
|
||||
|
||||
}
|
||||
@@ -33,7 +33,6 @@ func New(name ...string) *elastic {
|
||||
return &elastic{
|
||||
client: es,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// createIndex 创建索引
|
||||
|
||||
@@ -3,6 +3,7 @@ package pkg
|
||||
import (
|
||||
v1 "github.com/ayflying/utility_go/api/pgk/v1"
|
||||
"github.com/ayflying/utility_go/pkg/aycache"
|
||||
"github.com/ayflying/utility_go/pkg/config"
|
||||
"github.com/ayflying/utility_go/pkg/notice"
|
||||
"github.com/ayflying/utility_go/pkg/rank"
|
||||
"github.com/ayflying/utility_go/pkg/s3"
|
||||
@@ -33,3 +34,7 @@ func Rank() *rank.Mod {
|
||||
func Websocket() *websocket.SocketV1 {
|
||||
return websocket.NewV1()
|
||||
}
|
||||
|
||||
func Config() *config.Cfg {
|
||||
return config.NewV1()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user