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,67 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["service_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/interface/main/creative/conf:go_default_library",
"//app/interface/main/creative/model/search:go_default_library",
"//app/interface/main/creative/service:go_default_library",
"//vendor/github.com/davecgh/go-spew/spew:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = [
"reply.go",
"service.go",
],
importpath = "go-common/app/interface/main/creative/service/reply",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/main/creative/conf:go_default_library",
"//app/interface/main/creative/dao/account:go_default_library",
"//app/interface/main/creative/dao/archive:go_default_library",
"//app/interface/main/creative/dao/article:go_default_library",
"//app/interface/main/creative/dao/elec:go_default_library",
"//app/interface/main/creative/dao/music:go_default_library",
"//app/interface/main/creative/dao/reply:go_default_library",
"//app/interface/main/creative/dao/search:go_default_library",
"//app/interface/main/creative/model/music:go_default_library",
"//app/interface/main/creative/model/reply:go_default_library",
"//app/interface/main/creative/model/search:go_default_library",
"//app/interface/main/creative/service:go_default_library",
"//app/interface/openplatform/article/model:go_default_library",
"//app/service/main/account/model:go_default_library",
"//app/service/main/archive/api:go_default_library",
"//library/log:go_default_library",
"//library/net/metadata: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"],
)

View File

@@ -0,0 +1,174 @@
package reply
import (
"context"
"go-common/app/interface/main/creative/model/music"
"go-common/app/interface/main/creative/model/reply"
seamdl "go-common/app/interface/main/creative/model/search"
"go-common/app/interface/openplatform/article/model"
account "go-common/app/service/main/account/model"
"go-common/app/service/main/archive/api"
"go-common/library/log"
"go-common/library/net/metadata"
"go-common/library/sync/errgroup"
)
// Replies get reply list.
func (s *Service) Replies(c context.Context, p *seamdl.ReplyParam) (res *seamdl.Replies, err error) {
if res, err = s.sear.ReplyES(c, p); err != nil {
return
}
if res == nil {
return
}
var (
g, ctx = errgroup.WithContext(c)
mids = res.Repliers
oids = res.Oids
tyOids = res.TyOids
replies map[int64]*reply.Reply
elecRelation map[int64]int
followers map[int64]int
users map[int64]*account.Info
arcs map[int64]*api.Arc
arts map[int64]*model.Meta
auds map[int64]*music.Audio
)
log.Info("s.sear.Replies mid(%d)|type(%d)|mids(%+v)|res(%+v)", p.OMID, p.Type, mids, res)
g.Go(func() error { //获取具体评论信息
if len(res.DeriveIds) > 0 && len(res.DeriveOids) > 0 {
replies, _ = s.reply.ReplyMinfo(ctx, p.Ak, p.Ck, p.OMID, int64(p.Type), res.DeriveIds, res.DeriveOids, p.IP)
}
return nil
})
g.Go(func() error { //获取被充电状态
if len(mids) > 0 {
elecRelation, _ = s.elec.ElecRelation(ctx, p.OMID, mids, p.IP)
}
return nil
})
g.Go(func() error { //获取被关注状态
if len(mids) > 0 {
followers, _ = s.acc.Followers(ctx, p.OMID, mids, p.IP)
}
return nil
})
g.Go(func() error { //获取用户信息
if len(mids) > 0 {
users, _ = s.acc.Infos(ctx, mids, p.IP)
}
return nil
})
g.Go(func() error { //获取各种查询对象信息
switch p.Type {
case seamdl.All: //查询所有
if v, ok := tyOids[seamdl.Archive]; ok { //稿件
g.Go(func() error {
arcs, _ = s.arc.Archives(ctx, v, p.IP)
return nil
})
}
if v, ok := tyOids[seamdl.Article]; ok { //文章
g.Go(func() error {
arts, _ = s.art.ArticleMetas(ctx, v, p.IP)
return nil
})
}
if v, ok := tyOids[seamdl.Audio]; ok { //音频
g.Go(func() error {
auds, _ = s.mus.Audio(c, v, 0, p.IP)
return nil
})
}
case seamdl.Archive: //稿件
arcs, _ = s.arc.Archives(ctx, oids, p.IP)
case seamdl.SmallVideo: //小视频
case seamdl.Article: //文章
arts, _ = s.art.ArticleMetas(ctx, oids, p.IP)
case seamdl.Audio: //音频
auds, _ = s.mus.Audio(c, oids, 0, p.IP)
}
return nil
})
g.Wait()
for _, v := range res.Result {
if v == nil {
continue
}
if p, ok := replies[v.Parent]; ok { //设置父级评论信息
v.RootInfo = p
v.ParentInfo = p
}
if elec, ok := elecRelation[v.Mid]; ok { //设置充电状态
v.IsElec = elec
}
if fl, ok := followers[v.Mid]; ok { //设置关注状态
v.Relation = fl
}
if u, ok := users[v.Mid]; ok { //设置图像和用户名
v.Replier = u.Name
v.Uface = u.Face
}
switch v.Type {
case seamdl.Archive: //稿件
if av, ok := arcs[v.Oid]; ok && av != nil {
v.Title = av.Title
v.Cover = av.Pic
}
case seamdl.SmallVideo: //小视频
case seamdl.Article: //文章
if art, ok := arts[v.Oid]; ok && art != nil {
var cover string
if len(art.ImageURLs) > 0 {
cover = art.ImageURLs[0]
}
v.Title = art.Title
v.Cover = cover
}
case seamdl.Audio: //音频
if au, ok := auds[v.Oid]; ok && au != nil {
v.Title = au.Title
v.Cover = au.Cover
}
}
}
return
}
// AppIndexReplies get newest reply list.
func (s *Service) AppIndexReplies(c context.Context, ak, ck string, mid, oid int64, isReport, isHidden, tp, resMdlPlat int8, filterStr, kw, order, ip string, pn, ps int64) (res *seamdl.Replies, err error) {
p := &seamdl.ReplyParam{
Ak: ak,
Ck: ck,
OMID: mid,
OID: oid,
IsReport: isReport,
Type: tp,
FilterCtime: filterStr,
Kw: kw,
Order: order,
IP: metadata.String(c, metadata.RemoteIP),
Ps: int(ps),
Pn: int(pn),
ResMdlPlat: resMdlPlat,
}
if res, err = s.Replies(c, p); err != nil {
return
}
if res == nil || len(res.Result) == 0 {
return
}
replies := make([]*seamdl.Reply, 0, len(res.Result))
for _, v := range res.Result {
if v.Type == seamdl.Audio {
continue
}
replies = append(replies, v)
if len(replies) == 2 {
break
}
}
res.Result = replies
return
}

View File

@@ -0,0 +1,51 @@
package reply
import (
"context"
"go-common/app/interface/main/creative/conf"
"go-common/app/interface/main/creative/dao/account"
"go-common/app/interface/main/creative/dao/archive"
"go-common/app/interface/main/creative/dao/article"
"go-common/app/interface/main/creative/dao/elec"
"go-common/app/interface/main/creative/dao/music"
"go-common/app/interface/main/creative/dao/reply"
"go-common/app/interface/main/creative/dao/search"
"go-common/app/interface/main/creative/service"
"go-common/library/log"
)
// Service reply.
type Service struct {
c *conf.Config
sear *search.Dao
acc *account.Dao
elec *elec.Dao
reply *reply.Dao
arc *archive.Dao
art *article.Dao
mus *music.Dao
}
// New get reply service.
func New(c *conf.Config, rpcdaos *service.RPCDaos) *Service {
s := &Service{
c: c,
sear: search.New(c),
acc: rpcdaos.Acc,
elec: elec.New(c),
reply: reply.New(c),
arc: rpcdaos.Arc,
art: article.New(c),
mus: music.New(c),
}
return s
}
// Ping service.
func (s *Service) Ping(c context.Context) (err error) {
if err = s.sear.Ping(c); err != nil {
log.Error("s.archive.Dao.PingDb err(%v)", err)
}
return
}

View File

@@ -0,0 +1,102 @@
package reply
import (
"context"
"flag"
"go-common/app/interface/main/creative/conf"
seamdl "go-common/app/interface/main/creative/model/search"
"path/filepath"
"testing"
"time"
"go-common/app/interface/main/creative/service"
"github.com/davecgh/go-spew/spew"
. "github.com/smartystreets/goconvey/convey"
)
var (
s *Service
)
func init() {
dir, _ := filepath.Abs("../../cmd/creative.toml")
flag.Set("conf", dir)
conf.Init()
rpcdaos := service.NewRPCDaos(conf.Conf)
s = New(conf.Conf, rpcdaos)
time.Sleep(time.Second)
}
func WithService(f func(s *Service)) func() {
return func() {
Reset(func() {})
f(s)
}
}
func Test_Replies(t *testing.T) {
var (
c = context.TODO()
mid = int64(2089809)
oid = int64(0)
res *seamdl.Replies
err error
p *seamdl.ReplyParam
)
Convey("Replies", t, WithService(func(s *Service) {
p = &seamdl.ReplyParam{
Ak: "ak",
Ck: "ck",
OMID: mid,
OID: oid,
Pn: 1,
Ps: 10,
}
res, err = s.Replies(c, p)
So(err, ShouldBeNil)
So(res, ShouldNotBeNil)
spew.Dump(res)
}))
}
func Test_Archives(t *testing.T) {
var (
oids = []int64{1, 2, 3, 4}
ip = "127.0.0.1"
c = context.TODO()
)
Convey("Archives", t, WithService(func(s *Service) {
res, err := s.arc.Archives(c, oids, ip)
So(err, ShouldBeNil)
So(res, ShouldNotBeNil)
}))
}
func Test_Articles(t *testing.T) {
var (
oids = []int64{1, 2, 3, 4}
ip = "127.0.0.1"
c = context.TODO()
)
Convey("Articles", t, WithService(func(s *Service) {
res, err := s.art.ArticleMetas(c, oids, ip)
So(err, ShouldBeNil)
So(res, ShouldNotBeNil)
}))
}
func Test_Audio(t *testing.T) {
var (
oids = []int64{47276}
level = 0
ip = "127.0.0.1"
c = context.TODO()
)
Convey("Audio", t, WithService(func(s *Service) {
res, err := s.mus.Audio(c, oids, level, ip)
So(err, ShouldBeNil)
So(res, ShouldNotBeNil)
spew.Dump(res)
}))
}