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,18 @@
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
"//app/service/main/member/server/gorpc:all-srcs",
"//app/service/main/member/server/grpc:all-srcs",
"//app/service/main/member/server/http:all-srcs",
],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,59 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_test",
"go_library",
)
go_test(
name = "go_default_test",
srcs = ["rpc_test.go"],
embed = [":go_default_library"],
rundir = ".",
tags = ["automanaged"],
deps = [
"//app/service/main/member/conf:go_default_library",
"//app/service/main/member/model:go_default_library",
"//app/service/main/member/service:go_default_library",
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = [
"block.go",
"member.go",
"moral.go",
"property_review.go",
"realname.go",
"rpc.go",
],
importpath = "go-common/app/service/main/member/server/gorpc",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/service/main/member/conf:go_default_library",
"//app/service/main/member/model:go_default_library",
"//app/service/main/member/model/block:go_default_library",
"//app/service/main/member/service:go_default_library",
"//app/service/main/member/service/block:go_default_library",
"//library/net/rpc:go_default_library",
"//library/net/rpc/context: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,37 @@
package gorpc
import (
rpcmodel "go-common/app/service/main/member/model/block"
"go-common/library/net/rpc/context"
)
// BlockInfo is
func (r *RPC) BlockInfo(c context.Context, arg *rpcmodel.RPCArgInfo, res *rpcmodel.RPCResInfo) (err error) {
var (
blockInfos []*rpcmodel.BlockInfo
)
if blockInfos, err = r.block.Infos(c, []int64{arg.MID}); err != nil {
return
}
if len(blockInfos) < 1 {
res.Parse(r.block.DefaultUser(arg.MID))
}
res.Parse(blockInfos[0])
return
}
// BlockBatchInfo is
func (r *RPC) BlockBatchInfo(c context.Context, arg *rpcmodel.RPCArgBatchInfo, res *[]*rpcmodel.RPCResInfo) (err error) {
var (
blockInfos []*rpcmodel.BlockInfo
)
if blockInfos, err = r.block.Infos(c, arg.MIDs); err != nil {
return
}
for _, info := range blockInfos {
r := &rpcmodel.RPCResInfo{}
r.Parse(info)
*res = append(*res, r)
}
return
}

View File

@@ -0,0 +1,99 @@
package gorpc
import (
"go-common/app/service/main/member/model"
"go-common/library/net/rpc/context"
)
// Base get user base info.
func (r *RPC) Base(c context.Context, arg *model.ArgMemberMid, res *model.BaseInfo) (err error) {
var v *model.BaseInfo
if v, err = r.s.BaseInfo(c, arg.Mid); err == nil && res != nil {
*res = *v
}
return
}
// Bases get batch user base info.
func (r *RPC) Bases(c context.Context, arg *model.ArgMemberMids, res *map[int64]*model.BaseInfo) (err error) {
*res, err = r.s.BatchBaseInfo(c, arg.Mids)
return
}
// Member get member info.
func (r *RPC) Member(c context.Context, arg *model.ArgMemberMid, res *model.Member) (err error) {
var v *model.Member
if v, err = r.s.Member(c, arg.Mid); err == nil && res != nil {
*res = *v
}
return
}
// Members get batch member info.
func (r *RPC) Members(c context.Context, arg *model.ArgMemberMids, res *map[int64]*model.Member) (err error) {
*res, err = r.s.Members(c, arg.Mids)
return
}
// NickUpdated get nickUpdated.
func (r *RPC) NickUpdated(c context.Context, arg *model.ArgMemberMid, res *bool) (err error) {
*res, err = r.s.NickUpdated(c, arg.Mid)
return
}
// SetNickUpdated set nickUpdated.
func (r *RPC) SetNickUpdated(c context.Context, arg *model.ArgMemberMid, res *struct{}) (err error) {
err = r.s.SetNickUpdated(c, arg.Mid)
return
}
// SetOfficialDoc set official doc.
func (r *RPC) SetOfficialDoc(c context.Context, arg *model.ArgOfficialDoc, res *struct{}) (err error) {
err = r.s.SetOfficialDoc(c, arg)
return
}
// SetSex set sex.
func (r *RPC) SetSex(c context.Context, arg *model.ArgUpdateSex, res *struct{}) (err error) {
err = r.s.SetSex(c, arg.Mid, arg.Sex)
return
}
// SetName set name.
func (r *RPC) SetName(c context.Context, arg *model.ArgUpdateUname, res *struct{}) (err error) {
err = r.s.SetName(c, arg.Mid, arg.Name)
return
}
// SetFace set face.
func (r *RPC) SetFace(c context.Context, arg *model.ArgUpdateFace, res *struct{}) (err error) {
err = r.s.SetFace(c, arg.Mid, arg.Face)
return
}
// SetRank set rank.
func (r *RPC) SetRank(c context.Context, arg *model.ArgUpdateRank, res *struct{}) (err error) {
err = r.s.SetRank(c, arg.Mid, arg.Rank)
return
}
// SetBirthday set birthday.
func (r *RPC) SetBirthday(c context.Context, arg *model.ArgUpdateBirthday, res *struct{}) (err error) {
err = r.s.SetBirthday(c, arg.Mid, arg.Birthday)
return
}
// SetSign set sign.
func (r *RPC) SetSign(c context.Context, arg *model.ArgUpdateSign, res *struct{}) (err error) {
err = r.s.SetSign(c, arg.Mid, arg.Sign)
return
}
// OfficialDoc is.
func (r *RPC) OfficialDoc(c context.Context, arg *model.ArgMid, res *model.OfficialDoc) (err error) {
var od *model.OfficialDoc
if od, err = r.s.OfficialDoc(c, arg.Mid); err == nil && od != nil {
*res = *od
}
return
}

View File

@@ -0,0 +1,32 @@
package gorpc
import (
"go-common/app/service/main/member/model"
"go-common/library/net/rpc/context"
)
// Moral get user moral.
func (r *RPC) Moral(c context.Context, arg *model.ArgMemberMid, res *model.Moral) (err error) {
var v *model.Moral
if v, err = r.s.Moral(c, arg.Mid); err == nil && res != nil {
*res = *v
}
return
}
// MoralLog get user moral log.
func (r *RPC) MoralLog(c context.Context, arg *model.ArgMemberMid, res *[]*model.UserLog) (err error) {
*res, err = r.s.MoralLog(c, arg.Mid)
return
}
// AddMoral add moral.
func (r *RPC) AddMoral(c context.Context, arg *model.ArgUpdateMoral, res *struct{}) (err error) {
return r.s.UpdateMoral(c, arg)
}
// BatchAddMoral batch add moral.
func (r *RPC) BatchAddMoral(c context.Context, arg *model.ArgUpdateMorals, res *map[int64]int64) (err error) {
*res, err = r.s.UpdateMorals(c, arg)
return
}

View File

@@ -0,0 +1,26 @@
package gorpc
import (
"go-common/app/service/main/member/model"
"go-common/library/net/rpc/context"
)
// AddUserMonitor is add user into monitor
func (r *RPC) AddUserMonitor(ctx context.Context, arg *model.ArgAddUserMonitor, res *struct{}) error {
return r.s.AddUserMonitor(ctx, arg)
}
// IsInMonitor check user is in monitor
func (r *RPC) IsInMonitor(ctx context.Context, arg *model.ArgMid, res *bool) error {
isInMonitor, err := r.s.IsInMonitor(ctx, arg)
if err != nil {
return err
}
*res = isInMonitor
return nil
}
// AddPropertyReview add user property update review.
func (r *RPC) AddPropertyReview(ctx context.Context, arg *model.ArgAddPropertyReview, res *struct{}) error {
return r.s.AddPropertyReview(ctx, arg)
}

View File

@@ -0,0 +1,67 @@
package gorpc
import (
"go-common/app/service/main/member/model"
"go-common/library/net/rpc/context"
)
// RealnameStatus is
func (r *RPC) RealnameStatus(c context.Context, arg *model.ArgMemberMid, res *model.RealnameStatus) (err error) {
var v model.RealnameStatus
if v, err = r.s.RealnameStatus(c, arg.Mid); err == nil && res != nil {
*res = v
}
return
}
// RealnameApplyStatus is
func (r *RPC) RealnameApplyStatus(c context.Context, arg *model.ArgMemberMid, res *model.RealnameApplyStatusInfo) (err error) {
var v *model.RealnameApplyStatusInfo
if v, err = r.s.RealnameApplyStatus(c, arg.Mid); err == nil && v != nil {
*res = *v
}
return
}
// RealnameTelCapture is
func (r *RPC) RealnameTelCapture(c context.Context, arg *model.ArgMemberMid, res *struct{}) (err error) {
_, err = r.s.RealnameTelCapture(c, arg.Mid)
return
}
// RealnameApply is
func (r *RPC) RealnameApply(c context.Context, arg *model.ArgRealnameApply, res *struct{}) (err error) {
err = r.s.RealnameApply(c, arg.MID, arg.CaptureCode, arg.Realname, arg.CardType, arg.CardCode, arg.Country, arg.HandIMGToken, arg.FrontIMGToken, arg.BackIMGToken)
return
}
// RealnameAlipayApply commit a alipay realname apply
func (r *RPC) RealnameAlipayApply(c context.Context, arg *model.ArgRealnameAlipayApply, res *struct{}) (err error) {
err = r.s.RealnameAlipayApply(c, arg.MID, arg.CaptureCode, arg.Realname, arg.CardCode, arg.IMGToken, arg.Bizno)
return
}
// RealnameAlipayConfirm confirm a alipay realname apply
func (r *RPC) RealnameAlipayConfirm(c context.Context, arg *model.ArgRealnameAlipayConfirm, res *struct{}) (err error) {
err = r.s.RealnameAlipayConfirm(c, arg.MID, arg.Pass, arg.Reason)
return
}
// RealnameAlipayBizno get alipay realname certify bizno by mid
func (r *RPC) RealnameAlipayBizno(c context.Context, arg *model.ArgMemberMid, res *model.RealnameAlipayInfo) (err error) {
var bizno string
if bizno, err = r.s.RealnameAlipayBizno(c, arg.Mid); err == nil {
(*res).Bizno = bizno
}
return
}
// RealnameDetail detail about realname by mid
func (r *RPC) RealnameDetail(ctx context.Context, arg *model.ArgMemberMid, res *model.RealnameDetail) error {
detail, err := r.s.RealnameDetail(ctx, arg.Mid)
if err != nil {
return err
}
*res = *detail
return nil
}

View File

@@ -0,0 +1,75 @@
package gorpc
import (
"go-common/app/service/main/member/conf"
"go-common/app/service/main/member/model"
"go-common/app/service/main/member/service"
"go-common/app/service/main/member/service/block"
"go-common/library/net/rpc"
"go-common/library/net/rpc/context"
)
// RPC is.
type RPC struct {
s *service.Service
block *block.Service
}
// New new rpc server.
func New(c *conf.Config, s *service.Service) *rpc.Server {
r := &RPC{
s: s,
block: s.BlockImpl(),
}
svr := rpc.NewServer(c.RPCServer)
if err := svr.Register(r); err != nil {
panic(err)
}
return svr
}
// Ping check connection success.
func (r *RPC) Ping(c context.Context, arg *struct{}, res *struct{}) (err error) {
return
}
// --- exp --- //
// Exp get user exp.
func (r *RPC) Exp(c context.Context, arg *model.ArgMid2, res *model.LevelInfo) (err error) {
v, err := r.s.Exp(c, arg.Mid)
if err == nil && v != nil {
*res = *v
}
return
}
// Level get user exp.
func (r *RPC) Level(c context.Context, arg *model.ArgMid2, res *model.LevelInfo) (err error) {
v, err := r.s.Level(c, arg.Mid)
if err == nil && v != nil {
*res = *v
}
return
}
// UpdateExp user exp.
func (r *RPC) UpdateExp(c context.Context, arg *model.ArgAddExp, res *struct{}) (err error) {
err = r.s.UpdateExp(c, arg)
return
}
// Log get user exp log.
func (r *RPC) Log(c context.Context, arg *model.ArgMid2, res *[]*model.UserLog) (err error) {
*res, err = r.s.ExpLog(c, arg.Mid, arg.RealIP)
return
}
// Stat get user exp stat.
func (r *RPC) Stat(c context.Context, arg *model.ArgMid2, res *model.ExpStat) (err error) {
v, err := r.s.Stat(c, arg.Mid)
if err == nil && v != nil {
*res = *v
}
return
}

View File

@@ -0,0 +1,89 @@
package gorpc
import (
"flag"
"net/rpc"
"testing"
"time"
"go-common/app/service/main/member/conf"
"go-common/app/service/main/member/model"
"go-common/app/service/main/member/service"
. "github.com/smartystreets/goconvey/convey"
)
func init() {
flag.Set("conf", "../../cmd/member-service-example.toml")
startService()
}
const (
addr = "127.0.0.1:6689"
_testPing = "RPC.Ping"
)
var (
_noArg = &struct{}{}
svr *service.Service
client *rpc.Client
)
func startService() {
if err := conf.Init(); err != nil {
panic(err)
}
svr = service.New(conf.Conf)
New(conf.Conf, svr)
time.Sleep(time.Second * 3)
var err error
client, err = rpc.Dial("tcp", addr)
if err != nil {
panic(err)
}
}
func TestAccountRpc(t *testing.T) {
Convey("ping", t, func() {
err := client.Call(_testPing, &_noArg, &_noArg)
So(err, ShouldBeNil)
})
}
func TestExp(t *testing.T) {
Convey("update", t, func() {
err := client.Call("RPC.UpdateExp", &model.ArgAddExp{
Mid: 1,
Count: 2,
Reason: "test",
Operate: "other",
IP: "111",
}, &_noArg)
So(err, ShouldBeNil)
})
Convey("exp", t, func() {
res := new(model.LevelInfo)
err := client.Call("RPC.Exp", &model.ArgMid{Mid: 1}, res)
So(err, ShouldBeNil)
So(res.NextExp, ShouldNotEqual, 0)
})
}
func TestLevel(t *testing.T) {
Convey("level", t, func() {
res := new(model.LevelInfo)
err := client.Call("RPC.Level", &model.ArgMid{
Mid: 1,
}, res)
So(err, ShouldNotBeNil)
So(res.NextExp, ShouldNotEqual, 0)
})
}
func TestLog(t *testing.T) {
Convey("log", t, func() {
var res []*model.UserLog
err := client.Call("RPC.Log", &model.ArgMid{Mid: 1}, &res)
So(err, ShouldNotBeNil)
})
}

View File

@@ -0,0 +1,42 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"block.go",
"exp.go",
"member.go",
"moral.go",
"property_review.go",
"realname.go",
],
importpath = "go-common/app/service/main/member/server/grpc",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/service/main/member/api:go_default_library",
"//app/service/main/member/model:go_default_library",
"//app/service/main/member/service:go_default_library",
"//app/service/main/member/service/block:go_default_library",
"//library/net/rpc/warden: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 grpc
import (
"context"
"go-common/app/service/main/member/api"
)
// BlockInfo 查询封禁信息
func (s *MemberServer) BlockInfo(ctx context.Context, req *api.MemberMidReq) (*api.BlockInfoReply, error) {
res, err := s.blockSvr.Infos(ctx, []int64{req.Mid})
if err != nil {
return nil, err
}
if len(res) == 0 {
return api.FromBlockInfo(s.blockSvr.DefaultUser(req.Mid)), nil
}
blockInfoReply := api.FromBlockInfo(res[0])
return blockInfoReply, nil
}
// BlockBatchInfo 批量查询封禁信息
func (s *MemberServer) BlockBatchInfo(ctx context.Context, req *api.MemberMidsReq) (*api.BlockBatchInfoReply, error) {
res, err := s.blockSvr.Infos(ctx, req.Mids)
if err != nil {
return nil, err
}
blockInfos := make([]*api.BlockInfoReply, 0, len(res))
for i := range res {
blockInfos = append(blockInfos, api.FromBlockInfo(res[i]))
}
blockInfosReply := &api.BlockBatchInfoReply{
BlockInfos: blockInfos,
}
return blockInfosReply, nil
}
// BlockBatchDetail 批量查询封禁信息
func (s *MemberServer) BlockBatchDetail(ctx context.Context, req *api.MemberMidsReq) (reply *api.BlockBatchDetailReply, err error) {
res, err := s.blockSvr.UserDetails(ctx, req.Mids)
if err != nil {
return nil, err
}
userDetails := make(map[int64]*api.BlockDetailReply, len(res))
for mid := range res {
userDetails[mid] = api.FromBlockUserDetail(res[mid])
}
blockUserDetailsReply := &api.BlockBatchDetailReply{
BlockDetails: userDetails,
}
return blockUserDetailsReply, nil
}

View File

@@ -0,0 +1,97 @@
package grpc
import (
"context"
"go-common/app/service/main/member/api"
"go-common/app/service/main/member/model"
)
// Exp get member exp info
func (s *MemberServer) Exp(ctx context.Context, req *api.MidReq) (*api.LevelInfoReply, error) {
res, err := s.svr.Exp(ctx, req.Mid)
if err != nil {
return nil, err
}
var levelInfoReply = &api.LevelInfoReply{
Cur: res.Cur,
Min: res.Min,
NowExp: res.NowExp,
NextExp: res.NextExp,
}
return levelInfoReply, nil
}
// Level get member lebel info
func (s *MemberServer) Level(ctx context.Context, req *api.MidReq) (*api.LevelInfoReply, error) {
res, err := s.svr.Level(ctx, req.Mid)
if err != nil {
return nil, err
}
var levelInfoReply = &api.LevelInfoReply{
Cur: res.Cur,
Min: res.Min,
NowExp: res.NowExp,
NextExp: res.NextExp,
}
return levelInfoReply, nil
}
// UpdateExp update member exp value
func (s *MemberServer) UpdateExp(ctx context.Context, req *api.AddExpReq) (*api.EmptyStruct, error) {
err := s.svr.UpdateExp(ctx, &model.ArgAddExp{
Mid: req.Mid,
Count: req.Count,
Reason: req.Reason,
Operate: req.Operate,
IP: req.Ip,
})
if err != nil {
return nil, err
}
return &api.EmptyStruct{}, nil
}
// ExpLog get member exp logs
func (s *MemberServer) ExpLog(ctx context.Context, req *api.MidReq) (*api.UserLogsReply, error) {
res, err := s.svr.ExpLog(ctx, req.Mid, req.RealIP)
if err != nil {
return nil, err
}
userLogs := make([]*api.UserLogReply, 0, len(res))
for _, v := range res {
var userLog = &api.UserLogReply{
Mid: v.Mid,
Ip: v.IP,
Ts: v.TS,
LogId: v.LogID,
Content: v.Content,
}
userLogs = append(userLogs, userLog)
}
userLogsReply := &api.UserLogsReply{
UserLogs: userLogs,
}
return userLogsReply, nil
}
// ExpStat get exp status
func (s *MemberServer) ExpStat(ctx context.Context, req *api.MidReq) (*api.ExpStatReply, error) {
res, err := s.svr.Stat(ctx, req.Mid)
if err != nil {
return nil, err
}
expStatReply := &api.ExpStatReply{
Login: res.Login,
Watch: res.Watch,
Coin: res.Coin,
Share: res.Share,
}
return expStatReply, nil
}

View File

@@ -0,0 +1,190 @@
package grpc
import (
"context"
"go-common/app/service/main/member/api"
"go-common/app/service/main/member/service"
"go-common/app/service/main/member/service/block"
"go-common/library/net/rpc/warden"
)
// New Member warden rpc server
func New(cfg *warden.ServerConfig, s *service.Service) *warden.Server {
w := warden.NewServer(cfg)
api.RegisterMemberServer(w.Server(), &MemberServer{svr: s, blockSvr: s.BlockImpl()})
ws, err := w.Start()
if err != nil {
panic(err)
}
return ws
}
// MemberServer define member Service
type MemberServer struct {
svr *service.Service
blockSvr *block.Service
}
var _ api.MemberServer = &MemberServer{}
// Base get member base info
func (s *MemberServer) Base(ctx context.Context, req *api.MemberMidReq) (*api.BaseInfoReply, error) {
res, err := s.svr.BaseInfo(ctx, req.Mid)
if err != nil {
return nil, err
}
return api.FromBaseInfo(res), nil
}
// Bases batch get members base info
func (s *MemberServer) Bases(ctx context.Context, req *api.MemberMidsReq) (*api.BaseInfosReply, error) {
res, err := s.svr.BatchBaseInfo(ctx, req.Mids)
if err != nil {
return nil, err
}
baseInfos := make(map[int64]*api.BaseInfoReply, len(res))
baseInfosReply := &api.BaseInfosReply{
BaseInfos: baseInfos,
}
for k, v := range res {
baseInfos[k] = api.FromBaseInfo(v)
}
return baseInfosReply, nil
}
// Member get member full information
func (s *MemberServer) Member(ctx context.Context, req *api.MemberMidReq) (*api.MemberInfoReply, error) {
res, err := s.svr.Member(ctx, req.Mid)
if err != nil {
return nil, err
}
memberInfoReply := api.FromMember(res)
return memberInfoReply, nil
}
// Members Batch get members info
func (s *MemberServer) Members(ctx context.Context, req *api.MemberMidsReq) (*api.MemberInfosReply, error) {
res, err := s.svr.Members(ctx, req.Mids)
if err != nil {
return nil, err
}
memberInfos := make(map[int64]*api.MemberInfoReply, len(res))
for k, v := range res {
memberInfoReply := api.FromMember(v)
memberInfos[k] = memberInfoReply
}
memberInfosReply := &api.MemberInfosReply{
MemberInfos: memberInfos,
}
return memberInfosReply, nil
}
// NickUpdated Whether the member's nickname has been updated
func (s *MemberServer) NickUpdated(ctx context.Context, req *api.MemberMidReq) (*api.NickUpdatedReply, error) {
res, err := s.svr.NickUpdated(ctx, req.Mid)
if err != nil {
return nil, err
}
nickUpdatedReply := &api.NickUpdatedReply{
NickUpdated: res,
}
return nickUpdatedReply, nil
}
// SetNickUpdated Mark nickname as updated
func (s *MemberServer) SetNickUpdated(ctx context.Context, req *api.MemberMidReq) (*api.EmptyStruct, error) {
err := s.svr.SetNickUpdated(ctx, req.Mid)
if err != nil {
return nil, err
}
emptyStruct := &api.EmptyStruct{}
return emptyStruct, nil
}
// SetOfficialDoc Set offical document
func (s *MemberServer) SetOfficialDoc(ctx context.Context, req *api.OfficialDocReq) (*api.EmptyStruct, error) {
err := s.svr.SetOfficialDoc(ctx, api.ToArgOfficialDoc(req))
if err != nil {
return nil, err
}
emptyStruct := &api.EmptyStruct{}
return emptyStruct, nil
}
// SetSex Set member's sex
func (s *MemberServer) SetSex(ctx context.Context, req *api.UpdateSexReq) (*api.EmptyStruct, error) {
err := s.svr.SetSex(ctx, req.Mid, req.Sex)
if err != nil {
return nil, err
}
emptyStruct := &api.EmptyStruct{}
return emptyStruct, nil
}
// SetName Set member's name
func (s *MemberServer) SetName(ctx context.Context, req *api.UpdateUnameReq) (*api.EmptyStruct, error) {
err := s.svr.SetName(ctx, req.Mid, req.Name)
if err != nil {
return nil, err
}
emptyStruct := &api.EmptyStruct{}
return emptyStruct, nil
}
// SetFace Set member's face
func (s *MemberServer) SetFace(ctx context.Context, req *api.UpdateFaceReq) (*api.EmptyStruct, error) {
err := s.svr.SetFace(ctx, req.Mid, req.Face)
if err != nil {
return nil, err
}
emptyStruct := &api.EmptyStruct{}
return emptyStruct, nil
}
// SetRank Set member's rank
func (s *MemberServer) SetRank(ctx context.Context, req *api.UpdateRankReq) (*api.EmptyStruct, error) {
err := s.svr.SetRank(ctx, req.Mid, req.Rank)
if err != nil {
return nil, err
}
emptyStruct := &api.EmptyStruct{}
return emptyStruct, nil
}
// SetBirthday Set member's birthday
func (s *MemberServer) SetBirthday(ctx context.Context, req *api.UpdateBirthdayReq) (*api.EmptyStruct, error) {
err := s.svr.SetBirthday(ctx, req.Mid, req.Birthday)
if err != nil {
return nil, err
}
emptyStruct := &api.EmptyStruct{}
return emptyStruct, nil
}
// SetSign Set member's sign
func (s *MemberServer) SetSign(ctx context.Context, req *api.UpdateSignReq) (*api.EmptyStruct, error) {
err := s.svr.SetSign(ctx, req.Mid, req.Sign)
if err != nil {
return nil, err
}
emptyStruct := &api.EmptyStruct{}
return emptyStruct, nil
}
// OfficialDoc Get member's offical doc
func (s *MemberServer) OfficialDoc(ctx context.Context, req *api.MidReq) (*api.OfficialDocInfoReply, error) {
res, err := s.svr.OfficialDoc(ctx, req.Mid)
if err != nil {
return nil, err
}
officialDocInfoReply := api.FromOfficialDoc(res)
return officialDocInfoReply, nil
}

View File

@@ -0,0 +1,70 @@
package grpc
import (
"context"
"go-common/app/service/main/member/api"
)
// Moral Get member moral info
func (s *MemberServer) Moral(ctx context.Context, req *api.MemberMidReq) (*api.MoralReply, error) {
res, err := s.svr.Moral(ctx, req.Mid)
if err != nil {
return nil, err
}
moralReply := &api.MoralReply{
Mid: res.Mid,
Moral: res.Moral,
Added: res.Added,
Deducted: res.Deducted,
LastRecoverDate: res.LastRecoverDate,
}
return moralReply, nil
}
// MoralLog Get member moral logs
func (s *MemberServer) MoralLog(ctx context.Context, req *api.MemberMidReq) (*api.UserLogsReply, error) {
res, err := s.svr.MoralLog(ctx, req.Mid)
if err != nil {
return nil, err
}
userLogs := make([]*api.UserLogReply, 0, len(res))
for _, v := range res {
userLog := &api.UserLogReply{
Mid: v.Mid,
Ip: v.IP,
Ts: v.TS,
LogId: v.LogID,
Content: v.Content,
}
userLogs = append(userLogs, userLog)
}
userLogsReply := &api.UserLogsReply{
UserLogs: userLogs,
}
return userLogsReply, nil
}
// AddMoral Add member's moral value
func (s *MemberServer) AddMoral(ctx context.Context, req *api.UpdateMoralReq) (*api.EmptyStruct, error) {
err := s.svr.UpdateMoral(ctx, api.ToArgUpdateMoral(req))
if err != nil {
return nil, err
}
return &api.EmptyStruct{}, nil
}
// BatchAddMoral Batch add member's moral value
func (s *MemberServer) BatchAddMoral(ctx context.Context, req *api.UpdateMoralsReq) (*api.UpdateMoralsReply, error) {
res, err := s.svr.UpdateMorals(ctx, api.ToArgUpdateMorals(req))
if err != nil {
return nil, err
}
updateMoralsReply := &api.UpdateMoralsReply{
AfterMorals: res,
}
return updateMoralsReply, nil
}

View File

@@ -0,0 +1,39 @@
package grpc
import (
"context"
"go-common/app/service/main/member/api"
"go-common/app/service/main/member/model"
)
// AddUserMonitor add user monitor
func (s *MemberServer) AddUserMonitor(ctx context.Context, req *api.AddUserMonitorReq) (*api.EmptyStruct, error) {
argAddUserMonitor := &model.ArgAddUserMonitor{
Mid: req.Mid,
Operator: req.Operator,
Remark: req.Remark,
}
err := s.svr.AddUserMonitor(ctx, argAddUserMonitor)
if err != nil {
return nil, err
}
emptyStruct := &api.EmptyStruct{}
return emptyStruct, nil
}
// IsInMonitor check whether the member is in monitored status
func (s *MemberServer) IsInMonitor(ctx context.Context, req *api.MidReq) (*api.IsInMonitorReply, error) {
res, err := s.svr.IsInMonitor(ctx, &model.ArgMid{
Mid: req.Mid,
RealIP: req.RealIP,
})
if err != nil {
return nil, err
}
isInMonitorReply := &api.IsInMonitorReply{
IsInMonitor: res,
}
return isInMonitorReply, nil
}

View File

@@ -0,0 +1,84 @@
package grpc
import (
"context"
"go-common/app/service/main/member/api"
)
// RealnameStatus get the member realname status
func (s *MemberServer) RealnameStatus(ctx context.Context, req *api.MemberMidReq) (*api.RealnameStatusReply, error) {
res, err := s.svr.RealnameStatus(ctx, req.Mid)
if err != nil {
return nil, err
}
var realnameStatusReply = &api.RealnameStatusReply{
RealnameStatus: int8(res),
}
return realnameStatusReply, nil
}
// RealnameApplyStatus get member realname apply status
func (s *MemberServer) RealnameApplyStatus(ctx context.Context, req *api.MemberMidReq) (*api.RealnameApplyInfoReply, error) {
res, err := s.svr.RealnameApplyStatus(ctx, req.Mid)
if err != nil {
return nil, err
}
var realnameStatusReply = &api.RealnameApplyInfoReply{
Status: int8(res.Status),
Remark: res.Remark,
}
return realnameStatusReply, nil
}
// RealnameTelCapture mobilePhone realname certification
func (s *MemberServer) RealnameTelCapture(ctx context.Context, req *api.MemberMidReq) (*api.EmptyStruct, error) {
_, err := s.svr.RealnameTelCapture(ctx, req.Mid)
if err != nil {
return nil, err
}
return &api.EmptyStruct{}, nil
}
// RealnameApply apply for realname certification
func (s *MemberServer) RealnameApply(ctx context.Context, req *api.ArgRealnameApplyReq) (*api.EmptyStruct, error) {
err := s.svr.RealnameApply(ctx, req.Mid, int(req.CaptureCode), req.Realname, req.CardType, req.CardCode, req.Country, req.HandIMGToken, req.FrontIMGToken, req.BackIMGToken)
if err != nil {
return nil, err
}
return &api.EmptyStruct{}, nil
}
// RealnameDetail detail about realname by mid
func (s *MemberServer) RealnameDetail(ctx context.Context, req *api.MemberMidReq) (*api.RealnameDetailReply, error) {
res, err := s.svr.RealnameDetail(ctx, req.Mid)
if err != nil {
return nil, err
}
var realnameDetail = &api.RealnameDetailReply{
Realname: res.Realname,
Card: res.Card,
CardType: int8(res.CardType),
Status: int8(res.Status),
Gender: res.Gender,
HandImg: res.HandIMG,
}
return realnameDetail, nil
}
// RealnameStrippedInfo is
func (s *MemberServer) RealnameStrippedInfo(ctx context.Context, req *api.MemberMidReq) (*api.RealnameStrippedInfoReply, error) {
return s.svr.RealnameStrippedInfo(ctx, req.Mid)
}
// MidByRealnameCard is
func (s *MemberServer) MidByRealnameCard(ctx context.Context, req *api.MidByRealnameCardsReq) (*api.MidByRealnameCardReply, error) {
return s.svr.MidByRealnameCard(ctx, req)
}

View File

@@ -0,0 +1,50 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"base.go",
"exp.go",
"http.go",
"moral.go",
"realname.go",
],
importpath = "go-common/app/service/main/member/server/http",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/service/main/member/api:go_default_library",
"//app/service/main/member/conf:go_default_library",
"//app/service/main/member/model:go_default_library",
"//app/service/main/member/server/http/block:go_default_library",
"//app/service/main/member/service:go_default_library",
"//library/ecode:go_default_library",
"//library/log:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/middleware/verify:go_default_library",
"//library/net/metadata:go_default_library",
"//library/time:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
"//app/service/main/member/server/http/block:all-srcs",
],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@@ -0,0 +1,381 @@
package http
import (
"encoding/json"
"strconv"
"strings"
"go-common/app/service/main/member/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
"go-common/library/time"
)
func base(ctx *bm.Context) {
var (
err error
mid int64
// baseInfo *model.BaseInfo
params = ctx.Request.Form
midStr = params.Get("mid")
// res = c.Result()
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
// if baseInfo, err = memberSvc.BaseInfo(c, mid); err != nil {
// log.Error("relationSvc.BaseInfo(%d) error(%v)", mid, err)
// res["code"] = err
// return
// }
// res["data"] = baseInfo
ctx.JSON(memberSvc.BaseInfo(ctx, mid))
}
func member(ctx *bm.Context) {
params := ctx.Request.Form
// res := c.Result()
midStr := params.Get("mid")
mid, err := strconv.ParseInt(midStr, 10, 64)
if err != nil || mid <= 0 {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
// mb, err := memberSvc.Member(c, mid)
// if err != nil {
// log.Error("Failed to memberSvc.Member(%d): %+v", mid, err)
// res["code"] = err
// return
// }
// res["data"] = mb
ctx.JSON(memberSvc.Member(ctx, mid))
}
func batchBase(ctx *bm.Context) {
var (
err error
mid int64
mids []int64
// binfo map[int64]*model.BaseInfo
params = ctx.Request.Form
midsStr = params.Get("mids")
// res = c.Result()
)
for _, str := range strings.Split(midsStr, ",") {
if mid, err = strconv.ParseInt(str, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
mids = append(mids, mid)
}
// if binfo, err = memberSvc.BatchBaseInfo(c, mids); err != nil {
// log.Error("memberSvc.BaseInfo(%d) error(%v)", mid, err)
// res["code"] = err
// return
// }
// res["data"] = binfo
ctx.JSON(memberSvc.BatchBaseInfo(ctx, mids))
}
func setSign(ctx *bm.Context) {
var (
err error
mid int64
params = ctx.Request.Form
midStr = params.Get("mid")
usersign = params.Get("user_sign")
// res = c.Result()
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
// if usersign == "" {
// res["code"] = ecode.RequestErr
// return
// }
// 获取用户状态逻辑 status判断
// if err := memberSvc.SetSign(c, mid, usersign); err != nil {
// log.Error("memberSvc.SetSign(%d) error(%v)", mid, err)
// res["code"] = ecode.ServerErr
// return
// }
ctx.JSON(nil, memberSvc.SetSign(ctx, mid, usersign))
}
func setName(ctx *bm.Context) {
var (
err error
mid int64
params = ctx.Request.Form
midStr = params.Get("mid")
name = params.Get("name")
// res = c.Result()
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
if name == "" {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
// if err := memberSvc.SetName(c, mid, name); err != nil {
// log.Error("memberSvc.SetUname(%d) error(%v)", mid, err)
// res["code"] = ecode.ServerErr
// return
// }
ctx.JSON(nil, memberSvc.SetName(ctx, mid, name))
}
func setRank(ctx *bm.Context) {
var (
err error
mid int64
rank int64
params = ctx.Request.Form
midStr = params.Get("mid")
rankStr = params.Get("rank")
// res = c.Result()
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
if rank, err = strconv.ParseInt(rankStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
// if err := memberSvc.SetRank(c, mid, rank); err != nil {
// log.Error("relationSvc.SetRank(%d) error(%v)", mid, err)
// res["code"] = ecode.ServerErr
// return
// }
ctx.JSON(nil, memberSvc.SetRank(ctx, mid, rank))
}
// setSex set sex.
func setSex(ctx *bm.Context) {
var (
err error
mid int64
sex int64
params = ctx.Request.Form
midStr = params.Get("mid")
sexStr = params.Get("sex")
// res = c.Result()
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
if sex, err = strconv.ParseInt(sexStr, 10, 8); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
// if err = memberSvc.SetSex(c, mid, sex); err != nil {
// log.Error("memberSvc.SetSex(%d, %d) error(%v)", mid, sex, err)
// res["code"] = ecode.ServerErr
// }
ctx.JSON(nil, memberSvc.SetSex(ctx, mid, sex))
}
// setBirthday set Birthday.
func setBirthday(ctx *bm.Context) {
var (
err error
mid int64
birthdayTs int64
birthday time.Time
params = ctx.Request.Form
midStr = params.Get("mid")
birthdayStr = params.Get("birthday")
// res = c.Result()
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
if birthdayTs, err = strconv.ParseInt(birthdayStr, 10, 32); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
birthday = time.Time(birthdayTs)
// if err = memberSvc.SetBirthday(c, mid, birthday); err != nil {
// log.Error("memberSvc.SetBirthday(%d, %d) error(%v)", mid, birthday, err)
// res["code"] = ecode.ServerErr
// }
ctx.JSON(nil, memberSvc.SetBirthday(ctx, mid, birthday))
}
// setFace set face.
func setFace(ctx *bm.Context) {
var (
err error
mid int64
params = ctx.Request.Form
midStr = params.Get("mid")
face = params.Get("face")
// res = c.Result()
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
// if err = memberSvc.SetFace(c, mid, face); err != nil {
// log.Error("memberSvc.SetFace(%d, %d) error(%v)", mid, face, err)
// res["code"] = ecode.ServerErr
// }
ctx.JSON(nil, memberSvc.SetFace(ctx, mid, face))
}
func setBase(ctx *bm.Context) {
var (
err error
mid int64
rank int64
sex int64
birthday int64
params = ctx.Request.Form
midStr = params.Get("mid")
rankStr = params.Get("rank")
face = params.Get("face")
birthdayStr = params.Get("birthday")
name = params.Get("name")
sign = params.Get("user_sign")
sexStr = params.Get("sex")
// res = c.Result()
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
if len(rankStr) != 0 {
if rank, err = strconv.ParseInt(rankStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
}
if len(sexStr) != 0 {
if sex, err = strconv.ParseInt(sexStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
}
if len(birthdayStr) != 0 {
if birthday, err = strconv.ParseInt(birthdayStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
}
b := &model.BaseInfo{Mid: mid, Face: face, Sex: sex, Birthday: time.Time(birthday), Name: name, Sign: sign, Rank: rank}
// if err := memberSvc.SetBase(c, b); err != nil {
// log.Error("memberSvc.SetBase(%d) error(%v)", mid, err)
// res["code"] = ecode.ServerErr
// return
// }
ctx.JSON(nil, memberSvc.SetBase(ctx, b))
}
func updateMorals(ctx *bm.Context) {
var (
err error
// morals map[int64]int64
)
// res := c.Result()
arg := &model.ArgUpdateMorals{}
if err = ctx.Bind(arg); err != nil {
return
}
arg.IP = metadata.String(ctx, metadata.RemoteIP)
// morals, err = memberSvc.UpdateMorals(c, arg)
// if err != nil {
// res["code"] = err
// return
// }
// res["data"] = morals
ctx.JSON(memberSvc.UpdateMorals(ctx, arg))
}
func updateMoral(ctx *bm.Context) {
arg := &model.ArgUpdateMoral{}
if err := ctx.Bind(arg); err != nil {
return
}
arg.IP = metadata.String(ctx, metadata.RemoteIP)
ctx.JSON(nil, memberSvc.UpdateMoral(ctx, arg))
}
func undoMoral(ctx *bm.Context) {
arg := &model.ArgUndo{}
if err := ctx.Bind(arg); err != nil {
return
}
ctx.JSON(nil, memberSvc.UndoMoral(ctx, arg.LogID, arg.Remark, arg.Operator))
}
// cacheDel delete user cache.
func cacheDel(ctx *bm.Context) {
var (
mid int64
action string
ak string
sd string
err error
)
// res := c.Result()
query := ctx.Request.Form
midStr := query.Get("mid")
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
action = query.Get("modifiedAttr")
ak = query.Get("access_token")
sd = query.Get("session")
memberSvc.DelCache(ctx, mid, action, ak, sd)
// res["code"] = ecode.OK
ctx.JSON(nil, nil)
}
// addPropertyReview add user property update review.
func addPropertyReview(ctx *bm.Context) {
arg := &model.ArgAddPropertyReview{}
if err := ctx.Bind(arg); err != nil {
return
}
form := ctx.Request.Form
extra := form.Get("extra")
if extra != "" {
extraData := map[string]interface{}{}
if err := json.Unmarshal([]byte(extra), &extraData); err != nil {
log.Error("Failed to Unmarshal extra: %+v, error: %+v", extra, err)
ctx.JSON(nil, ecode.RequestErr)
return
}
arg.Extra = extraData
}
ctx.JSON(nil, memberSvc.AddPropertyReview(ctx, arg))
}

View File

@@ -0,0 +1,39 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
)
go_library(
name = "go_default_library",
srcs = [
"block.go",
"http.go",
],
importpath = "go-common/app/service/main/member/server/http/block",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/service/main/member/model/block:go_default_library",
"//app/service/main/member/service/block:go_default_library",
"//library/ecode:go_default_library",
"//library/net/http/blademaster:go_default_library",
"//library/net/http/blademaster/middleware/verify: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,97 @@
package block
import (
"time"
model "go-common/app/service/main/member/model/block"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
func info(c *bm.Context) {
var (
err error
v = &model.ParamInfo{}
)
if err = bind(c, v); err != nil {
return
}
var infos []*model.BlockInfo
if infos, err = svc.Infos(c, []int64{v.MID}); err != nil {
c.JSON(nil, err)
return
}
if len(infos) != 1 {
c.JSON(nil, ecode.ServerErr)
return
}
c.JSON(infos[0], nil)
}
func batchInfo(c *bm.Context) {
var (
err error
v = &model.ParamBatchInfo{}
)
if err = bind(c, v); err != nil {
return
}
c.JSON(svc.Infos(c, v.MIDs))
}
func batchDetail(c *bm.Context) {
var (
err error
v = &model.ParamBatchDetail{}
)
if err = bind(c, v); err != nil {
return
}
c.JSON(svc.UserDetails(c, v.MIDs))
}
func block(c *bm.Context) {
var (
err error
v = &model.ParamBlock{}
)
if err = bind(c, v); err != nil {
return
}
duration := time.Duration(v.Duration) * time.Second
c.JSON(nil, svc.Block(c, []int64{v.MID}, v.Source, v.Area, v.Action, v.StartTime, duration, v.Operator, v.Reason, v.Comment, v.Notify))
}
func batchBlock(c *bm.Context) {
var (
err error
v = &model.ParamBatchBlock{}
)
if err = bind(c, v); err != nil {
return
}
duration := time.Duration(v.Duration) * time.Second
c.JSON(nil, svc.Block(c, v.MIDs, v.Source, v.Area, v.Action, v.StartTime, duration, v.Operator, v.Reason, v.Comment, v.Notify))
}
func remove(c *bm.Context) {
var (
err error
v = &model.ParamRemove{}
)
if err = bind(c, v); err != nil {
return
}
c.JSON(nil, svc.Remove(c, []int64{v.MID}, v.Source, model.BlockAreaNone, v.Operator, v.Reason, v.Comment, v.Notify))
}
func batchRemove(c *bm.Context) {
var (
err error
v = &model.ParamBatchRemove{}
)
if err = bind(c, v); err != nil {
return
}
c.JSON(nil, svc.Remove(c, v.MIDs, v.Source, model.BlockAreaNone, v.Operator, v.Reason, v.Comment, v.Notify))
}

View File

@@ -0,0 +1,44 @@
package block
import (
model "go-common/app/service/main/member/model/block"
service "go-common/app/service/main/member/service/block"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
v "go-common/library/net/http/blademaster/middleware/verify"
"github.com/pkg/errors"
)
var (
svc *service.Service
)
// Setup is
func Setup(blockSvc *service.Service, engine *bm.Engine, v *v.Verify) {
svc = blockSvc
blkGroup := engine.Group("/x/internal/block", v.Verify)
blkGroup.POST("/block", block)
blkGroup.POST("/remove", remove)
blkGroup.GET("/info", info)
blkGroupBatch := engine.Group("/x/internal/block/batch", v.Verify)
blkGroupBatch.POST("/block", batchBlock)
blkGroupBatch.POST("/remove", batchRemove)
blkGroupBatch.POST("/info", batchInfo)
blkGroupBatch.GET("/detail", batchDetail)
}
func bind(c *bm.Context, v model.ParamValidator) (err error) {
if err = c.Bind(v); err != nil {
err = errors.WithStack(err)
return
}
if !v.Validate() {
err = ecode.RequestErr
c.JSON(nil, ecode.RequestErr)
return
}
return
}

View File

@@ -0,0 +1,66 @@
package http
import (
"go-common/app/service/main/member/model"
bm "go-common/library/net/http/blademaster"
"go-common/library/net/metadata"
)
func exp(ctx *bm.Context) {
arg := new(model.ArgMid2)
if err := ctx.Bind(arg); err != nil {
return
}
ctx.JSON(memberSvc.Exp(ctx, arg.Mid))
}
func level(ctx *bm.Context) {
arg := new(model.ArgMid2)
if err := ctx.Bind(arg); err != nil {
return
}
ctx.JSON(memberSvc.Level(ctx, arg.Mid))
}
func official(ctx *bm.Context) {
arg := new(model.ArgMid2)
if err := ctx.Bind(arg); err != nil {
return
}
ctx.JSON(memberSvc.Official(ctx, arg.Mid))
}
func explog(ctx *bm.Context) {
arg := new(model.ArgMid2)
if err := ctx.Bind(arg); err != nil {
return
}
arg.RealIP = metadata.String(ctx, metadata.RemoteIP)
ctx.JSON(memberSvc.ExpLog(ctx, arg.Mid, arg.RealIP))
}
func updateExp(ctx *bm.Context) {
arg := new(model.ArgAddExp)
if err := ctx.Bind(arg); err != nil {
return
}
arg.IP = metadata.String(ctx, metadata.RemoteIP)
ctx.JSON(nil, memberSvc.UpdateExp(ctx, arg))
}
func setExp(ctx *bm.Context) {
arg := new(model.ArgAddExp)
if err := ctx.Bind(arg); err != nil {
return
}
arg.IP = metadata.String(ctx, metadata.RemoteIP)
ctx.JSON(nil, memberSvc.SetExp(ctx, arg))
}
func stat(ctx *bm.Context) {
arg := new(model.ArgMid2)
if err := ctx.Bind(arg); err != nil {
return
}
ctx.JSON(memberSvc.Stat(ctx, arg.Mid))
}

View File

@@ -0,0 +1,83 @@
package http
import (
"go-common/app/service/main/member/conf"
"go-common/app/service/main/member/server/http/block"
"go-common/app/service/main/member/service"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
v "go-common/library/net/http/blademaster/middleware/verify"
"net/http"
)
var (
memberSvc *service.Service
verify *v.Verify
)
// Init init http sever instance.
func Init(c *conf.Config, s *service.Service) {
verify = v.New(c.Verify)
memberSvc = s
engine := bm.DefaultServer(c.BM)
setup(engine)
block.Setup(memberSvc.BlockImpl(), engine, verify)
if err := engine.Start(); err != nil {
log.Error("http.Serve inner error(%v)", err)
panic(err)
}
}
func setup(e *bm.Engine) {
e.Ping(ping)
e.Register(register)
mb := e.Group("/x/internal/member", verify.Verify)
mb.POST("/sign/update", setSign)
mb.POST("/name/update", setName)
mb.POST("/rank/update", setRank)
mb.POST("/birthday/update", setBirthday)
mb.POST("/sex/update", setSex)
mb.POST("/face/update", setFace)
mb.POST("/base/update", setBase)
mb.POST("/morals/update", updateMorals)
mb.POST("/moral/update", updateMoral)
mb.POST("/moral/undo", undoMoral)
mb.GET("/moral", moral)
mb.GET("/moral/log", moralLog)
mb.GET("", member)
mb.GET("/base", base)
mb.GET("/batchBase", batchBase)
mb.GET("/exp", exp)
mb.GET("/level", level)
mb.GET("/official", official)
mb.POST("/exp/set", setExp)
mb.POST("/exp/update", updateExp)
mb.GET("/exp/log", explog)
mb.GET("/exp/stat", stat)
mb.GET("/cache/del", cacheDel)
mb.POST("/property/review/add", addPropertyReview)
// realname
mb.GET("/realname/status", realnameStatus)
mb.GET("/realname/info", realnameInfo)
mb.POST("/realname/tel/capture", realnameTelCapture)
mb.GET("/realname/tel/capture/check", realnameCheckTelCapture)
mb.GET("/realname/apply/status", realnameApplyStatus)
mb.POST("/realname/apply", realnameApply)
mb.GET("/realname/adult", realnameAdult)
mb.GET("/realname/check", realnameCheck)
mb.GET("/realname/stripped/info", realnameStrippedInfo)
mb.GET("/realname/mid/by/card", realnameMidByCard)
}
// ping check server ok.
func ping(c *bm.Context) {
if err := memberSvc.Ping(c); err != nil {
log.Error("service ping error(%+v)", err)
c.AbortWithStatus(http.StatusServiceUnavailable)
}
}
func register(c *bm.Context) {
c.JSON(nil, nil)
}

View File

@@ -0,0 +1,45 @@
package http
import (
"strconv"
"go-common/library/ecode"
bm "go-common/library/net/http/blademaster"
)
func moral(ctx *bm.Context) {
var (
err error
mid int64
// moral *model.Moral
params = ctx.Request.Form
midStr = params.Get("mid")
// res = c.Result()
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
// res["code"] = ecode.RequestErr
ctx.JSON(nil, ecode.RequestErr)
return
}
// if moral, err = memberSvc.Moral(c, mid); err != nil {
// log.Error("memberSvc.Moral(%d) error(%v)", mid, err)
// res["code"] = err
// return
// }
// res["data"] = moral
ctx.JSON(memberSvc.Moral(ctx, mid))
}
func moralLog(ctx *bm.Context) {
var (
err error
mid int64
params = ctx.Request.Form
midStr = params.Get("mid")
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
ctx.JSON(nil, ecode.RequestErr)
return
}
ctx.JSON(memberSvc.MoralLog(ctx, mid))
}

View File

@@ -0,0 +1,182 @@
package http
import (
"strconv"
"strings"
"go-common/app/service/main/member/api"
"go-common/app/service/main/member/model"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
func realnameStatus(ctx *bm.Context) {
var (
err error
mid int64
status model.RealnameStatus
params = ctx.Request.Form
midStr = params.Get("mid")
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
ctx.JSON(nil, ecode.RequestErr)
return
}
if status, err = memberSvc.RealnameStatus(ctx, mid); err != nil {
log.Error("%+v", err)
ctx.JSON(nil, err)
return
}
var resData struct {
Status model.RealnameStatus `json:"status"`
}
resData.Status = status
ctx.JSON(resData, nil)
}
func realnameInfo(ctx *bm.Context) {
var (
err error
mid int64
params = ctx.Request.Form
midStr = params.Get("mid")
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
ctx.JSON(nil, ecode.RequestErr)
return
}
ctx.JSON(memberSvc.RealnameBrief(ctx, mid))
}
func realnameTelCapture(ctx *bm.Context) {
var (
err error
mid int64
params = ctx.Request.Form
midStr = params.Get("mid")
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
ctx.JSON(nil, ecode.RequestErr)
return
}
_, err = memberSvc.RealnameTelCapture(ctx, mid)
ctx.JSON(nil, err)
}
func realnameCheckTelCapture(ctx *bm.Context) {
var (
err error
param = &model.ParamRealnameTelCaptureCheck{}
)
if err = ctx.Bind(param); err != nil {
return
}
ctx.JSON(nil, memberSvc.RealnameTelCaptureCheck(ctx, param.MID, param.Capture))
}
func realnameApplyStatus(ctx *bm.Context) {
var (
err error
mid int64
params = ctx.Request.Form
midStr = params.Get("mid")
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
ctx.JSON(nil, ecode.RequestErr)
return
}
ctx.JSON(memberSvc.RealnameApplyStatus(ctx, mid))
}
func realnameApply(ctx *bm.Context) {
var (
err error
params = ctx.Request.Form
// res = c.Result()
midStr = params.Get("mid")
mid int64
realname = params.Get("real_name")
cardTypeStr = params.Get("card_type")
cardType int64
cardNum = params.Get("card_num")
countryStr = params.Get("country")
country int64
captureStr = params.Get("capture")
capture int64
handIMGToken = params.Get("img1_token")
frontIMGToken = params.Get("img2_token")
backIMGToken = params.Get("img3_token")
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
ctx.JSON(nil, ecode.RequestErr)
return
}
if cardType, err = strconv.ParseInt(cardTypeStr, 10, 64); err != nil {
ctx.JSON(nil, ecode.RequestErr)
return
}
if country, err = strconv.ParseInt(countryStr, 10, 64); err != nil {
ctx.JSON(nil, ecode.RequestErr)
return
}
if capture, err = strconv.ParseInt(captureStr, 10, 64); err != nil {
ctx.JSON(nil, ecode.RequestErr)
return
}
ctx.JSON(nil, memberSvc.RealnameApply(ctx, mid, int(capture), realname, int8(cardType), cardNum, int16(country), handIMGToken, frontIMGToken, backIMGToken))
}
func realnameAdult(ctx *bm.Context) {
var (
err error
params = ctx.Request.Form
midStr = params.Get("mid")
mid int64
)
if mid, err = strconv.ParseInt(midStr, 10, 64); err != nil {
ctx.JSON(nil, ecode.RequestErr)
return
}
var resp struct {
Type model.RealnameAdultType `json:"type"`
}
resp.Type, err = memberSvc.RealnameAdult(ctx, mid)
ctx.JSON(resp, err)
}
func realnameCheck(ctx *bm.Context) {
var (
err error
param = &model.ParamRealnameCheck{}
resp bool
)
if err = ctx.Bind(param); err != nil {
return
}
resp, err = memberSvc.RealnameCheck(ctx, param.MID, param.CardType, strings.TrimSpace(param.CardCode))
ctx.JSON(resp, err)
}
func realnameStrippedInfo(ctx *bm.Context) {
arg := &model.ArgMid2{}
if err := ctx.Bind(arg); err != nil {
return
}
ctx.JSON(memberSvc.RealnameStrippedInfo(ctx, arg.Mid))
}
func realnameMidByCard(ctx *bm.Context) {
arg := &api.MidByRealnameCardsReq{}
if err := ctx.Bind(arg); err != nil {
return
}
reply, err := memberSvc.MidByRealnameCard(ctx, arg)
if err != nil {
ctx.JSON(nil, err)
return
}
ctx.JSON(reply.CodeToMid, nil)
}