Create & Init Project...

This commit is contained in:
2019-04-22 18:49:16 +08:00
commit fc4fa37393
25440 changed files with 4054998 additions and 0 deletions

View 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 = ["account_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["account.go"],
importpath = "go-common/app/interface/main/app-channel/dao/account",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//app/service/main/account/model:go_default_library",
"//app/service/main/account/rpc/client:go_default_library",
"//library/net/metadata:go_default_library",
"//vendor/github.com/pkg/errors: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"],
)

View File

@@ -0,0 +1,80 @@
package account
import (
"context"
"go-common/app/interface/main/app-channel/conf"
account "go-common/app/service/main/account/model"
accrpc "go-common/app/service/main/account/rpc/client"
"go-common/library/net/metadata"
"github.com/pkg/errors"
)
// Dao is archive dao.
type Dao struct {
// rpc
accRPC *accrpc.Service3
}
// New new a archive dao.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
// rpc
accRPC: accrpc.New3(c.AccountRPC),
}
return
}
// Relations3 relations.
func (d *Dao) Relations3(c context.Context, owners []int64, mid int64) (follows map[int64]bool) {
if len(owners) == 0 {
return nil
}
follows = make(map[int64]bool, len(owners))
for _, owner := range owners {
follows[owner] = false
}
var (
am map[int64]*account.Relation
err error
)
ip := metadata.String(c, metadata.RemoteIP)
arg := &account.ArgRelations{Owners: owners, Mid: mid, RealIP: ip}
if am, err = d.accRPC.Relations3(c, arg); err != nil {
return
}
for i, a := range am {
if _, ok := follows[i]; ok {
follows[i] = a.Following
}
}
return
}
func (d *Dao) Cards3(c context.Context, mids []int64) (res map[int64]*account.Card, err error) {
arg := &account.ArgMids{Mids: mids}
if res, err = d.accRPC.Cards3(c, arg); err != nil {
err = errors.Wrapf(err, "%v", arg)
}
return
}
func (d *Dao) IsAttention(c context.Context, owners []int64, mid int64) (isAtten map[int64]int8) {
if len(owners) == 0 || mid == 0 {
return
}
ip := metadata.String(c, metadata.RemoteIP)
arg := &account.ArgRelations{Owners: owners, Mid: mid, RealIP: ip}
res, err := d.accRPC.Relations3(c, arg)
if err != nil {
return
}
isAtten = make(map[int64]int8, len(res))
for mid, rel := range res {
if rel.Following {
isAtten[mid] = 1
}
}
return
}

View File

@@ -0,0 +1,44 @@
package account
import (
"context"
"flag"
"path/filepath"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
dir, _ := filepath.Abs("../../cmd/app-channel-test.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestRelations3(t *testing.T) {
Convey("get Relations3 all", t, func() {
res := d.Relations3(ctx(), []int64{1}, 1)
So(res, ShouldNotBeEmpty)
})
}
func TestCards3(t *testing.T) {
Convey("get Cards3 all", t, func() {
res, err := d.Cards3(ctx(), []int64{1})
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,50 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["activity_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["activity.go"],
importpath = "go-common/app/interface/main/app-channel/dao/activity",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//app/interface/main/app-channel/model/activity:go_default_library",
"//library/ecode:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/metadata:go_default_library",
"//library/xstr:go_default_library",
"//vendor/github.com/pkg/errors: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"],
)

View File

@@ -0,0 +1,64 @@
package activity
import (
"context"
"net/url"
"go-common/app/interface/main/app-channel/conf"
"go-common/app/interface/main/app-channel/model/activity"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"go-common/library/xstr"
"github.com/pkg/errors"
)
const (
_activitys = "/activity/pages"
)
// Dao is activity dao.
type Dao struct {
// http client
client *bm.Client
// activitys
activitys string
}
// New new a activity dao.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
// http client
client: bm.NewClient(c.HTTPClient),
activitys: c.Host.Activity + _activitys,
}
return d
}
// Activitys activity or tpoci
func (d *Dao) Activitys(c context.Context, ids []int64) (actm map[int64]*activity.Activity, err error) {
ip := metadata.String(c, metadata.RemoteIP)
params := url.Values{}
params.Set("pids", xstr.JoinInts(ids))
params.Set("http", "2")
params.Set("platform", "pegasus")
var res struct {
Code int `json:"code"`
Data struct {
List []*activity.Activity `json:"list"`
} `json:"data"`
}
if err = d.client.Get(c, d.activitys, ip, params, &res); err != nil {
return
}
if res.Code != ecode.OK.Code() {
err = errors.Wrap(ecode.Int(res.Code), d.activitys+"?"+params.Encode())
return
}
actm = make(map[int64]*activity.Activity, len(res.Data.List))
for _, act := range res.Data.List {
actm[act.ID] = act
}
return
}

View File

@@ -0,0 +1,37 @@
package activity
import (
"context"
"flag"
"path/filepath"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
dir, _ := filepath.Abs("../../cmd/app-channel-test.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestActivitys(t *testing.T) {
Convey("get Activitys all", t, func() {
res, err := d.Activitys(ctx(), []int64{1})
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,49 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["archive_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["archive.go"],
importpath = "go-common/app/interface/main/app-channel/dao/archive",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//app/service/main/archive/api:go_default_library",
"//app/service/main/archive/api/gorpc:go_default_library",
"//app/service/main/archive/model/archive:go_default_library",
"//library/net/metadata:go_default_library",
"//vendor/github.com/pkg/errors: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"],
)

View File

@@ -0,0 +1,64 @@
package archive
import (
"context"
"go-common/app/interface/main/app-channel/conf"
"go-common/app/service/main/archive/api"
arcrpc "go-common/app/service/main/archive/api/gorpc"
"go-common/app/service/main/archive/model/archive"
"go-common/library/net/metadata"
"github.com/pkg/errors"
)
// Dao is archive dao.
type Dao struct {
// rpc
arcRPC *arcrpc.Service2
}
// New new a archive dao.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
// rpc
arcRPC: arcrpc.New2(c.ArchiveRPC),
}
return
}
// Archive get archive by aid.
func (d *Dao) Archive(ctx context.Context, aid int64) (a *api.Arc, err error) {
arg := &archive.ArgAid2{Aid: aid}
a, err = d.arcRPC.Archive3(ctx, arg)
return
}
// Archives multi get archives.
func (d *Dao) Archives(ctx context.Context, aids []int64) (as map[int64]*api.Arc, err error) {
arg := &archive.ArgAids2{Aids: aids}
as, err = d.arcRPC.Archives3(ctx, arg)
return
}
// ArchivesWithPlayer archives witch player
func (d *Dao) ArchivesWithPlayer(c context.Context, aids []int64, qn int, platform string, fnver, fnval, build int) (res map[int64]*archive.ArchiveWithPlayer, err error) {
if len(aids) == 0 {
return
}
ip := metadata.String(c, metadata.RemoteIP)
arg := &archive.ArgPlayer{Aids: aids, Qn: qn, Platform: platform, Fnval: fnval, Fnver: fnver, RealIP: ip, Build: build}
if res, err = d.arcRPC.ArchivesWithPlayer(c, arg); err != nil {
err = errors.Wrapf(err, "%v", arg)
}
return
}
// UpCount2 get upper count.
func (d *Dao) UpCount2(c context.Context, mid int64) (cnt int, err error) {
arg := &archive.ArgUpCount2{Mid: mid}
if cnt, err = d.arcRPC.UpCount2(c, arg); err != nil {
err = errors.Wrapf(err, "%v", arg)
}
return
}

View File

@@ -0,0 +1,59 @@
package archive
import (
"context"
"flag"
"os"
"testing"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func TestMain(m *testing.M) {
if os.Getenv("DEPLOY_ENV") != "" {
flag.Set("app_id", "main.app-svr.app-channel")
flag.Set("conf_token", "a920405f87c5bbcca15f3ffebf169c04")
flag.Set("tree_id", "7852")
flag.Set("conf_version", "docker-1")
flag.Set("deploy_env", "uat")
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/app-view-test.toml")
}
flag.Parse()
if err := conf.Init(); err != nil {
panic(err)
}
d = New(conf.Conf)
os.Exit(m.Run())
}
func TestArchive(t *testing.T) {
Convey("Archive", t, func(ctx C) {
_, err := d.Archive(context.Background(), 99999999)
So(err, ShouldNotBeNil) // should 404
})
}
func TestArchives(t *testing.T) {
Convey("Archives", t, func(ctx C) {
_, err := d.Archives(context.Background(), []int64{1})
So(err, ShouldBeNil)
})
}
func TestArchivesWithPlayer(t *testing.T) {
Convey("ArchivesWithPlayer", t, func(ctx C) {
_, err := d.ArchivesWithPlayer(context.Background(), []int64{1}, 0, "", 0, 0, 0)
So(err, ShouldBeNil)
})
}

View 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 = ["article_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["article.go"],
importpath = "go-common/app/interface/main/app-channel/dao/article",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//app/interface/openplatform/article/model:go_default_library",
"//app/interface/openplatform/article/rpc/client:go_default_library",
"//library/net/metadata:go_default_library",
"//vendor/github.com/pkg/errors: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"],
)

View File

@@ -0,0 +1,36 @@
package article
import (
"context"
"go-common/app/interface/main/app-channel/conf"
article "go-common/app/interface/openplatform/article/model"
artrpc "go-common/app/interface/openplatform/article/rpc/client"
"go-common/library/net/metadata"
"github.com/pkg/errors"
)
// Dao is archive dao.
type Dao struct {
// rpc
artRPC *artrpc.Service
}
// New new a archive dao.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
// rpc
artRPC: artrpc.New(c.ArticleRPC),
}
return
}
func (d *Dao) Articles(c context.Context, aids []int64) (ms map[int64]*article.Meta, err error) {
ip := metadata.String(c, metadata.RemoteIP)
arg := &article.ArgAids{Aids: aids, RealIP: ip}
if ms, err = d.artRPC.ArticleMetas(c, arg); err != nil {
err = errors.Wrapf(err, "%v", aids)
}
return
}

View File

@@ -0,0 +1,37 @@
package article
import (
"context"
"flag"
"path/filepath"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
dir, _ := filepath.Abs("../../cmd/app-channel-test.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestArticles(t *testing.T) {
Convey("get Articles all", t, func() {
res, err := d.Articles(ctx(), []int64{1})
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,50 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["audio_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["audio.go"],
importpath = "go-common/app/interface/main/app-channel/dao/audio",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-card/model/card/audio:go_default_library",
"//app/interface/main/app-channel/conf:go_default_library",
"//library/ecode:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/metadata:go_default_library",
"//library/xstr:go_default_library",
"//vendor/github.com/pkg/errors: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"],
)

View File

@@ -0,0 +1,54 @@
package audio
import (
"context"
"net/url"
"go-common/app/interface/main/app-card/model/card/audio"
"go-common/app/interface/main/app-channel/conf"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"go-common/library/xstr"
"github.com/pkg/errors"
)
const (
_getAudios = "/x/internal/v1/audio/menus/batch"
_songm = "/x/internal/v1/audio/songs/batch"
)
type Dao struct {
client *bm.Client
getAudios string
songm string
}
func New(c *conf.Config) (d *Dao) {
d = &Dao{
client: bm.NewClient(c.HTTPClient),
getAudios: c.Host.APICo + _getAudios,
songm: c.Host.APICo + _songm,
}
return
}
func (d *Dao) Audios(c context.Context, ids []int64) (aum map[int64]*audio.Audio, err error) {
ip := metadata.String(c, metadata.RemoteIP)
params := url.Values{}
params.Set("ids", xstr.JoinInts(ids))
var res struct {
Code int `json:"code"`
Data map[int64]*audio.Audio `json:"data"`
}
if err = d.client.Get(c, d.getAudios, ip, params, &res); err != nil {
return
}
if res.Code != ecode.OK.Code() {
err = errors.Wrap(ecode.Int(res.Code), d.getAudios+"?"+params.Encode())
return
}
aum = res.Data
return
}

View File

@@ -0,0 +1,37 @@
package audio
import (
"context"
"flag"
"path/filepath"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
dir, _ := filepath.Abs("../../cmd/app-channel-test.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestGetAudios(t *testing.T) {
Convey("get GetAudios all", t, func() {
res, err := d.Audios(ctx(), []int64{1})
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,46 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
"go_test",
)
go_library(
name = "go_default_library",
srcs = ["audit.go"],
importpath = "go-common/app/interface/main/app-channel/dao/audit",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//library/database/sql:go_default_library",
"//library/log: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 = ["audit_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)

View File

@@ -0,0 +1,63 @@
package audit
import (
"context"
"go-common/app/interface/main/app-channel/conf"
"go-common/library/database/sql"
"go-common/library/log"
)
const (
_getSQL = "SELECT mobi_app,build FROM audit"
)
// Dao is audit dao.
type Dao struct {
db *sql.DB
}
// New new a audit dao.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
db: sql.NewMySQL(c.MySQL.Show),
}
return
}
// Audits get all audit build.
func (d *Dao) Audits(ctx context.Context) (res map[string]map[int]struct{}, err error) {
rows, err := d.db.Query(ctx, _getSQL)
if err != nil {
log.Error("query error(%v)", err)
return
}
defer rows.Close()
var (
mobiApp string
build int
)
res = map[string]map[int]struct{}{}
for rows.Next() {
if err = rows.Scan(&mobiApp, &build); err != nil {
log.Error("rows.Scan error(%v)", err)
res = nil
return
}
if plat, ok := res[mobiApp]; ok {
plat[build] = struct{}{}
} else {
res[mobiApp] = map[int]struct{}{
build: struct{}{},
}
}
}
return
}
// Close close memcache resource.
func (dao *Dao) Close() {
if dao.db != nil {
dao.db.Close()
}
}

View File

@@ -0,0 +1,37 @@
package audit
import (
"context"
"flag"
"path/filepath"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
dir, _ := filepath.Abs("../../cmd/app-channel-test.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestGetAudios(t *testing.T) {
Convey("get GetAudios all", t, func() {
res, err := d.Audits(ctx())
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,55 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["bangumi_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = [
"bangumi.go",
"grpc.go",
],
importpath = "go-common/app/interface/main/app-channel/dao/bangumi",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-card/model/card/bangumi:go_default_library",
"//app/interface/main/app-channel/conf:go_default_library",
"//app/service/openplatform/pgc-season/api/grpc/episode/v1:go_default_library",
"//app/service/openplatform/pgc-season/api/grpc/season/v1:go_default_library",
"//library/ecode:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/metadata:go_default_library",
"//library/xstr:go_default_library",
"//vendor/github.com/pkg/errors: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"],
)

View File

@@ -0,0 +1,74 @@
package bangumi
import (
"context"
"fmt"
"net/url"
"time"
"go-common/app/interface/main/app-card/model/card/bangumi"
"go-common/app/interface/main/app-channel/conf"
episodegrpc "go-common/app/service/openplatform/pgc-season/api/grpc/episode/v1"
seasongrpc "go-common/app/service/openplatform/pgc-season/api/grpc/season/v1"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"go-common/library/xstr"
"github.com/pkg/errors"
)
const (
_seasons = "/api/inner/aid_episodes_v2"
)
// Dao is bangumi dao.
type Dao struct {
// http client
client *bm.Client
// bangumi
seasons string
// grpc
rpcClient seasongrpc.SeasonClient
rpcEpidsClient episodegrpc.EpisodeClient
}
// New new a bangumi dao.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
// http clients
client: bm.NewClient(c.HTTPClient),
seasons: c.Host.Bangumi + _seasons,
}
var err error
if d.rpcClient, err = seasongrpc.NewClient(c.PGCRPC); err != nil {
panic(fmt.Sprintf("seasongrpc NewClientt error (%+v)", err))
}
if d.rpcEpidsClient, err = episodegrpc.NewClient(c.PGCRPC); err != nil {
panic(fmt.Sprintf("episodegrpc NewClientt error (%+v)", err))
}
return d
}
// Seasons bangumi Season .
func (d *Dao) Seasons(c context.Context, aids []int64, now time.Time) (sm map[int64]*bangumi.Season, err error) {
ip := metadata.String(c, metadata.RemoteIP)
params := url.Values{}
params.Set("aids", xstr.JoinInts(aids))
params.Set("type", "av")
params.Set("build", "app-feed")
params.Set("platform", "Golang")
var res struct {
Code int `json:"code"`
Result map[int64]*bangumi.Season `json:"result"`
}
if err = d.client.Get(c, d.seasons, ip, params, &res); err != nil {
return
}
if res.Code != ecode.OK.Code() {
err = errors.Wrap(err, d.seasons+"?"+params.Encode())
return
}
sm = res.Result
return
}

View File

@@ -0,0 +1,65 @@
package bangumi
import (
"context"
"flag"
"os"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
if os.Getenv("DEPLOY_ENV") != "" {
flag.Set("app_id", "main.app-svr.app-channel")
flag.Set("conf_token", "a920405f87c5bbcca15f3ffebf169c04")
flag.Set("tree_id", "7852")
flag.Set("conf_version", "docker-1")
flag.Set("deploy_env", "uat")
flag.Set("conf_host", "config.bilibili.co")
flag.Set("conf_path", "/tmp")
flag.Set("region", "sh")
flag.Set("zone", "sh001")
}
flag.Parse()
if err := conf.Init(); err != nil {
panic(err)
}
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestSeasons(t *testing.T) {
Convey("get Seasons all", t, func() {
_, err := d.Seasons(ctx(), []int64{1}, time.Now())
err = nil
So(err, ShouldBeNil)
})
}
func TestCardsInfoReply(t *testing.T) {
Convey("get CardsInfoReply all", t, func() {
_, err := d.CardsInfoReply(ctx(), []int32{1})
err = nil
So(err, ShouldBeNil)
})
}
func TestEpidsCardsInfoReply(t *testing.T) {
Convey("get EpidsCardsInfoReply all", t, func() {
_, err := d.EpidsCardsInfoReply(ctx(), []int32{1})
err = nil
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,32 @@
package bangumi
import (
"context"
episodegrpc "go-common/app/service/openplatform/pgc-season/api/grpc/episode/v1"
seasongrpc "go-common/app/service/openplatform/pgc-season/api/grpc/season/v1"
"github.com/pkg/errors"
)
func (d *Dao) CardsInfoReply(c context.Context, seasonIds []int32) (res map[int32]*seasongrpc.CardInfoProto, err error) {
arg := &seasongrpc.SeasonInfoReq{SeasonIds: seasonIds}
info, err := d.rpcClient.Cards(c, arg)
if err != nil {
err = errors.Wrapf(err, "%v", arg)
return
}
res = info.Cards
return
}
func (d *Dao) EpidsCardsInfoReply(c context.Context, episodeIds []int32) (res map[int32]*episodegrpc.EpisodeCardsProto, err error) {
arg := &episodegrpc.EpReq{Epids: episodeIds}
info, err := d.rpcEpidsClient.Cards(c, arg)
if err != nil {
err = errors.Wrapf(err, "%v", arg)
return
}
res = info.Cards
return
}

View File

@@ -0,0 +1,52 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["card_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = [
"cache.go",
"card.go",
],
importpath = "go-common/app/interface/main/app-channel/dao/card",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-card/model/card/operate:go_default_library",
"//app/interface/main/app-channel/conf:go_default_library",
"//app/interface/main/app-channel/model/card:go_default_library",
"//library/cache/memcache:go_default_library",
"//library/database/sql:go_default_library",
"//library/log: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"],
)

View File

@@ -0,0 +1,53 @@
package card
import (
"context"
"fmt"
"time"
"go-common/library/cache/memcache"
"go-common/library/log"
)
const (
_channelCardKey = "ccmd5_buvid_%v_%d"
)
func channelCardKey(buvid string, channelID int64) string {
return fmt.Sprintf(_channelCardKey, buvid, channelID)
}
// AddChannelCardCache add user buvid and cardID cache
func (d *Dao) AddChannelCardCache(c context.Context, buvid, md5 string, channelID int64, now time.Time) (err error) {
var (
key = channelCardKey(buvid, channelID)
conn = d.mc.Get(c)
currenttimeSec = int32((now.Hour() * 60 * 60) + (now.Minute() * 60) + now.Second())
overtime int32
)
if overtime = d.expire - currenttimeSec; overtime < 1 {
overtime = d.expire
}
if err = conn.Set(&memcache.Item{Key: key, Object: md5, Flags: memcache.FlagJSON, Expiration: overtime}); err != nil {
log.Error("AddChannelCardCache d.mc.Set(%s,%v) error(%v)", key, channelID, err)
}
conn.Close()
return
}
// ChannelCardCache user buvid channel card
func (d *Dao) ChannelCardCache(c context.Context, buvid string, channelID int64) (md5 string, err error) {
var (
key = channelCardKey(buvid, channelID)
conn = d.mc.Get(c)
r *memcache.Item
)
defer conn.Close()
if r, err = conn.Get(key); err != nil {
return
}
if err = conn.Scan(r, &md5); err != nil {
log.Error("r.Scan(%s) error(%v)", r.Value, err)
}
return
}

View File

@@ -0,0 +1,127 @@
package card
import (
"context"
"fmt"
"strconv"
"time"
"go-common/app/interface/main/app-card/model/card/operate"
"go-common/app/interface/main/app-channel/conf"
"go-common/app/interface/main/app-channel/model/card"
"go-common/library/cache/memcache"
"go-common/library/database/sql"
)
const (
_cardSQL = `SELECT c.id,c.title,c.tag_id,c.card_type,c.card_value,c.recommand_reason,c.recommand_state,c.priority FROM channel_card AS c
WHERE c.stime<? AND c.etime>? AND c.check=2 AND c.is_delete=0 ORDER BY c.priority DESC`
_cardPlatSQL = `SELECT card_id,plat,conditions,build FROM channel_card_plat WHERE is_delete=0`
_followSQL = "SELECT `id`,`type`,`long_title`,`content` FROM `card_follow` WHERE `deleted`=0"
_cardSetSQL = `SELECT c.id,c.type,c.value,c.title,c.long_title,c.content FROM card_set AS c WHERE c.deleted=0`
)
// Dao is card dao.
type Dao struct {
db *sql.DB
// memcache
expire int32
mc *memcache.Pool
}
// New is card dao new.
func New(c *conf.Config) *Dao {
d := &Dao{
db: sql.NewMySQL(c.MySQL.Show),
// memcache
expire: int32(time.Duration(c.Memcache.Channels.Expire) / time.Second),
mc: memcache.NewPool(c.Memcache.Channels.Config),
}
return d
}
// Card channel card
func (d *Dao) Card(ctx context.Context, now time.Time) (res map[int64][]*card.Card, err error) {
res = map[int64][]*card.Card{}
rows, err := d.db.Query(ctx, _cardSQL, now, now)
if err != nil {
return
}
defer rows.Close()
for rows.Next() {
c := &card.Card{}
if err = rows.Scan(&c.ID, &c.Title, &c.ChannelID, &c.Type, &c.Value, &c.Reason, &c.ReasonType, &c.Pos); err != nil {
return
}
res[c.ChannelID] = append(res[c.ChannelID], c)
}
return
}
// CardPlat channel card plat
func (d *Dao) CardPlat(ctx context.Context) (res map[string][]*card.CardPlat, err error) {
res = map[string][]*card.CardPlat{}
var (
_initCardPlatKey = "card_platkey_%d_%d"
)
rows, err := d.db.Query(ctx, _cardPlatSQL)
if err != nil {
return
}
defer rows.Close()
for rows.Next() {
c := &card.CardPlat{}
if err = rows.Scan(&c.CardID, &c.Plat, &c.Condition, &c.Build); err != nil {
return
}
key := fmt.Sprintf(_initCardPlatKey, c.Plat, c.CardID)
res[key] = append(res[key], c)
}
return
}
// UpCard upper
func (d *Dao) UpCard(ctx context.Context) (res map[int64]*operate.Follow, err error) {
var rows *sql.Rows
if rows, err = d.db.Query(ctx, _followSQL); err != nil {
return
}
defer rows.Close()
res = make(map[int64]*operate.Follow)
for rows.Next() {
c := &operate.Follow{}
if err = rows.Scan(&c.ID, &c.Type, &c.Title, &c.Content); err != nil {
return
}
c.Change()
res[c.ID] = c
}
return
}
// CardSet card set
func (d *Dao) CardSet(ctx context.Context) (res map[int64]*operate.CardSet, err error) {
var rows *sql.Rows
if rows, err = d.db.Query(ctx, _cardSetSQL); err != nil {
return
}
defer rows.Close()
res = make(map[int64]*operate.CardSet)
for rows.Next() {
var (
c = &operate.CardSet{}
value string
)
if err = rows.Scan(&c.ID, &c.Type, &value, &c.Title, &c.LongTitle, &c.Content); err != nil {
return
}
c.Value, _ = strconv.ParseInt(value, 10, 64)
res[c.ID] = c
}
return
}
// PingDB ping db
func (d *Dao) PingDB(c context.Context) (err error) {
return d.db.Ping(c)
}

View File

@@ -0,0 +1,103 @@
package card
import (
"context"
"flag"
"os"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
if os.Getenv("DEPLOY_ENV") != "" {
flag.Set("app_id", "main.app-svr.app-channel")
flag.Set("conf_token", "a920405f87c5bbcca15f3ffebf169c04")
flag.Set("tree_id", "7852")
flag.Set("conf_version", "docker-1")
flag.Set("deploy_env", "uat")
flag.Set("conf_host", "config.bilibili.co")
flag.Set("conf_path", "/tmp")
flag.Set("region", "sh")
flag.Set("zone", "sh001")
}
flag.Parse()
if err := conf.Init(); err != nil {
panic(err)
}
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestCardPlat(t *testing.T) {
Convey("get CardPlat all", t, func() {
_, err := d.CardPlat(ctx())
err = nil
So(err, ShouldBeNil)
})
}
func TestCard(t *testing.T) {
Convey("get Card all", t, func() {
_, err := d.Card(ctx(), time.Now())
err = nil
// So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}
func TestUpCard(t *testing.T) {
Convey("get UpCard all", t, func() {
_, err := d.UpCard(ctx())
err = nil
// So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}
func TestCardSet(t *testing.T) {
Convey("get CardSet all", t, func() {
_, err := d.CardSet(ctx())
err = nil
// So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}
func TestPingDB(t *testing.T) {
Convey("get PingDB all", t, func() {
err := d.PingDB(ctx())
err = nil
// So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}
func TestAddChannelCardCache(t *testing.T) {
Convey("get AddChannelCardCache all", t, func() {
err := d.AddChannelCardCache(ctx(), "", "", 1, time.Now())
err = nil
// So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}
func TestChannelCardCache(t *testing.T) {
Convey("get ChannelCardCache all", t, func() {
_, err := d.ChannelCardCache(ctx(), "", 1)
err = nil
// So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,46 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["converge_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["converge.go"],
importpath = "go-common/app/interface/main/app-channel/dao/converge",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-card/model/card/operate:go_default_library",
"//app/interface/main/app-channel/conf:go_default_library",
"//library/database/sql: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"],
)

View File

@@ -0,0 +1,52 @@
package converge
import (
"context"
"go-common/app/interface/main/app-card/model/card/operate"
"go-common/app/interface/main/app-channel/conf"
"go-common/library/database/sql"
)
const (
_getSQL = "SELECT id,re_type,re_value,title,cover,content FROM content_card"
)
type Dao struct {
db *sql.DB
}
func New(c *conf.Config) (d *Dao) {
d = &Dao{
db: sql.NewMySQL(c.MySQL.Manager),
}
return
}
func (d *Dao) Cards(c context.Context) (cm map[int64]*operate.Converge, err error) {
rows, err := d.db.Query(c, _getSQL)
if err != nil {
return
}
defer rows.Close()
cm = map[int64]*operate.Converge{}
for rows.Next() {
c := &operate.Converge{}
if err = rows.Scan(&c.ID, &c.ReType, &c.ReValue, &c.Title, &c.Cover, &c.Content); err != nil {
return
}
if c.Title == "" {
continue
}
c.Change()
cm[c.ID] = c
}
return
}
// Close close memcache resource.
func (dao *Dao) Close() {
if dao.db != nil {
dao.db.Close()
}
}

View File

@@ -0,0 +1,37 @@
package converge
import (
"context"
"flag"
"path/filepath"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
dir, _ := filepath.Abs("../../cmd/app-channel-test.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestCards(t *testing.T) {
Convey("get Cards all", t, func() {
res, err := d.Cards(ctx())
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,46 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["game_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["game.go"],
importpath = "go-common/app/interface/main/app-channel/dao/game",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-card/model/card/operate:go_default_library",
"//app/interface/main/app-channel/conf:go_default_library",
"//library/database/sql: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"],
)

View File

@@ -0,0 +1,49 @@
package game
import (
"context"
"go-common/app/interface/main/app-card/model/card/operate"
"go-common/app/interface/main/app-channel/conf"
"go-common/library/database/sql"
)
const (
_getSQL = "SELECT `id`,`title`,`desc`,`icon`,`cover`,`url_type`,`url_value`,`btn_txt`,`re_type`,`re_value`,`number`,`double_cover` FROM download_card"
)
type Dao struct {
db *sql.DB
}
func New(c *conf.Config) (d *Dao) {
d = &Dao{
db: sql.NewMySQL(c.MySQL.Manager),
}
return
}
func (d *Dao) DownLoad(c context.Context) (dm map[int64]*operate.Download, err error) {
rows, err := d.db.Query(c, _getSQL)
if err != nil {
return
}
defer rows.Close()
dm = map[int64]*operate.Download{}
for rows.Next() {
d := &operate.Download{}
if err = rows.Scan(&d.ID, &d.Title, &d.Desc, &d.Icon, &d.Cover, &d.URLType, &d.URLValue, &d.BtnTxt, &d.ReType, &d.ReValue, &d.Number, &d.DoubleCover); err != nil {
return
}
d.Change()
dm[d.ID] = d
}
return
}
// Close close memcache resource.
func (d *Dao) Close() {
if d.db != nil {
d.db.Close()
}
}

View File

@@ -0,0 +1,37 @@
package game
import (
"context"
"flag"
"path/filepath"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
dir, _ := filepath.Abs("../../cmd/app-channel-test.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestDownLoad(t *testing.T) {
Convey("get DownLoad all", t, func() {
res, err := d.DownLoad(ctx())
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,51 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["live_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["live.go"],
importpath = "go-common/app/interface/main/app-channel/dao/live",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-card/model/card/live:go_default_library",
"//app/interface/main/app-channel/conf:go_default_library",
"//app/interface/main/app-channel/model/live:go_default_library",
"//library/ecode:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/metadata:go_default_library",
"//library/xstr:go_default_library",
"//vendor/github.com/pkg/errors: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"],
)

View File

@@ -0,0 +1,112 @@
package live
import (
"context"
"net/http"
"net/url"
"strconv"
cardlive "go-common/app/interface/main/app-card/model/card/live"
"go-common/app/interface/main/app-channel/conf"
"go-common/app/interface/main/app-channel/model/live"
"go-common/library/ecode"
httpx "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"go-common/library/xstr"
"github.com/pkg/errors"
)
const (
_appMRoom = "/room/v1/Room/rooms_for_app_index"
_feedList = "/feed/v1/feed/getList"
_card = "/room/v1/RoomRecommend/getInfoByCardId"
)
// Dao is show dao.
type Dao struct {
// http client
client *httpx.Client
// live
appMRoom string
feedList string
card string
}
// New new a bangumi dao.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
// http client
client: httpx.NewClient(c.HTTPClient),
appMRoom: c.Host.LiveAPI + _appMRoom,
feedList: c.Host.LiveAPI + _feedList,
card: c.Host.LiveAPI + _card,
}
return
}
func (d *Dao) AppMRoom(c context.Context, roomids []int64) (rs map[int64]*cardlive.Room, err error) {
ip := metadata.String(c, metadata.RemoteIP)
params := url.Values{}
params.Set("room_ids", xstr.JoinInts(roomids))
var res struct {
Code int `json:"code"`
Data []*cardlive.Room `json:"data"`
}
if err = d.client.Get(c, d.appMRoom, ip, params, &res); err != nil {
return
}
if res.Code != ecode.OK.Code() {
err = errors.Wrap(err, d.appMRoom+"?"+params.Encode())
return
}
rs = make(map[int64]*cardlive.Room, len(res.Data))
for _, r := range res.Data {
rs[r.RoomID] = r
}
return
}
func (d *Dao) FeedList(c context.Context, mid int64, pn, ps int) (fs []*live.Feed, count int, err error) {
var req *http.Request
params := url.Values{}
params.Set("page", strconv.Itoa(pn))
params.Set("pagesize", strconv.Itoa(ps))
if req, err = d.client.NewRequest("GET", d.feedList, "", params); err != nil {
return
}
req.Header.Set("X-BiliLive-UID", strconv.FormatInt(mid, 10))
var res struct {
Code int `json:"code"`
Data struct {
Rooms []*live.Feed `json:"rooms"`
Count int `json:"count"`
} `json:"data"`
}
if err = d.client.Do(c, req, &res); err != nil {
return
}
if res.Code != ecode.OK.Code() {
err = errors.Wrap(err, d.feedList+"?"+params.Encode())
return
}
fs = res.Data.Rooms
count = res.Data.Count
return
}
func (d *Dao) Card(c context.Context) (csm map[int64][]*cardlive.Card, err error) {
var res struct {
Code int `json:"code"`
Data map[int64][]*cardlive.Card `json:"data"`
}
if err = d.client.Get(c, d.card, "", nil, &res); err != nil {
return
}
if res.Code != ecode.OK.Code() {
err = errors.Wrap(err, d.card)
return
}
csm = res.Data
return
}

View File

@@ -0,0 +1,53 @@
package live
import (
"context"
"flag"
"path/filepath"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
dir, _ := filepath.Abs("../../cmd/app-channel-test.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestAppMRoom(t *testing.T) {
Convey("get AppMRoom all", t, func() {
res, err := d.AppMRoom(ctx(), []int64{1})
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}
func TestFeedList(t *testing.T) {
Convey("get FeedList all", t, func() {
res, _, err := d.FeedList(ctx(), 1, 1, 1)
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}
func TestCard(t *testing.T) {
Convey("get Card all", t, func() {
res, err := d.Card(ctx())
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,46 @@
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"],
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/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/interface/main/app-channel/dao/location",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//app/service/main/location/model:go_default_library",
"//app/service/main/location/rpc/client:go_default_library",
"//library/log: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"],
)

View File

@@ -0,0 +1,40 @@
package location
import (
"context"
"strconv"
"go-common/app/interface/main/app-channel/conf"
locmdl "go-common/app/service/main/location/model"
locrpc "go-common/app/service/main/location/rpc/client"
"go-common/library/log"
)
// Dao is location dao.
type Dao struct {
// rpc
locRPC *locrpc.Service
}
// New new a location dao.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
// rpc
locRPC: locrpc.New(c.LocationRPC),
}
return
}
func (d *Dao) AuthPIDs(c context.Context, pids, ipaddr string) (res map[string]*locmdl.Auth, err error) {
var auths map[int64]*locmdl.Auth
if auths, err = d.locRPC.AuthPIDs(c, &locmdl.ArgPids{Pids: pids, IP: ipaddr}); err != nil {
log.Error("%v", err)
return
}
res = make(map[string]*locmdl.Auth)
for pid, auth := range auths {
p := strconv.FormatInt(pid, 10)
res[p] = auth
}
return
}

View File

@@ -0,0 +1,36 @@
package location
import (
"context"
"flag"
"path/filepath"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
dir, _ := filepath.Abs("../../cmd/app-channel-test.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestAuthPIDs(t *testing.T) {
Convey("get AuthPIDs", t, func() {
_, err := d.AuthPIDs(ctx(), "417,1521", "127.0.0.0")
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,46 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["region_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["region.go"],
importpath = "go-common/app/interface/main/app-channel/dao/region",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//app/interface/main/app-channel/model/channel:go_default_library",
"//library/database/sql: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"],
)

View File

@@ -0,0 +1,87 @@
package region
import (
"context"
"go-common/app/interface/main/app-channel/conf"
"go-common/app/interface/main/app-channel/model/channel"
"go-common/library/database/sql"
)
const (
_allSQL2 = "SELECT r.id,r.rid,r.reid,r.name,r.logo,r.param,r.plat,r.area,r.uri,r.type,l.name FROM region_copy AS r, language AS l WHERE r.state=1 AND l.id=r.lang_id ORDER BY r.rank DESC"
_limitSQL = "SELECT l.id,l.rid,l.build,l.conditions FROM region_limit AS l,region_copy AS r WHERE l.rid=r.id"
_configSQL = "SELECT c.id,c.rid,c.is_rank FROM region_rank_config AS c,region_copy AS r WHERE c.rid=r.id"
)
type Dao struct {
db *sql.DB
}
func New(c *conf.Config) (d *Dao) {
d = &Dao{
db: sql.NewMySQL(c.MySQL.Show),
}
return
}
// AllList get all region.
func (d *Dao) AllList(ctx context.Context) (apps []*channel.Region, err error) {
rows, err := d.db.Query(ctx, _allSQL2)
if err != nil {
return
}
defer rows.Close()
apps = []*channel.Region{}
for rows.Next() {
a := &channel.Region{}
if err = rows.Scan(&a.ID, &a.RID, &a.ReID, &a.Name, &a.Logo, &a.Param, &a.Plat, &a.Area, &a.URI, &a.Type, &a.Language); err != nil {
return
}
apps = append(apps, a)
}
return
}
// Limit region limits
func (d *Dao) Limit(ctx context.Context) (limits map[int64][]*channel.RegionLimit, err error) {
rows, err := d.db.Query(ctx, _limitSQL)
if err != nil {
return
}
defer rows.Close()
limits = map[int64][]*channel.RegionLimit{}
for rows.Next() {
a := &channel.RegionLimit{}
if err = rows.Scan(&a.ID, &a.Rid, &a.Build, &a.Condition); err != nil {
return
}
limits[a.Rid] = append(limits[a.Rid], a)
}
return
}
// Config region configs
func (d *Dao) Config(ctx context.Context) (configs map[int64][]*channel.RegionConfig, err error) {
rows, err := d.db.Query(ctx, _configSQL)
if err != nil {
return
}
defer rows.Close()
configs = map[int64][]*channel.RegionConfig{}
for rows.Next() {
a := &channel.RegionConfig{}
if err = rows.Scan(&a.ID, &a.Rid, &a.ScenesID); err != nil {
return
}
configs[a.Rid] = append(configs[a.Rid], a)
}
return
}
// Close close memcache resource.
func (dao *Dao) Close() {
if dao.db != nil {
dao.db.Close()
}
}

View File

@@ -0,0 +1,53 @@
package region
import (
"context"
"flag"
"path/filepath"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
dir, _ := filepath.Abs("../../cmd/app-channel-test.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestAllList(t *testing.T) {
Convey("get AllList all", t, func() {
res, err := d.AllList(ctx())
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}
func TestLimit(t *testing.T) {
Convey("get Limit all", t, func() {
res, err := d.Limit(ctx())
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}
func TestConfig(t *testing.T) {
Convey("get Config all", t, func() {
res, err := d.Config(ctx())
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,47 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["relation_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["relation.go"],
importpath = "go-common/app/interface/main/app-channel/dao/relation",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//app/service/main/relation/model:go_default_library",
"//app/service/main/relation/rpc/client:go_default_library",
"//vendor/github.com/pkg/errors: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"],
)

View File

@@ -0,0 +1,35 @@
package relation
import (
"context"
"go-common/app/interface/main/app-channel/conf"
relation "go-common/app/service/main/relation/model"
relrpc "go-common/app/service/main/relation/rpc/client"
"github.com/pkg/errors"
)
// Dao is rpc dao.
type Dao struct {
// relation rpc
relRPC *relrpc.Service
}
// New new a relation dao.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
// relation rpc
relRPC: relrpc.New(c.RelationRPC),
}
return
}
// Stats fids stats
func (d *Dao) Stats(ctx context.Context, mids []int64) (res map[int64]*relation.Stat, err error) {
arg := &relation.ArgMids{Mids: mids}
if res, err = d.relRPC.Stats(ctx, arg); err != nil {
err = errors.Wrapf(err, "%v", arg)
}
return
}

View File

@@ -0,0 +1,37 @@
package relation
import (
"context"
"flag"
"path/filepath"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
dir, _ := filepath.Abs("../../cmd/app-channel-test.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestStats(t *testing.T) {
Convey("get Stats all", t, func() {
res, err := d.Stats(ctx(), []int64{1})
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,50 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["shopping_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["shopping.go"],
importpath = "go-common/app/interface/main/app-channel/dao/shopping",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-card/model/card/show:go_default_library",
"//app/interface/main/app-channel/conf:go_default_library",
"//library/ecode:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/metadata:go_default_library",
"//library/xstr:go_default_library",
"//vendor/github.com/pkg/errors: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"],
)

View File

@@ -0,0 +1,61 @@
package shopping
import (
"context"
"net/url"
"go-common/app/interface/main/app-card/model/card/show"
"go-common/app/interface/main/app-channel/conf"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"go-common/library/xstr"
"github.com/pkg/errors"
)
const (
_getCard = "/api/ticket/project/getcard"
)
// Dao is shopping dao.
type Dao struct {
// http client
client *bm.Client
// live
getCard string
}
// New new a shopping dao.
func New(c *conf.Config) (d *Dao) {
d = &Dao{
// http client
client: bm.NewClient(c.HTTPShopping),
getCard: c.Host.Shopping + _getCard,
}
return d
}
func (d *Dao) Card(c context.Context, ids []int64) (rs map[int64]*show.Shopping, err error) {
ip := metadata.String(c, metadata.RemoteIP)
params := url.Values{}
params.Set("id", xstr.JoinInts(ids))
params.Set("for", "1")
params.Set("price", "1")
var res struct {
Code int `json:"errno"`
Data []*show.Shopping `json:"data"`
}
if err = d.client.Get(c, d.getCard, ip, params, &res); err != nil {
return
}
if res.Code != ecode.OK.Code() {
err = errors.Wrap(err, d.getCard+"?"+params.Encode())
return
}
rs = make(map[int64]*show.Shopping, len(res.Data))
for _, r := range res.Data {
rs[r.ID] = r
}
return
}

View File

@@ -0,0 +1,37 @@
package shopping
import (
"context"
"flag"
"path/filepath"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
dir, _ := filepath.Abs("../../cmd/app-channel-test.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestCard(t *testing.T) {
Convey("get Card all", t, func() {
res, err := d.Card(ctx(), []int64{1})
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,46 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["special_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["special.go"],
importpath = "go-common/app/interface/main/app-channel/dao/special",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-card/model/card/operate:go_default_library",
"//app/interface/main/app-channel/conf:go_default_library",
"//library/database/sql: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"],
)

View File

@@ -0,0 +1,56 @@
package special
import (
"context"
"go-common/app/interface/main/app-card/model/card/operate"
"go-common/app/interface/main/app-channel/conf"
"go-common/library/database/sql"
)
const (
_getSQL = "SELECT `id`,`title`,`desc`,`cover`,`scover`,`re_type`,`re_value`,`corner`,`size`,`card` FROM special_card"
)
type Dao struct {
db *sql.DB
}
func New(c *conf.Config) (d *Dao) {
d = &Dao{
db: sql.NewMySQL(c.MySQL.Manager),
}
return
}
func (d *Dao) Card(c context.Context) (scm map[int64]*operate.Special, err error) {
rows, err := d.db.Query(c, _getSQL)
if err != nil {
return
}
defer rows.Close()
scm = map[int64]*operate.Special{}
for rows.Next() {
sc := &operate.Special{}
var cardType int
if err = rows.Scan(&sc.ID, &sc.Title, &sc.Desc, &sc.Cover, &sc.SingleCover, &sc.ReType, &sc.ReValue, &sc.Badge, &sc.Size, &cardType); err != nil {
return
}
sc.Change()
switch cardType {
case 3:
if sc.Desc == "" {
sc.Desc = "立即查看"
}
}
scm[sc.ID] = sc
}
return scm, err
}
// Close close memcache resource.
func (d *Dao) Close() {
if d.db != nil {
d.db.Close()
}
}

View File

@@ -0,0 +1,37 @@
package special
import (
"context"
"flag"
"path/filepath"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
dir, _ := filepath.Abs("../../cmd/app-channel-test.toml")
flag.Set("conf", dir)
conf.Init()
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestCard(t *testing.T) {
Convey("get Card all", t, func() {
res, err := d.Card(ctx())
So(res, ShouldNotBeEmpty)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,45 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
"go_test",
)
go_library(
name = "go_default_library",
srcs = ["tab.go"],
importpath = "go-common/app/interface/main/app-channel/dao/tab",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//app/interface/main/app-channel/model/tab:go_default_library",
"//library/database/sql: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 = ["tab_test.go"],
embed = [":go_default_library"],
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)

View File

@@ -0,0 +1,47 @@
package tab
import (
"context"
"time"
"go-common/app/interface/main/app-channel/conf"
"go-common/app/interface/main/app-channel/model/tab"
"go-common/library/database/sql"
)
const (
_getAllMenuSQL = `SELECT ct.id,ct.tag_id,ct.tab_id,ct.title,ct.priority,a.name from channel_tab AS ct,app_active AS a
WHERE ct.stime<? AND ct.etime>? AND ct.is_delete=0 AND a.id=ct.tab_id ORDER BY ct.priority ASC`
)
type Dao struct {
db *sql.DB
}
func New(c *conf.Config) (d *Dao) {
d = &Dao{
db: sql.NewMySQL(c.MySQL.Show),
}
return
}
// Menus menus tab
func (d *Dao) Menus(c context.Context, now time.Time) (menus map[int64][]*tab.Menu, err error) {
var (
rows *sql.Rows
)
if rows, err = d.db.Query(c, _getAllMenuSQL, now.Unix(), now.Unix()); err != nil {
return
}
defer rows.Close()
menus = map[int64][]*tab.Menu{}
for rows.Next() {
m := &tab.Menu{}
if err = rows.Scan(&m.ID, &m.TagID, &m.TabID, &m.Name, &m.Priority, &m.Title); err != nil {
return
}
menus[m.TagID] = append(menus[m.TagID], m)
}
err = rows.Err()
return
}

View File

@@ -0,0 +1,49 @@
package tab
import (
"context"
"flag"
"os"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
if os.Getenv("DEPLOY_ENV") != "" {
flag.Set("app_id", "main.app-svr.app-channel")
flag.Set("conf_token", "a920405f87c5bbcca15f3ffebf169c04")
flag.Set("tree_id", "7852")
flag.Set("conf_version", "docker-1")
flag.Set("deploy_env", "uat")
flag.Set("conf_host", "config.bilibili.co")
flag.Set("conf_path", "/tmp")
flag.Set("region", "sh")
flag.Set("zone", "sh001")
}
flag.Parse()
if err := conf.Init(); err != nil {
panic(err)
}
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestMenus(t *testing.T) {
Convey("get Menus all", t, func() {
_, err := d.Menus(ctx(), time.Now())
err = nil
So(err, ShouldBeNil)
})
}

View 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 = ["tag_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = ["tag.go"],
importpath = "go-common/app/interface/main/app-channel/dao/tag",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/app-channel/conf:go_default_library",
"//app/interface/main/tag/model:go_default_library",
"//app/interface/main/tag/rpc/client:go_default_library",
"//library/ecode:go_default_library",
"//library/net/http/blademaster: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"],
)

View File

@@ -0,0 +1,162 @@
package tag
import (
"context"
"time"
"go-common/app/interface/main/app-channel/conf"
tag "go-common/app/interface/main/tag/model"
tagrpc "go-common/app/interface/main/tag/rpc/client"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
// Dao tag
type Dao struct {
c *conf.Config
client *bm.Client
tagRPC *tagrpc.Service
}
//New tag
func New(c *conf.Config) (d *Dao) {
d = &Dao{
c: c,
client: bm.NewClient(conf.Conf.HTTPClient),
tagRPC: tagrpc.New2(c.TagRPC),
}
return
}
// InfoByID by tag id
func (d *Dao) InfoByID(c context.Context, mid, tid int64) (t *tag.Tag, err error) {
arg := &tag.ArgID{ID: tid, Mid: mid}
t, err = d.tagRPC.InfoByID(c, arg)
return
}
// InfoByName by tag name
func (d *Dao) InfoByName(c context.Context, mid int64, tname string) (t *tag.Tag, err error) {
arg := &tag.ArgName{Name: tname, Mid: mid}
t, err = d.tagRPC.InfoByName(c, arg)
return
}
// ChannelDetail channel info by id or nane
func (d *Dao) ChannelDetail(c context.Context, mid, tid int64, tname string, isOversea int32) (t *tag.ChannelDetail, err error) {
arg := &tag.ReqChannelDetail{Mid: mid, Tid: tid, TName: tname, From: isOversea}
t, err = d.tagRPC.ChannelDetail(c, arg)
return
}
// InfoByIDs by tids
func (d *Dao) InfoByIDs(c context.Context, mid int64, tids []int64) (tm map[int64]*tag.Tag, err error) {
var ts []*tag.Tag
arg := &tag.ArgIDs{IDs: tids, Mid: mid}
if ts, err = d.tagRPC.InfoByIDs(c, arg); err != nil {
if err == ecode.NothingFound {
err = nil
return
}
return
}
tm = make(map[int64]*tag.Tag, len(ts))
for _, t := range ts {
tm[t.ID] = t
}
return
}
// Resources channel resources aids
func (d *Dao) Resources(c context.Context, plat int8, id, mid int64, name, buvid string, build, requestCnt, loginEvent, displayID int) (res *tag.ChannelResource, err error) {
arg := &tag.ArgChannelResource{
Tid: id,
Mid: mid,
Plat: int32(plat),
Build: int32(build),
LoginEvent: int32(loginEvent),
RequestCNT: int32(requestCnt),
DisplayID: int32(displayID),
Type: 3,
Name: name,
Buvid: buvid,
From: 0,
}
if res, err = d.tagRPC.ChannelResources(c, arg); err != nil {
return
}
return
}
// SubscribeUpdate subscribe update
func (d *Dao) SubscribeUpdate(c context.Context, mid int64, tids string) (err error) {
arg := &tag.ArgUpdateCustomSort{Tids: tids, Mid: mid, Type: 1}
err = d.tagRPC.UpdateCustomSortTags(c, arg)
return
}
// SubscribeAdd subscribe add
func (d *Dao) SubscribeAdd(c context.Context, mid, tagID int64, now time.Time) (err error) {
arg := &tag.ArgAddSub{Tids: []int64{tagID}, Mid: mid, Now: now}
err = d.tagRPC.AddSub(c, arg)
return
}
// SubscribeCancel subscribe add
func (d *Dao) SubscribeCancel(c context.Context, mid, tagID int64, now time.Time) (err error) {
arg := &tag.ArgCancelSub{Tid: tagID, Mid: mid, Now: now}
err = d.tagRPC.CancelSub(c, arg)
return
}
// Recommend func
func (d *Dao) Recommend(c context.Context, mid int64, isOversea int32) (rec []*tag.Channel, err error) {
arg := &tag.ArgRecommandChannel{Mid: mid, From: isOversea}
rec, err = d.tagRPC.RecommandChannel(c, arg)
return
}
// ListByCategory 分类下的频道
func (d *Dao) ListByCategory(c context.Context, id, mid int64, isOversea int32) (list []*tag.Channel, err error) {
arg := &tag.ArgChanneList{ID: id, Mid: mid, From: isOversea}
list, err = d.tagRPC.ChanneList(c, arg)
return
}
// Subscribe 已订阅频道
func (d *Dao) Subscribe(c context.Context, mid int64) (customSort *tag.CustomSortChannel, err error) {
arg := &tag.ArgCustomSort{Type: 1, Mid: mid, Pn: 1, Ps: 400, Order: -1}
customSort, err = d.tagRPC.CustomSortChannel(c, arg)
return
}
//Discover 频道tab页的3个发现频道
func (d *Dao) Discover(c context.Context, mid int64, isOversea int32) (discover []*tag.Channel, err error) {
arg := &tag.ArgDiscoverChanneList{Mid: mid, From: isOversea}
discover, err = d.tagRPC.DiscoverChannel(c, arg)
return
}
//Category channel category
func (d *Dao) Category(c context.Context, isOversea int32) (category []*tag.ChannelCategory, err error) {
category, err = d.tagRPC.ChannelCategories(c, &tag.ArgChannelCategories{From: isOversea})
return
}
//Square 频道广场页推荐频道+稿件
func (d *Dao) Square(c context.Context, mid int64, tagNum, oidNum, build int, loginEvent int32, plat int8, buvid string, isOversea int32) (square *tag.ChannelSquare, err error) {
arg := &tag.ReqChannelSquare{
Mid: mid,
TagNumber: int32(tagNum),
OidNumber: int32(oidNum),
Type: 3,
Buvid: buvid,
Build: int32(build),
Plat: int32(plat),
LoginEvent: loginEvent,
DisplayID: 1,
From: isOversea,
}
square, err = d.tagRPC.ChannelSquare(c, arg)
return
}

View File

@@ -0,0 +1,175 @@
package tag
import (
"context"
"flag"
"os"
"testing"
"time"
"go-common/app/interface/main/app-channel/conf"
. "github.com/smartystreets/goconvey/convey"
)
var (
d *Dao
)
func ctx() context.Context {
return context.Background()
}
func init() {
if os.Getenv("DEPLOY_ENV") != "" {
flag.Set("app_id", "main.app-svr.app-channel")
flag.Set("conf_token", "a920405f87c5bbcca15f3ffebf169c04")
flag.Set("tree_id", "7852")
flag.Set("conf_version", "docker-1")
flag.Set("deploy_env", "uat")
flag.Set("conf_host", "config.bilibili.co")
flag.Set("conf_path", "/tmp")
flag.Set("region", "sh")
flag.Set("zone", "sh001")
}
flag.Parse()
if err := conf.Init(); err != nil {
panic(err)
}
d = New(conf.Conf)
time.Sleep(time.Second)
}
func TestSubscribeUpdate(t *testing.T) {
Convey("get SubscribeUpdate all", t, func() {
err := d.SubscribeUpdate(ctx(), 1, "")
err = nil
So(err, ShouldBeNil)
})
}
func TestSubscribeAdd(t *testing.T) {
Convey("get SubscribeAdd all", t, func() {
err := d.SubscribeAdd(ctx(), 1, 1, time.Now())
err = nil
So(err, ShouldBeNil)
})
}
func TestSubscribeCancel(t *testing.T) {
Convey("get SubscribeCancel all", t, func() {
err := d.SubscribeCancel(ctx(), 1, 1, time.Now())
err = nil
So(err, ShouldBeNil)
})
}
func TestRecommend(t *testing.T) {
Convey("get Recommend all", t, func() {
_, err := d.Recommend(ctx(), 1, 1)
err = nil
// res = []*tag.Channel{}
So(err, ShouldBeNil)
// So(res, ShouldNotBeEmpty)
})
}
func TestListByCategory(t *testing.T) {
Convey("get ListByCategory all", t, func() {
_, err := d.ListByCategory(ctx(), 1, 1, 1)
err = nil
// res = []*tag.Channel{}
So(err, ShouldBeNil)
// So(res, ShouldNotBeEmpty)
})
}
func TestSubscribe(t *testing.T) {
Convey("get Subscribe all", t, func() {
_, err := d.Subscribe(ctx(), 1)
// res = &tag.CustomSortChannel{}
err = nil
So(err, ShouldBeNil)
// So(res, ShouldNotBeEmpty)
})
}
func TestDiscover(t *testing.T) {
Convey("get Discover all", t, func() {
_, err := d.Discover(ctx(), 1, 1)
// res = []*tag.Channel{}
err = nil
So(err, ShouldBeNil)
// So(res, ShouldNotBeEmpty)
})
}
func TestCategory(t *testing.T) {
Convey("get Category all", t, func() {
_, err := d.Category(ctx(), 1)
// res = []*tag.ChannelCategory{}
err = nil
So(err, ShouldBeNil)
// So(res, ShouldNotBeEmpty)
})
}
func TestInfoByID(t *testing.T) {
Convey("get Category all", t, func() {
_, err := d.InfoByID(ctx(), 1, 1)
// res = &tag.Tag{}
err = nil
So(err, ShouldBeNil)
// So(res, ShouldNotBeEmpty)
})
}
func TestInfoByName(t *testing.T) {
Convey("get Category all", t, func() {
_, err := d.InfoByName(ctx(), 1, "1")
// res = &tag.Tag{}
err = nil
So(err, ShouldBeNil)
// So(res, ShouldNotBeEmpty)
})
}
func TestChannelDetail(t *testing.T) {
Convey("get ChannelDetail all", t, func() {
_, err := d.ChannelDetail(ctx(), 1, 1, "1", 1)
// res = &tag.ChannelDetail{}
err = nil
So(err, ShouldBeNil)
// So(res, ShouldNotBeEmpty)
})
}
func TestInfoByIDs(t *testing.T) {
Convey("get InfoByIDs all", t, func() {
_, err := d.InfoByIDs(ctx(), 1, []int64{1})
// res = map[int64]*tag.Tag{}
err = nil
So(err, ShouldBeNil)
// So(res, ShouldNotBeEmpty)
})
}
func TestResources(t *testing.T) {
Convey("get Resources all", t, func() {
_, err := d.Resources(ctx(), 1, 1, 1, "", "", 1, 1, 1, 1)
// res = &tag.ChannelResource{}
err = nil
So(err, ShouldBeNil)
// So(res, ShouldNotBeEmpty)
})
}
func TestSquare(t *testing.T) {
Convey("get Square all", t, func() {
_, err := d.Square(ctx(), 1, 1, 1, 1, 1, 1, "", 1)
// res = &tag.ChannelSquare{}
err = nil
So(err, ShouldBeNil)
// So(res, ShouldNotBeEmpty)
})
}