This commit is contained in:
liwei1dao 2022-10-14 09:37:56 +08:00
commit 5e23153a08
9 changed files with 389 additions and 64 deletions

View File

@ -36,6 +36,6 @@ func (this *apiComp) ActivationFetter(session comm.IUserSession, req *pb.Library
mapData := make(map[string]interface{}, 0)
mapData["activation"] = fetter.Activation
this.module.modelLibrary.modifyLibraryDataByObjId(session.GetUserId(), fetter.Id, mapData)
rsp.Data = fetter
return
}

View File

@ -21,14 +21,14 @@ func (this *apiComp) GetReward(session comm.IUserSession, req *pb.LibraryGetRewa
if code != pb.ErrorCode_Success {
return // 参数校验失败直接返回
}
rsp := &pb.LibraryGetListResp{}
defer session.SendMsg(string(this.module.GetType()), LibraryGetListResp, rsp)
rsp := &pb.LibraryGetRewardResp{}
defer session.SendMsg(string(this.module.GetType()), LibraryGetRewardResp, rsp)
fetter := this.module.getLibraryByObjID(session.GetUserId(), req.ObjId)
if fetter == nil {
code = pb.ErrorCode_LibraryNoData
return
}
conf := this.configure.GetLibraryFetter(fetter.Fid, req.Fetterlv)
conf := this.module.configure.GetLibraryFetter(fetter.Fid, req.Fetterlv)
if conf == nil {
code = pb.ErrorCode_ConfigNoFound
return
@ -41,11 +41,15 @@ func (this *apiComp) GetReward(session comm.IUserSession, req *pb.LibraryGetRewa
}
fetter.Prize[req.Fetterlv] = 1
// 发奖
if len(conf.Prize) != 0 {
if code = this.module.DispenseRes(session, conf.Prize, true); code != pb.ErrorCode_Success { //
return
}
}
mapData := make(map[string]interface{}, 0)
mapData["prize"] = fetter.Prize
this.module.ModifyLibraryData(session.GetUserId(), fetter.Id, mapData) // 更新内存信息
rsp.Data = fetter
return
}

View File

@ -66,8 +66,7 @@ func (this *Library) GetLibraryListByFid(uid string, fid int32) *pb.DBLibrary {
}
//通过羁绊id 创建多个羁绊信息
func (this *Library) CreateLibrary(uid string, fids []int32, heroConfId string) (code pb.ErrorCode, objLibrary []*pb.DBLibrary) {
for _, fid := range fids {
func (this *Library) CreateLibrary(uid string, fid int32, heroConfId string) (code pb.ErrorCode, objLibrary []*pb.DBLibrary) {
obj := &pb.DBLibrary{
Id: primitive.NewObjectID().Hex(),
Uid: uid,
@ -87,11 +86,10 @@ func (this *Library) CreateLibrary(uid string, fids []int32, heroConfId string)
}
if err := this.modelLibrary.createLibrary(uid, obj); err != nil {
code = pb.ErrorCode_DBError
break
}
objLibrary = append(objLibrary, obj)
}
}
return
}
@ -108,7 +106,7 @@ func (this *Library) GetHeroFetterList(uid string) []*pb.DBHeroFetter {
// 创建一条英雄羁绊信息
func (this *Library) createHeroFetter(uid string, heroConfId string) (code pb.ErrorCode) {
this.modelFetter.getHeroFetterList(uid)
obj := &pb.DBHeroFetter{
Id: primitive.NewObjectID().Hex(),
Uid: uid,
@ -149,12 +147,12 @@ func (this *Library) AddHeroFetterData(uid string, heroConfId string) {
obj := this.GetLibraryListByFid(uid, fid)
if obj == nil { // 没有羁绊信息
this.createHeroFetter(uid, heroConfId)
this.CreateLibrary(uid, []int32{fid}, heroConfId)
this.CreateLibrary(uid, fid, heroConfId)
} else { // 羁绊信息中没有这个heroid 也需要加进来
for k, v := range obj.Hero {
if v == 0 && k == heroConfId {
v = 1
obj.Hero[k] = 1
}
}
// 重新计算最低等级

View File

@ -26,6 +26,8 @@ const (
UserSubTYpeModifyBgp = "modifybgp" //修改背景
UserSubTypeInfo = "info" //用户信息
UserSubTypeBattlerecord = "battlerecord" //玩家战斗记录
UserSubTypeShowteam = "showteam" //展示阵容
UserSubTypeSettingteam = "settingteam" //设置阵容展示
)
type apiComp struct {

View File

@ -0,0 +1,41 @@
package user
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"google.golang.org/protobuf/proto"
)
func (this *apiComp) SettingteamCheck(session comm.IUserSession, req *pb.UserSettingteamReq) (code pb.ErrorCode) {
if len(req.HeroObjIds) == 0 {
code = pb.ErrorCode_ReqParameterError
}
return
}
func (this *apiComp) Settingteam(session comm.IUserSession, req *pb.UserSettingteamReq) (code pb.ErrorCode, data proto.Message) {
if code = this.SettingteamCheck(session, req); code != pb.ErrorCode_Success {
return
}
rsp := &pb.UserSettingteamResp{}
if result, err := this.module.modelExpand.GetUserExpand(session.GetUserId()); err != nil {
this.module.Errorf("uid:%v err: %v", session.GetUserId(), err)
return
} else {
result.TeamHeroIds = req.HeroObjIds
update := map[string]interface{}{
"teamHeroIds": req.HeroObjIds,
}
if err := this.module.modelExpand.ChangeUserExpand(session.GetUserId(), update); err != nil {
code = pb.ErrorCode_DBError
return
}
}
rsp.Uid = session.GetUserId()
if err := session.SendMsg(string(this.module.GetType()), UserSubTypeSettingteam, rsp); err != nil {
code = pb.ErrorCode_SystemError
}
return
}

View File

@ -0,0 +1,27 @@
package user
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"google.golang.org/protobuf/proto"
)
func (this *apiComp) ShowteamCheck(session comm.IUserSession, req *pb.UserShowteamReq) (code pb.ErrorCode) {
return
}
func (this *apiComp) Showteam(session comm.IUserSession, req *pb.UserShowteamReq) (code pb.ErrorCode, data proto.Message) {
result, err := this.module.modelExpand.GetUserExpand(session.GetUserId())
if err != nil {
this.module.Errorf("uid:%v err: %v", session.GetUserId(), err)
return
}
rsp := &pb.UserShowteamResp{}
rsp.HeroObjIds = result.TeamHeroIds
if err := session.SendMsg(string(this.module.GetType()), UserSubTypeShowteam, rsp); err != nil {
code = pb.ErrorCode_SystemError
}
return
}

View File

@ -20,7 +20,7 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
//获取装备列表请求
//获取秘境列表请求
type MoonfantasyGetListReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -59,7 +59,7 @@ func (*MoonfantasyGetListReq) Descriptor() ([]byte, []int) {
return file_moonfantasy_moonfantasy_msg_proto_rawDescGZIP(), []int{0}
}
//获取装备列表请求 回应
//获取秘境列表请求 回应
type MoonfantasyGetListResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -123,7 +123,7 @@ func (x *MoonfantasyGetListResp) GetDfantasys() []*DBMoonFantasy {
return nil
}
///触发秘境
///推送触发秘境
type MoonfantasyTriggerPush struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache

View File

@ -1772,6 +1772,187 @@ func (x *UserBattlerecordResp) GetVikingRecord() []*DBVikingRank {
return nil
}
// 玩家阵容展示设置
type UserSettingteamReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
HeroObjIds []string `protobuf:"bytes,2,rep,name=heroObjIds,proto3" json:"heroObjIds"` //英雄ID
}
func (x *UserSettingteamReq) Reset() {
*x = UserSettingteamReq{}
if protoimpl.UnsafeEnabled {
mi := &file_user_user_msg_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UserSettingteamReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UserSettingteamReq) ProtoMessage() {}
func (x *UserSettingteamReq) ProtoReflect() protoreflect.Message {
mi := &file_user_user_msg_proto_msgTypes[35]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UserSettingteamReq.ProtoReflect.Descriptor instead.
func (*UserSettingteamReq) Descriptor() ([]byte, []int) {
return file_user_user_msg_proto_rawDescGZIP(), []int{35}
}
func (x *UserSettingteamReq) GetHeroObjIds() []string {
if x != nil {
return x.HeroObjIds
}
return nil
}
type UserSettingteamResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid"`
}
func (x *UserSettingteamResp) Reset() {
*x = UserSettingteamResp{}
if protoimpl.UnsafeEnabled {
mi := &file_user_user_msg_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UserSettingteamResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UserSettingteamResp) ProtoMessage() {}
func (x *UserSettingteamResp) ProtoReflect() protoreflect.Message {
mi := &file_user_user_msg_proto_msgTypes[36]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UserSettingteamResp.ProtoReflect.Descriptor instead.
func (*UserSettingteamResp) Descriptor() ([]byte, []int) {
return file_user_user_msg_proto_rawDescGZIP(), []int{36}
}
func (x *UserSettingteamResp) GetUid() string {
if x != nil {
return x.Uid
}
return ""
}
//玩家阵容展示
type UserShowteamReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *UserShowteamReq) Reset() {
*x = UserShowteamReq{}
if protoimpl.UnsafeEnabled {
mi := &file_user_user_msg_proto_msgTypes[37]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UserShowteamReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UserShowteamReq) ProtoMessage() {}
func (x *UserShowteamReq) ProtoReflect() protoreflect.Message {
mi := &file_user_user_msg_proto_msgTypes[37]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UserShowteamReq.ProtoReflect.Descriptor instead.
func (*UserShowteamReq) Descriptor() ([]byte, []int) {
return file_user_user_msg_proto_rawDescGZIP(), []int{37}
}
type UserShowteamResp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
HeroObjIds []string `protobuf:"bytes,1,rep,name=heroObjIds,proto3" json:"heroObjIds"` //英雄ID
}
func (x *UserShowteamResp) Reset() {
*x = UserShowteamResp{}
if protoimpl.UnsafeEnabled {
mi := &file_user_user_msg_proto_msgTypes[38]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UserShowteamResp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UserShowteamResp) ProtoMessage() {}
func (x *UserShowteamResp) ProtoReflect() protoreflect.Message {
mi := &file_user_user_msg_proto_msgTypes[38]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UserShowteamResp.ProtoReflect.Descriptor instead.
func (*UserShowteamResp) Descriptor() ([]byte, []int) {
return file_user_user_msg_proto_rawDescGZIP(), []int{38}
}
func (x *UserShowteamResp) GetHeroObjIds() []string {
if x != nil {
return x.HeroObjIds
}
return nil
}
var File_user_user_msg_proto protoreflect.FileDescriptor
var file_user_user_msg_proto_rawDesc = []byte{
@ -1904,8 +2085,18 @@ var file_user_user_msg_proto_rawDesc = []byte{
0x64, 0x12, 0x31, 0x0a, 0x0c, 0x76, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x6f, 0x72,
0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x56, 0x69, 0x6b, 0x69,
0x6e, 0x67, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x0c, 0x76, 0x69, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65,
0x63, 0x6f, 0x72, 0x64, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
0x63, 0x6f, 0x72, 0x64, 0x22, 0x34, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74,
0x69, 0x6e, 0x67, 0x74, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x65,
0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a,
0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x64, 0x73, 0x22, 0x27, 0x0a, 0x13, 0x55, 0x73,
0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x74, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73,
0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x75, 0x69, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x53, 0x68, 0x6f, 0x77, 0x74,
0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x22, 0x32, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x53, 0x68,
0x6f, 0x77, 0x74, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x65,
0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a,
0x68, 0x65, 0x72, 0x6f, 0x4f, 0x62, 0x6a, 0x49, 0x64, 0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b,
0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -1920,7 +2111,7 @@ func file_user_user_msg_proto_rawDescGZIP() []byte {
return file_user_user_msg_proto_rawDescData
}
var file_user_user_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 35)
var file_user_user_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 39)
var file_user_user_msg_proto_goTypes = []interface{}{
(*UserLoginReq)(nil), // 0: UserLoginReq
(*UserLoginResp)(nil), // 1: UserLoginResp
@ -1957,27 +2148,31 @@ var file_user_user_msg_proto_goTypes = []interface{}{
(*UserModifysignResp)(nil), // 32: UserModifysignResp
(*UserBattlerecordReq)(nil), // 33: UserBattlerecordReq
(*UserBattlerecordResp)(nil), // 34: UserBattlerecordResp
(*DBUser)(nil), // 35: DBUser
(*DBUserExpand)(nil), // 36: DBUserExpand
(ErrorCode)(0), // 37: ErrorCode
(*CacheUser)(nil), // 38: CacheUser
(*DBUserSetting)(nil), // 39: DBUserSetting
(*DBPagodaRecord)(nil), // 40: DBPagodaRecord
(*DBHuntingRank)(nil), // 41: DBHuntingRank
(*DBVikingRank)(nil), // 42: DBVikingRank
(*UserSettingteamReq)(nil), // 35: UserSettingteamReq
(*UserSettingteamResp)(nil), // 36: UserSettingteamResp
(*UserShowteamReq)(nil), // 37: UserShowteamReq
(*UserShowteamResp)(nil), // 38: UserShowteamResp
(*DBUser)(nil), // 39: DBUser
(*DBUserExpand)(nil), // 40: DBUserExpand
(ErrorCode)(0), // 41: ErrorCode
(*CacheUser)(nil), // 42: CacheUser
(*DBUserSetting)(nil), // 43: DBUserSetting
(*DBPagodaRecord)(nil), // 44: DBPagodaRecord
(*DBHuntingRank)(nil), // 45: DBHuntingRank
(*DBVikingRank)(nil), // 46: DBVikingRank
}
var file_user_user_msg_proto_depIdxs = []int32{
35, // 0: UserLoginResp.data:type_name -> DBUser
36, // 1: UserLoginResp.ex:type_name -> DBUserExpand
35, // 2: UserInfoResp.data:type_name -> DBUser
36, // 3: UserInfoResp.ex:type_name -> DBUserExpand
37, // 4: UserRegisterResp.Code:type_name -> ErrorCode
38, // 5: UserLoadResp.data:type_name -> CacheUser
39, // 6: UserGetSettingResp.setting:type_name -> DBUserSetting
39, // 7: UserUpdateSettingReq.setting:type_name -> DBUserSetting
40, // 8: UserBattlerecordResp.pagodaRecord:type_name -> DBPagodaRecord
41, // 9: UserBattlerecordResp.huntingRecord:type_name -> DBHuntingRank
42, // 10: UserBattlerecordResp.vikingRecord:type_name -> DBVikingRank
39, // 0: UserLoginResp.data:type_name -> DBUser
40, // 1: UserLoginResp.ex:type_name -> DBUserExpand
39, // 2: UserInfoResp.data:type_name -> DBUser
40, // 3: UserInfoResp.ex:type_name -> DBUserExpand
41, // 4: UserRegisterResp.Code:type_name -> ErrorCode
42, // 5: UserLoadResp.data:type_name -> CacheUser
43, // 6: UserGetSettingResp.setting:type_name -> DBUserSetting
43, // 7: UserUpdateSettingReq.setting:type_name -> DBUserSetting
44, // 8: UserBattlerecordResp.pagodaRecord:type_name -> DBPagodaRecord
45, // 9: UserBattlerecordResp.huntingRecord:type_name -> DBHuntingRank
46, // 10: UserBattlerecordResp.vikingRecord:type_name -> DBVikingRank
11, // [11:11] is the sub-list for method output_type
11, // [11:11] is the sub-list for method input_type
11, // [11:11] is the sub-list for extension type_name
@ -2417,6 +2612,54 @@ func file_user_user_msg_proto_init() {
return nil
}
}
file_user_user_msg_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UserSettingteamReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_user_user_msg_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UserSettingteamResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_user_user_msg_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UserShowteamReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_user_user_msg_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UserShowteamResp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
@ -2424,7 +2667,7 @@ func file_user_user_msg_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_user_user_msg_proto_rawDesc,
NumEnums: 0,
NumMessages: 35,
NumMessages: 39,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -44,6 +44,7 @@ type DBUserExpand struct {
LoginContinueCount int32 `protobuf:"varint,20,opt,name=loginContinueCount,proto3" json:"loginContinueCount"` //@go_tasgs(`bson:"loginContinueCount"`) 连续登录天数
CompletePagoda bool `protobuf:"varint,21,opt,name=completePagoda,proto3" json:"completePagoda" bson:"completePagoda"` //通关普通塔
RtaskId int32 `protobuf:"varint,22,opt,name=rtaskId,proto3" json:"rtaskId" bson:"rtaskId"` // 当前完成的随机任务ID
TeamHeroIds []string `protobuf:"bytes,23,rep,name=teamHeroIds,proto3" json:"teamHeroIds" bson:"teamHeroIds"` //阵容英雄IDs
}
func (x *DBUserExpand) Reset() {
@ -204,11 +205,18 @@ func (x *DBUserExpand) GetRtaskId() int32 {
return 0
}
func (x *DBUserExpand) GetTeamHeroIds() []string {
if x != nil {
return x.TeamHeroIds
}
return nil
}
var File_userexpand_proto protoreflect.FileDescriptor
var file_userexpand_proto_rawDesc = []byte{
0x0a, 0x10, 0x75, 0x73, 0x65, 0x72, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0xc2, 0x05, 0x0a, 0x0c, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x70,
0x74, 0x6f, 0x22, 0xe4, 0x05, 0x0a, 0x0c, 0x44, 0x42, 0x55, 0x73, 0x65, 0x72, 0x45, 0x78, 0x70,
0x61, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x72, 0x65, 0x61,
@ -248,12 +256,14 @@ var file_userexpand_proto_rawDesc = []byte{
0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x18, 0x15, 0x20, 0x01,
0x28, 0x08, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x67, 0x6f,
0x64, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x16, 0x20,
0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x1a, 0x39, 0x0a, 0x0b,
0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b,
0x74, 0x65, 0x61, 0x6d, 0x48, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28,
0x09, 0x52, 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x48, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x73, 0x1a, 0x39,
0x0a, 0x0b, 0x54, 0x75, 0x6a, 0x69, 0x61, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70,
0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (