Create & Init Project...
This commit is contained in:
48
app/admin/main/credit/dao/manager/BUILD
Normal file
48
app/admin/main/credit/dao/manager/BUILD
Normal file
@ -0,0 +1,48 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(
|
||||
"@io_bazel_rules_go//go:def.bzl",
|
||||
"go_test",
|
||||
"go_library",
|
||||
)
|
||||
|
||||
go_test(
|
||||
name = "go_default_test",
|
||||
srcs = ["dao_test.go"],
|
||||
embed = [":go_default_library"],
|
||||
rundir = ".",
|
||||
tags = ["automanaged"],
|
||||
deps = [
|
||||
"//app/admin/main/credit/conf:go_default_library",
|
||||
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["dao.go"],
|
||||
importpath = "go-common/app/admin/main/credit/dao/manager",
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//app/admin/main/credit/conf:go_default_library",
|
||||
"//app/admin/main/credit/model:go_default_library",
|
||||
"//library/log:go_default_library",
|
||||
"//library/net/http/blademaster:go_default_library",
|
||||
"//library/sync/errgroup: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"],
|
||||
)
|
131
app/admin/main/credit/dao/manager/dao.go
Normal file
131
app/admin/main/credit/dao/manager/dao.go
Normal file
@ -0,0 +1,131 @@
|
||||
package manager
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"sync"
|
||||
|
||||
"go-common/app/admin/main/credit/conf"
|
||||
"go-common/app/admin/main/credit/model"
|
||||
"go-common/library/log"
|
||||
bm "go-common/library/net/http/blademaster"
|
||||
"go-common/library/sync/errgroup"
|
||||
)
|
||||
|
||||
const (
|
||||
_managersURI = "/x/admin/manager/users"
|
||||
_managerTotalURI = "/x/admin/manager/users/total"
|
||||
)
|
||||
|
||||
// Dao struct info of Dao.
|
||||
type Dao struct {
|
||||
// http
|
||||
client *bm.Client
|
||||
// conf
|
||||
c *conf.Config
|
||||
managersURL string
|
||||
managerTotalURL string
|
||||
}
|
||||
|
||||
// New new a Dao and return.
|
||||
func New(c *conf.Config) (d *Dao) {
|
||||
d = &Dao{
|
||||
// conf
|
||||
c: c,
|
||||
// http client
|
||||
client: bm.NewClient(c.HTTPClient),
|
||||
}
|
||||
d.managersURL = c.Host.Manager + _managersURI
|
||||
d.managerTotalURL = c.Host.Manager + _managerTotalURI
|
||||
return
|
||||
}
|
||||
|
||||
// Managers get manager users info.
|
||||
func (d *Dao) Managers(c context.Context) (manMap map[int64]string, err error) {
|
||||
var (
|
||||
count, page int64
|
||||
g errgroup.Group
|
||||
l sync.RWMutex
|
||||
)
|
||||
if count, err = d.ManagerTotal(c); err != nil {
|
||||
log.Error("d.ManagerTotal error(%v)", err)
|
||||
return
|
||||
}
|
||||
if count <= 0 {
|
||||
return
|
||||
}
|
||||
manMap = make(map[int64]string, count)
|
||||
ps := int64(500)
|
||||
pageNum := count / ps
|
||||
if count%ps != 0 {
|
||||
pageNum++
|
||||
}
|
||||
for page = 1; page <= pageNum; page++ {
|
||||
tmpPage := page
|
||||
g.Go(func() (err error) {
|
||||
mi, err := d.Manager(c, tmpPage, ps)
|
||||
if err != nil {
|
||||
log.Error("d.Manager(%d,%d) error(%v) ", tmpPage, ps, err)
|
||||
err = nil
|
||||
return
|
||||
}
|
||||
for _, v := range mi {
|
||||
l.Lock()
|
||||
manMap[v.OID] = v.Uname
|
||||
l.Unlock()
|
||||
}
|
||||
return
|
||||
})
|
||||
}
|
||||
g.Wait()
|
||||
return
|
||||
}
|
||||
|
||||
// Manager get manager users.
|
||||
func (d *Dao) Manager(c context.Context, pn, ps int64) (mi []*model.MangerInfo, err error) {
|
||||
params := url.Values{}
|
||||
params.Set("pn", strconv.FormatInt(pn, 10))
|
||||
params.Set("ps", strconv.FormatInt(ps, 10))
|
||||
var res struct {
|
||||
Code int `json:"code"`
|
||||
Data *struct {
|
||||
Items []*model.MangerInfo `json:"items"`
|
||||
} `json:"data"`
|
||||
}
|
||||
if err = d.client.Get(c, d.managersURL, "", params, &res); err != nil {
|
||||
log.Error("Manager(%s) error(%v)", d.managersURL+"?"+params.Encode(), err)
|
||||
return
|
||||
}
|
||||
if res.Code != 0 {
|
||||
log.Warn("Manager(%s) code(%d) data(%+v)", d.managersURL+"?"+params.Encode(), res.Code, res.Data)
|
||||
return
|
||||
}
|
||||
if res.Data != nil {
|
||||
mi = res.Data.Items
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// ManagerTotal get manager user total.
|
||||
func (d *Dao) ManagerTotal(c context.Context) (count int64, err error) {
|
||||
params := url.Values{}
|
||||
var res struct {
|
||||
Code int `json:"code"`
|
||||
Data *struct {
|
||||
Total int64 `json:"total"`
|
||||
} `json:"data"`
|
||||
}
|
||||
if err = d.client.Get(c, d.managerTotalURL, "", params, &res); err != nil {
|
||||
log.Error("ManagerTotal(%s) error(%v)", d.managerTotalURL+"?"+params.Encode(), err)
|
||||
return
|
||||
}
|
||||
if res.Code != 0 {
|
||||
log.Warn("ManagerTotal(%s) code(%d) data(%+v)", d.managerTotalURL+"?"+params.Encode(), res.Code, res.Data)
|
||||
return
|
||||
}
|
||||
if res.Data != nil {
|
||||
count = res.Data.Total
|
||||
}
|
||||
return
|
||||
}
|
72
app/admin/main/credit/dao/manager/dao_test.go
Normal file
72
app/admin/main/credit/dao/manager/dao_test.go
Normal file
@ -0,0 +1,72 @@
|
||||
package manager
|
||||
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"go-common/app/admin/main/credit/conf"
|
||||
|
||||
. "github.com/smartystreets/goconvey/convey"
|
||||
)
|
||||
|
||||
var d *Dao
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
if os.Getenv("DEPLOY_ENV") != "" {
|
||||
flag.Set("app_id", "main.account-law.credit-admin")
|
||||
flag.Set("conf_appid", "main.account-law.credit-admin")
|
||||
flag.Set("conf_token", "eKmbn2M4jvSyyjMEOywLFOQlX5ggRG9x")
|
||||
flag.Set("tree_id", "5885")
|
||||
flag.Set("conf_version", "docker-1")
|
||||
flag.Set("deploy_env", "uat")
|
||||
flag.Set("conf_env", "10")
|
||||
flag.Set("conf_host", "config.bilibili.co")
|
||||
flag.Set("conf_path", "/tmp")
|
||||
flag.Set("region", "sh")
|
||||
flag.Set("zone", "sh001")
|
||||
} else {
|
||||
flag.Set("conf", "../../cmd/convey-test.toml")
|
||||
}
|
||||
flag.Parse()
|
||||
if err := conf.Init(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
d = New(conf.Conf)
|
||||
os.Exit(m.Run())
|
||||
}
|
||||
|
||||
func WithDao(f func(d *Dao)) func() {
|
||||
return func() {
|
||||
f(d)
|
||||
}
|
||||
}
|
||||
|
||||
func ctx() context.Context {
|
||||
return context.Background()
|
||||
}
|
||||
|
||||
func Test_Managers(t *testing.T) {
|
||||
Convey("return someting", t, func() {
|
||||
res, err := d.Managers(context.TODO())
|
||||
So(err, ShouldBeNil)
|
||||
So(res, ShouldNotBeNil)
|
||||
})
|
||||
}
|
||||
|
||||
func Test_Manager(t *testing.T) {
|
||||
Convey("return someting", t, func() {
|
||||
res, err := d.Manager(context.TODO(), 1, 2)
|
||||
So(err, ShouldBeNil)
|
||||
So(res, ShouldNotBeNil)
|
||||
})
|
||||
}
|
||||
|
||||
func Test_ManagerTotal(t *testing.T) {
|
||||
Convey("return someting", t, func() {
|
||||
res, err := d.ManagerTotal(context.TODO())
|
||||
So(err, ShouldBeNil)
|
||||
So(res, ShouldNotBeNil)
|
||||
})
|
||||
}
|
Reference in New Issue
Block a user