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,35 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = ["service.go"],
importpath = "go-common/app/interface/live/app-ucenter/service",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/live/app-ucenter/conf:go_default_library",
"//app/interface/live/app-ucenter/dao:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
"//app/interface/live/app-ucenter/service/v1:all-srcs",
],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,33 @@
package service
import (
"context"
"go-common/app/interface/live/app-ucenter/conf"
"go-common/app/interface/live/app-ucenter/dao"
)
// Service struct
type Service struct {
c *conf.Config
dao *dao.Dao
}
// New init
func New(c *conf.Config) (s *Service) {
s = &Service{
c: c,
dao: dao.New(c),
}
return s
}
// Ping Service
func (s *Service) Ping(c context.Context) (err error) {
return s.dao.Ping(c)
}
// Close Service
func (s *Service) Close() {
s.dao.Close()
}

View File

@@ -0,0 +1,60 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = [
"roomAdmin_test.go",
"room_test.go",
"topic_test.go",
],
embed = [":go_default_library"],
tags = ["automanaged"],
deps = [
"//app/interface/live/app-ucenter/api/http/v1:go_default_library",
"//app/interface/live/app-ucenter/conf:go_default_library",
"//library/net/metadata:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = [
"room.go",
"roomAdmin.go",
"topic.go",
],
importpath = "go-common/app/interface/live/app-ucenter/service/v1",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/interface/live/app-ucenter/api/http/v1:go_default_library",
"//app/interface/live/app-ucenter/conf:go_default_library",
"//app/interface/live/app-ucenter/dao:go_default_library",
"//app/service/live/xuser/api/grpc/v1:go_default_library",
"//library/ecode: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,162 @@
package v1
import (
"context"
v1pb "go-common/app/interface/live/app-ucenter/api/http/v1"
"go-common/app/interface/live/app-ucenter/conf"
"go-common/app/interface/live/app-ucenter/dao"
"go-common/library/ecode"
"go-common/library/net/metadata"
"go-common/library/sync/errgroup"
)
// RoomService struct
type RoomService struct {
conf *conf.Config
// optionally add other properties here, such as dao
dao *dao.Dao
}
//NewRoomService init
func NewRoomService(c *conf.Config) (s *RoomService) {
s = &RoomService{
conf: c,
dao: dao.New(c),
}
return s
}
// GetInfo implementation
// 获取房间基本信息
// `method:"GET" midware:"auth"`
func (s *RoomService) GetInfo(ctx context.Context, req *v1pb.GetRoomInfoReq) (resp *v1pb.GetRoomInfoResp, err error) {
uid, ok := metadata.Value(ctx, metadata.Mid).(int64)
if uid <= 0 || !ok {
err = ecode.UidError
return
}
uidArr := make([]int64, 0)
uidArr = append(uidArr, uid)
resp = &v1pb.GetRoomInfoResp{}
resp.Uid = uid
resp.FullText = "V等级5级或UP等级10级才能开通粉丝勋章哦~加油!"
resp.OpenMedalLevel = dao.OpenFansMealLevel
resp.MaxLevel = 40
eg := errgroup.Group{}
eg.Go(func() (err error) {
room, err := s.dao.GetRoomInfosByUids(ctx, uidArr)
if err != nil {
err = ecode.CallRoomError
return
}
roomInfo := room[uid]
if roomInfo == nil {
return
}
LockStatus := 0
//if roomInfo.LockTill >= dao.PERMANENT_LOCK_TIME {
// LockStatus = 1
//}
resp.RoomId = roomInfo.RoomId
resp.Title = roomInfo.Title
resp.LiveStatus = roomInfo.LiveStatus
resp.AreaV2Id = roomInfo.AreaV2Id
resp.AreaV2Name = roomInfo.AreaV2Name
resp.LockTime = roomInfo.LockTill
resp.LockStatus = int64(LockStatus)
resp.ParentId = roomInfo.AreaV2ParentId
resp.ParentName = roomInfo.AreaV2ParentName
return
})
eg.Go(func() (err error) {
user, err := s.dao.GetUserInfo(ctx, uidArr)
if err != nil {
err = ecode.CallUserError
return
}
if user == nil {
err = ecode.UserNotFound
return
}
userInfo, ok := user[uid]
if !ok {
err = ecode.UserNotFound
return
}
resp.Face = userInfo.GetInfo().GetFace()
resp.Uname = userInfo.GetInfo().GetUname()
if userInfo.Exp != nil {
resp.MasterScore = userInfo.Exp.Rcost / 100
if userInfo.Exp.MasterLevel != nil {
masterLevel := userInfo.Exp.MasterLevel.Level
masterNextLevel := masterLevel + 1
if masterNextLevel > 40 {
masterNextLevel = 40
}
resp.MasterLevel = masterLevel
resp.MasterLevelColor = userInfo.Exp.MasterLevel.Color
resp.MasterNextLevel = masterNextLevel
if len(userInfo.Exp.MasterLevel.Next) >= 2 {
resp.MasterNextLevelScore = userInfo.Exp.MasterLevel.Next[1]
}
}
}
return
})
eg.Go(func() (err error) {
relation, err := s.dao.GetUserFc(ctx, uid)
if err != nil {
err = ecode.CallRelationError
return
}
resp.FcNum = relation.Fc
return
})
eg.Go(func() (err error) {
fansMedal, err := s.dao.GetFansMedalInfo(ctx, uid)
if err != nil {
err = ecode.CallFansMedalError
return
}
if fansMedal == nil {
return
}
resp.IsMedal = fansMedal.MasterStatus
resp.MedalName = fansMedal.MedalName
resp.MedalRenameStatus = fansMedal.RenameStatus
resp.MedalStatus = fansMedal.Status
return
})
eg.Go(func() (err error) {
identifyStatus, err := s.dao.GetIdentityStatus(ctx, uid)
if err != nil {
err = ecode.CallMainMemberError
return
}
resp.IdentifyStatus = int64(identifyStatus)
return
})
err = eg.Wait()
return
}
// Create implementation
// 创建房间
// `method:"POST" midware:"auth"`
func (s *RoomService) Create(ctx context.Context, req *v1pb.CreateReq) (resp *v1pb.CreateResp, err error) {
uid, ok := metadata.Value(ctx, metadata.Mid).(int64)
if uid <= 0 || !ok {
err = ecode.UidError
return
}
resp = &v1pb.CreateResp{}
room, err := s.dao.CreateRoom(ctx, uid)
if err != nil {
err = ecode.CallRoomError
return
}
resp.RoomId = room.Roomid
return
}

View File

@@ -0,0 +1,337 @@
package v1
import (
"context"
v1pb "go-common/app/interface/live/app-ucenter/api/http/v1"
"go-common/app/interface/live/app-ucenter/conf"
"go-common/app/service/live/xuser/api/grpc/v1"
"go-common/library/ecode"
"go-common/library/log"
"go-common/library/net/metadata"
)
// RoomAdminService struct
type RoomAdminService struct {
conf *conf.Config
// optionally add other properties here, such as dao
// dao *dao.Dao
conn v1.RoomAdminClient
}
//NewRoomAdminService init
func NewRoomAdminService(c *conf.Config) (s *RoomAdminService) {
s = &RoomAdminService{
conf: c,
}
conn, err := v1.NewXuserRoomAdminClient(conf.Conf.Warden)
if err != nil {
panic(err)
}
s.conn = conn
return s
}
// History 相关服务
// ShowEntry implementation
// 根据登录态获取功能入口是否显示, 需要登录态
// `method:"GET" midware:"auth"`
func (s *RoomAdminService) ShowEntry(ctx context.Context, req *v1pb.ShowEntryReq) (resp *v1pb.ShowEntryResp, err error) {
resp = &v1pb.ShowEntryResp{}
mid, _ := metadata.Value(ctx, "mid").(int64)
if mid <= 0 {
err = ecode.NoLogin
return
}
if err != nil {
return
}
ret, err := s.conn.IsAny(ctx, &v1.RoomAdminShowEntryReq{
Uid: mid,
})
log.Info("call IsAny mid(%v) ret(%v)", mid, ret)
resp.HasAdmin = ret.HasAdmin
return
}
// SearchForAdmin implementation
// 查询需要添加的房管
// `method:"POST" midware:"auth"`
func (s *RoomAdminService) SearchForAdmin(ctx context.Context, req *v1pb.RoomAdminSearchForAdminReq) (resp *v1pb.RoomAdminSearchForAdminResp, err error) {
resp = &v1pb.RoomAdminSearchForAdminResp{}
mid, _ := metadata.Value(ctx, "mid").(int64)
keyWord := req.GetKeyWord()
if keyWord == "" {
err = ecode.ParamInvalid
return
}
ret, err := s.conn.SearchForAdmin(ctx, &v1.RoomAdminSearchForAdminReq{
Uid: mid,
KeyWord: keyWord,
})
log.Info("call SearchForAdmin mid(%v) keyword (%v) ret(%v)", mid, keyWord, ret)
if err != nil {
return
}
if ret == nil {
log.Info("call SearchForAdmin nil mid(%v) keyword (%v) err (%v)", mid, keyWord, err)
return
}
if ret.Data == nil {
log.Info("SearchForAdmin(%v) return nil (%v)", keyWord, ret)
return
}
for _, v := range ret.Data {
resp.Data = append(resp.Data, &v1pb.RoomAdminSearchForAdminResp_Data{
Uid: v.Uid,
IsAdmin: v.IsAdmin,
Uname: v.Uname,
Face: v.Face,
MedalName: v.MedalName,
Level: v.Level,
})
}
return
}
// IsAny implementation
// 根据登录态获取功能入口是否显示, 需要登录态
// `method:"GET" midware:"auth"`
func (s *RoomAdminService) IsAny(ctx context.Context, req *v1pb.ShowEntryReq) (resp *v1pb.ShowEntryResp, err error) {
resp = &v1pb.ShowEntryResp{}
mid, _ := metadata.Value(ctx, "mid").(int64)
if mid <= 0 {
err = ecode.NoLogin
return
}
ret, err := s.conn.IsAny(ctx, &v1.RoomAdminShowEntryReq{
Uid: mid,
})
log.Info("call IsAny mid(%v) ret(%v)", mid, ret)
if err != nil {
return
}
if ret == nil {
log.Info("call IsAny nil mid(%v) err (%v)", mid, err)
return
}
resp.HasAdmin = ret.HasAdmin
return
}
// GetByUid implementation
// 获取用户拥有的的所有房管身份
// `method:"GET" midware:"auth"`
func (s *RoomAdminService) GetByUid(ctx context.Context, req *v1pb.RoomAdminGetByUidReq) (resp *v1pb.RoomAdminGetByUidResp, err error) {
resp = &v1pb.RoomAdminGetByUidResp{}
mid, _ := metadata.Value(ctx, "mid").(int64)
page := req.GetPage()
if page <= 0 {
page = 1
}
ret, err := s.conn.GetByUid(ctx, &v1.RoomAdminGetByUidReq{
Uid: mid,
Page: page,
})
log.Info("call GetByUid mid(%v) page (%v) ret(%v)", mid, page, ret)
if err != nil {
return
}
if ret == nil {
log.Info("call GetByUid nil mid(%v) err (%v)", mid, err)
return
}
if nil != ret.Page {
resp.Page = &v1pb.RoomAdminGetByUidResp_Page{
Page: ret.GetPage().GetPage(),
PageSize: ret.GetPage().GetPageSize(),
TotalPage: ret.GetPage().GetTotalPage(),
TotalCount: ret.GetPage().GetTotalCount(),
}
}
if nil != ret.Data {
for _, v := range ret.Data {
resp.Data = append(resp.Data, &v1pb.RoomAdminGetByUidResp_Data{
Uid: v.Uid,
Roomid: v.Roomid,
AnchorId: v.AnchorId,
Uname: v.Uname,
AnchorCover: v.AnchorCover,
Ctime: v.Ctime,
})
}
}
return
}
// Resign implementation
// 辞职房管
// `method:"POST" midware:"auth"`
func (s *RoomAdminService) Resign(ctx context.Context, req *v1pb.RoomAdminResignRoomAdminReq) (resp *v1pb.RoomAdminResignRoomAdminResp, err error) {
resp = &v1pb.RoomAdminResignRoomAdminResp{}
mid, _ := metadata.Value(ctx, "mid").(int64)
roomId := req.GetRoomid()
if roomId <= 0 {
err = ecode.ParamInvalid
return
}
ret, err := s.conn.Resign(ctx, &v1.RoomAdminResignRoomAdminReq{
Roomid: roomId,
Uid: mid,
})
log.Info("call Resign mid(%v) room (%v) ret(%v)", mid, roomId, ret)
if err != nil {
return
}
return
}
// GetByAnchor implementation
// 获取主播拥有的的所有房管身份
// `method:"GET" midware:"auth"`
func (s *RoomAdminService) GetByAnchor(ctx context.Context, req *v1pb.RoomAdminGetByAnchorReq) (resp *v1pb.RoomAdminGetByAnchorResp, err error) {
resp = &v1pb.RoomAdminGetByAnchorResp{}
mid, _ := metadata.Value(ctx, "mid").(int64)
page := req.GetPage()
if page <= 0 {
page = 1
}
ret, err := s.conn.GetByAnchor(ctx, &v1.RoomAdminGetByAnchorReq{
Page: page,
Uid: mid,
})
log.Info("call GetByAnchor mid(%v) page (%v) ret(%v)", mid, page, ret)
if ret == nil {
log.Info("call GetByAnchor nil mid(%v) err (%v)", mid, err)
return
}
if err != nil {
return
}
if nil != ret.GetPage() {
resp.Page = &v1pb.RoomAdminGetByAnchorResp_Page{
Page: ret.GetPage().GetPage(),
PageSize: ret.GetPage().GetPageSize(),
TotalPage: ret.GetPage().GetTotalPage(),
TotalCount: ret.GetPage().GetTotalCount(),
}
}
if nil != ret.Data {
for _, v := range ret.Data {
resp.Data = append(resp.Data, &v1pb.RoomAdminGetByAnchorResp_Data{
Uid: v.GetUid(),
Uname: v.GetUname(),
Face: v.GetFace(),
Ctime: v.GetCtime(),
MedalName: v.GetMedalName(),
Level: v.GetLevel(),
})
}
}
return
}
// Dismiss implementation
// 撤销房管
// `method:"POST" midware:"auth"`
func (s *RoomAdminService) Dismiss(ctx context.Context, req *v1pb.RoomAdminDismissAdminReq) (resp *v1pb.RoomAdminDismissAdminResp, err error) {
resp = &v1pb.RoomAdminDismissAdminResp{}
mid, _ := metadata.Value(ctx, "mid").(int64)
uid := req.GetUid()
if uid <= 0 {
err = ecode.ParamInvalid
return
}
ret, err := s.conn.Dismiss(ctx, &v1.RoomAdminDismissAdminReq{
Uid: uid,
AnchorId: mid,
})
log.Info("call Dismiss mid(%v) user (%v) ret(%v)", mid, uid, ret)
if err != nil {
return
}
return
}
// Appoint implementation
// 添加房管
// `method:"POST" midware:"auth"`
func (s *RoomAdminService) Appoint(ctx context.Context, req *v1pb.RoomAdminAddReq) (resp *v1pb.RoomAdminAddResp, err error) {
resp = &v1pb.RoomAdminAddResp{}
mid, _ := metadata.Value(ctx, "mid").(int64)
uid := req.GetUid()
if uid <= 0 {
err = ecode.ParamInvalid
return
}
ret, err := s.conn.Appoint(ctx, &v1.RoomAdminAddReq{
Uid: uid,
AnchorId: mid,
})
log.Info("call Appoint mid(%v) uid (%v) ret(%v)", mid, uid, ret)
if err != nil {
log.Info("Appoint error statusCode(%v) ret(%v), err(%+v)", ret, err)
}
if nil != ret {
resp = &v1pb.RoomAdminAddResp{
Uid: ret.GetUid(),
Roomid: ret.GetRoomid(),
}
if nil != ret.Userinfo {
userInfo := &v1pb.RoomAdminAddResp_UI{
Uid: ret.GetUserinfo().GetUid(),
Uname: ret.GetUserinfo().GetUname(),
}
resp.Userinfo = userInfo
}
} else {
log.Info("call appoint return nil uid (%v) anchorid (%v)", uid, mid)
}
return
}

View File

@@ -0,0 +1,59 @@
package v1
import (
"context"
"flag"
"go-common/app/interface/live/app-ucenter/api/http/v1"
"go-common/app/interface/live/app-ucenter/conf"
"go-common/library/net/metadata"
"testing"
. "github.com/smartystreets/goconvey/convey"
"github.com/smartystreets/goconvey/convey"
)
var roomadmin *RoomAdminService
func init() {
flag.Set("conf", "../../cmd/test.toml")
if err := conf.Init(); err != nil {
panic(err)
}
roomadmin = NewRoomAdminService(conf.Conf)
}
func TestV1ShowEntry(t *testing.T) {
convey.Convey("ShowEntry", t, func() {
ctx := metadata.NewContext(context.TODO(), metadata.MD{
metadata.Mid: int64(10000),
})
res, err := roomadmin.ShowEntry(ctx, &v1.ShowEntryReq{})
t.Logf("%v,%s", res, err)
So(err, ShouldBeNil)
})
}
func TestV1SearchForAdmin(t *testing.T) {
convey.Convey("SearchForAdmin", t, func() {
ctx := metadata.NewContext(context.TODO(), metadata.MD{
metadata.Mid: int64(10000),
})
res, err := roomadmin.SearchForAdmin(ctx, &v1.RoomAdminSearchForAdminReq{
KeyWord: "test",
})
t.Logf("%v,%s", res, err)
So(err, ShouldBeNil)
})
}
func TestV1IsAny(t *testing.T) {
convey.Convey("IsAny", t, func() {
ctx := metadata.NewContext(context.TODO(), metadata.MD{
metadata.Mid: int64(10000),
})
res, err := roomadmin.IsAny(ctx, &v1.ShowEntryReq{})
t.Logf("%v,%s", res, err)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,54 @@
package v1
import (
"context"
"flag"
"fmt"
"testing"
"go-common/app/interface/live/app-ucenter/api/http/v1"
"go-common/library/net/metadata"
. "github.com/smartystreets/goconvey/convey"
"go-common/app/interface/live/app-ucenter/conf"
)
var room *RoomService
func init() {
flag.Set("conf", "../../cmd/test.toml")
if err := conf.Init(); err != nil {
panic(err)
}
room = NewRoomService(conf.Conf)
}
// group=qa01 DEPLOY_ENV=uat go test -run TestGetRoomInfo
func TestGetRoomInfo(t *testing.T) {
Convey("TestNewRoomService", t, func() {
ctx := metadata.NewContext(context.TODO(), metadata.MD{
metadata.Mid: int64(16299525),
})
res, err := room.GetInfo(ctx, &v1.GetRoomInfoReq{
Platform: "ios",
})
fmt.Println(1111, res, err, 22222)
t.Logf("%v,%s", res, err)
So(err, ShouldBeNil)
})
}
func TestCreate(t *testing.T) {
Convey("TestNewRoomService", t, func() {
ctx := metadata.NewContext(context.TODO(), metadata.MD{
metadata.Mid: int64(16299525),
})
res, err := room.Create(ctx, &v1.CreateReq{
Platform: "ios",
})
fmt.Println(1111, res, err, 22222)
t.Logf("%v,%s", res, err)
So(err, ShouldBeNil)
})
}

View File

@@ -0,0 +1,59 @@
package v1
import (
"context"
v1pb "go-common/app/interface/live/app-ucenter/api/http/v1"
"go-common/app/interface/live/app-ucenter/conf"
"go-common/app/interface/live/app-ucenter/dao"
"go-common/library/ecode"
)
// TopicService struct
type TopicService struct {
conf *conf.Config
// optionally add other properties here, such as dao
dao *dao.Dao
}
//NewTopicService init
func NewTopicService(c *conf.Config) (s *TopicService) {
s = &TopicService{
conf: c,
dao: dao.New(c),
}
return s
}
// GetTopicList implementation
// 获取话题列表
// `method:"GET" midware:"auth"`
func (s *TopicService) GetTopicList(ctx context.Context, req *v1pb.GetTopicListReq) (resp *v1pb.GetTopicListResp, err error) {
reply, err := s.dao.GetTopicList(ctx)
if err != nil {
err = ecode.CallResourceError
return
}
resp = &v1pb.GetTopicListResp{}
resp.TopicList = reply
return
}
// CheckTopic implementation
// 检验话题是否有效
// `method:"GET" midware:"auth"`
func (s *TopicService) CheckTopic(ctx context.Context, req *v1pb.CheckTopicReq) (resp *v1pb.CheckTopicResp, err error) {
msg := req.Topic
area := "live_biaoti"
reply, err := s.dao.CheckMsgIsLegal(ctx, msg, area, 0)
if err != nil {
err = ecode.Error(ecode.CallMainFilterError, "出错啦,再试试吧")
return
}
resp = &v1pb.CheckTopicResp{}
if reply {
err = ecode.Error(ecode.FILTERNOTPASS, "当前输入的话题里面包含敏感内容~请修改~")
return
}
return
}

View File

@@ -0,0 +1,53 @@
package v1
import (
"context"
"flag"
"fmt"
"testing"
"go-common/app/interface/live/app-ucenter/api/http/v1"
"go-common/library/net/metadata"
. "github.com/smartystreets/goconvey/convey"
"go-common/app/interface/live/app-ucenter/conf"
)
var topic *TopicService
func init() {
flag.Set("conf", "../../cmd/test.toml")
if err := conf.Init(); err != nil {
panic(err)
}
topic = NewTopicService(conf.Conf)
}
// group=qa01 DEPLOY_ENV=uat go test -run TestGetTopicList
func TestGetTopicList(t *testing.T) {
Convey("TestGetTopicList", t, func() {
ctx := metadata.NewContext(context.TODO(), metadata.MD{
metadata.Mid: int64(16299525),
})
res, err := topic.GetTopicList(ctx, &v1.GetTopicListReq{
Platform: "ios",
})
fmt.Println(1111, res, err, 22222)
t.Logf("%v,%s", res, err)
So(err, ShouldBeNil)
})
}
func TestCheckTopic(t *testing.T) {
Convey("TestCheckTopic", t, func() {
ctx := metadata.NewContext(context.TODO(), metadata.MD{
metadata.Mid: int64(16299525),
})
res, err := topic.CheckTopic(ctx, &v1.CheckTopicReq{
Platform: "ios",
Topic: "我是习",
})
fmt.Println(1111, res, err, 22222)
t.Logf("%v,%s", res, err)
})
}