Initial commit

This commit is contained in:
Donny
2019-04-22 20:46:32 +08:00
commit 49ab8aadd1
25441 changed files with 4055000 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
"go_test",
)
go_library(
name = "go_default_library",
srcs = [
"conf.go",
"resource.go",
],
importpath = "go-common/app/admin/main/aegis/server/databus",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/admin/main/aegis/model:go_default_library",
"//app/admin/main/aegis/model/resource:go_default_library",
"//library/conf/env:go_default_library",
"//library/log:go_default_library",
"//library/queue/databus:go_default_library",
"//library/time:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)
go_test(
name = "go_default_test",
srcs = ["resource_test.go"],
embed = [":go_default_library"],
tags = ["automanaged"],
)

View File

@@ -0,0 +1,53 @@
package databus
import (
"time"
"go-common/library/conf/env"
"go-common/library/queue/databus"
xtime "go-common/library/time"
)
type conf struct {
Key string
Secret string
Addr string
}
var (
_defaultAddrConfig = map[string]*conf{
env.DeployEnvUat: {
Key: "4c76cbb7a985ac90",
Secret: "43bb22ce34a6b13e7814f09cb8116522",
Addr: "172.18.33.50:6205",
},
env.DeployEnvPre: {
Key: "4c76cbb7a985ac90",
Secret: "8c22a196bf00d623b69cba4e61b1f7dc",
Addr: "172.18.21.90:6205",
},
env.DeployEnvProd: {
Key: "4c76cbb7a985ac90",
Secret: "8c22a196bf00d623b69cba4e61b1f7dc",
Addr: "172.18.21.90:6205",
},
}
_defaultConfig = &databus.Config{
Key: "0PtMsLLxWyyvoTgAyLCD",
Secret: "0PtMsLLxWyyvoTgAyLCE",
Group: "AegisResource-MainArchive-P",
Topic: "AegisResource-T",
Action: "pub",
Buffer: 10240,
Name: "aegis-admin/databus",
Proto: "tcp",
Addr: "172.16.33.158:6205",
Active: 100,
Idle: 10,
DialTimeout: xtime.Duration(time.Millisecond * 200),
ReadTimeout: xtime.Duration(time.Millisecond * 200),
WriteTimeout: xtime.Duration(time.Millisecond * 200),
IdleTimeout: xtime.Duration(time.Second * 80),
}
)

View File

@@ -0,0 +1,182 @@
package databus
import (
"context"
"encoding/json"
"errors"
"time"
"go-common/app/admin/main/aegis/model"
"go-common/app/admin/main/aegis/model/resource"
"go-common/library/conf/env"
"go-common/library/log"
"go-common/library/queue/databus"
)
//var
var (
ErrInfo = errors.New("error info")
ErrNilAgent = errors.New("nil agent")
_formtTime = "2006-01-02 15:04:05"
agent *databus.Databus
)
//RscMsg .
type RscMsg struct {
Action string `json:"action"`
BizID int64 `json:"business_id"`
Raw json.RawMessage `json:"raw"`
}
//AddInfo info for add
type AddInfo struct {
BusinessID int64 `json:"business_id"`
NetID int64 `json:"net_id"`
OID string `json:"oid"`
MID int64 `json:"mid"`
Content string `json:"content"`
Extra1 int64 `json:"extra1"`
Extra2 int64 `json:"extra2"`
Extra3 int64 `json:"extra3"`
Extra4 int64 `json:"extra4"`
Extra5 int64 `json:"extra5"`
Extra6 int64 `json:"extra6"`
Extra1s string `json:"extra1s"`
Extra2s string `json:"extra2s"`
Extra3s string `json:"extra3s"`
Extra4s string `json:"extra4s"`
MetaData string `json:"metadata"`
ExtraTime1 time.Time
OCtime time.Time
Ptime time.Time
}
//UpdateInfo info for update
type UpdateInfo = model.UpdateOption
//CancelInfo info for cancel
type CancelInfo = model.CancelOption
//InitAegis .
func InitAegis(c *databus.Config) {
if c == nil {
c = _defaultConfig
if d, ok := _defaultAddrConfig[env.DeployEnv]; ok {
c.Key = d.Key
c.Secret = d.Secret
c.Addr = d.Addr
}
}
if agent != nil {
agent.Close()
}
agent = databus.New(c)
}
//CloseAegis .
func CloseAegis() {
if agent != nil {
agent.Close()
}
}
//Add .
func Add(m *AddInfo) (err error) {
if agent == nil {
return ErrNilAgent
}
if m == nil || m.BusinessID <= 0 || m.NetID <= 0 || len(m.OID) == 0 {
return ErrInfo
}
opt := &model.AddOption{
Resource: resource.Resource{
BusinessID: m.BusinessID,
OID: m.OID,
MID: m.MID,
Content: m.Content,
Extra1: m.Extra1,
Extra2: m.Extra2,
Extra3: m.Extra3,
Extra4: m.Extra4,
Extra5: m.Extra5,
Extra6: m.Extra6,
Extra1s: m.Extra1s,
Extra2s: m.Extra2s,
Extra3s: m.Extra3s,
Extra4s: m.Extra4s,
ExtraTime1: m.ExtraTime1.Format(_formtTime),
OCtime: m.OCtime.Format(_formtTime),
Ptime: m.Ptime.Format(_formtTime),
},
NetID: m.NetID,
}
msg, err := formatMsg(opt, m.BusinessID, "add")
if err != nil {
return ErrInfo
}
return aegisSend(context.Background(), m.OID, msg)
}
//Update .
func Update(m *UpdateInfo) (err error) {
if agent == nil {
return ErrNilAgent
}
if m == nil || m.BusinessID <= 0 || m.NetID <= 0 || len(m.OID) == 0 || len(m.Update) == 0 {
return ErrInfo
}
msg, err := formatMsg(m, m.BusinessID, "update")
if err != nil {
return ErrInfo
}
return aegisSend(context.Background(), m.OID, msg)
}
//Cancel .
func Cancel(m *CancelInfo) (err error) {
if agent == nil {
return ErrNilAgent
}
if m == nil || m.BusinessID <= 0 || len(m.Oids) == 0 {
return ErrInfo
}
msg, err := formatMsg(m, m.BusinessID, "cancel")
if err != nil {
return ErrInfo
}
return aegisSend(context.Background(), m.Oids[0], msg)
}
//aegisSend .
func aegisSend(c context.Context, key string, msg interface{}) (err error) {
log.Info("start to send key(%s) msg(%+v)", key, msg)
for retry := 0; retry < 3; retry++ {
if err = agent.Send(c, key, msg); err == nil {
break
}
}
if err != nil {
log.Error("s.aegisPub.Send(%s) error(%v) msg(%+v) ", key, err, msg)
}
return
}
func formatMsg(m interface{}, bizid int64, action string) (*RscMsg, error) {
raw, err := json.Marshal(m)
if err != nil {
return nil, ErrInfo
}
msg := &RscMsg{
Action: action,
BizID: bizid,
Raw: raw,
}
return msg, nil
}

View File

@@ -0,0 +1,63 @@
package databus
import (
"testing"
"time"
)
func TestAdd(t *testing.T) {
InitAegis(nil)
defer CloseAegis()
err := Add(&AddInfo{
BusinessID: 1,
NetID: 1,
OID: "1008612",
MID: 110,
Content: "内容",
Extra6: 6,
Extra4s: "4s",
MetaData: `{"cover": "bfs/1.japg", "title": "标题啊"}`,
ExtraTime1: time.Now().Add(-24 * time.Hour),
OCtime: time.Now().Add(-24 * time.Hour),
Ptime: time.Now().Add(-24 * time.Hour),
})
if err != nil {
t.Fail()
}
}
func TestUpdate(t *testing.T) {
InitAegis(nil)
defer CloseAegis()
err := Update(&UpdateInfo{
BusinessID: 1,
NetID: 1,
OID: "1008612",
Update: map[string]interface{}{
"mid": 119,
"content": "内容2",
"extra6": 60,
"ptime": "2018-01-1 15:01:02",
"metadata": `{"cover": "bfs/1.japg", "title": "标题啊"}`,
},
})
if err != nil {
t.Fail()
}
}
func TestCancel(t *testing.T) {
InitAegis(nil)
defer CloseAegis()
err := Cancel(&CancelInfo{
BusinessID: 1,
Oids: []string{"1008612"},
Reason: "理由",
})
if err != nil {
t.Fail()
}
}