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,75 @@
load(
"@io_bazel_rules_go//go:def.bzl",
"go_library",
"go_test",
)
load(
"@io_bazel_rules_go//proto:def.bzl",
"go_proto_library",
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
"//app/service/main/member/api/gorpc:all-srcs",
],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)
proto_library(
name = "api_proto",
srcs = ["api.proto"],
tags = ["automanaged"],
deps = ["@gogo_special_proto//github.com/gogo/protobuf/gogoproto"],
)
go_proto_library(
name = "api_go_proto",
compilers = ["@io_bazel_rules_go//proto:gogofast_grpc"],
importpath = "go-common/app/service/main/member/api",
proto = ":api_proto",
tags = ["automanaged"],
deps = [
"//library/time:go_default_library",
"@com_github_gogo_protobuf//gogoproto:go_default_library",
],
)
go_library(
name = "go_default_library",
srcs = [
"client.go",
"copy.go",
],
embed = [":api_go_proto"],
importpath = "go-common/app/service/main/member/api",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/service/main/member/model:go_default_library",
"//app/service/main/member/model/block:go_default_library",
"//library/net/rpc/warden:go_default_library",
"//library/time:go_default_library",
"@com_github_gogo_protobuf//gogoproto:go_default_library",
"@com_github_gogo_protobuf//proto:go_default_library",
"@org_golang_google_grpc//:go_default_library",
"@org_golang_x_net//context:go_default_library",
],
)
go_test(
name = "go_default_test",
srcs = ["client_test.go"],
embed = [":go_default_library"],
tags = ["automanaged"],
deps = ["//vendor/github.com/smartystreets/goconvey/convey:go_default_library"],
)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,589 @@
syntax = "proto3";
package account.service.member.v1;
option go_package = "api";
import "github.com/gogo/protobuf/gogoproto/gogo.proto";
message MidReq {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 真实ip
string realIP = 3 [ (gogoproto.jsontag) = "realIP" ];
}
message MemberMidReq {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 远端ip
string remoteIP = 2 [ (gogoproto.jsontag) = "remoteIP" ];
}
message MemberMidsReq {
// mid 列表
repeated int64 mids = 1 [ (gogoproto.jsontag) = "mids" ];
// 远端ip
string remoteIP = 2 [ (gogoproto.jsontag) = "remoteIP" ];
}
message MidByRealnameCardsReq {
// 身份证号
repeated string card_code = 1
[ (gogoproto.moretags) = "form:\"card_code\" validate:\"required\"" ];
// 国家
int32 country = 2 [
(gogoproto.jsontag) = "country",
(gogoproto.casttype) = "int16",
(gogoproto.moretags) = "form:\"country\""
];
// 证件类型
int32 card_type = 3 [
(gogoproto.jsontag) = "card_type",
(gogoproto.casttype) = "int8",
(gogoproto.moretags) = "form:\"card_type\""
];
}
// 空的message对应真实service只返回error没有具体返回值
message EmptyStruct {}
message LevelInfoReply {
// 当前的等级信息
int32 cur = 1 [ (gogoproto.jsontag) = "current_level" ];
// 当前等级的经验阀值
int32 min = 2 [ (gogoproto.jsontag) = "current_min" ];
// 当前的经验值
int32 now_exp = 3 [ (gogoproto.jsontag) = "current_exp" ];
// 下个等级的经验阀值
int32 next_exp = 4 [ (gogoproto.jsontag) = "next_exp" ];
}
message UserLogReply {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// ip
string ip = 2 [ (gogoproto.jsontag) = "ip" ];
// 时间戳
int64 ts = 3 [ (gogoproto.jsontag) = "ts" ];
// logId
string log_id = 4 [ (gogoproto.jsontag) = "log_id" ];
// 具体内容
map<string, string> content = 5 [ (gogoproto.jsontag) = "content" ];
}
message UserLogsReply {
// UserLog的集合
repeated UserLogReply user_logs = 1 [ (gogoproto.jsontag) = "user_logs" ];
}
message AddExpReq {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 增量
double count = 2 [ (gogoproto.jsontag) = "count" ];
// 修改原因
string reason = 3 [ (gogoproto.jsontag) = "reason" ];
// 操作类型
string operate = 4 [ (gogoproto.jsontag) = "operate" ];
// ip
string ip = 5 [ (gogoproto.jsontag) = "ip" ];
}
message ExpStatReply {
// 是否获取过登陆奖励
bool login = 1 [ (gogoproto.jsontag) = "login" ];
// 是否获取过看视频的奖励
bool watch = 2 [ (gogoproto.jsontag) = "watch_av" ];
// 是否获得投币奖励
int64 coin = 3 [ (gogoproto.jsontag) = "coins_av" ];
// 是否获得分享过视频的奖励
bool share = 4 [ (gogoproto.jsontag) = "share_av" ];
}
// member
message BaseInfoReply {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 名称
string name = 2 [ (gogoproto.jsontag) = "name" ];
// 性别
int64 sex = 3 [ (gogoproto.jsontag) = "sex" ];
// 头像
string face = 4 [ (gogoproto.jsontag) = "face" ];
// 签名
string sign = 5 [ (gogoproto.jsontag) = "sign" ];
// 排名
int64 rank = 6 [ (gogoproto.jsontag) = "rank" ];
// 生日
int64 birthday = 7 [
(gogoproto.jsontag) = "birthday",
(gogoproto.casttype) = "go-common/library/time.Time"
];
}
message OfficialInfoReply {
// 角色类别
int32 role = 1
[ (gogoproto.jsontag) = "role", (gogoproto.casttype) = "int8" ];
// 标题
string title = 2 [ (gogoproto.jsontag) = "title" ];
// 描述
string desc = 3 [ (gogoproto.jsontag) = "desc" ];
}
message BaseInfosReply {
// member基本信息集合
map<int64, BaseInfoReply> base_infos = 1;
}
message MemberInfoReply {
// 基本信息
BaseInfoReply base_info = 1;
// 等级信息
LevelInfoReply level_info = 2;
// 官方认证信息
OfficialInfoReply official_info = 3;
}
message MemberInfosReply { map<int64, MemberInfoReply> member_infos = 1; }
message NickUpdatedReply {
// 昵称是否修改过
bool nick_updated = 1 [ (gogoproto.jsontag) = "nick_updated" ];
}
message OfficialDocReq {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 名称
string name = 2 [ (gogoproto.jsontag) = "name" ];
// 审核状态
int32 state = 3
[ (gogoproto.jsontag) = "state", (gogoproto.casttype) = "int8" ];
// 角色
int32 role = 4
[ (gogoproto.jsontag) = "role", (gogoproto.casttype) = "int8" ];
// 标题
string title = 5 [ (gogoproto.jsontag) = "title" ];
// 描述
string desc = 6 [ (gogoproto.jsontag) = "desc" ];
// 拒绝原因
string reject_reason = 7 [ (gogoproto.jsontag) = "reject_reason" ];
// 真实名字
int32 realname = 8
[ (gogoproto.jsontag) = "realname", (gogoproto.casttype) = "int8" ];
// 操作人
string operator = 9 [ (gogoproto.jsontag) = "operator" ];
// 电话
string telephone = 10 [ (gogoproto.jsontag) = "telephone" ];
// 邮箱
string email = 11 [ (gogoproto.jsontag) = "email" ];
// 地址
string address = 12 [ (gogoproto.jsontag) = "address" ];
// 公司
string company = 13 [ (gogoproto.jsontag) = "company" ];
// 统一信用代码
string credit_code = 14 [ (gogoproto.jsontag) = "credit_code" ];
// 组织机构
string organization = 15 [ (gogoproto.jsontag) = "organization" ];
// 组织机构类型
string organization_type = 16 [ (gogoproto.jsontag) = "organization_type" ];
// 营业执照
string business_license = 17 [ (gogoproto.jsontag) = "business_license" ];
// 企业规模
string business_scale = 18 [ (gogoproto.jsontag) = "business_scale" ];
// 企业等级
string business_level = 19 [ (gogoproto.jsontag) = "business_level" ];
// 企业授权函
string business_auth = 20 [ (gogoproto.jsontag) = "business_auth" ];
// 其他补充资料
string supplement = 21 [ (gogoproto.jsontag) = "supplement" ];
// 专业资质
string professional = 22 [ (gogoproto.jsontag) = "professional" ];
// 身份证明
string identification = 23 [ (gogoproto.jsontag) = "identification" ];
// 提交来源
string submit_source = 24 [ (gogoproto.jsontag) = "submit_source" ];
}
message UpdateSexReq {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 性别
int64 sex = 2 [ (gogoproto.jsontag) = "sex" ];
// 远端ip
string remote_IP = 3 [ (gogoproto.jsontag) = "remoteIP" ];
}
message UpdateUnameReq {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 名称
string name = 2 [ (gogoproto.jsontag) = "name" ];
// 远端ip
string remote_IP = 3 [ (gogoproto.jsontag) = "remoteIP" ];
}
message UpdateFaceReq {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 头像
string face = 2 [ (gogoproto.jsontag) = "face" ];
// 远端ip
string remote_IP = 3 [ (gogoproto.jsontag) = "remoteIP" ];
}
message UpdateRankReq {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 排行
int64 rank = 2 [ (gogoproto.jsontag) = "rank" ];
// 远端ip
string remote_IP = 3 [ (gogoproto.jsontag) = "remoteIP" ];
}
message UpdateBirthdayReq {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 生日
int64 birthday = 2 [
(gogoproto.jsontag) = "birthday",
(gogoproto.casttype) = "go-common/library/time.Time"
];
// 远端ip
string remote_IP = 3 [ (gogoproto.jsontag) = "remoteIP" ];
}
message UpdateSignReq {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 签名
string sign = 2 [ (gogoproto.jsontag) = "sign" ];
// 远端ip
string remote_IP = 3 [ (gogoproto.jsontag) = "remoteIP" ];
}
message OfficialDocInfoReply {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 名称
string name = 2 [ (gogoproto.jsontag) = "name" ];
// 审核状态
int32 state = 3 [ (gogoproto.jsontag) = "state" ];
// 角色类型
int32 role = 4
[ (gogoproto.jsontag) = "role", (gogoproto.casttype) = "int8" ];
// 认证称号
string title = 5 [ (gogoproto.jsontag) = "title" ];
// 认证后缀
string desc = 6 [ (gogoproto.jsontag) = "desc" ];
// 被拒绝原因
string reject_reason = 7 [ (gogoproto.jsontag) = "reject_reason" ];
// 真实姓名
int32 realname = 8
[ (gogoproto.jsontag) = "realname", (gogoproto.casttype) = "int8" ];
// 经营人
string operator = 9 [ (gogoproto.jsontag) = "operator" ];
// 电话好吗
string telephone = 10 [ (gogoproto.jsontag) = "telephone" ];
// 邮箱
string email = 11 [ (gogoproto.jsontag) = "email" ];
// 地址
string address = 12 [ (gogoproto.jsontag) = "address" ];
// 公司
string company = 13 [ (gogoproto.jsontag) = "company" ];
// 社会信用代码
string credit_code = 14 [ (gogoproto.jsontag) = "credit_code" ];
// 政府或组织机构名称
string organization = 15 [ (gogoproto.jsontag) = "organization" ];
// 组织或机构类型
string organization_type = 16 [ (gogoproto.jsontag) = "organization_type" ];
// 营业执照
string business_license = 17 [ (gogoproto.jsontag) = "business_license" ];
// 企业规模
string business_scale = 18 [ (gogoproto.jsontag) = "business_scale" ];
// 企业等级
string business_level = 19 [ (gogoproto.jsontag) = "business_level" ];
// 企业授权函
string business_auth = 20 [ (gogoproto.jsontag) = "business_auth" ];
// 其他补充资料
string supplement = 21 [ (gogoproto.jsontag) = "supplement" ];
// 专业资质
string professional = 22 [ (gogoproto.jsontag) = "professional" ];
// 身份证明
string identification = 23 [ (gogoproto.jsontag) = "identification" ];
}
// moral
message MoralReply {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 节操值
int64 moral = 2 [ (gogoproto.jsontag) = "moral" ];
// 增量
int64 added = 3 [ (gogoproto.jsontag) = "added" ];
// 减量
int64 deducted = 4 [ (gogoproto.jsontag) = "deducted" ];
// 上一次节操低于70时的恢复时间
int64 last_recover_date = 5 [
(gogoproto.jsontag) = "last_recover_date",
(gogoproto.casttype) = "go-common/library/time.Time"
];
}
message UpdateMoralReq {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 增量
int64 delta = 2 [ (gogoproto.jsontag) = "delta" ];
// 类型
int64 origin = 3 [ (gogoproto.jsontag) = "origin" ];
// 操作原因
string reason = 4 [ (gogoproto.jsontag) = "reason" ];
// 操纵原因类型
int64 reason_type = 5 [ (gogoproto.jsontag) = "reason_type" ];
// 操作人
string operator = 6 [ (gogoproto.jsontag) = "operator" ];
// 备注
string remark = 7 [ (gogoproto.jsontag) = "remark" ];
// 状态
int64 status = 8 [ (gogoproto.jsontag) = "status" ];
// 是否通知
bool is_notify = 9 [ (gogoproto.jsontag) = "is_notify" ];
// ip地址
string ip = 10 [ (gogoproto.jsontag) = "ip" ];
}
message UpdateMoralsReq {
// mid 列表
repeated int64 mids = 1 [ (gogoproto.jsontag) = "mid" ];
// 增量
int64 delta = 2 [ (gogoproto.jsontag) = "delta" ];
// 类型
int64 origin = 3 [ (gogoproto.jsontag) = "origin" ];
// 操作原因
string reason = 4 [ (gogoproto.jsontag) = "reason" ];
// 操纵原因类型
int64 reason_type = 5 [ (gogoproto.jsontag) = "reason_type" ];
// 操作人
string operator = 6 [ (gogoproto.jsontag) = "operator" ];
// 备注
string remark = 7 [ (gogoproto.jsontag) = "remark" ];
// 状态
int64 status = 8 [ (gogoproto.jsontag) = "status" ];
// 是否通知
bool is_notify = 9 [ (gogoproto.jsontag) = "is_notify" ];
// ip
string ip = 10 [ (gogoproto.jsontag) = "ip" ];
}
message UpdateMoralsReply {
// 批量更新后节操值
map<int64, int64> after_morals = 1 [ (gogoproto.jsontag) = "after_morals" ];
}
// property_review
message AddUserMonitorReq {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 操作人
string operator = 2 [ (gogoproto.jsontag) = "operator" ];
// 备注
string remark = 3 [ (gogoproto.jsontag) = "remark" ];
}
// AddPropertyReview (暂时不开放调用)
// message AddPropertyReviewReq {
// // mid
// int64 mid = 1 [(gogoproto.jsontag) = "mid"];
// // 属性新的值
// string new = 2 [(gogoproto.jsontag) = "new"];
// // 状态
// int32 state = 3 [(gogoproto.jsontag) = "state",(gogoproto.casttype) =
// "int8"];
// // 属性
// int32 property = 4 [(gogoproto.jsontag) = "property",(gogoproto.casttype)
// = "int8"];
// // 额外的一些信息
// map<string, string> extra = 5 [(gogoproto.jsontag) = "extra"];
// }
message IsInMonitorReply {
// member是否处在受监控列表中
bool is_in_monitor = 1 [ (gogoproto.jsontag) = "is_in_monitor" ];
}
// realname
message RealnameStatusReply {
// 实名认证状态
int32 realname_status = 1 [
(gogoproto.jsontag) = "realname_status",
(gogoproto.casttype) = "int8"
];
}
message RealnameApplyInfoReply {
// 认证流程状态
int32 status = 1
[ (gogoproto.jsontag) = "status", (gogoproto.casttype) = "int8" ];
// 备注
string remark = 2 [ (gogoproto.jsontag) = "remark" ];
}
message ArgRealnameApplyReq {
// mid
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
// 验证码
int64 capture_code = 2 [ (gogoproto.jsontag) = "capture_code" ];
// 真实的名字
string realname = 3 [ (gogoproto.jsontag) = "realname" ];
// 证件类型
int32 card_type = 4
[ (gogoproto.jsontag) = "card_type", (gogoproto.casttype) = "int8" ];
// 证件码
string card_code = 5 [ (gogoproto.jsontag) = "card_code" ];
// 国家
int32 country = 6
[ (gogoproto.jsontag) = "country", (gogoproto.casttype) = "int16" ];
// 手持照的路径
string handIMG_token = 7;
// 证件照的前面
string frontIMG_token = 8;
// 证件照的后面
string backIMG_token = 9;
}
message RealnameDetailReply {
// 实名姓名
string realname = 1 [ (gogoproto.jsontag) = "realname" ];
// 证件码
string card = 2 [ (gogoproto.jsontag) = "card" ];
// 证件类型
int32 card_type = 3
[ (gogoproto.jsontag) = "card_type", (gogoproto.casttype) = "int8" ];
// 实名状态
int32 status = 4
[ (gogoproto.jsontag) = "status", (gogoproto.casttype) = "int8" ];
// 性别
string gender = 5 [ (gogoproto.jsontag) = "gender" ];
// 手持照IMG User
string hand_img = 6 [ (gogoproto.jsontag) = "hand_img" ];
}
message RealnameStrippedInfoReply {
int64 mid = 1 [ (gogoproto.jsontag) = "mid" ];
int32 status = 2
[ (gogoproto.jsontag) = "status", (gogoproto.casttype) = "int8" ];
int32 channel = 3
[ (gogoproto.jsontag) = "channel", (gogoproto.casttype) = "int8" ];
int32 country = 4
[ (gogoproto.jsontag) = "country", (gogoproto.casttype) = "int16" ];
int32 card_type = 5
[ (gogoproto.jsontag) = "card_type", (gogoproto.casttype) = "int8" ];
int32 adult_type = 6
[ (gogoproto.jsontag) = "adult_type", (gogoproto.casttype) = "int8" ];
}
message MidByRealnameCardReply {
map<string, int64> code_to_mid = 5 [ (gogoproto.jsontag) = "code_to_mid" ];
}
message BlockInfoReply {
int64 MID = 1 [ (gogoproto.jsontag) = "mid" ];
int32 BlockStatus = 2 [ (gogoproto.jsontag) = "status" ];
int64 StartTime = 3 [ (gogoproto.jsontag) = "start_time" ];
int64 EndTime = 4 [ (gogoproto.jsontag) = "end_time" ];
}
message BlockDetailReply {
int64 MID = 1 [ (gogoproto.jsontag) = "mid" ];
int64 BlockCount = 2 [ (gogoproto.jsontag) = "block_count" ];
}
message BlockBatchDetailReply {
map<int64, BlockDetailReply> BlockDetails = 1 [ (gogoproto.jsontag) = "block_details" ];
}
message BlockBatchInfoReply {
repeated BlockInfoReply BlockInfos = 1
[ (gogoproto.jsontag) = "block_infos" ];
}
service Member {
// 得到member的基本信息
rpc Base(MemberMidReq) returns (BaseInfoReply);
// 批量得到一批member的基本信息
rpc Bases(MemberMidsReq) returns (BaseInfosReply);
// 得到member的全量信息
rpc Member(MemberMidReq) returns (MemberInfoReply);
// 批量得到一批member的全量信息
rpc Members(MemberMidsReq) returns (MemberInfosReply);
// 查看member是否更新过昵称
rpc NickUpdated(MemberMidReq) returns (NickUpdatedReply);
// 标记member已经更新过昵称
rpc SetNickUpdated(MemberMidReq) returns (EmptyStruct);
// 设置官方文档资料
rpc SetOfficialDoc(OfficialDocReq) returns (EmptyStruct);
// 设置member的性别
rpc SetSex(UpdateSexReq) returns (EmptyStruct);
// 设置member的名字
rpc SetName(UpdateUnameReq) returns (EmptyStruct);
// 设置member的头像
rpc SetFace(UpdateFaceReq) returns (EmptyStruct);
// 设置member的头像
rpc SetRank(UpdateRankReq) returns (EmptyStruct);
// 设置member的生日
rpc SetBirthday(UpdateBirthdayReq) returns (EmptyStruct);
// 设置member的签名
rpc SetSign(UpdateSignReq) returns (EmptyStruct);
// 得到member的官方信息
rpc OfficialDoc(MidReq) returns (OfficialDocInfoReply);
// 得到member的节操值
rpc Moral(MemberMidReq) returns (MoralReply);
// 得到member的节操日志
rpc MoralLog(MemberMidReq) returns (UserLogsReply);
// 给member添加节操值
rpc AddMoral(UpdateMoralReq) returns (EmptyStruct);
// 给一批member批量添加节操值
rpc BatchAddMoral(UpdateMoralsReq) returns (UpdateMoralsReply);
// 得到member的经验值
rpc Exp(MidReq) returns (LevelInfoReply);
// 得到member的等级
rpc Level(MidReq) returns (LevelInfoReply);
// 更新member的经验值
rpc UpdateExp(AddExpReq) returns (EmptyStruct);
// 得到membe的经验日志
rpc ExpLog(MidReq) returns (UserLogsReply);
// 得到member的经验统计
rpc ExpStat(MidReq) returns (ExpStatReply);
// 得到member的实名认证状态
rpc RealnameStatus(MemberMidReq) returns (RealnameStatusReply);
// 得到member 实名认证流程的状态
rpc RealnameApplyStatus(MemberMidReq) returns (RealnameApplyInfoReply);
// 手机号实名认证发送验证码
rpc RealnameTelCapture(MemberMidReq) returns (EmptyStruct);
// 进行实名认证
rpc RealnameApply(ArgRealnameApplyReq) returns (EmptyStruct);
// 实名详情
rpc RealnameDetail(MemberMidReq) returns (RealnameDetailReply);
// 所有非敏感实名认证信息
rpc RealnameStrippedInfo(MemberMidReq) returns (RealnameStrippedInfoReply);
// 通过身份证号查询 mid
rpc MidByRealnameCard(MidByRealnameCardsReq) returns (MidByRealnameCardReply);
// 添加用户为受监控
rpc AddUserMonitor(AddUserMonitorReq) returns (EmptyStruct);
// 查看member是否在监控状态
rpc IsInMonitor(MidReq) returns (IsInMonitorReply);
// 添加属性审核 (暂时不开放调用)
// rpc AddPropertyReview(AddPropertyReviewReq) returns (EmptyStruct);
// block
// 获取用户封禁信息数据
rpc BlockInfo(MemberMidReq) returns (BlockInfoReply);
// 批量获取用户封禁信息数据
rpc BlockBatchInfo(MemberMidsReq) returns (BlockBatchInfoReply);
//批量获取用户封禁详细数据
rpc BlockBatchDetail(MemberMidsReq) returns (BlockBatchDetailReply);
}

View File

@@ -0,0 +1,22 @@
package api
import (
"context"
"go-common/library/net/rpc/warden"
"google.golang.org/grpc"
)
// AppID unique app id for service discovery
const AppID = "account.service.member"
// NewClient new member grpc client
func NewClient(cfg *warden.ClientConfig, opts ...grpc.DialOption) (MemberClient, error) {
client := warden.NewClient(cfg, opts...)
conn, err := client.Dial(context.Background(), "discovery://default/"+AppID)
if err != nil {
return nil, err
}
return NewMemberClient(conn), nil
}

View File

@@ -0,0 +1,40 @@
package api
import (
"context"
"testing"
"github.com/smartystreets/goconvey/convey"
)
var client MemberClient
func init() {
var err error
client, err = NewClient(nil)
if err != nil {
panic(err)
}
}
func TestUserDetails(t *testing.T) {
convey.Convey("Block User Details", t, func(ctx convey.C) {
var c = context.Background()
ctx.Convey("When get block user details", func(ctx convey.C) {
details, err := client.BlockBatchDetail(c, &MemberMidsReq{Mids: []int64{2, 3}})
ctx.So(err, convey.ShouldBeNil)
ctx.So(details, convey.ShouldNotBeNil)
})
})
}
func TestUserInfo(t *testing.T) {
convey.Convey("Block User Infos", t, func(ctx convey.C) {
var c = context.Background()
ctx.Convey("When get block user infos", func(ctx convey.C) {
infos, err := client.BlockBatchInfo(c, &MemberMidsReq{Mids: []int64{2}})
ctx.So(err, convey.ShouldBeNil)
ctx.So(infos, convey.ShouldNotBeNil)
})
})
}

View File

@@ -0,0 +1,177 @@
package api
import (
"go-common/app/service/main/member/model"
block "go-common/app/service/main/member/model/block"
)
// FromBaseInfo convert from model.BaseInfo to v1.BaseInfoReply
func FromBaseInfo(model *model.BaseInfo) *BaseInfoReply {
baseInfoReply := &BaseInfoReply{
Mid: model.Mid,
Name: model.Name,
Sex: model.Sex,
Face: model.Face,
Sign: model.Sign,
Rank: model.Rank,
Birthday: model.Birthday,
}
return baseInfoReply
}
// FromLevelInfo convert from model.LevelInfo to v1.LevelInfoReply
func FromLevelInfo(model *model.LevelInfo) *LevelInfoReply {
levelInfoReply := &LevelInfoReply{
Cur: model.Cur,
Min: model.Min,
NowExp: model.NowExp,
NextExp: model.NextExp,
}
return levelInfoReply
}
// FromOfficialInfo convert from model.OfficialInfo to v1.OfficialInfoReply
func FromOfficialInfo(model *model.OfficialInfo) *OfficialInfoReply {
officialInfoReply := &OfficialInfoReply{
Role: model.Role,
Title: model.Title,
Desc: model.Desc,
}
return officialInfoReply
}
// FromMember convert from model.Member to v1.MemberInfoReply
func FromMember(res *model.Member) *MemberInfoReply {
var baseInfo *BaseInfoReply
var levelInfo *LevelInfoReply
var officialInfo *OfficialInfoReply
if res.BaseInfo != nil {
baseInfo = FromBaseInfo(res.BaseInfo)
}
if res.LevelInfo != nil {
levelInfo = FromLevelInfo(res.LevelInfo)
}
if res.OfficialInfo != nil {
officialInfo = FromOfficialInfo(res.OfficialInfo)
}
memberInfoReply := &MemberInfoReply{
BaseInfo: baseInfo,
LevelInfo: levelInfo,
OfficialInfo: officialInfo,
}
return memberInfoReply
}
// FromOfficialDoc convert from model.OfficalDoc to v1.OfficialDocInfoReply
func FromOfficialDoc(model *model.OfficialDoc) *OfficialDocInfoReply {
officalDocInfoReply := &OfficialDocInfoReply{
Mid: model.Mid,
Name: model.Name,
State: int32(model.State),
Role: int8(model.Role),
Title: model.Title,
Desc: model.Desc,
RejectReason: model.RejectReason,
Realname: int8(model.Realname),
Operator: model.Operator,
Telephone: model.Telephone,
Email: model.Email,
Address: model.Address,
Company: model.Company,
CreditCode: model.CreditCode,
Organization: model.Organization,
OrganizationType: model.OrganizationType,
BusinessLicense: model.BusinessLicense,
BusinessScale: model.BusinessScale,
BusinessLevel: model.BusinessLevel,
BusinessAuth: model.BusinessAuth,
Supplement: model.Supplement,
Professional: model.Professional,
Identification: model.Identification,
}
return officalDocInfoReply
}
// FromBlockInfo convert from model.BlockInfo to v1.OfficialDocInfoReply
func FromBlockInfo(model *block.BlockInfo) *BlockInfoReply {
blockInfoReply := &BlockInfoReply{
MID: model.MID,
BlockStatus: int32(model.BlockStatus),
StartTime: model.StartTime,
EndTime: model.EndTime,
}
return blockInfoReply
}
// FromBlockUserDetail convert from model.BlockUserDetail v1.OfficialDocInfoReply
func FromBlockUserDetail(model *block.BlockUserDetail) *BlockDetailReply {
blockDetailReply := &BlockDetailReply{
MID: model.MID,
BlockCount: model.BlockCount,
}
return blockDetailReply
}
// ToArgOfficialDoc convert from v1.officalDocReq to model.AragsOfficalDoc
func ToArgOfficialDoc(req *OfficialDocReq) *model.ArgOfficialDoc {
argOfficialDoc := &model.ArgOfficialDoc{
Mid: req.Mid,
Name: req.Name,
Role: req.Role,
Title: req.Title,
Desc: req.Desc,
Realname: int8(req.Realname),
Operator: req.Operator,
Telephone: req.Telephone,
Email: req.Email,
Address: req.Address,
Company: req.Company,
CreditCode: req.CreditCode,
Organization: req.Organization,
OrganizationType: req.OrganizationType,
BusinessLicense: req.BusinessLicense,
BusinessScale: req.BusinessScale,
BusinessLevel: req.BusinessLevel,
BusinessAuth: req.BusinessAuth,
Supplement: req.Supplement,
Professional: req.Professional,
Identification: req.Identification,
SubmitSource: req.SubmitSource,
}
return argOfficialDoc
}
// ToArgUpdateMoral convert from v1.UpdateMoralReq to model.ArgUpdateMoral
func ToArgUpdateMoral(req *UpdateMoralReq) *model.ArgUpdateMoral {
updateMoral := &model.ArgUpdateMoral{
Mid: req.Mid,
Delta: req.Delta,
Origin: req.Origin,
Reason: req.Reason,
ReasonType: req.ReasonType,
Operator: req.Operator,
Remark: req.Remark,
Status: req.Status,
IsNotify: req.IsNotify,
IP: req.Ip,
}
return updateMoral
}
// ToArgUpdateMorals convert from v1.UpdateMoralsReq to model.ArgUpdateMorals
func ToArgUpdateMorals(req *UpdateMoralsReq) *model.ArgUpdateMorals {
updateMorals := &model.ArgUpdateMorals{
Mids: req.Mids,
Delta: req.Delta,
Origin: req.Origin,
Reason: req.Reason,
ReasonType: req.ReasonType,
Operator: req.Operator,
Remark: req.Remark,
Status: req.Status,
IsNotify: req.IsNotify,
IP: req.Ip,
}
return updateMorals
}

View File

@@ -0,0 +1,41 @@
package(default_visibility = ["//visibility:public"])
load(
"@io_bazel_rules_go//go:def.bzl",
"go_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/api/gorpc",
tags = ["automanaged"],
visibility = ["//visibility:public"],
deps = [
"//app/service/main/member/model:go_default_library",
"//app/service/main/member/model/block:go_default_library",
"//library/ecode:go_default_library",
"//library/net/rpc: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,33 @@
package gorpc
import (
"context"
rpcmodel "go-common/app/service/main/member/model/block"
"go-common/library/ecode"
)
const (
_blockInfo = "RPC.BlockInfo"
_blockBatchInfo = "RPC.BlockBatchInfo"
)
// BlockInfo is
func (s *Service) BlockInfo(c context.Context, arg *rpcmodel.RPCArgInfo) (res *rpcmodel.RPCResInfo, err error) {
res = new(rpcmodel.RPCResInfo)
err = s.client.Call(c, _blockInfo, arg, res)
return
}
// BlockBatchInfo len(mids) <= 50
func (s *Service) BlockBatchInfo(c context.Context, arg *rpcmodel.RPCArgBatchInfo) (res []*rpcmodel.RPCResInfo, err error) {
if len(arg.MIDs) == 0 {
return
}
if len(arg.MIDs) > 50 {
err = ecode.RequestErr
return
}
err = s.client.Call(c, _blockBatchInfo, arg, &res)
return
}

View File

@@ -0,0 +1,152 @@
package gorpc
import (
"context"
"go-common/app/service/main/member/model"
)
const (
_Base = "RPC.Base"
_Bases = "RPC.Bases"
_Member = "RPC.Member"
_Members = "RPC.Members"
_UpdateExp = "RPC.UpdateExp"
_Exp = "RPC.Exp"
_Level = "RPC.Level"
_Log = "RPC.Log"
_Stat = "RPC.Stat"
_NickUpdated = "RPC.NickUpdated"
_SetNickUpdated = "RPC.SetNickUpdated"
_Moral = "RPC.Moral"
_MoralLog = "RPC.MoralLog"
_SetOfficialDoc = "RPC.SetOfficialDoc"
_OfficialDoc = "RPC.OfficialDoc"
_setName = "RPC.SetName"
_setSign = "RPC.SetSign"
_setRank = "RPC.SetRank"
_setFace = "RPC.SetFace"
_setSex = "RPC.SetSex"
_setBirthday = "RPC.SetBirthday"
_addMoral = "RPC.AddMoral"
_batchAddMoral = "RPC.BatchAddMoral"
)
// Exp rpc user exp.
func (s *Service) Exp(c context.Context, arg *model.ArgMid2) (res *model.LevelInfo, err error) {
res = new(model.LevelInfo)
err = s.client.Call(c, _Exp, arg, res)
return
}
// Level user level.
func (s *Service) Level(c context.Context, arg *model.ArgMid2) (res *model.LevelInfo, err error) {
res = new(model.LevelInfo)
err = s.client.Call(c, _Level, arg, res)
return
}
// Log user exp log.
func (s *Service) Log(c context.Context, arg *model.ArgMid2) (res []*model.UserLog, err error) {
err = s.client.Call(c, _Log, arg, &res)
return
}
// Stat user exp log.
func (s *Service) Stat(c context.Context, arg *model.ArgMid2) (res *model.ExpStat, err error) {
err = s.client.Call(c, _Stat, arg, &res)
return
}
// UpdateExp update user exp.
func (s *Service) UpdateExp(c context.Context, arg *model.ArgAddExp) (err error) {
err = s.client.Call(c, _UpdateExp, arg, &_noRes)
return
}
// Base get user base info.
func (s *Service) Base(c context.Context, arg *model.ArgMemberMid) (res *model.BaseInfo, err error) {
err = s.client.Call(c, _Base, arg, &res)
return
}
// Bases get batch base info.
func (s *Service) Bases(c context.Context, arg *model.ArgMemberMids) (res map[int64]*model.BaseInfo, err error) {
err = s.client.Call(c, _Bases, arg, &res)
return
}
// Member get the full information within member-service.
func (s *Service) Member(c context.Context, arg *model.ArgMemberMid) (res *model.Member, err error) {
err = s.client.Call(c, _Member, arg, &res)
return
}
// Members get batch the full information within member-service.
func (s *Service) Members(c context.Context, arg *model.ArgMemberMids) (res map[int64]*model.Member, err error) {
err = s.client.Call(c, _Members, arg, &res)
return
}
// NickUpdated get nickUpdated.
func (s *Service) NickUpdated(c context.Context, arg *model.ArgMemberMid) (res bool, err error) {
err = s.client.Call(c, _NickUpdated, arg, &res)
return
}
// SetNickUpdated set nickUpdated.
func (s *Service) SetNickUpdated(c context.Context, arg *model.ArgMemberMid) (err error) {
err = s.client.Call(c, _SetNickUpdated, arg, &_noRes)
return
}
// SetOfficialDoc set official doc.
func (s *Service) SetOfficialDoc(c context.Context, arg *model.ArgOfficialDoc) (err error) {
err = s.client.Call(c, _SetOfficialDoc, arg, &_noRes)
return
}
// SetName set name.
func (s *Service) SetName(c context.Context, arg *model.ArgUpdateUname) (err error) {
err = s.client.Call(c, _setName, arg, &_noRes)
return
}
// SetSign set sign.
func (s *Service) SetSign(c context.Context, arg *model.ArgUpdateSign) (err error) {
err = s.client.Call(c, _setSign, arg, &_noRes)
return
}
// SetBirthday set birthday.
func (s *Service) SetBirthday(c context.Context, arg *model.ArgUpdateBirthday) (err error) {
err = s.client.Call(c, _setBirthday, arg, &_noRes)
return
}
// SetFace set face.
func (s *Service) SetFace(c context.Context, arg *model.ArgUpdateFace) (err error) {
err = s.client.Call(c, _setFace, arg, &_noRes)
return
}
// SetSex set sex.
func (s *Service) SetSex(c context.Context, arg *model.ArgUpdateSex) (err error) {
err = s.client.Call(c, _setSex, arg, &_noRes)
return
}
// SetRank set rank.
func (s *Service) SetRank(c context.Context, arg *model.ArgUpdateRank) (err error) {
err = s.client.Call(c, _setRank, arg, &_noRes)
return
}
// OfficialDoc is.
func (s *Service) OfficialDoc(c context.Context, arg *model.ArgMid) (res *model.OfficialDoc, err error) {
res = new(model.OfficialDoc)
err = s.client.Call(c, _OfficialDoc, arg, res)
return
}

View File

@@ -0,0 +1,31 @@
package gorpc
import (
"context"
"go-common/app/service/main/member/model"
)
// Moral get user moral.
func (s *Service) Moral(c context.Context, arg *model.ArgMemberMid) (res *model.Moral, err error) {
err = s.client.Call(c, _Moral, arg, &res)
return
}
// MoralLog get user moral log.
func (s *Service) MoralLog(c context.Context, arg *model.ArgMemberMid) (res []*model.UserLog, err error) {
err = s.client.Call(c, _MoralLog, arg, &res)
return
}
// AddMoral add moral .
func (s *Service) AddMoral(c context.Context, arg *model.ArgUpdateMoral) (err error) {
err = s.client.Call(c, _addMoral, arg, &_noRes)
return
}
// BatchAddMoral get user moral log.
func (s *Service) BatchAddMoral(c context.Context, arg *model.ArgUpdateMorals) (res map[int64]int64, err error) {
err = s.client.Call(c, _batchAddMoral, arg, &res)
return
}

View File

@@ -0,0 +1,31 @@
package gorpc
import (
"context"
"go-common/app/service/main/member/model"
)
const (
_AddUserMonitor = "RPC.AddUserMonitor"
_IsInMonitor = "RPC.IsInMonitor"
_AddPropertyReview = "RPC.AddPropertyReview"
)
// AddUserMonitor is
func (s *Service) AddUserMonitor(c context.Context, arg *model.ArgAddUserMonitor) error {
return s.client.Call(c, _AddUserMonitor, arg, &_noRes)
}
// IsInMonitor is
func (s *Service) IsInMonitor(c context.Context, arg *model.ArgMid) (bool, error) {
isInMonitor := false
if err := s.client.Call(c, _IsInMonitor, arg, &isInMonitor); err != nil {
return false, err
}
return isInMonitor, nil
}
// AddPropertyReview is
func (s *Service) AddPropertyReview(c context.Context, arg *model.ArgAddPropertyReview) error {
return s.client.Call(c, _AddPropertyReview, arg, &_noRes)
}

View File

@@ -0,0 +1,67 @@
package gorpc
import (
"context"
"go-common/app/service/main/member/model"
)
const (
_RealnameStatus = "RPC.RealnameStatus"
_RealnameApplyStatus = "RPC.RealnameApplyStatus"
_RealnameTelCapture = "RPC.RealnameTelCapture"
_RealnameApply = "RPC.RealnameApply"
_RealnameDetail = "RPC.RealnameDetail"
_RealnameAlipayApply = "RPC.RealnameAlipayApply"
_RealnameAlipayConfirm = "RPC.RealnameAlipayConfirm"
_RealnameAlipayBizno = "RPC.RealnameAlipayBizno"
)
// RealnameStatus get realname current status by mid
func (s *Service) RealnameStatus(c context.Context, arg *model.ArgMemberMid) (res *model.RealnameStatus, err error) {
err = s.client.Call(c, _RealnameStatus, arg, &res)
return
}
// RealnameApplyStatus get user realname apply status
func (s *Service) RealnameApplyStatus(c context.Context, arg *model.ArgMemberMid) (res *model.RealnameApplyStatusInfo, err error) {
err = s.client.Call(c, _RealnameApplyStatus, arg, &res)
return
}
// RealnameTelCapture get user telphone capture
func (s *Service) RealnameTelCapture(c context.Context, arg *model.ArgMemberMid) (err error) {
err = s.client.Call(c, _RealnameTelCapture, arg, &_noRes)
return
}
// RealnameApply put a realname apply
func (s *Service) RealnameApply(c context.Context, arg *model.ArgRealnameApply) (err error) {
err = s.client.Call(c, _RealnameApply, arg, &_noRes)
return
}
// RealnameAlipayApply put a alipay realname apply
func (s *Service) RealnameAlipayApply(c context.Context, arg *model.ArgRealnameAlipayApply) (err error) {
err = s.client.Call(c, _RealnameAlipayApply, arg, &_noRes)
return
}
// RealnameAlipayConfirm confirm a alipay realname apply positivly
func (s *Service) RealnameAlipayConfirm(c context.Context, arg *model.ArgRealnameAlipayConfirm) (err error) {
err = s.client.Call(c, _RealnameAlipayConfirm, arg, &_noRes)
return
}
// RealnameAlipayBizno get alipay realname certify bizno by mid
func (s *Service) RealnameAlipayBizno(c context.Context, arg *model.ArgMemberMid) (res *model.RealnameAlipayInfo, err error) {
err = s.client.Call(c, _RealnameAlipayBizno, arg, &res)
return
}
// RealnameDetail is
func (s *Service) RealnameDetail(c context.Context, arg *model.ArgMemberMid) (res *model.RealnameDetail, err error) {
res = new(model.RealnameDetail)
err = s.client.Call(c, _RealnameDetail, arg, res)
return
}

View File

@@ -0,0 +1,65 @@
package gorpc
import (
"context"
"go-common/app/service/main/member/model"
"go-common/library/net/rpc"
)
const (
_appid = "account.service.member"
)
var (
_noRes = &struct{}{}
_ RPC = &Service{}
)
// Service is a question service.
type Service struct {
client *rpc.Client2
}
// New new a question service.
func New(c *rpc.ClientConfig) (s *Service) {
s = &Service{}
s.client = rpc.NewDiscoveryCli(_appid, c)
return
}
//go:generate mockgen -source member.go -destination mock.go -package member
// RPC is
type RPC interface {
Exp(c context.Context, arg *model.ArgMid2) (res *model.LevelInfo, err error)
Level(c context.Context, arg *model.ArgMid2) (res *model.LevelInfo, err error)
Log(c context.Context, arg *model.ArgMid2) (res []*model.UserLog, err error)
Stat(c context.Context, arg *model.ArgMid2) (res *model.ExpStat, err error)
UpdateExp(c context.Context, arg *model.ArgAddExp) (err error)
Base(c context.Context, arg *model.ArgMemberMid) (res *model.BaseInfo, err error)
Bases(c context.Context, arg *model.ArgMemberMids) (res map[int64]*model.BaseInfo, err error)
Member(c context.Context, arg *model.ArgMemberMid) (res *model.Member, err error)
Members(c context.Context, arg *model.ArgMemberMids) (res map[int64]*model.Member, err error)
NickUpdated(c context.Context, arg *model.ArgMemberMid) (res bool, err error)
SetNickUpdated(c context.Context, arg *model.ArgMemberMid) (err error)
SetOfficialDoc(c context.Context, arg *model.ArgOfficialDoc) (err error)
SetName(c context.Context, arg *model.ArgUpdateUname) (err error)
SetSign(c context.Context, arg *model.ArgUpdateSign) (err error)
SetBirthday(c context.Context, arg *model.ArgUpdateBirthday) (err error)
SetFace(c context.Context, arg *model.ArgUpdateFace) (err error)
SetSex(c context.Context, arg *model.ArgUpdateSex) (err error)
SetRank(c context.Context, arg *model.ArgUpdateRank) (err error)
OfficialDoc(c context.Context, arg *model.ArgMid) (res *model.OfficialDoc, err error)
Moral(c context.Context, arg *model.ArgMemberMid) (res *model.Moral, err error)
MoralLog(c context.Context, arg *model.ArgMemberMid) (res []*model.UserLog, err error)
AddMoral(c context.Context, arg *model.ArgUpdateMoral) (err error)
BatchAddMoral(c context.Context, arg *model.ArgUpdateMorals) (res map[int64]int64, err error)
AddUserMonitor(c context.Context, arg *model.ArgAddUserMonitor) error
IsInMonitor(c context.Context, arg *model.ArgMid) (bool, error)
AddPropertyReview(c context.Context, arg *model.ArgAddPropertyReview) error
RealnameStatus(c context.Context, arg *model.ArgMemberMid) (res *model.RealnameStatus, err error)
RealnameApplyStatus(c context.Context, arg *model.ArgMemberMid) (res *model.RealnameApplyStatusInfo, err error)
RealnameTelCapture(c context.Context, arg *model.ArgMemberMid) (err error)
RealnameApply(c context.Context, arg *model.ArgRealnameApply) (err error)
}