快捷创建账号
This commit is contained in:
parent
21dd835c75
commit
9d4dd79a86
@ -10114,6 +10114,94 @@ func (x *UpsertLuckyGiftConfigResponse) GetConfig() *LuckyGiftConfig {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ListLuckyGiftConfigsRequest struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListLuckyGiftConfigsRequest) Reset() {
|
||||||
|
*x = ListLuckyGiftConfigsRequest{}
|
||||||
|
mi := &file_proto_activity_v1_activity_proto_msgTypes[123]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListLuckyGiftConfigsRequest) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ListLuckyGiftConfigsRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ListLuckyGiftConfigsRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_proto_activity_v1_activity_proto_msgTypes[123]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ListLuckyGiftConfigsRequest.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ListLuckyGiftConfigsRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return file_proto_activity_v1_activity_proto_rawDescGZIP(), []int{123}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListLuckyGiftConfigsRequest) GetMeta() *RequestMeta {
|
||||||
|
if x != nil {
|
||||||
|
return x.Meta
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type ListLuckyGiftConfigsResponse struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Configs []*LuckyGiftConfig `protobuf:"bytes,1,rep,name=configs,proto3" json:"configs,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListLuckyGiftConfigsResponse) Reset() {
|
||||||
|
*x = ListLuckyGiftConfigsResponse{}
|
||||||
|
mi := &file_proto_activity_v1_activity_proto_msgTypes[124]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListLuckyGiftConfigsResponse) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*ListLuckyGiftConfigsResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *ListLuckyGiftConfigsResponse) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_proto_activity_v1_activity_proto_msgTypes[124]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use ListLuckyGiftConfigsResponse.ProtoReflect.Descriptor instead.
|
||||||
|
func (*ListLuckyGiftConfigsResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return file_proto_activity_v1_activity_proto_rawDescGZIP(), []int{124}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *ListLuckyGiftConfigsResponse) GetConfigs() []*LuckyGiftConfig {
|
||||||
|
if x != nil {
|
||||||
|
return x.Configs
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
type ListLuckyGiftDrawsRequest struct {
|
type ListLuckyGiftDrawsRequest struct {
|
||||||
state protoimpl.MessageState `protogen:"open.v1"`
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
|
Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
|
||||||
@ -10130,7 +10218,7 @@ type ListLuckyGiftDrawsRequest struct {
|
|||||||
|
|
||||||
func (x *ListLuckyGiftDrawsRequest) Reset() {
|
func (x *ListLuckyGiftDrawsRequest) Reset() {
|
||||||
*x = ListLuckyGiftDrawsRequest{}
|
*x = ListLuckyGiftDrawsRequest{}
|
||||||
mi := &file_proto_activity_v1_activity_proto_msgTypes[123]
|
mi := &file_proto_activity_v1_activity_proto_msgTypes[125]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -10142,7 +10230,7 @@ func (x *ListLuckyGiftDrawsRequest) String() string {
|
|||||||
func (*ListLuckyGiftDrawsRequest) ProtoMessage() {}
|
func (*ListLuckyGiftDrawsRequest) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *ListLuckyGiftDrawsRequest) ProtoReflect() protoreflect.Message {
|
func (x *ListLuckyGiftDrawsRequest) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_activity_v1_activity_proto_msgTypes[123]
|
mi := &file_proto_activity_v1_activity_proto_msgTypes[125]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -10155,7 +10243,7 @@ func (x *ListLuckyGiftDrawsRequest) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use ListLuckyGiftDrawsRequest.ProtoReflect.Descriptor instead.
|
// Deprecated: Use ListLuckyGiftDrawsRequest.ProtoReflect.Descriptor instead.
|
||||||
func (*ListLuckyGiftDrawsRequest) Descriptor() ([]byte, []int) {
|
func (*ListLuckyGiftDrawsRequest) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_activity_v1_activity_proto_rawDescGZIP(), []int{123}
|
return file_proto_activity_v1_activity_proto_rawDescGZIP(), []int{125}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *ListLuckyGiftDrawsRequest) GetMeta() *RequestMeta {
|
func (x *ListLuckyGiftDrawsRequest) GetMeta() *RequestMeta {
|
||||||
@ -10224,7 +10312,7 @@ type ListLuckyGiftDrawsResponse struct {
|
|||||||
|
|
||||||
func (x *ListLuckyGiftDrawsResponse) Reset() {
|
func (x *ListLuckyGiftDrawsResponse) Reset() {
|
||||||
*x = ListLuckyGiftDrawsResponse{}
|
*x = ListLuckyGiftDrawsResponse{}
|
||||||
mi := &file_proto_activity_v1_activity_proto_msgTypes[124]
|
mi := &file_proto_activity_v1_activity_proto_msgTypes[126]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -10236,7 +10324,7 @@ func (x *ListLuckyGiftDrawsResponse) String() string {
|
|||||||
func (*ListLuckyGiftDrawsResponse) ProtoMessage() {}
|
func (*ListLuckyGiftDrawsResponse) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *ListLuckyGiftDrawsResponse) ProtoReflect() protoreflect.Message {
|
func (x *ListLuckyGiftDrawsResponse) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_activity_v1_activity_proto_msgTypes[124]
|
mi := &file_proto_activity_v1_activity_proto_msgTypes[126]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -10249,7 +10337,7 @@ func (x *ListLuckyGiftDrawsResponse) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use ListLuckyGiftDrawsResponse.ProtoReflect.Descriptor instead.
|
// Deprecated: Use ListLuckyGiftDrawsResponse.ProtoReflect.Descriptor instead.
|
||||||
func (*ListLuckyGiftDrawsResponse) Descriptor() ([]byte, []int) {
|
func (*ListLuckyGiftDrawsResponse) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_activity_v1_activity_proto_rawDescGZIP(), []int{124}
|
return file_proto_activity_v1_activity_proto_rawDescGZIP(), []int{126}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *ListLuckyGiftDrawsResponse) GetDraws() []*LuckyGiftDrawResult {
|
func (x *ListLuckyGiftDrawsResponse) GetDraws() []*LuckyGiftDrawResult {
|
||||||
@ -11208,7 +11296,11 @@ const file_proto_activity_v1_activity_proto_rawDesc = "" +
|
|||||||
"\x06config\x18\x02 \x01(\v2\".hyapp.activity.v1.LuckyGiftConfigR\x06config\x12*\n" +
|
"\x06config\x18\x02 \x01(\v2\".hyapp.activity.v1.LuckyGiftConfigR\x06config\x12*\n" +
|
||||||
"\x11operator_admin_id\x18\x03 \x01(\x03R\x0foperatorAdminId\"[\n" +
|
"\x11operator_admin_id\x18\x03 \x01(\x03R\x0foperatorAdminId\"[\n" +
|
||||||
"\x1dUpsertLuckyGiftConfigResponse\x12:\n" +
|
"\x1dUpsertLuckyGiftConfigResponse\x12:\n" +
|
||||||
"\x06config\x18\x01 \x01(\v2\".hyapp.activity.v1.LuckyGiftConfigR\x06config\"\xfc\x01\n" +
|
"\x06config\x18\x01 \x01(\v2\".hyapp.activity.v1.LuckyGiftConfigR\x06config\"Q\n" +
|
||||||
|
"\x1bListLuckyGiftConfigsRequest\x122\n" +
|
||||||
|
"\x04meta\x18\x01 \x01(\v2\x1e.hyapp.activity.v1.RequestMetaR\x04meta\"\\\n" +
|
||||||
|
"\x1cListLuckyGiftConfigsResponse\x12<\n" +
|
||||||
|
"\aconfigs\x18\x01 \x03(\v2\".hyapp.activity.v1.LuckyGiftConfigR\aconfigs\"\xfc\x01\n" +
|
||||||
"\x19ListLuckyGiftDrawsRequest\x122\n" +
|
"\x19ListLuckyGiftDrawsRequest\x122\n" +
|
||||||
"\x04meta\x18\x01 \x01(\v2\x1e.hyapp.activity.v1.RequestMetaR\x04meta\x12\x17\n" +
|
"\x04meta\x18\x01 \x01(\v2\x1e.hyapp.activity.v1.RequestMetaR\x04meta\x12\x17\n" +
|
||||||
"\agift_id\x18\x02 \x01(\tR\x06giftId\x12\x17\n" +
|
"\agift_id\x18\x02 \x01(\tR\x06giftId\x12\x17\n" +
|
||||||
@ -11286,10 +11378,11 @@ const file_proto_activity_v1_activity_proto_rawDesc = "" +
|
|||||||
"\x0fUpsertLevelTier\x12).hyapp.activity.v1.UpsertLevelTierRequest\x1a*.hyapp.activity.v1.UpsertLevelTierResponse2\x9f\x02\n" +
|
"\x0fUpsertLevelTier\x12).hyapp.activity.v1.UpsertLevelTierRequest\x1a*.hyapp.activity.v1.UpsertLevelTierResponse2\x9f\x02\n" +
|
||||||
"\x17AdminAchievementService\x12u\n" +
|
"\x17AdminAchievementService\x12u\n" +
|
||||||
"\x1aListAchievementDefinitions\x12*.hyapp.activity.v1.ListAchievementsRequest\x1a+.hyapp.activity.v1.ListAchievementsResponse\x12\x8c\x01\n" +
|
"\x1aListAchievementDefinitions\x12*.hyapp.activity.v1.ListAchievementsRequest\x1a+.hyapp.activity.v1.ListAchievementsResponse\x12\x8c\x01\n" +
|
||||||
"\x1bUpsertAchievementDefinition\x125.hyapp.activity.v1.UpsertAchievementDefinitionRequest\x1a6.hyapp.activity.v1.UpsertAchievementDefinitionResponse2\xf9\x02\n" +
|
"\x1bUpsertAchievementDefinition\x125.hyapp.activity.v1.UpsertAchievementDefinitionRequest\x1a6.hyapp.activity.v1.UpsertAchievementDefinitionResponse2\xf2\x03\n" +
|
||||||
"\x15AdminLuckyGiftService\x12q\n" +
|
"\x15AdminLuckyGiftService\x12q\n" +
|
||||||
"\x12GetLuckyGiftConfig\x12,.hyapp.activity.v1.GetLuckyGiftConfigRequest\x1a-.hyapp.activity.v1.GetLuckyGiftConfigResponse\x12z\n" +
|
"\x12GetLuckyGiftConfig\x12,.hyapp.activity.v1.GetLuckyGiftConfigRequest\x1a-.hyapp.activity.v1.GetLuckyGiftConfigResponse\x12z\n" +
|
||||||
"\x15UpsertLuckyGiftConfig\x12/.hyapp.activity.v1.UpsertLuckyGiftConfigRequest\x1a0.hyapp.activity.v1.UpsertLuckyGiftConfigResponse\x12q\n" +
|
"\x15UpsertLuckyGiftConfig\x12/.hyapp.activity.v1.UpsertLuckyGiftConfigRequest\x1a0.hyapp.activity.v1.UpsertLuckyGiftConfigResponse\x12w\n" +
|
||||||
|
"\x14ListLuckyGiftConfigs\x12..hyapp.activity.v1.ListLuckyGiftConfigsRequest\x1a/.hyapp.activity.v1.ListLuckyGiftConfigsResponse\x12q\n" +
|
||||||
"\x12ListLuckyGiftDraws\x12,.hyapp.activity.v1.ListLuckyGiftDrawsRequest\x1a-.hyapp.activity.v1.ListLuckyGiftDrawsResponseB.Z,hyapp.local/api/proto/activity/v1;activityv1b\x06proto3"
|
"\x12ListLuckyGiftDraws\x12,.hyapp.activity.v1.ListLuckyGiftDrawsRequest\x1a-.hyapp.activity.v1.ListLuckyGiftDrawsResponseB.Z,hyapp.local/api/proto/activity/v1;activityv1b\x06proto3"
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -11304,7 +11397,7 @@ func file_proto_activity_v1_activity_proto_rawDescGZIP() []byte {
|
|||||||
return file_proto_activity_v1_activity_proto_rawDescData
|
return file_proto_activity_v1_activity_proto_rawDescData
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_proto_activity_v1_activity_proto_msgTypes = make([]protoimpl.MessageInfo, 125)
|
var file_proto_activity_v1_activity_proto_msgTypes = make([]protoimpl.MessageInfo, 127)
|
||||||
var file_proto_activity_v1_activity_proto_goTypes = []any{
|
var file_proto_activity_v1_activity_proto_goTypes = []any{
|
||||||
(*RequestMeta)(nil), // 0: hyapp.activity.v1.RequestMeta
|
(*RequestMeta)(nil), // 0: hyapp.activity.v1.RequestMeta
|
||||||
(*PingActivityRequest)(nil), // 1: hyapp.activity.v1.PingActivityRequest
|
(*PingActivityRequest)(nil), // 1: hyapp.activity.v1.PingActivityRequest
|
||||||
@ -11429,9 +11522,11 @@ var file_proto_activity_v1_activity_proto_goTypes = []any{
|
|||||||
(*GetLuckyGiftConfigResponse)(nil), // 120: hyapp.activity.v1.GetLuckyGiftConfigResponse
|
(*GetLuckyGiftConfigResponse)(nil), // 120: hyapp.activity.v1.GetLuckyGiftConfigResponse
|
||||||
(*UpsertLuckyGiftConfigRequest)(nil), // 121: hyapp.activity.v1.UpsertLuckyGiftConfigRequest
|
(*UpsertLuckyGiftConfigRequest)(nil), // 121: hyapp.activity.v1.UpsertLuckyGiftConfigRequest
|
||||||
(*UpsertLuckyGiftConfigResponse)(nil), // 122: hyapp.activity.v1.UpsertLuckyGiftConfigResponse
|
(*UpsertLuckyGiftConfigResponse)(nil), // 122: hyapp.activity.v1.UpsertLuckyGiftConfigResponse
|
||||||
(*ListLuckyGiftDrawsRequest)(nil), // 123: hyapp.activity.v1.ListLuckyGiftDrawsRequest
|
(*ListLuckyGiftConfigsRequest)(nil), // 123: hyapp.activity.v1.ListLuckyGiftConfigsRequest
|
||||||
(*ListLuckyGiftDrawsResponse)(nil), // 124: hyapp.activity.v1.ListLuckyGiftDrawsResponse
|
(*ListLuckyGiftConfigsResponse)(nil), // 124: hyapp.activity.v1.ListLuckyGiftConfigsResponse
|
||||||
(*v1.EventEnvelope)(nil), // 125: hyapp.events.room.v1.EventEnvelope
|
(*ListLuckyGiftDrawsRequest)(nil), // 125: hyapp.activity.v1.ListLuckyGiftDrawsRequest
|
||||||
|
(*ListLuckyGiftDrawsResponse)(nil), // 126: hyapp.activity.v1.ListLuckyGiftDrawsResponse
|
||||||
|
(*v1.EventEnvelope)(nil), // 127: hyapp.events.room.v1.EventEnvelope
|
||||||
}
|
}
|
||||||
var file_proto_activity_v1_activity_proto_depIdxs = []int32{
|
var file_proto_activity_v1_activity_proto_depIdxs = []int32{
|
||||||
0, // 0: hyapp.activity.v1.PingActivityRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
0, // 0: hyapp.activity.v1.PingActivityRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
||||||
@ -11456,7 +11551,7 @@ var file_proto_activity_v1_activity_proto_depIdxs = []int32{
|
|||||||
0, // 19: hyapp.activity.v1.PublishGlobalBroadcastRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
0, // 19: hyapp.activity.v1.PublishGlobalBroadcastRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
||||||
0, // 20: hyapp.activity.v1.RemoveRegionBroadcastMemberRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
0, // 20: hyapp.activity.v1.RemoveRegionBroadcastMemberRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
||||||
0, // 21: hyapp.activity.v1.ConsumeRoomEventRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
0, // 21: hyapp.activity.v1.ConsumeRoomEventRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
||||||
125, // 22: hyapp.activity.v1.ConsumeRoomEventRequest.envelope:type_name -> hyapp.events.room.v1.EventEnvelope
|
127, // 22: hyapp.activity.v1.ConsumeRoomEventRequest.envelope:type_name -> hyapp.events.room.v1.EventEnvelope
|
||||||
0, // 23: hyapp.activity.v1.ListTaskDefinitionsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
0, // 23: hyapp.activity.v1.ListTaskDefinitionsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
||||||
42, // 24: hyapp.activity.v1.ListTaskDefinitionsResponse.tasks:type_name -> hyapp.activity.v1.TaskDefinition
|
42, // 24: hyapp.activity.v1.ListTaskDefinitionsResponse.tasks:type_name -> hyapp.activity.v1.TaskDefinition
|
||||||
0, // 25: hyapp.activity.v1.UpsertTaskDefinitionRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
0, // 25: hyapp.activity.v1.UpsertTaskDefinitionRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
||||||
@ -11529,119 +11624,123 @@ var file_proto_activity_v1_activity_proto_depIdxs = []int32{
|
|||||||
0, // 92: hyapp.activity.v1.UpsertLuckyGiftConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
0, // 92: hyapp.activity.v1.UpsertLuckyGiftConfigRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
||||||
113, // 93: hyapp.activity.v1.UpsertLuckyGiftConfigRequest.config:type_name -> hyapp.activity.v1.LuckyGiftConfig
|
113, // 93: hyapp.activity.v1.UpsertLuckyGiftConfigRequest.config:type_name -> hyapp.activity.v1.LuckyGiftConfig
|
||||||
113, // 94: hyapp.activity.v1.UpsertLuckyGiftConfigResponse.config:type_name -> hyapp.activity.v1.LuckyGiftConfig
|
113, // 94: hyapp.activity.v1.UpsertLuckyGiftConfigResponse.config:type_name -> hyapp.activity.v1.LuckyGiftConfig
|
||||||
0, // 95: hyapp.activity.v1.ListLuckyGiftDrawsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
0, // 95: hyapp.activity.v1.ListLuckyGiftConfigsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
||||||
116, // 96: hyapp.activity.v1.ListLuckyGiftDrawsResponse.draws:type_name -> hyapp.activity.v1.LuckyGiftDrawResult
|
113, // 96: hyapp.activity.v1.ListLuckyGiftConfigsResponse.configs:type_name -> hyapp.activity.v1.LuckyGiftConfig
|
||||||
1, // 97: hyapp.activity.v1.ActivityService.PingActivity:input_type -> hyapp.activity.v1.PingActivityRequest
|
0, // 97: hyapp.activity.v1.ListLuckyGiftDrawsRequest.meta:type_name -> hyapp.activity.v1.RequestMeta
|
||||||
3, // 98: hyapp.activity.v1.ActivityService.GetActivityStatus:input_type -> hyapp.activity.v1.GetActivityStatusRequest
|
116, // 98: hyapp.activity.v1.ListLuckyGiftDrawsResponse.draws:type_name -> hyapp.activity.v1.LuckyGiftDrawResult
|
||||||
6, // 99: hyapp.activity.v1.MessageInboxService.ListMessageTabs:input_type -> hyapp.activity.v1.ListMessageTabsRequest
|
1, // 99: hyapp.activity.v1.ActivityService.PingActivity:input_type -> hyapp.activity.v1.PingActivityRequest
|
||||||
9, // 100: hyapp.activity.v1.MessageInboxService.ListInboxMessages:input_type -> hyapp.activity.v1.ListInboxMessagesRequest
|
3, // 100: hyapp.activity.v1.ActivityService.GetActivityStatus:input_type -> hyapp.activity.v1.GetActivityStatusRequest
|
||||||
11, // 101: hyapp.activity.v1.MessageInboxService.MarkInboxMessageRead:input_type -> hyapp.activity.v1.MarkInboxMessageReadRequest
|
6, // 101: hyapp.activity.v1.MessageInboxService.ListMessageTabs:input_type -> hyapp.activity.v1.ListMessageTabsRequest
|
||||||
13, // 102: hyapp.activity.v1.MessageInboxService.MarkInboxSectionRead:input_type -> hyapp.activity.v1.MarkInboxSectionReadRequest
|
9, // 102: hyapp.activity.v1.MessageInboxService.ListInboxMessages:input_type -> hyapp.activity.v1.ListInboxMessagesRequest
|
||||||
15, // 103: hyapp.activity.v1.MessageInboxService.DeleteInboxMessage:input_type -> hyapp.activity.v1.DeleteInboxMessageRequest
|
11, // 103: hyapp.activity.v1.MessageInboxService.MarkInboxMessageRead:input_type -> hyapp.activity.v1.MarkInboxMessageReadRequest
|
||||||
17, // 104: hyapp.activity.v1.MessageInboxService.CreateInboxMessage:input_type -> hyapp.activity.v1.CreateInboxMessageRequest
|
13, // 104: hyapp.activity.v1.MessageInboxService.MarkInboxSectionRead:input_type -> hyapp.activity.v1.MarkInboxSectionReadRequest
|
||||||
19, // 105: hyapp.activity.v1.MessageInboxService.CreateFanoutJob:input_type -> hyapp.activity.v1.CreateFanoutJobRequest
|
15, // 105: hyapp.activity.v1.MessageInboxService.DeleteInboxMessage:input_type -> hyapp.activity.v1.DeleteInboxMessageRequest
|
||||||
21, // 106: hyapp.activity.v1.ActivityCronService.ProcessMessageFanoutBatch:input_type -> hyapp.activity.v1.CronBatchRequest
|
17, // 106: hyapp.activity.v1.MessageInboxService.CreateInboxMessage:input_type -> hyapp.activity.v1.CreateInboxMessageRequest
|
||||||
21, // 107: hyapp.activity.v1.ActivityCronService.ProcessLevelRewardBatch:input_type -> hyapp.activity.v1.CronBatchRequest
|
19, // 107: hyapp.activity.v1.MessageInboxService.CreateFanoutJob:input_type -> hyapp.activity.v1.CreateFanoutJobRequest
|
||||||
21, // 108: hyapp.activity.v1.ActivityCronService.ProcessAchievementRewardBatch:input_type -> hyapp.activity.v1.CronBatchRequest
|
21, // 108: hyapp.activity.v1.ActivityCronService.ProcessMessageFanoutBatch:input_type -> hyapp.activity.v1.CronBatchRequest
|
||||||
25, // 109: hyapp.activity.v1.TaskService.ListUserTasks:input_type -> hyapp.activity.v1.ListUserTasksRequest
|
21, // 109: hyapp.activity.v1.ActivityCronService.ProcessLevelRewardBatch:input_type -> hyapp.activity.v1.CronBatchRequest
|
||||||
27, // 110: hyapp.activity.v1.TaskService.ClaimTaskReward:input_type -> hyapp.activity.v1.ClaimTaskRewardRequest
|
21, // 110: hyapp.activity.v1.ActivityCronService.ProcessAchievementRewardBatch:input_type -> hyapp.activity.v1.CronBatchRequest
|
||||||
29, // 111: hyapp.activity.v1.TaskService.ConsumeTaskEvent:input_type -> hyapp.activity.v1.ConsumeTaskEventRequest
|
25, // 111: hyapp.activity.v1.TaskService.ListUserTasks:input_type -> hyapp.activity.v1.ListUserTasksRequest
|
||||||
80, // 112: hyapp.activity.v1.GrowthLevelService.GetMyLevelOverview:input_type -> hyapp.activity.v1.GetMyLevelOverviewRequest
|
27, // 112: hyapp.activity.v1.TaskService.ClaimTaskReward:input_type -> hyapp.activity.v1.ClaimTaskRewardRequest
|
||||||
82, // 113: hyapp.activity.v1.GrowthLevelService.GetLevelTrack:input_type -> hyapp.activity.v1.GetLevelTrackRequest
|
29, // 113: hyapp.activity.v1.TaskService.ConsumeTaskEvent:input_type -> hyapp.activity.v1.ConsumeTaskEventRequest
|
||||||
85, // 114: hyapp.activity.v1.GrowthLevelService.ListLevelRewards:input_type -> hyapp.activity.v1.ListLevelRewardsRequest
|
80, // 114: hyapp.activity.v1.GrowthLevelService.GetMyLevelOverview:input_type -> hyapp.activity.v1.GetMyLevelOverviewRequest
|
||||||
87, // 115: hyapp.activity.v1.GrowthLevelService.ConsumeLevelEvent:input_type -> hyapp.activity.v1.ConsumeLevelEventRequest
|
82, // 115: hyapp.activity.v1.GrowthLevelService.GetLevelTrack:input_type -> hyapp.activity.v1.GetLevelTrackRequest
|
||||||
100, // 116: hyapp.activity.v1.AchievementService.ListAchievements:input_type -> hyapp.activity.v1.ListAchievementsRequest
|
85, // 116: hyapp.activity.v1.GrowthLevelService.ListLevelRewards:input_type -> hyapp.activity.v1.ListLevelRewardsRequest
|
||||||
102, // 117: hyapp.activity.v1.AchievementService.ConsumeAchievementEvent:input_type -> hyapp.activity.v1.ConsumeAchievementEventRequest
|
87, // 117: hyapp.activity.v1.GrowthLevelService.ConsumeLevelEvent:input_type -> hyapp.activity.v1.ConsumeLevelEventRequest
|
||||||
105, // 118: hyapp.activity.v1.AchievementService.ListMyBadges:input_type -> hyapp.activity.v1.ListMyBadgesRequest
|
100, // 118: hyapp.activity.v1.AchievementService.ListAchievements:input_type -> hyapp.activity.v1.ListAchievementsRequest
|
||||||
107, // 119: hyapp.activity.v1.AchievementService.SetBadgeDisplay:input_type -> hyapp.activity.v1.SetBadgeDisplayRequest
|
102, // 119: hyapp.activity.v1.AchievementService.ConsumeAchievementEvent:input_type -> hyapp.activity.v1.ConsumeAchievementEventRequest
|
||||||
114, // 120: hyapp.activity.v1.LuckyGiftService.CheckLuckyGift:input_type -> hyapp.activity.v1.CheckLuckyGiftRequest
|
105, // 120: hyapp.activity.v1.AchievementService.ListMyBadges:input_type -> hyapp.activity.v1.ListMyBadgesRequest
|
||||||
117, // 121: hyapp.activity.v1.LuckyGiftService.ExecuteLuckyGiftDraw:input_type -> hyapp.activity.v1.ExecuteLuckyGiftDrawRequest
|
107, // 121: hyapp.activity.v1.AchievementService.SetBadgeDisplay:input_type -> hyapp.activity.v1.SetBadgeDisplayRequest
|
||||||
32, // 122: hyapp.activity.v1.BroadcastService.EnsureBroadcastGroups:input_type -> hyapp.activity.v1.EnsureBroadcastGroupsRequest
|
114, // 122: hyapp.activity.v1.LuckyGiftService.CheckLuckyGift:input_type -> hyapp.activity.v1.CheckLuckyGiftRequest
|
||||||
34, // 123: hyapp.activity.v1.BroadcastService.PublishRegionBroadcast:input_type -> hyapp.activity.v1.PublishRegionBroadcastRequest
|
117, // 123: hyapp.activity.v1.LuckyGiftService.ExecuteLuckyGiftDraw:input_type -> hyapp.activity.v1.ExecuteLuckyGiftDrawRequest
|
||||||
35, // 124: hyapp.activity.v1.BroadcastService.PublishGlobalBroadcast:input_type -> hyapp.activity.v1.PublishGlobalBroadcastRequest
|
32, // 124: hyapp.activity.v1.BroadcastService.EnsureBroadcastGroups:input_type -> hyapp.activity.v1.EnsureBroadcastGroupsRequest
|
||||||
37, // 125: hyapp.activity.v1.BroadcastService.RemoveRegionBroadcastMember:input_type -> hyapp.activity.v1.RemoveRegionBroadcastMemberRequest
|
34, // 125: hyapp.activity.v1.BroadcastService.PublishRegionBroadcast:input_type -> hyapp.activity.v1.PublishRegionBroadcastRequest
|
||||||
21, // 126: hyapp.activity.v1.BroadcastService.ProcessBroadcastOutboxBatch:input_type -> hyapp.activity.v1.CronBatchRequest
|
35, // 126: hyapp.activity.v1.BroadcastService.PublishGlobalBroadcast:input_type -> hyapp.activity.v1.PublishGlobalBroadcastRequest
|
||||||
40, // 127: hyapp.activity.v1.RoomEventConsumerService.ConsumeRoomEvent:input_type -> hyapp.activity.v1.ConsumeRoomEventRequest
|
37, // 127: hyapp.activity.v1.BroadcastService.RemoveRegionBroadcastMember:input_type -> hyapp.activity.v1.RemoveRegionBroadcastMemberRequest
|
||||||
43, // 128: hyapp.activity.v1.AdminTaskService.ListTaskDefinitions:input_type -> hyapp.activity.v1.ListTaskDefinitionsRequest
|
21, // 128: hyapp.activity.v1.BroadcastService.ProcessBroadcastOutboxBatch:input_type -> hyapp.activity.v1.CronBatchRequest
|
||||||
45, // 129: hyapp.activity.v1.AdminTaskService.UpsertTaskDefinition:input_type -> hyapp.activity.v1.UpsertTaskDefinitionRequest
|
40, // 129: hyapp.activity.v1.RoomEventConsumerService.ConsumeRoomEvent:input_type -> hyapp.activity.v1.ConsumeRoomEventRequest
|
||||||
47, // 130: hyapp.activity.v1.AdminTaskService.SetTaskDefinitionStatus:input_type -> hyapp.activity.v1.SetTaskDefinitionStatusRequest
|
43, // 130: hyapp.activity.v1.AdminTaskService.ListTaskDefinitions:input_type -> hyapp.activity.v1.ListTaskDefinitionsRequest
|
||||||
52, // 131: hyapp.activity.v1.RegistrationRewardService.GetRegistrationRewardEligibility:input_type -> hyapp.activity.v1.GetRegistrationRewardEligibilityRequest
|
45, // 131: hyapp.activity.v1.AdminTaskService.UpsertTaskDefinition:input_type -> hyapp.activity.v1.UpsertTaskDefinitionRequest
|
||||||
54, // 132: hyapp.activity.v1.RegistrationRewardService.IssueRegistrationReward:input_type -> hyapp.activity.v1.IssueRegistrationRewardRequest
|
47, // 132: hyapp.activity.v1.AdminTaskService.SetTaskDefinitionStatus:input_type -> hyapp.activity.v1.SetTaskDefinitionStatusRequest
|
||||||
56, // 133: hyapp.activity.v1.AdminRegistrationRewardService.GetRegistrationRewardConfig:input_type -> hyapp.activity.v1.GetRegistrationRewardConfigRequest
|
52, // 133: hyapp.activity.v1.RegistrationRewardService.GetRegistrationRewardEligibility:input_type -> hyapp.activity.v1.GetRegistrationRewardEligibilityRequest
|
||||||
58, // 134: hyapp.activity.v1.AdminRegistrationRewardService.UpdateRegistrationRewardConfig:input_type -> hyapp.activity.v1.UpdateRegistrationRewardConfigRequest
|
54, // 134: hyapp.activity.v1.RegistrationRewardService.IssueRegistrationReward:input_type -> hyapp.activity.v1.IssueRegistrationRewardRequest
|
||||||
60, // 135: hyapp.activity.v1.AdminRegistrationRewardService.ListRegistrationRewardClaims:input_type -> hyapp.activity.v1.ListRegistrationRewardClaimsRequest
|
56, // 135: hyapp.activity.v1.AdminRegistrationRewardService.GetRegistrationRewardConfig:input_type -> hyapp.activity.v1.GetRegistrationRewardConfigRequest
|
||||||
65, // 136: hyapp.activity.v1.SevenDayCheckInService.GetSevenDayCheckInStatus:input_type -> hyapp.activity.v1.GetSevenDayCheckInStatusRequest
|
58, // 136: hyapp.activity.v1.AdminRegistrationRewardService.UpdateRegistrationRewardConfig:input_type -> hyapp.activity.v1.UpdateRegistrationRewardConfigRequest
|
||||||
67, // 137: hyapp.activity.v1.SevenDayCheckInService.SignSevenDayCheckIn:input_type -> hyapp.activity.v1.SignSevenDayCheckInRequest
|
60, // 137: hyapp.activity.v1.AdminRegistrationRewardService.ListRegistrationRewardClaims:input_type -> hyapp.activity.v1.ListRegistrationRewardClaimsRequest
|
||||||
69, // 138: hyapp.activity.v1.AdminSevenDayCheckInService.GetSevenDayCheckInConfig:input_type -> hyapp.activity.v1.GetSevenDayCheckInConfigRequest
|
65, // 138: hyapp.activity.v1.SevenDayCheckInService.GetSevenDayCheckInStatus:input_type -> hyapp.activity.v1.GetSevenDayCheckInStatusRequest
|
||||||
71, // 139: hyapp.activity.v1.AdminSevenDayCheckInService.UpdateSevenDayCheckInConfig:input_type -> hyapp.activity.v1.UpdateSevenDayCheckInConfigRequest
|
67, // 139: hyapp.activity.v1.SevenDayCheckInService.SignSevenDayCheckIn:input_type -> hyapp.activity.v1.SignSevenDayCheckInRequest
|
||||||
74, // 140: hyapp.activity.v1.AdminSevenDayCheckInService.ListSevenDayCheckInClaims:input_type -> hyapp.activity.v1.ListSevenDayCheckInClaimsRequest
|
69, // 140: hyapp.activity.v1.AdminSevenDayCheckInService.GetSevenDayCheckInConfig:input_type -> hyapp.activity.v1.GetSevenDayCheckInConfigRequest
|
||||||
95, // 141: hyapp.activity.v1.AdminGrowthLevelService.ListLevelConfig:input_type -> hyapp.activity.v1.ListLevelConfigRequest
|
71, // 141: hyapp.activity.v1.AdminSevenDayCheckInService.UpdateSevenDayCheckInConfig:input_type -> hyapp.activity.v1.UpdateSevenDayCheckInConfigRequest
|
||||||
89, // 142: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTrack:input_type -> hyapp.activity.v1.UpsertLevelTrackRequest
|
74, // 142: hyapp.activity.v1.AdminSevenDayCheckInService.ListSevenDayCheckInClaims:input_type -> hyapp.activity.v1.ListSevenDayCheckInClaimsRequest
|
||||||
91, // 143: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelRule:input_type -> hyapp.activity.v1.UpsertLevelRuleRequest
|
95, // 143: hyapp.activity.v1.AdminGrowthLevelService.ListLevelConfig:input_type -> hyapp.activity.v1.ListLevelConfigRequest
|
||||||
93, // 144: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTier:input_type -> hyapp.activity.v1.UpsertLevelTierRequest
|
89, // 144: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTrack:input_type -> hyapp.activity.v1.UpsertLevelTrackRequest
|
||||||
100, // 145: hyapp.activity.v1.AdminAchievementService.ListAchievementDefinitions:input_type -> hyapp.activity.v1.ListAchievementsRequest
|
91, // 145: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelRule:input_type -> hyapp.activity.v1.UpsertLevelRuleRequest
|
||||||
109, // 146: hyapp.activity.v1.AdminAchievementService.UpsertAchievementDefinition:input_type -> hyapp.activity.v1.UpsertAchievementDefinitionRequest
|
93, // 146: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTier:input_type -> hyapp.activity.v1.UpsertLevelTierRequest
|
||||||
119, // 147: hyapp.activity.v1.AdminLuckyGiftService.GetLuckyGiftConfig:input_type -> hyapp.activity.v1.GetLuckyGiftConfigRequest
|
100, // 147: hyapp.activity.v1.AdminAchievementService.ListAchievementDefinitions:input_type -> hyapp.activity.v1.ListAchievementsRequest
|
||||||
121, // 148: hyapp.activity.v1.AdminLuckyGiftService.UpsertLuckyGiftConfig:input_type -> hyapp.activity.v1.UpsertLuckyGiftConfigRequest
|
109, // 148: hyapp.activity.v1.AdminAchievementService.UpsertAchievementDefinition:input_type -> hyapp.activity.v1.UpsertAchievementDefinitionRequest
|
||||||
123, // 149: hyapp.activity.v1.AdminLuckyGiftService.ListLuckyGiftDraws:input_type -> hyapp.activity.v1.ListLuckyGiftDrawsRequest
|
119, // 149: hyapp.activity.v1.AdminLuckyGiftService.GetLuckyGiftConfig:input_type -> hyapp.activity.v1.GetLuckyGiftConfigRequest
|
||||||
2, // 150: hyapp.activity.v1.ActivityService.PingActivity:output_type -> hyapp.activity.v1.PingActivityResponse
|
121, // 150: hyapp.activity.v1.AdminLuckyGiftService.UpsertLuckyGiftConfig:input_type -> hyapp.activity.v1.UpsertLuckyGiftConfigRequest
|
||||||
4, // 151: hyapp.activity.v1.ActivityService.GetActivityStatus:output_type -> hyapp.activity.v1.GetActivityStatusResponse
|
123, // 151: hyapp.activity.v1.AdminLuckyGiftService.ListLuckyGiftConfigs:input_type -> hyapp.activity.v1.ListLuckyGiftConfigsRequest
|
||||||
7, // 152: hyapp.activity.v1.MessageInboxService.ListMessageTabs:output_type -> hyapp.activity.v1.ListMessageTabsResponse
|
125, // 152: hyapp.activity.v1.AdminLuckyGiftService.ListLuckyGiftDraws:input_type -> hyapp.activity.v1.ListLuckyGiftDrawsRequest
|
||||||
10, // 153: hyapp.activity.v1.MessageInboxService.ListInboxMessages:output_type -> hyapp.activity.v1.ListInboxMessagesResponse
|
2, // 153: hyapp.activity.v1.ActivityService.PingActivity:output_type -> hyapp.activity.v1.PingActivityResponse
|
||||||
12, // 154: hyapp.activity.v1.MessageInboxService.MarkInboxMessageRead:output_type -> hyapp.activity.v1.MarkInboxMessageReadResponse
|
4, // 154: hyapp.activity.v1.ActivityService.GetActivityStatus:output_type -> hyapp.activity.v1.GetActivityStatusResponse
|
||||||
14, // 155: hyapp.activity.v1.MessageInboxService.MarkInboxSectionRead:output_type -> hyapp.activity.v1.MarkInboxSectionReadResponse
|
7, // 155: hyapp.activity.v1.MessageInboxService.ListMessageTabs:output_type -> hyapp.activity.v1.ListMessageTabsResponse
|
||||||
16, // 156: hyapp.activity.v1.MessageInboxService.DeleteInboxMessage:output_type -> hyapp.activity.v1.DeleteInboxMessageResponse
|
10, // 156: hyapp.activity.v1.MessageInboxService.ListInboxMessages:output_type -> hyapp.activity.v1.ListInboxMessagesResponse
|
||||||
18, // 157: hyapp.activity.v1.MessageInboxService.CreateInboxMessage:output_type -> hyapp.activity.v1.CreateInboxMessageResponse
|
12, // 157: hyapp.activity.v1.MessageInboxService.MarkInboxMessageRead:output_type -> hyapp.activity.v1.MarkInboxMessageReadResponse
|
||||||
20, // 158: hyapp.activity.v1.MessageInboxService.CreateFanoutJob:output_type -> hyapp.activity.v1.CreateFanoutJobResponse
|
14, // 158: hyapp.activity.v1.MessageInboxService.MarkInboxSectionRead:output_type -> hyapp.activity.v1.MarkInboxSectionReadResponse
|
||||||
22, // 159: hyapp.activity.v1.ActivityCronService.ProcessMessageFanoutBatch:output_type -> hyapp.activity.v1.CronBatchResponse
|
16, // 159: hyapp.activity.v1.MessageInboxService.DeleteInboxMessage:output_type -> hyapp.activity.v1.DeleteInboxMessageResponse
|
||||||
22, // 160: hyapp.activity.v1.ActivityCronService.ProcessLevelRewardBatch:output_type -> hyapp.activity.v1.CronBatchResponse
|
18, // 160: hyapp.activity.v1.MessageInboxService.CreateInboxMessage:output_type -> hyapp.activity.v1.CreateInboxMessageResponse
|
||||||
22, // 161: hyapp.activity.v1.ActivityCronService.ProcessAchievementRewardBatch:output_type -> hyapp.activity.v1.CronBatchResponse
|
20, // 161: hyapp.activity.v1.MessageInboxService.CreateFanoutJob:output_type -> hyapp.activity.v1.CreateFanoutJobResponse
|
||||||
26, // 162: hyapp.activity.v1.TaskService.ListUserTasks:output_type -> hyapp.activity.v1.ListUserTasksResponse
|
22, // 162: hyapp.activity.v1.ActivityCronService.ProcessMessageFanoutBatch:output_type -> hyapp.activity.v1.CronBatchResponse
|
||||||
28, // 163: hyapp.activity.v1.TaskService.ClaimTaskReward:output_type -> hyapp.activity.v1.ClaimTaskRewardResponse
|
22, // 163: hyapp.activity.v1.ActivityCronService.ProcessLevelRewardBatch:output_type -> hyapp.activity.v1.CronBatchResponse
|
||||||
30, // 164: hyapp.activity.v1.TaskService.ConsumeTaskEvent:output_type -> hyapp.activity.v1.ConsumeTaskEventResponse
|
22, // 164: hyapp.activity.v1.ActivityCronService.ProcessAchievementRewardBatch:output_type -> hyapp.activity.v1.CronBatchResponse
|
||||||
81, // 165: hyapp.activity.v1.GrowthLevelService.GetMyLevelOverview:output_type -> hyapp.activity.v1.GetMyLevelOverviewResponse
|
26, // 165: hyapp.activity.v1.TaskService.ListUserTasks:output_type -> hyapp.activity.v1.ListUserTasksResponse
|
||||||
83, // 166: hyapp.activity.v1.GrowthLevelService.GetLevelTrack:output_type -> hyapp.activity.v1.GetLevelTrackResponse
|
28, // 166: hyapp.activity.v1.TaskService.ClaimTaskReward:output_type -> hyapp.activity.v1.ClaimTaskRewardResponse
|
||||||
86, // 167: hyapp.activity.v1.GrowthLevelService.ListLevelRewards:output_type -> hyapp.activity.v1.ListLevelRewardsResponse
|
30, // 167: hyapp.activity.v1.TaskService.ConsumeTaskEvent:output_type -> hyapp.activity.v1.ConsumeTaskEventResponse
|
||||||
88, // 168: hyapp.activity.v1.GrowthLevelService.ConsumeLevelEvent:output_type -> hyapp.activity.v1.ConsumeLevelEventResponse
|
81, // 168: hyapp.activity.v1.GrowthLevelService.GetMyLevelOverview:output_type -> hyapp.activity.v1.GetMyLevelOverviewResponse
|
||||||
101, // 169: hyapp.activity.v1.AchievementService.ListAchievements:output_type -> hyapp.activity.v1.ListAchievementsResponse
|
83, // 169: hyapp.activity.v1.GrowthLevelService.GetLevelTrack:output_type -> hyapp.activity.v1.GetLevelTrackResponse
|
||||||
103, // 170: hyapp.activity.v1.AchievementService.ConsumeAchievementEvent:output_type -> hyapp.activity.v1.ConsumeAchievementEventResponse
|
86, // 170: hyapp.activity.v1.GrowthLevelService.ListLevelRewards:output_type -> hyapp.activity.v1.ListLevelRewardsResponse
|
||||||
106, // 171: hyapp.activity.v1.AchievementService.ListMyBadges:output_type -> hyapp.activity.v1.ListMyBadgesResponse
|
88, // 171: hyapp.activity.v1.GrowthLevelService.ConsumeLevelEvent:output_type -> hyapp.activity.v1.ConsumeLevelEventResponse
|
||||||
108, // 172: hyapp.activity.v1.AchievementService.SetBadgeDisplay:output_type -> hyapp.activity.v1.SetBadgeDisplayResponse
|
101, // 172: hyapp.activity.v1.AchievementService.ListAchievements:output_type -> hyapp.activity.v1.ListAchievementsResponse
|
||||||
115, // 173: hyapp.activity.v1.LuckyGiftService.CheckLuckyGift:output_type -> hyapp.activity.v1.CheckLuckyGiftResponse
|
103, // 173: hyapp.activity.v1.AchievementService.ConsumeAchievementEvent:output_type -> hyapp.activity.v1.ConsumeAchievementEventResponse
|
||||||
118, // 174: hyapp.activity.v1.LuckyGiftService.ExecuteLuckyGiftDraw:output_type -> hyapp.activity.v1.ExecuteLuckyGiftDrawResponse
|
106, // 174: hyapp.activity.v1.AchievementService.ListMyBadges:output_type -> hyapp.activity.v1.ListMyBadgesResponse
|
||||||
33, // 175: hyapp.activity.v1.BroadcastService.EnsureBroadcastGroups:output_type -> hyapp.activity.v1.EnsureBroadcastGroupsResponse
|
108, // 175: hyapp.activity.v1.AchievementService.SetBadgeDisplay:output_type -> hyapp.activity.v1.SetBadgeDisplayResponse
|
||||||
36, // 176: hyapp.activity.v1.BroadcastService.PublishRegionBroadcast:output_type -> hyapp.activity.v1.PublishBroadcastResponse
|
115, // 176: hyapp.activity.v1.LuckyGiftService.CheckLuckyGift:output_type -> hyapp.activity.v1.CheckLuckyGiftResponse
|
||||||
36, // 177: hyapp.activity.v1.BroadcastService.PublishGlobalBroadcast:output_type -> hyapp.activity.v1.PublishBroadcastResponse
|
118, // 177: hyapp.activity.v1.LuckyGiftService.ExecuteLuckyGiftDraw:output_type -> hyapp.activity.v1.ExecuteLuckyGiftDrawResponse
|
||||||
38, // 178: hyapp.activity.v1.BroadcastService.RemoveRegionBroadcastMember:output_type -> hyapp.activity.v1.RemoveRegionBroadcastMemberResponse
|
33, // 178: hyapp.activity.v1.BroadcastService.EnsureBroadcastGroups:output_type -> hyapp.activity.v1.EnsureBroadcastGroupsResponse
|
||||||
39, // 179: hyapp.activity.v1.BroadcastService.ProcessBroadcastOutboxBatch:output_type -> hyapp.activity.v1.ProcessBroadcastOutboxBatchResponse
|
36, // 179: hyapp.activity.v1.BroadcastService.PublishRegionBroadcast:output_type -> hyapp.activity.v1.PublishBroadcastResponse
|
||||||
41, // 180: hyapp.activity.v1.RoomEventConsumerService.ConsumeRoomEvent:output_type -> hyapp.activity.v1.ConsumeRoomEventResponse
|
36, // 180: hyapp.activity.v1.BroadcastService.PublishGlobalBroadcast:output_type -> hyapp.activity.v1.PublishBroadcastResponse
|
||||||
44, // 181: hyapp.activity.v1.AdminTaskService.ListTaskDefinitions:output_type -> hyapp.activity.v1.ListTaskDefinitionsResponse
|
38, // 181: hyapp.activity.v1.BroadcastService.RemoveRegionBroadcastMember:output_type -> hyapp.activity.v1.RemoveRegionBroadcastMemberResponse
|
||||||
46, // 182: hyapp.activity.v1.AdminTaskService.UpsertTaskDefinition:output_type -> hyapp.activity.v1.UpsertTaskDefinitionResponse
|
39, // 182: hyapp.activity.v1.BroadcastService.ProcessBroadcastOutboxBatch:output_type -> hyapp.activity.v1.ProcessBroadcastOutboxBatchResponse
|
||||||
48, // 183: hyapp.activity.v1.AdminTaskService.SetTaskDefinitionStatus:output_type -> hyapp.activity.v1.SetTaskDefinitionStatusResponse
|
41, // 183: hyapp.activity.v1.RoomEventConsumerService.ConsumeRoomEvent:output_type -> hyapp.activity.v1.ConsumeRoomEventResponse
|
||||||
53, // 184: hyapp.activity.v1.RegistrationRewardService.GetRegistrationRewardEligibility:output_type -> hyapp.activity.v1.GetRegistrationRewardEligibilityResponse
|
44, // 184: hyapp.activity.v1.AdminTaskService.ListTaskDefinitions:output_type -> hyapp.activity.v1.ListTaskDefinitionsResponse
|
||||||
55, // 185: hyapp.activity.v1.RegistrationRewardService.IssueRegistrationReward:output_type -> hyapp.activity.v1.IssueRegistrationRewardResponse
|
46, // 185: hyapp.activity.v1.AdminTaskService.UpsertTaskDefinition:output_type -> hyapp.activity.v1.UpsertTaskDefinitionResponse
|
||||||
57, // 186: hyapp.activity.v1.AdminRegistrationRewardService.GetRegistrationRewardConfig:output_type -> hyapp.activity.v1.GetRegistrationRewardConfigResponse
|
48, // 186: hyapp.activity.v1.AdminTaskService.SetTaskDefinitionStatus:output_type -> hyapp.activity.v1.SetTaskDefinitionStatusResponse
|
||||||
59, // 187: hyapp.activity.v1.AdminRegistrationRewardService.UpdateRegistrationRewardConfig:output_type -> hyapp.activity.v1.UpdateRegistrationRewardConfigResponse
|
53, // 187: hyapp.activity.v1.RegistrationRewardService.GetRegistrationRewardEligibility:output_type -> hyapp.activity.v1.GetRegistrationRewardEligibilityResponse
|
||||||
61, // 188: hyapp.activity.v1.AdminRegistrationRewardService.ListRegistrationRewardClaims:output_type -> hyapp.activity.v1.ListRegistrationRewardClaimsResponse
|
55, // 188: hyapp.activity.v1.RegistrationRewardService.IssueRegistrationReward:output_type -> hyapp.activity.v1.IssueRegistrationRewardResponse
|
||||||
66, // 189: hyapp.activity.v1.SevenDayCheckInService.GetSevenDayCheckInStatus:output_type -> hyapp.activity.v1.GetSevenDayCheckInStatusResponse
|
57, // 189: hyapp.activity.v1.AdminRegistrationRewardService.GetRegistrationRewardConfig:output_type -> hyapp.activity.v1.GetRegistrationRewardConfigResponse
|
||||||
68, // 190: hyapp.activity.v1.SevenDayCheckInService.SignSevenDayCheckIn:output_type -> hyapp.activity.v1.SignSevenDayCheckInResponse
|
59, // 190: hyapp.activity.v1.AdminRegistrationRewardService.UpdateRegistrationRewardConfig:output_type -> hyapp.activity.v1.UpdateRegistrationRewardConfigResponse
|
||||||
70, // 191: hyapp.activity.v1.AdminSevenDayCheckInService.GetSevenDayCheckInConfig:output_type -> hyapp.activity.v1.GetSevenDayCheckInConfigResponse
|
61, // 191: hyapp.activity.v1.AdminRegistrationRewardService.ListRegistrationRewardClaims:output_type -> hyapp.activity.v1.ListRegistrationRewardClaimsResponse
|
||||||
72, // 192: hyapp.activity.v1.AdminSevenDayCheckInService.UpdateSevenDayCheckInConfig:output_type -> hyapp.activity.v1.UpdateSevenDayCheckInConfigResponse
|
66, // 192: hyapp.activity.v1.SevenDayCheckInService.GetSevenDayCheckInStatus:output_type -> hyapp.activity.v1.GetSevenDayCheckInStatusResponse
|
||||||
75, // 193: hyapp.activity.v1.AdminSevenDayCheckInService.ListSevenDayCheckInClaims:output_type -> hyapp.activity.v1.ListSevenDayCheckInClaimsResponse
|
68, // 193: hyapp.activity.v1.SevenDayCheckInService.SignSevenDayCheckIn:output_type -> hyapp.activity.v1.SignSevenDayCheckInResponse
|
||||||
96, // 194: hyapp.activity.v1.AdminGrowthLevelService.ListLevelConfig:output_type -> hyapp.activity.v1.ListLevelConfigResponse
|
70, // 194: hyapp.activity.v1.AdminSevenDayCheckInService.GetSevenDayCheckInConfig:output_type -> hyapp.activity.v1.GetSevenDayCheckInConfigResponse
|
||||||
90, // 195: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTrack:output_type -> hyapp.activity.v1.UpsertLevelTrackResponse
|
72, // 195: hyapp.activity.v1.AdminSevenDayCheckInService.UpdateSevenDayCheckInConfig:output_type -> hyapp.activity.v1.UpdateSevenDayCheckInConfigResponse
|
||||||
92, // 196: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelRule:output_type -> hyapp.activity.v1.UpsertLevelRuleResponse
|
75, // 196: hyapp.activity.v1.AdminSevenDayCheckInService.ListSevenDayCheckInClaims:output_type -> hyapp.activity.v1.ListSevenDayCheckInClaimsResponse
|
||||||
94, // 197: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTier:output_type -> hyapp.activity.v1.UpsertLevelTierResponse
|
96, // 197: hyapp.activity.v1.AdminGrowthLevelService.ListLevelConfig:output_type -> hyapp.activity.v1.ListLevelConfigResponse
|
||||||
101, // 198: hyapp.activity.v1.AdminAchievementService.ListAchievementDefinitions:output_type -> hyapp.activity.v1.ListAchievementsResponse
|
90, // 198: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTrack:output_type -> hyapp.activity.v1.UpsertLevelTrackResponse
|
||||||
110, // 199: hyapp.activity.v1.AdminAchievementService.UpsertAchievementDefinition:output_type -> hyapp.activity.v1.UpsertAchievementDefinitionResponse
|
92, // 199: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelRule:output_type -> hyapp.activity.v1.UpsertLevelRuleResponse
|
||||||
120, // 200: hyapp.activity.v1.AdminLuckyGiftService.GetLuckyGiftConfig:output_type -> hyapp.activity.v1.GetLuckyGiftConfigResponse
|
94, // 200: hyapp.activity.v1.AdminGrowthLevelService.UpsertLevelTier:output_type -> hyapp.activity.v1.UpsertLevelTierResponse
|
||||||
122, // 201: hyapp.activity.v1.AdminLuckyGiftService.UpsertLuckyGiftConfig:output_type -> hyapp.activity.v1.UpsertLuckyGiftConfigResponse
|
101, // 201: hyapp.activity.v1.AdminAchievementService.ListAchievementDefinitions:output_type -> hyapp.activity.v1.ListAchievementsResponse
|
||||||
124, // 202: hyapp.activity.v1.AdminLuckyGiftService.ListLuckyGiftDraws:output_type -> hyapp.activity.v1.ListLuckyGiftDrawsResponse
|
110, // 202: hyapp.activity.v1.AdminAchievementService.UpsertAchievementDefinition:output_type -> hyapp.activity.v1.UpsertAchievementDefinitionResponse
|
||||||
150, // [150:203] is the sub-list for method output_type
|
120, // 203: hyapp.activity.v1.AdminLuckyGiftService.GetLuckyGiftConfig:output_type -> hyapp.activity.v1.GetLuckyGiftConfigResponse
|
||||||
97, // [97:150] is the sub-list for method input_type
|
122, // 204: hyapp.activity.v1.AdminLuckyGiftService.UpsertLuckyGiftConfig:output_type -> hyapp.activity.v1.UpsertLuckyGiftConfigResponse
|
||||||
97, // [97:97] is the sub-list for extension type_name
|
124, // 205: hyapp.activity.v1.AdminLuckyGiftService.ListLuckyGiftConfigs:output_type -> hyapp.activity.v1.ListLuckyGiftConfigsResponse
|
||||||
97, // [97:97] is the sub-list for extension extendee
|
126, // 206: hyapp.activity.v1.AdminLuckyGiftService.ListLuckyGiftDraws:output_type -> hyapp.activity.v1.ListLuckyGiftDrawsResponse
|
||||||
0, // [0:97] is the sub-list for field type_name
|
153, // [153:207] is the sub-list for method output_type
|
||||||
|
99, // [99:153] is the sub-list for method input_type
|
||||||
|
99, // [99:99] is the sub-list for extension type_name
|
||||||
|
99, // [99:99] is the sub-list for extension extendee
|
||||||
|
0, // [0:99] is the sub-list for field type_name
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_proto_activity_v1_activity_proto_init() }
|
func init() { file_proto_activity_v1_activity_proto_init() }
|
||||||
@ -11655,7 +11754,7 @@ func file_proto_activity_v1_activity_proto_init() {
|
|||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_activity_v1_activity_proto_rawDesc), len(file_proto_activity_v1_activity_proto_rawDesc)),
|
RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_activity_v1_activity_proto_rawDesc), len(file_proto_activity_v1_activity_proto_rawDesc)),
|
||||||
NumEnums: 0,
|
NumEnums: 0,
|
||||||
NumMessages: 125,
|
NumMessages: 127,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 17,
|
NumServices: 17,
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1132,6 +1132,14 @@ message UpsertLuckyGiftConfigResponse {
|
|||||||
LuckyGiftConfig config = 1;
|
LuckyGiftConfig config = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message ListLuckyGiftConfigsRequest {
|
||||||
|
RequestMeta meta = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ListLuckyGiftConfigsResponse {
|
||||||
|
repeated LuckyGiftConfig configs = 1;
|
||||||
|
}
|
||||||
|
|
||||||
message ListLuckyGiftDrawsRequest {
|
message ListLuckyGiftDrawsRequest {
|
||||||
RequestMeta meta = 1;
|
RequestMeta meta = 1;
|
||||||
string gift_id = 2;
|
string gift_id = 2;
|
||||||
@ -1266,5 +1274,6 @@ service AdminAchievementService {
|
|||||||
service AdminLuckyGiftService {
|
service AdminLuckyGiftService {
|
||||||
rpc GetLuckyGiftConfig(GetLuckyGiftConfigRequest) returns (GetLuckyGiftConfigResponse);
|
rpc GetLuckyGiftConfig(GetLuckyGiftConfigRequest) returns (GetLuckyGiftConfigResponse);
|
||||||
rpc UpsertLuckyGiftConfig(UpsertLuckyGiftConfigRequest) returns (UpsertLuckyGiftConfigResponse);
|
rpc UpsertLuckyGiftConfig(UpsertLuckyGiftConfigRequest) returns (UpsertLuckyGiftConfigResponse);
|
||||||
|
rpc ListLuckyGiftConfigs(ListLuckyGiftConfigsRequest) returns (ListLuckyGiftConfigsResponse);
|
||||||
rpc ListLuckyGiftDraws(ListLuckyGiftDrawsRequest) returns (ListLuckyGiftDrawsResponse);
|
rpc ListLuckyGiftDraws(ListLuckyGiftDrawsRequest) returns (ListLuckyGiftDrawsResponse);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3016,6 +3016,7 @@ var AdminAchievementService_ServiceDesc = grpc.ServiceDesc{
|
|||||||
const (
|
const (
|
||||||
AdminLuckyGiftService_GetLuckyGiftConfig_FullMethodName = "/hyapp.activity.v1.AdminLuckyGiftService/GetLuckyGiftConfig"
|
AdminLuckyGiftService_GetLuckyGiftConfig_FullMethodName = "/hyapp.activity.v1.AdminLuckyGiftService/GetLuckyGiftConfig"
|
||||||
AdminLuckyGiftService_UpsertLuckyGiftConfig_FullMethodName = "/hyapp.activity.v1.AdminLuckyGiftService/UpsertLuckyGiftConfig"
|
AdminLuckyGiftService_UpsertLuckyGiftConfig_FullMethodName = "/hyapp.activity.v1.AdminLuckyGiftService/UpsertLuckyGiftConfig"
|
||||||
|
AdminLuckyGiftService_ListLuckyGiftConfigs_FullMethodName = "/hyapp.activity.v1.AdminLuckyGiftService/ListLuckyGiftConfigs"
|
||||||
AdminLuckyGiftService_ListLuckyGiftDraws_FullMethodName = "/hyapp.activity.v1.AdminLuckyGiftService/ListLuckyGiftDraws"
|
AdminLuckyGiftService_ListLuckyGiftDraws_FullMethodName = "/hyapp.activity.v1.AdminLuckyGiftService/ListLuckyGiftDraws"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -3027,6 +3028,7 @@ const (
|
|||||||
type AdminLuckyGiftServiceClient interface {
|
type AdminLuckyGiftServiceClient interface {
|
||||||
GetLuckyGiftConfig(ctx context.Context, in *GetLuckyGiftConfigRequest, opts ...grpc.CallOption) (*GetLuckyGiftConfigResponse, error)
|
GetLuckyGiftConfig(ctx context.Context, in *GetLuckyGiftConfigRequest, opts ...grpc.CallOption) (*GetLuckyGiftConfigResponse, error)
|
||||||
UpsertLuckyGiftConfig(ctx context.Context, in *UpsertLuckyGiftConfigRequest, opts ...grpc.CallOption) (*UpsertLuckyGiftConfigResponse, error)
|
UpsertLuckyGiftConfig(ctx context.Context, in *UpsertLuckyGiftConfigRequest, opts ...grpc.CallOption) (*UpsertLuckyGiftConfigResponse, error)
|
||||||
|
ListLuckyGiftConfigs(ctx context.Context, in *ListLuckyGiftConfigsRequest, opts ...grpc.CallOption) (*ListLuckyGiftConfigsResponse, error)
|
||||||
ListLuckyGiftDraws(ctx context.Context, in *ListLuckyGiftDrawsRequest, opts ...grpc.CallOption) (*ListLuckyGiftDrawsResponse, error)
|
ListLuckyGiftDraws(ctx context.Context, in *ListLuckyGiftDrawsRequest, opts ...grpc.CallOption) (*ListLuckyGiftDrawsResponse, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3058,6 +3060,16 @@ func (c *adminLuckyGiftServiceClient) UpsertLuckyGiftConfig(ctx context.Context,
|
|||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *adminLuckyGiftServiceClient) ListLuckyGiftConfigs(ctx context.Context, in *ListLuckyGiftConfigsRequest, opts ...grpc.CallOption) (*ListLuckyGiftConfigsResponse, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
|
out := new(ListLuckyGiftConfigsResponse)
|
||||||
|
err := c.cc.Invoke(ctx, AdminLuckyGiftService_ListLuckyGiftConfigs_FullMethodName, in, out, cOpts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (c *adminLuckyGiftServiceClient) ListLuckyGiftDraws(ctx context.Context, in *ListLuckyGiftDrawsRequest, opts ...grpc.CallOption) (*ListLuckyGiftDrawsResponse, error) {
|
func (c *adminLuckyGiftServiceClient) ListLuckyGiftDraws(ctx context.Context, in *ListLuckyGiftDrawsRequest, opts ...grpc.CallOption) (*ListLuckyGiftDrawsResponse, error) {
|
||||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(ListLuckyGiftDrawsResponse)
|
out := new(ListLuckyGiftDrawsResponse)
|
||||||
@ -3076,6 +3088,7 @@ func (c *adminLuckyGiftServiceClient) ListLuckyGiftDraws(ctx context.Context, in
|
|||||||
type AdminLuckyGiftServiceServer interface {
|
type AdminLuckyGiftServiceServer interface {
|
||||||
GetLuckyGiftConfig(context.Context, *GetLuckyGiftConfigRequest) (*GetLuckyGiftConfigResponse, error)
|
GetLuckyGiftConfig(context.Context, *GetLuckyGiftConfigRequest) (*GetLuckyGiftConfigResponse, error)
|
||||||
UpsertLuckyGiftConfig(context.Context, *UpsertLuckyGiftConfigRequest) (*UpsertLuckyGiftConfigResponse, error)
|
UpsertLuckyGiftConfig(context.Context, *UpsertLuckyGiftConfigRequest) (*UpsertLuckyGiftConfigResponse, error)
|
||||||
|
ListLuckyGiftConfigs(context.Context, *ListLuckyGiftConfigsRequest) (*ListLuckyGiftConfigsResponse, error)
|
||||||
ListLuckyGiftDraws(context.Context, *ListLuckyGiftDrawsRequest) (*ListLuckyGiftDrawsResponse, error)
|
ListLuckyGiftDraws(context.Context, *ListLuckyGiftDrawsRequest) (*ListLuckyGiftDrawsResponse, error)
|
||||||
mustEmbedUnimplementedAdminLuckyGiftServiceServer()
|
mustEmbedUnimplementedAdminLuckyGiftServiceServer()
|
||||||
}
|
}
|
||||||
@ -3093,6 +3106,9 @@ func (UnimplementedAdminLuckyGiftServiceServer) GetLuckyGiftConfig(context.Conte
|
|||||||
func (UnimplementedAdminLuckyGiftServiceServer) UpsertLuckyGiftConfig(context.Context, *UpsertLuckyGiftConfigRequest) (*UpsertLuckyGiftConfigResponse, error) {
|
func (UnimplementedAdminLuckyGiftServiceServer) UpsertLuckyGiftConfig(context.Context, *UpsertLuckyGiftConfigRequest) (*UpsertLuckyGiftConfigResponse, error) {
|
||||||
return nil, status.Error(codes.Unimplemented, "method UpsertLuckyGiftConfig not implemented")
|
return nil, status.Error(codes.Unimplemented, "method UpsertLuckyGiftConfig not implemented")
|
||||||
}
|
}
|
||||||
|
func (UnimplementedAdminLuckyGiftServiceServer) ListLuckyGiftConfigs(context.Context, *ListLuckyGiftConfigsRequest) (*ListLuckyGiftConfigsResponse, error) {
|
||||||
|
return nil, status.Error(codes.Unimplemented, "method ListLuckyGiftConfigs not implemented")
|
||||||
|
}
|
||||||
func (UnimplementedAdminLuckyGiftServiceServer) ListLuckyGiftDraws(context.Context, *ListLuckyGiftDrawsRequest) (*ListLuckyGiftDrawsResponse, error) {
|
func (UnimplementedAdminLuckyGiftServiceServer) ListLuckyGiftDraws(context.Context, *ListLuckyGiftDrawsRequest) (*ListLuckyGiftDrawsResponse, error) {
|
||||||
return nil, status.Error(codes.Unimplemented, "method ListLuckyGiftDraws not implemented")
|
return nil, status.Error(codes.Unimplemented, "method ListLuckyGiftDraws not implemented")
|
||||||
}
|
}
|
||||||
@ -3153,6 +3169,24 @@ func _AdminLuckyGiftService_UpsertLuckyGiftConfig_Handler(srv interface{}, ctx c
|
|||||||
return interceptor(ctx, in, info, handler)
|
return interceptor(ctx, in, info, handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func _AdminLuckyGiftService_ListLuckyGiftConfigs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(ListLuckyGiftConfigsRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(AdminLuckyGiftServiceServer).ListLuckyGiftConfigs(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: AdminLuckyGiftService_ListLuckyGiftConfigs_FullMethodName,
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(AdminLuckyGiftServiceServer).ListLuckyGiftConfigs(ctx, req.(*ListLuckyGiftConfigsRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
func _AdminLuckyGiftService_ListLuckyGiftDraws_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
func _AdminLuckyGiftService_ListLuckyGiftDraws_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
in := new(ListLuckyGiftDrawsRequest)
|
in := new(ListLuckyGiftDrawsRequest)
|
||||||
if err := dec(in); err != nil {
|
if err := dec(in); err != nil {
|
||||||
@ -3186,6 +3220,10 @@ var AdminLuckyGiftService_ServiceDesc = grpc.ServiceDesc{
|
|||||||
MethodName: "UpsertLuckyGiftConfig",
|
MethodName: "UpsertLuckyGiftConfig",
|
||||||
Handler: _AdminLuckyGiftService_UpsertLuckyGiftConfig_Handler,
|
Handler: _AdminLuckyGiftService_UpsertLuckyGiftConfig_Handler,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
MethodName: "ListLuckyGiftConfigs",
|
||||||
|
Handler: _AdminLuckyGiftService_ListLuckyGiftConfigs_Handler,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
MethodName: "ListLuckyGiftDraws",
|
MethodName: "ListLuckyGiftDraws",
|
||||||
Handler: _AdminLuckyGiftService_ListLuckyGiftDraws_Handler,
|
Handler: _AdminLuckyGiftService_ListLuckyGiftDraws_Handler,
|
||||||
|
|||||||
@ -703,6 +703,9 @@ type LaunchGameRequest struct {
|
|||||||
GameId string `protobuf:"bytes,4,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"`
|
GameId string `protobuf:"bytes,4,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"`
|
||||||
Scene string `protobuf:"bytes,5,opt,name=scene,proto3" json:"scene,omitempty"`
|
Scene string `protobuf:"bytes,5,opt,name=scene,proto3" json:"scene,omitempty"`
|
||||||
RoomId string `protobuf:"bytes,6,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
|
RoomId string `protobuf:"bytes,6,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
|
||||||
|
// access_token is the same bearer token used by the App request.
|
||||||
|
// Provider adapters pass it through as the game token instead of minting a separate game token.
|
||||||
|
AccessToken string `protobuf:"bytes,7,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"`
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
}
|
}
|
||||||
@ -779,6 +782,13 @@ func (x *LaunchGameRequest) GetRoomId() string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *LaunchGameRequest) GetAccessToken() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.AccessToken
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
type LaunchGameResponse struct {
|
type LaunchGameResponse struct {
|
||||||
state protoimpl.MessageState `protogen:"open.v1"`
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
|
SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
|
||||||
@ -1737,14 +1747,15 @@ const file_proto_game_v1_game_proto_rawDesc = "" +
|
|||||||
"\x0fclient_platform\x18\a \x01(\tR\x0eclientPlatform\"g\n" +
|
"\x0fclient_platform\x18\a \x01(\tR\x0eclientPlatform\"g\n" +
|
||||||
"\x11ListGamesResponse\x12,\n" +
|
"\x11ListGamesResponse\x12,\n" +
|
||||||
"\x05games\x18\x01 \x03(\v2\x16.hyapp.game.v1.AppGameR\x05games\x12$\n" +
|
"\x05games\x18\x01 \x03(\v2\x16.hyapp.game.v1.AppGameR\x05games\x12$\n" +
|
||||||
"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"\xcc\x01\n" +
|
"\x0eserver_time_ms\x18\x02 \x01(\x03R\fserverTimeMs\"\xef\x01\n" +
|
||||||
"\x11LaunchGameRequest\x12.\n" +
|
"\x11LaunchGameRequest\x12.\n" +
|
||||||
"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.game.v1.RequestMetaR\x04meta\x12\x17\n" +
|
"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.game.v1.RequestMetaR\x04meta\x12\x17\n" +
|
||||||
"\auser_id\x18\x02 \x01(\x03R\x06userId\x12&\n" +
|
"\auser_id\x18\x02 \x01(\x03R\x06userId\x12&\n" +
|
||||||
"\x0fdisplay_user_id\x18\x03 \x01(\tR\rdisplayUserId\x12\x17\n" +
|
"\x0fdisplay_user_id\x18\x03 \x01(\tR\rdisplayUserId\x12\x17\n" +
|
||||||
"\agame_id\x18\x04 \x01(\tR\x06gameId\x12\x14\n" +
|
"\agame_id\x18\x04 \x01(\tR\x06gameId\x12\x14\n" +
|
||||||
"\x05scene\x18\x05 \x01(\tR\x05scene\x12\x17\n" +
|
"\x05scene\x18\x05 \x01(\tR\x05scene\x12\x17\n" +
|
||||||
"\aroom_id\x18\x06 \x01(\tR\x06roomId\"\xbe\x01\n" +
|
"\aroom_id\x18\x06 \x01(\tR\x06roomId\x12!\n" +
|
||||||
|
"\faccess_token\x18\a \x01(\tR\vaccessToken\"\xbe\x01\n" +
|
||||||
"\x12LaunchGameResponse\x12\x1d\n" +
|
"\x12LaunchGameResponse\x12\x1d\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"session_id\x18\x01 \x01(\tR\tsessionId\x12\x1d\n" +
|
"session_id\x18\x01 \x01(\tR\tsessionId\x12\x1d\n" +
|
||||||
|
|||||||
@ -88,6 +88,9 @@ message LaunchGameRequest {
|
|||||||
string game_id = 4;
|
string game_id = 4;
|
||||||
string scene = 5;
|
string scene = 5;
|
||||||
string room_id = 6;
|
string room_id = 6;
|
||||||
|
// access_token is the same bearer token used by the App request.
|
||||||
|
// Provider adapters pass it through as the game token instead of minting a separate game token.
|
||||||
|
string access_token = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
message LaunchGameResponse {
|
message LaunchGameResponse {
|
||||||
|
|||||||
@ -454,6 +454,248 @@ func (x *SetPasswordResponse) GetPasswordSet() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// QuickCreateAccountRequest 为测试和三方联调快速创建一个可密码登录的完整账号。
|
||||||
|
type QuickCreateAccountRequest struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Meta *RequestMeta `protobuf:"bytes,1,opt,name=meta,proto3" json:"meta,omitempty"`
|
||||||
|
Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"`
|
||||||
|
Username string `protobuf:"bytes,3,opt,name=username,proto3" json:"username,omitempty"`
|
||||||
|
Avatar string `protobuf:"bytes,4,opt,name=avatar,proto3" json:"avatar,omitempty"`
|
||||||
|
Gender string `protobuf:"bytes,5,opt,name=gender,proto3" json:"gender,omitempty"`
|
||||||
|
Country string `protobuf:"bytes,6,opt,name=country,proto3" json:"country,omitempty"`
|
||||||
|
InviteCode string `protobuf:"bytes,7,opt,name=invite_code,json=inviteCode,proto3" json:"invite_code,omitempty"`
|
||||||
|
DeviceId string `protobuf:"bytes,8,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
|
||||||
|
Device string `protobuf:"bytes,9,opt,name=device,proto3" json:"device,omitempty"`
|
||||||
|
OsVersion string `protobuf:"bytes,10,opt,name=os_version,json=osVersion,proto3" json:"os_version,omitempty"`
|
||||||
|
Birth string `protobuf:"bytes,11,opt,name=birth,proto3" json:"birth,omitempty"`
|
||||||
|
AppVersion string `protobuf:"bytes,12,opt,name=app_version,json=appVersion,proto3" json:"app_version,omitempty"`
|
||||||
|
BuildNumber string `protobuf:"bytes,13,opt,name=build_number,json=buildNumber,proto3" json:"build_number,omitempty"`
|
||||||
|
Source string `protobuf:"bytes,14,opt,name=source,proto3" json:"source,omitempty"`
|
||||||
|
InstallChannel string `protobuf:"bytes,15,opt,name=install_channel,json=installChannel,proto3" json:"install_channel,omitempty"`
|
||||||
|
Campaign string `protobuf:"bytes,16,opt,name=campaign,proto3" json:"campaign,omitempty"`
|
||||||
|
Platform string `protobuf:"bytes,17,opt,name=platform,proto3" json:"platform,omitempty"`
|
||||||
|
Language string `protobuf:"bytes,18,opt,name=language,proto3" json:"language,omitempty"`
|
||||||
|
Timezone string `protobuf:"bytes,19,opt,name=timezone,proto3" json:"timezone,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) Reset() {
|
||||||
|
*x = QuickCreateAccountRequest{}
|
||||||
|
mi := &file_proto_user_v1_auth_proto_msgTypes[5]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*QuickCreateAccountRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_proto_user_v1_auth_proto_msgTypes[5]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use QuickCreateAccountRequest.ProtoReflect.Descriptor instead.
|
||||||
|
func (*QuickCreateAccountRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return file_proto_user_v1_auth_proto_rawDescGZIP(), []int{5}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetMeta() *RequestMeta {
|
||||||
|
if x != nil {
|
||||||
|
return x.Meta
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetPassword() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Password
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetUsername() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Username
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetAvatar() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Avatar
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetGender() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Gender
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetCountry() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Country
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetInviteCode() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.InviteCode
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetDeviceId() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.DeviceId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetDevice() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Device
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetOsVersion() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.OsVersion
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetBirth() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Birth
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetAppVersion() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.AppVersion
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetBuildNumber() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.BuildNumber
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetSource() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Source
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetInstallChannel() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.InstallChannel
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetCampaign() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Campaign
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetPlatform() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Platform
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetLanguage() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Language
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountRequest) GetTimezone() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Timezone
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// QuickCreateAccountResponse 返回新账号登录态;display_user_id 即后续账号密码登录用账号。
|
||||||
|
type QuickCreateAccountResponse struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Token *AuthToken `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
|
||||||
|
PasswordSet bool `protobuf:"varint,2,opt,name=password_set,json=passwordSet,proto3" json:"password_set,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountResponse) Reset() {
|
||||||
|
*x = QuickCreateAccountResponse{}
|
||||||
|
mi := &file_proto_user_v1_auth_proto_msgTypes[6]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountResponse) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*QuickCreateAccountResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountResponse) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_proto_user_v1_auth_proto_msgTypes[6]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use QuickCreateAccountResponse.ProtoReflect.Descriptor instead.
|
||||||
|
func (*QuickCreateAccountResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return file_proto_user_v1_auth_proto_rawDescGZIP(), []int{6}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountResponse) GetToken() *AuthToken {
|
||||||
|
if x != nil {
|
||||||
|
return x.Token
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *QuickCreateAccountResponse) GetPasswordSet() bool {
|
||||||
|
if x != nil {
|
||||||
|
return x.PasswordSet
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// RefreshTokenRequest 使用 refresh token 换取新 token。
|
// RefreshTokenRequest 使用 refresh token 换取新 token。
|
||||||
type RefreshTokenRequest struct {
|
type RefreshTokenRequest struct {
|
||||||
state protoimpl.MessageState `protogen:"open.v1"`
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
@ -465,7 +707,7 @@ type RefreshTokenRequest struct {
|
|||||||
|
|
||||||
func (x *RefreshTokenRequest) Reset() {
|
func (x *RefreshTokenRequest) Reset() {
|
||||||
*x = RefreshTokenRequest{}
|
*x = RefreshTokenRequest{}
|
||||||
mi := &file_proto_user_v1_auth_proto_msgTypes[5]
|
mi := &file_proto_user_v1_auth_proto_msgTypes[7]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -477,7 +719,7 @@ func (x *RefreshTokenRequest) String() string {
|
|||||||
func (*RefreshTokenRequest) ProtoMessage() {}
|
func (*RefreshTokenRequest) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *RefreshTokenRequest) ProtoReflect() protoreflect.Message {
|
func (x *RefreshTokenRequest) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_user_v1_auth_proto_msgTypes[5]
|
mi := &file_proto_user_v1_auth_proto_msgTypes[7]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -490,7 +732,7 @@ func (x *RefreshTokenRequest) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use RefreshTokenRequest.ProtoReflect.Descriptor instead.
|
// Deprecated: Use RefreshTokenRequest.ProtoReflect.Descriptor instead.
|
||||||
func (*RefreshTokenRequest) Descriptor() ([]byte, []int) {
|
func (*RefreshTokenRequest) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_user_v1_auth_proto_rawDescGZIP(), []int{5}
|
return file_proto_user_v1_auth_proto_rawDescGZIP(), []int{7}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *RefreshTokenRequest) GetMeta() *RequestMeta {
|
func (x *RefreshTokenRequest) GetMeta() *RequestMeta {
|
||||||
@ -517,7 +759,7 @@ type RefreshTokenResponse struct {
|
|||||||
|
|
||||||
func (x *RefreshTokenResponse) Reset() {
|
func (x *RefreshTokenResponse) Reset() {
|
||||||
*x = RefreshTokenResponse{}
|
*x = RefreshTokenResponse{}
|
||||||
mi := &file_proto_user_v1_auth_proto_msgTypes[6]
|
mi := &file_proto_user_v1_auth_proto_msgTypes[8]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -529,7 +771,7 @@ func (x *RefreshTokenResponse) String() string {
|
|||||||
func (*RefreshTokenResponse) ProtoMessage() {}
|
func (*RefreshTokenResponse) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *RefreshTokenResponse) ProtoReflect() protoreflect.Message {
|
func (x *RefreshTokenResponse) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_user_v1_auth_proto_msgTypes[6]
|
mi := &file_proto_user_v1_auth_proto_msgTypes[8]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -542,7 +784,7 @@ func (x *RefreshTokenResponse) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use RefreshTokenResponse.ProtoReflect.Descriptor instead.
|
// Deprecated: Use RefreshTokenResponse.ProtoReflect.Descriptor instead.
|
||||||
func (*RefreshTokenResponse) Descriptor() ([]byte, []int) {
|
func (*RefreshTokenResponse) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_user_v1_auth_proto_rawDescGZIP(), []int{6}
|
return file_proto_user_v1_auth_proto_rawDescGZIP(), []int{8}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *RefreshTokenResponse) GetToken() *AuthToken {
|
func (x *RefreshTokenResponse) GetToken() *AuthToken {
|
||||||
@ -564,7 +806,7 @@ type LogoutRequest struct {
|
|||||||
|
|
||||||
func (x *LogoutRequest) Reset() {
|
func (x *LogoutRequest) Reset() {
|
||||||
*x = LogoutRequest{}
|
*x = LogoutRequest{}
|
||||||
mi := &file_proto_user_v1_auth_proto_msgTypes[7]
|
mi := &file_proto_user_v1_auth_proto_msgTypes[9]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -576,7 +818,7 @@ func (x *LogoutRequest) String() string {
|
|||||||
func (*LogoutRequest) ProtoMessage() {}
|
func (*LogoutRequest) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *LogoutRequest) ProtoReflect() protoreflect.Message {
|
func (x *LogoutRequest) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_user_v1_auth_proto_msgTypes[7]
|
mi := &file_proto_user_v1_auth_proto_msgTypes[9]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -589,7 +831,7 @@ func (x *LogoutRequest) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use LogoutRequest.ProtoReflect.Descriptor instead.
|
// Deprecated: Use LogoutRequest.ProtoReflect.Descriptor instead.
|
||||||
func (*LogoutRequest) Descriptor() ([]byte, []int) {
|
func (*LogoutRequest) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_user_v1_auth_proto_rawDescGZIP(), []int{7}
|
return file_proto_user_v1_auth_proto_rawDescGZIP(), []int{9}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *LogoutRequest) GetMeta() *RequestMeta {
|
func (x *LogoutRequest) GetMeta() *RequestMeta {
|
||||||
@ -623,7 +865,7 @@ type LogoutResponse struct {
|
|||||||
|
|
||||||
func (x *LogoutResponse) Reset() {
|
func (x *LogoutResponse) Reset() {
|
||||||
*x = LogoutResponse{}
|
*x = LogoutResponse{}
|
||||||
mi := &file_proto_user_v1_auth_proto_msgTypes[8]
|
mi := &file_proto_user_v1_auth_proto_msgTypes[10]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -635,7 +877,7 @@ func (x *LogoutResponse) String() string {
|
|||||||
func (*LogoutResponse) ProtoMessage() {}
|
func (*LogoutResponse) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *LogoutResponse) ProtoReflect() protoreflect.Message {
|
func (x *LogoutResponse) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_user_v1_auth_proto_msgTypes[8]
|
mi := &file_proto_user_v1_auth_proto_msgTypes[10]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -648,7 +890,7 @@ func (x *LogoutResponse) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use LogoutResponse.ProtoReflect.Descriptor instead.
|
// Deprecated: Use LogoutResponse.ProtoReflect.Descriptor instead.
|
||||||
func (*LogoutResponse) Descriptor() ([]byte, []int) {
|
func (*LogoutResponse) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_user_v1_auth_proto_rawDescGZIP(), []int{8}
|
return file_proto_user_v1_auth_proto_rawDescGZIP(), []int{10}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *LogoutResponse) GetRevoked() bool {
|
func (x *LogoutResponse) GetRevoked() bool {
|
||||||
@ -673,7 +915,7 @@ type RecordLoginBlockedRequest struct {
|
|||||||
|
|
||||||
func (x *RecordLoginBlockedRequest) Reset() {
|
func (x *RecordLoginBlockedRequest) Reset() {
|
||||||
*x = RecordLoginBlockedRequest{}
|
*x = RecordLoginBlockedRequest{}
|
||||||
mi := &file_proto_user_v1_auth_proto_msgTypes[9]
|
mi := &file_proto_user_v1_auth_proto_msgTypes[11]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -685,7 +927,7 @@ func (x *RecordLoginBlockedRequest) String() string {
|
|||||||
func (*RecordLoginBlockedRequest) ProtoMessage() {}
|
func (*RecordLoginBlockedRequest) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *RecordLoginBlockedRequest) ProtoReflect() protoreflect.Message {
|
func (x *RecordLoginBlockedRequest) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_user_v1_auth_proto_msgTypes[9]
|
mi := &file_proto_user_v1_auth_proto_msgTypes[11]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -698,7 +940,7 @@ func (x *RecordLoginBlockedRequest) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use RecordLoginBlockedRequest.ProtoReflect.Descriptor instead.
|
// Deprecated: Use RecordLoginBlockedRequest.ProtoReflect.Descriptor instead.
|
||||||
func (*RecordLoginBlockedRequest) Descriptor() ([]byte, []int) {
|
func (*RecordLoginBlockedRequest) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_user_v1_auth_proto_rawDescGZIP(), []int{9}
|
return file_proto_user_v1_auth_proto_rawDescGZIP(), []int{11}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *RecordLoginBlockedRequest) GetMeta() *RequestMeta {
|
func (x *RecordLoginBlockedRequest) GetMeta() *RequestMeta {
|
||||||
@ -753,7 +995,7 @@ type RecordLoginBlockedResponse struct {
|
|||||||
|
|
||||||
func (x *RecordLoginBlockedResponse) Reset() {
|
func (x *RecordLoginBlockedResponse) Reset() {
|
||||||
*x = RecordLoginBlockedResponse{}
|
*x = RecordLoginBlockedResponse{}
|
||||||
mi := &file_proto_user_v1_auth_proto_msgTypes[10]
|
mi := &file_proto_user_v1_auth_proto_msgTypes[12]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
@ -765,7 +1007,7 @@ func (x *RecordLoginBlockedResponse) String() string {
|
|||||||
func (*RecordLoginBlockedResponse) ProtoMessage() {}
|
func (*RecordLoginBlockedResponse) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *RecordLoginBlockedResponse) ProtoReflect() protoreflect.Message {
|
func (x *RecordLoginBlockedResponse) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_user_v1_auth_proto_msgTypes[10]
|
mi := &file_proto_user_v1_auth_proto_msgTypes[12]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
@ -778,7 +1020,7 @@ func (x *RecordLoginBlockedResponse) ProtoReflect() protoreflect.Message {
|
|||||||
|
|
||||||
// Deprecated: Use RecordLoginBlockedResponse.ProtoReflect.Descriptor instead.
|
// Deprecated: Use RecordLoginBlockedResponse.ProtoReflect.Descriptor instead.
|
||||||
func (*RecordLoginBlockedResponse) Descriptor() ([]byte, []int) {
|
func (*RecordLoginBlockedResponse) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_user_v1_auth_proto_rawDescGZIP(), []int{10}
|
return file_proto_user_v1_auth_proto_rawDescGZIP(), []int{12}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *RecordLoginBlockedResponse) GetRecorded() bool {
|
func (x *RecordLoginBlockedResponse) GetRecorded() bool {
|
||||||
@ -834,7 +1076,34 @@ const file_proto_user_v1_auth_proto_rawDesc = "" +
|
|||||||
"\auser_id\x18\x02 \x01(\x03R\x06userId\x12\x1a\n" +
|
"\auser_id\x18\x02 \x01(\x03R\x06userId\x12\x1a\n" +
|
||||||
"\bpassword\x18\x03 \x01(\tR\bpassword\"8\n" +
|
"\bpassword\x18\x03 \x01(\tR\bpassword\"8\n" +
|
||||||
"\x13SetPasswordResponse\x12!\n" +
|
"\x13SetPasswordResponse\x12!\n" +
|
||||||
"\fpassword_set\x18\x01 \x01(\bR\vpasswordSet\"j\n" +
|
"\fpassword_set\x18\x01 \x01(\bR\vpasswordSet\"\xcd\x04\n" +
|
||||||
|
"\x19QuickCreateAccountRequest\x12.\n" +
|
||||||
|
"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.user.v1.RequestMetaR\x04meta\x12\x1a\n" +
|
||||||
|
"\bpassword\x18\x02 \x01(\tR\bpassword\x12\x1a\n" +
|
||||||
|
"\busername\x18\x03 \x01(\tR\busername\x12\x16\n" +
|
||||||
|
"\x06avatar\x18\x04 \x01(\tR\x06avatar\x12\x16\n" +
|
||||||
|
"\x06gender\x18\x05 \x01(\tR\x06gender\x12\x18\n" +
|
||||||
|
"\acountry\x18\x06 \x01(\tR\acountry\x12\x1f\n" +
|
||||||
|
"\vinvite_code\x18\a \x01(\tR\n" +
|
||||||
|
"inviteCode\x12\x1b\n" +
|
||||||
|
"\tdevice_id\x18\b \x01(\tR\bdeviceId\x12\x16\n" +
|
||||||
|
"\x06device\x18\t \x01(\tR\x06device\x12\x1d\n" +
|
||||||
|
"\n" +
|
||||||
|
"os_version\x18\n" +
|
||||||
|
" \x01(\tR\tosVersion\x12\x14\n" +
|
||||||
|
"\x05birth\x18\v \x01(\tR\x05birth\x12\x1f\n" +
|
||||||
|
"\vapp_version\x18\f \x01(\tR\n" +
|
||||||
|
"appVersion\x12!\n" +
|
||||||
|
"\fbuild_number\x18\r \x01(\tR\vbuildNumber\x12\x16\n" +
|
||||||
|
"\x06source\x18\x0e \x01(\tR\x06source\x12'\n" +
|
||||||
|
"\x0finstall_channel\x18\x0f \x01(\tR\x0einstallChannel\x12\x1a\n" +
|
||||||
|
"\bcampaign\x18\x10 \x01(\tR\bcampaign\x12\x1a\n" +
|
||||||
|
"\bplatform\x18\x11 \x01(\tR\bplatform\x12\x1a\n" +
|
||||||
|
"\blanguage\x18\x12 \x01(\tR\blanguage\x12\x1a\n" +
|
||||||
|
"\btimezone\x18\x13 \x01(\tR\btimezone\"o\n" +
|
||||||
|
"\x1aQuickCreateAccountResponse\x12.\n" +
|
||||||
|
"\x05token\x18\x01 \x01(\v2\x18.hyapp.user.v1.AuthTokenR\x05token\x12!\n" +
|
||||||
|
"\fpassword_set\x18\x02 \x01(\bR\vpasswordSet\"j\n" +
|
||||||
"\x13RefreshTokenRequest\x12.\n" +
|
"\x13RefreshTokenRequest\x12.\n" +
|
||||||
"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.user.v1.RequestMetaR\x04meta\x12#\n" +
|
"\x04meta\x18\x01 \x01(\v2\x1a.hyapp.user.v1.RequestMetaR\x04meta\x12#\n" +
|
||||||
"\rrefresh_token\x18\x02 \x01(\tR\frefreshToken\"F\n" +
|
"\rrefresh_token\x18\x02 \x01(\tR\frefreshToken\"F\n" +
|
||||||
@ -855,11 +1124,12 @@ const file_proto_user_v1_auth_proto_rawDesc = "" +
|
|||||||
"\btimezone\x18\x05 \x01(\tR\btimezone\x12!\n" +
|
"\btimezone\x18\x05 \x01(\tR\btimezone\x12!\n" +
|
||||||
"\fblock_reason\x18\x06 \x01(\tR\vblockReason\"8\n" +
|
"\fblock_reason\x18\x06 \x01(\tR\vblockReason\"8\n" +
|
||||||
"\x1aRecordLoginBlockedResponse\x12\x1a\n" +
|
"\x1aRecordLoginBlockedResponse\x12\x1a\n" +
|
||||||
"\brecorded\x18\x01 \x01(\bR\brecorded2\x98\x04\n" +
|
"\brecorded\x18\x01 \x01(\bR\brecorded2\x83\x05\n" +
|
||||||
"\vAuthService\x12Q\n" +
|
"\vAuthService\x12Q\n" +
|
||||||
"\rLoginPassword\x12#.hyapp.user.v1.LoginPasswordRequest\x1a\x1b.hyapp.user.v1.AuthResponse\x12U\n" +
|
"\rLoginPassword\x12#.hyapp.user.v1.LoginPasswordRequest\x1a\x1b.hyapp.user.v1.AuthResponse\x12U\n" +
|
||||||
"\x0fLoginThirdParty\x12%.hyapp.user.v1.LoginThirdPartyRequest\x1a\x1b.hyapp.user.v1.AuthResponse\x12T\n" +
|
"\x0fLoginThirdParty\x12%.hyapp.user.v1.LoginThirdPartyRequest\x1a\x1b.hyapp.user.v1.AuthResponse\x12T\n" +
|
||||||
"\vSetPassword\x12!.hyapp.user.v1.SetPasswordRequest\x1a\".hyapp.user.v1.SetPasswordResponse\x12W\n" +
|
"\vSetPassword\x12!.hyapp.user.v1.SetPasswordRequest\x1a\".hyapp.user.v1.SetPasswordResponse\x12i\n" +
|
||||||
|
"\x12QuickCreateAccount\x12(.hyapp.user.v1.QuickCreateAccountRequest\x1a).hyapp.user.v1.QuickCreateAccountResponse\x12W\n" +
|
||||||
"\fRefreshToken\x12\".hyapp.user.v1.RefreshTokenRequest\x1a#.hyapp.user.v1.RefreshTokenResponse\x12E\n" +
|
"\fRefreshToken\x12\".hyapp.user.v1.RefreshTokenRequest\x1a#.hyapp.user.v1.RefreshTokenResponse\x12E\n" +
|
||||||
"\x06Logout\x12\x1c.hyapp.user.v1.LogoutRequest\x1a\x1d.hyapp.user.v1.LogoutResponse\x12i\n" +
|
"\x06Logout\x12\x1c.hyapp.user.v1.LogoutRequest\x1a\x1d.hyapp.user.v1.LogoutResponse\x12i\n" +
|
||||||
"\x12RecordLoginBlocked\x12(.hyapp.user.v1.RecordLoginBlockedRequest\x1a).hyapp.user.v1.RecordLoginBlockedResponseB&Z$hyapp.local/api/proto/user/v1;userv1b\x06proto3"
|
"\x12RecordLoginBlocked\x12(.hyapp.user.v1.RecordLoginBlockedRequest\x1a).hyapp.user.v1.RecordLoginBlockedResponseB&Z$hyapp.local/api/proto/user/v1;userv1b\x06proto3"
|
||||||
@ -876,48 +1146,54 @@ func file_proto_user_v1_auth_proto_rawDescGZIP() []byte {
|
|||||||
return file_proto_user_v1_auth_proto_rawDescData
|
return file_proto_user_v1_auth_proto_rawDescData
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_proto_user_v1_auth_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
|
var file_proto_user_v1_auth_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
|
||||||
var file_proto_user_v1_auth_proto_goTypes = []any{
|
var file_proto_user_v1_auth_proto_goTypes = []any{
|
||||||
(*LoginPasswordRequest)(nil), // 0: hyapp.user.v1.LoginPasswordRequest
|
(*LoginPasswordRequest)(nil), // 0: hyapp.user.v1.LoginPasswordRequest
|
||||||
(*LoginThirdPartyRequest)(nil), // 1: hyapp.user.v1.LoginThirdPartyRequest
|
(*LoginThirdPartyRequest)(nil), // 1: hyapp.user.v1.LoginThirdPartyRequest
|
||||||
(*AuthResponse)(nil), // 2: hyapp.user.v1.AuthResponse
|
(*AuthResponse)(nil), // 2: hyapp.user.v1.AuthResponse
|
||||||
(*SetPasswordRequest)(nil), // 3: hyapp.user.v1.SetPasswordRequest
|
(*SetPasswordRequest)(nil), // 3: hyapp.user.v1.SetPasswordRequest
|
||||||
(*SetPasswordResponse)(nil), // 4: hyapp.user.v1.SetPasswordResponse
|
(*SetPasswordResponse)(nil), // 4: hyapp.user.v1.SetPasswordResponse
|
||||||
(*RefreshTokenRequest)(nil), // 5: hyapp.user.v1.RefreshTokenRequest
|
(*QuickCreateAccountRequest)(nil), // 5: hyapp.user.v1.QuickCreateAccountRequest
|
||||||
(*RefreshTokenResponse)(nil), // 6: hyapp.user.v1.RefreshTokenResponse
|
(*QuickCreateAccountResponse)(nil), // 6: hyapp.user.v1.QuickCreateAccountResponse
|
||||||
(*LogoutRequest)(nil), // 7: hyapp.user.v1.LogoutRequest
|
(*RefreshTokenRequest)(nil), // 7: hyapp.user.v1.RefreshTokenRequest
|
||||||
(*LogoutResponse)(nil), // 8: hyapp.user.v1.LogoutResponse
|
(*RefreshTokenResponse)(nil), // 8: hyapp.user.v1.RefreshTokenResponse
|
||||||
(*RecordLoginBlockedRequest)(nil), // 9: hyapp.user.v1.RecordLoginBlockedRequest
|
(*LogoutRequest)(nil), // 9: hyapp.user.v1.LogoutRequest
|
||||||
(*RecordLoginBlockedResponse)(nil), // 10: hyapp.user.v1.RecordLoginBlockedResponse
|
(*LogoutResponse)(nil), // 10: hyapp.user.v1.LogoutResponse
|
||||||
(*RequestMeta)(nil), // 11: hyapp.user.v1.RequestMeta
|
(*RecordLoginBlockedRequest)(nil), // 11: hyapp.user.v1.RecordLoginBlockedRequest
|
||||||
(*AuthToken)(nil), // 12: hyapp.user.v1.AuthToken
|
(*RecordLoginBlockedResponse)(nil), // 12: hyapp.user.v1.RecordLoginBlockedResponse
|
||||||
|
(*RequestMeta)(nil), // 13: hyapp.user.v1.RequestMeta
|
||||||
|
(*AuthToken)(nil), // 14: hyapp.user.v1.AuthToken
|
||||||
}
|
}
|
||||||
var file_proto_user_v1_auth_proto_depIdxs = []int32{
|
var file_proto_user_v1_auth_proto_depIdxs = []int32{
|
||||||
11, // 0: hyapp.user.v1.LoginPasswordRequest.meta:type_name -> hyapp.user.v1.RequestMeta
|
13, // 0: hyapp.user.v1.LoginPasswordRequest.meta:type_name -> hyapp.user.v1.RequestMeta
|
||||||
11, // 1: hyapp.user.v1.LoginThirdPartyRequest.meta:type_name -> hyapp.user.v1.RequestMeta
|
13, // 1: hyapp.user.v1.LoginThirdPartyRequest.meta:type_name -> hyapp.user.v1.RequestMeta
|
||||||
12, // 2: hyapp.user.v1.AuthResponse.token:type_name -> hyapp.user.v1.AuthToken
|
14, // 2: hyapp.user.v1.AuthResponse.token:type_name -> hyapp.user.v1.AuthToken
|
||||||
11, // 3: hyapp.user.v1.SetPasswordRequest.meta:type_name -> hyapp.user.v1.RequestMeta
|
13, // 3: hyapp.user.v1.SetPasswordRequest.meta:type_name -> hyapp.user.v1.RequestMeta
|
||||||
11, // 4: hyapp.user.v1.RefreshTokenRequest.meta:type_name -> hyapp.user.v1.RequestMeta
|
13, // 4: hyapp.user.v1.QuickCreateAccountRequest.meta:type_name -> hyapp.user.v1.RequestMeta
|
||||||
12, // 5: hyapp.user.v1.RefreshTokenResponse.token:type_name -> hyapp.user.v1.AuthToken
|
14, // 5: hyapp.user.v1.QuickCreateAccountResponse.token:type_name -> hyapp.user.v1.AuthToken
|
||||||
11, // 6: hyapp.user.v1.LogoutRequest.meta:type_name -> hyapp.user.v1.RequestMeta
|
13, // 6: hyapp.user.v1.RefreshTokenRequest.meta:type_name -> hyapp.user.v1.RequestMeta
|
||||||
11, // 7: hyapp.user.v1.RecordLoginBlockedRequest.meta:type_name -> hyapp.user.v1.RequestMeta
|
14, // 7: hyapp.user.v1.RefreshTokenResponse.token:type_name -> hyapp.user.v1.AuthToken
|
||||||
0, // 8: hyapp.user.v1.AuthService.LoginPassword:input_type -> hyapp.user.v1.LoginPasswordRequest
|
13, // 8: hyapp.user.v1.LogoutRequest.meta:type_name -> hyapp.user.v1.RequestMeta
|
||||||
1, // 9: hyapp.user.v1.AuthService.LoginThirdParty:input_type -> hyapp.user.v1.LoginThirdPartyRequest
|
13, // 9: hyapp.user.v1.RecordLoginBlockedRequest.meta:type_name -> hyapp.user.v1.RequestMeta
|
||||||
3, // 10: hyapp.user.v1.AuthService.SetPassword:input_type -> hyapp.user.v1.SetPasswordRequest
|
0, // 10: hyapp.user.v1.AuthService.LoginPassword:input_type -> hyapp.user.v1.LoginPasswordRequest
|
||||||
5, // 11: hyapp.user.v1.AuthService.RefreshToken:input_type -> hyapp.user.v1.RefreshTokenRequest
|
1, // 11: hyapp.user.v1.AuthService.LoginThirdParty:input_type -> hyapp.user.v1.LoginThirdPartyRequest
|
||||||
7, // 12: hyapp.user.v1.AuthService.Logout:input_type -> hyapp.user.v1.LogoutRequest
|
3, // 12: hyapp.user.v1.AuthService.SetPassword:input_type -> hyapp.user.v1.SetPasswordRequest
|
||||||
9, // 13: hyapp.user.v1.AuthService.RecordLoginBlocked:input_type -> hyapp.user.v1.RecordLoginBlockedRequest
|
5, // 13: hyapp.user.v1.AuthService.QuickCreateAccount:input_type -> hyapp.user.v1.QuickCreateAccountRequest
|
||||||
2, // 14: hyapp.user.v1.AuthService.LoginPassword:output_type -> hyapp.user.v1.AuthResponse
|
7, // 14: hyapp.user.v1.AuthService.RefreshToken:input_type -> hyapp.user.v1.RefreshTokenRequest
|
||||||
2, // 15: hyapp.user.v1.AuthService.LoginThirdParty:output_type -> hyapp.user.v1.AuthResponse
|
9, // 15: hyapp.user.v1.AuthService.Logout:input_type -> hyapp.user.v1.LogoutRequest
|
||||||
4, // 16: hyapp.user.v1.AuthService.SetPassword:output_type -> hyapp.user.v1.SetPasswordResponse
|
11, // 16: hyapp.user.v1.AuthService.RecordLoginBlocked:input_type -> hyapp.user.v1.RecordLoginBlockedRequest
|
||||||
6, // 17: hyapp.user.v1.AuthService.RefreshToken:output_type -> hyapp.user.v1.RefreshTokenResponse
|
2, // 17: hyapp.user.v1.AuthService.LoginPassword:output_type -> hyapp.user.v1.AuthResponse
|
||||||
8, // 18: hyapp.user.v1.AuthService.Logout:output_type -> hyapp.user.v1.LogoutResponse
|
2, // 18: hyapp.user.v1.AuthService.LoginThirdParty:output_type -> hyapp.user.v1.AuthResponse
|
||||||
10, // 19: hyapp.user.v1.AuthService.RecordLoginBlocked:output_type -> hyapp.user.v1.RecordLoginBlockedResponse
|
4, // 19: hyapp.user.v1.AuthService.SetPassword:output_type -> hyapp.user.v1.SetPasswordResponse
|
||||||
14, // [14:20] is the sub-list for method output_type
|
6, // 20: hyapp.user.v1.AuthService.QuickCreateAccount:output_type -> hyapp.user.v1.QuickCreateAccountResponse
|
||||||
8, // [8:14] is the sub-list for method input_type
|
8, // 21: hyapp.user.v1.AuthService.RefreshToken:output_type -> hyapp.user.v1.RefreshTokenResponse
|
||||||
8, // [8:8] is the sub-list for extension type_name
|
10, // 22: hyapp.user.v1.AuthService.Logout:output_type -> hyapp.user.v1.LogoutResponse
|
||||||
8, // [8:8] is the sub-list for extension extendee
|
12, // 23: hyapp.user.v1.AuthService.RecordLoginBlocked:output_type -> hyapp.user.v1.RecordLoginBlockedResponse
|
||||||
0, // [0:8] is the sub-list for field type_name
|
17, // [17:24] is the sub-list for method output_type
|
||||||
|
10, // [10:17] is the sub-list for method input_type
|
||||||
|
10, // [10:10] is the sub-list for extension type_name
|
||||||
|
10, // [10:10] is the sub-list for extension extendee
|
||||||
|
0, // [0:10] is the sub-list for field type_name
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_proto_user_v1_auth_proto_init() }
|
func init() { file_proto_user_v1_auth_proto_init() }
|
||||||
@ -932,7 +1208,7 @@ func file_proto_user_v1_auth_proto_init() {
|
|||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_user_v1_auth_proto_rawDesc), len(file_proto_user_v1_auth_proto_rawDesc)),
|
RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_user_v1_auth_proto_rawDesc), len(file_proto_user_v1_auth_proto_rawDesc)),
|
||||||
NumEnums: 0,
|
NumEnums: 0,
|
||||||
NumMessages: 11,
|
NumMessages: 13,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 1,
|
NumServices: 1,
|
||||||
},
|
},
|
||||||
|
|||||||
@ -57,6 +57,35 @@ message SetPasswordResponse {
|
|||||||
bool password_set = 1;
|
bool password_set = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// QuickCreateAccountRequest 为测试和三方联调快速创建一个可密码登录的完整账号。
|
||||||
|
message QuickCreateAccountRequest {
|
||||||
|
RequestMeta meta = 1;
|
||||||
|
string password = 2;
|
||||||
|
string username = 3;
|
||||||
|
string avatar = 4;
|
||||||
|
string gender = 5;
|
||||||
|
string country = 6;
|
||||||
|
string invite_code = 7;
|
||||||
|
string device_id = 8;
|
||||||
|
string device = 9;
|
||||||
|
string os_version = 10;
|
||||||
|
string birth = 11;
|
||||||
|
string app_version = 12;
|
||||||
|
string build_number = 13;
|
||||||
|
string source = 14;
|
||||||
|
string install_channel = 15;
|
||||||
|
string campaign = 16;
|
||||||
|
string platform = 17;
|
||||||
|
string language = 18;
|
||||||
|
string timezone = 19;
|
||||||
|
}
|
||||||
|
|
||||||
|
// QuickCreateAccountResponse 返回新账号登录态;display_user_id 即后续账号密码登录用账号。
|
||||||
|
message QuickCreateAccountResponse {
|
||||||
|
AuthToken token = 1;
|
||||||
|
bool password_set = 2;
|
||||||
|
}
|
||||||
|
|
||||||
// RefreshTokenRequest 使用 refresh token 换取新 token。
|
// RefreshTokenRequest 使用 refresh token 换取新 token。
|
||||||
message RefreshTokenRequest {
|
message RefreshTokenRequest {
|
||||||
RequestMeta meta = 1;
|
RequestMeta meta = 1;
|
||||||
@ -100,6 +129,7 @@ service AuthService {
|
|||||||
rpc LoginPassword(LoginPasswordRequest) returns (AuthResponse);
|
rpc LoginPassword(LoginPasswordRequest) returns (AuthResponse);
|
||||||
rpc LoginThirdParty(LoginThirdPartyRequest) returns (AuthResponse);
|
rpc LoginThirdParty(LoginThirdPartyRequest) returns (AuthResponse);
|
||||||
rpc SetPassword(SetPasswordRequest) returns (SetPasswordResponse);
|
rpc SetPassword(SetPasswordRequest) returns (SetPasswordResponse);
|
||||||
|
rpc QuickCreateAccount(QuickCreateAccountRequest) returns (QuickCreateAccountResponse);
|
||||||
rpc RefreshToken(RefreshTokenRequest) returns (RefreshTokenResponse);
|
rpc RefreshToken(RefreshTokenRequest) returns (RefreshTokenResponse);
|
||||||
rpc Logout(LogoutRequest) returns (LogoutResponse);
|
rpc Logout(LogoutRequest) returns (LogoutResponse);
|
||||||
rpc RecordLoginBlocked(RecordLoginBlockedRequest) returns (RecordLoginBlockedResponse);
|
rpc RecordLoginBlocked(RecordLoginBlockedRequest) returns (RecordLoginBlockedResponse);
|
||||||
|
|||||||
@ -22,6 +22,7 @@ const (
|
|||||||
AuthService_LoginPassword_FullMethodName = "/hyapp.user.v1.AuthService/LoginPassword"
|
AuthService_LoginPassword_FullMethodName = "/hyapp.user.v1.AuthService/LoginPassword"
|
||||||
AuthService_LoginThirdParty_FullMethodName = "/hyapp.user.v1.AuthService/LoginThirdParty"
|
AuthService_LoginThirdParty_FullMethodName = "/hyapp.user.v1.AuthService/LoginThirdParty"
|
||||||
AuthService_SetPassword_FullMethodName = "/hyapp.user.v1.AuthService/SetPassword"
|
AuthService_SetPassword_FullMethodName = "/hyapp.user.v1.AuthService/SetPassword"
|
||||||
|
AuthService_QuickCreateAccount_FullMethodName = "/hyapp.user.v1.AuthService/QuickCreateAccount"
|
||||||
AuthService_RefreshToken_FullMethodName = "/hyapp.user.v1.AuthService/RefreshToken"
|
AuthService_RefreshToken_FullMethodName = "/hyapp.user.v1.AuthService/RefreshToken"
|
||||||
AuthService_Logout_FullMethodName = "/hyapp.user.v1.AuthService/Logout"
|
AuthService_Logout_FullMethodName = "/hyapp.user.v1.AuthService/Logout"
|
||||||
AuthService_RecordLoginBlocked_FullMethodName = "/hyapp.user.v1.AuthService/RecordLoginBlocked"
|
AuthService_RecordLoginBlocked_FullMethodName = "/hyapp.user.v1.AuthService/RecordLoginBlocked"
|
||||||
@ -36,6 +37,7 @@ type AuthServiceClient interface {
|
|||||||
LoginPassword(ctx context.Context, in *LoginPasswordRequest, opts ...grpc.CallOption) (*AuthResponse, error)
|
LoginPassword(ctx context.Context, in *LoginPasswordRequest, opts ...grpc.CallOption) (*AuthResponse, error)
|
||||||
LoginThirdParty(ctx context.Context, in *LoginThirdPartyRequest, opts ...grpc.CallOption) (*AuthResponse, error)
|
LoginThirdParty(ctx context.Context, in *LoginThirdPartyRequest, opts ...grpc.CallOption) (*AuthResponse, error)
|
||||||
SetPassword(ctx context.Context, in *SetPasswordRequest, opts ...grpc.CallOption) (*SetPasswordResponse, error)
|
SetPassword(ctx context.Context, in *SetPasswordRequest, opts ...grpc.CallOption) (*SetPasswordResponse, error)
|
||||||
|
QuickCreateAccount(ctx context.Context, in *QuickCreateAccountRequest, opts ...grpc.CallOption) (*QuickCreateAccountResponse, error)
|
||||||
RefreshToken(ctx context.Context, in *RefreshTokenRequest, opts ...grpc.CallOption) (*RefreshTokenResponse, error)
|
RefreshToken(ctx context.Context, in *RefreshTokenRequest, opts ...grpc.CallOption) (*RefreshTokenResponse, error)
|
||||||
Logout(ctx context.Context, in *LogoutRequest, opts ...grpc.CallOption) (*LogoutResponse, error)
|
Logout(ctx context.Context, in *LogoutRequest, opts ...grpc.CallOption) (*LogoutResponse, error)
|
||||||
RecordLoginBlocked(ctx context.Context, in *RecordLoginBlockedRequest, opts ...grpc.CallOption) (*RecordLoginBlockedResponse, error)
|
RecordLoginBlocked(ctx context.Context, in *RecordLoginBlockedRequest, opts ...grpc.CallOption) (*RecordLoginBlockedResponse, error)
|
||||||
@ -79,6 +81,16 @@ func (c *authServiceClient) SetPassword(ctx context.Context, in *SetPasswordRequ
|
|||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *authServiceClient) QuickCreateAccount(ctx context.Context, in *QuickCreateAccountRequest, opts ...grpc.CallOption) (*QuickCreateAccountResponse, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
|
out := new(QuickCreateAccountResponse)
|
||||||
|
err := c.cc.Invoke(ctx, AuthService_QuickCreateAccount_FullMethodName, in, out, cOpts...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (c *authServiceClient) RefreshToken(ctx context.Context, in *RefreshTokenRequest, opts ...grpc.CallOption) (*RefreshTokenResponse, error) {
|
func (c *authServiceClient) RefreshToken(ctx context.Context, in *RefreshTokenRequest, opts ...grpc.CallOption) (*RefreshTokenResponse, error) {
|
||||||
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(RefreshTokenResponse)
|
out := new(RefreshTokenResponse)
|
||||||
@ -118,6 +130,7 @@ type AuthServiceServer interface {
|
|||||||
LoginPassword(context.Context, *LoginPasswordRequest) (*AuthResponse, error)
|
LoginPassword(context.Context, *LoginPasswordRequest) (*AuthResponse, error)
|
||||||
LoginThirdParty(context.Context, *LoginThirdPartyRequest) (*AuthResponse, error)
|
LoginThirdParty(context.Context, *LoginThirdPartyRequest) (*AuthResponse, error)
|
||||||
SetPassword(context.Context, *SetPasswordRequest) (*SetPasswordResponse, error)
|
SetPassword(context.Context, *SetPasswordRequest) (*SetPasswordResponse, error)
|
||||||
|
QuickCreateAccount(context.Context, *QuickCreateAccountRequest) (*QuickCreateAccountResponse, error)
|
||||||
RefreshToken(context.Context, *RefreshTokenRequest) (*RefreshTokenResponse, error)
|
RefreshToken(context.Context, *RefreshTokenRequest) (*RefreshTokenResponse, error)
|
||||||
Logout(context.Context, *LogoutRequest) (*LogoutResponse, error)
|
Logout(context.Context, *LogoutRequest) (*LogoutResponse, error)
|
||||||
RecordLoginBlocked(context.Context, *RecordLoginBlockedRequest) (*RecordLoginBlockedResponse, error)
|
RecordLoginBlocked(context.Context, *RecordLoginBlockedRequest) (*RecordLoginBlockedResponse, error)
|
||||||
@ -140,6 +153,9 @@ func (UnimplementedAuthServiceServer) LoginThirdParty(context.Context, *LoginThi
|
|||||||
func (UnimplementedAuthServiceServer) SetPassword(context.Context, *SetPasswordRequest) (*SetPasswordResponse, error) {
|
func (UnimplementedAuthServiceServer) SetPassword(context.Context, *SetPasswordRequest) (*SetPasswordResponse, error) {
|
||||||
return nil, status.Error(codes.Unimplemented, "method SetPassword not implemented")
|
return nil, status.Error(codes.Unimplemented, "method SetPassword not implemented")
|
||||||
}
|
}
|
||||||
|
func (UnimplementedAuthServiceServer) QuickCreateAccount(context.Context, *QuickCreateAccountRequest) (*QuickCreateAccountResponse, error) {
|
||||||
|
return nil, status.Error(codes.Unimplemented, "method QuickCreateAccount not implemented")
|
||||||
|
}
|
||||||
func (UnimplementedAuthServiceServer) RefreshToken(context.Context, *RefreshTokenRequest) (*RefreshTokenResponse, error) {
|
func (UnimplementedAuthServiceServer) RefreshToken(context.Context, *RefreshTokenRequest) (*RefreshTokenResponse, error) {
|
||||||
return nil, status.Error(codes.Unimplemented, "method RefreshToken not implemented")
|
return nil, status.Error(codes.Unimplemented, "method RefreshToken not implemented")
|
||||||
}
|
}
|
||||||
@ -224,6 +240,24 @@ func _AuthService_SetPassword_Handler(srv interface{}, ctx context.Context, dec
|
|||||||
return interceptor(ctx, in, info, handler)
|
return interceptor(ctx, in, info, handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func _AuthService_QuickCreateAccount_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(QuickCreateAccountRequest)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if interceptor == nil {
|
||||||
|
return srv.(AuthServiceServer).QuickCreateAccount(ctx, in)
|
||||||
|
}
|
||||||
|
info := &grpc.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: AuthService_QuickCreateAccount_FullMethodName,
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
return srv.(AuthServiceServer).QuickCreateAccount(ctx, req.(*QuickCreateAccountRequest))
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
func _AuthService_RefreshToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
func _AuthService_RefreshToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||||
in := new(RefreshTokenRequest)
|
in := new(RefreshTokenRequest)
|
||||||
if err := dec(in); err != nil {
|
if err := dec(in); err != nil {
|
||||||
@ -297,6 +331,10 @@ var AuthService_ServiceDesc = grpc.ServiceDesc{
|
|||||||
MethodName: "SetPassword",
|
MethodName: "SetPassword",
|
||||||
Handler: _AuthService_SetPassword_Handler,
|
Handler: _AuthService_SetPassword_Handler,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
MethodName: "QuickCreateAccount",
|
||||||
|
Handler: _AuthService_QuickCreateAccount_Handler,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
MethodName: "RefreshToken",
|
MethodName: "RefreshToken",
|
||||||
Handler: _AuthService_RefreshToken_Handler,
|
Handler: _AuthService_RefreshToken_Handler,
|
||||||
|
|||||||
@ -23,6 +23,7 @@ type Client interface {
|
|||||||
ListSevenDayCheckInClaims(ctx context.Context, req *activityv1.ListSevenDayCheckInClaimsRequest) (*activityv1.ListSevenDayCheckInClaimsResponse, error)
|
ListSevenDayCheckInClaims(ctx context.Context, req *activityv1.ListSevenDayCheckInClaimsRequest) (*activityv1.ListSevenDayCheckInClaimsResponse, error)
|
||||||
GetLuckyGiftConfig(ctx context.Context, req *activityv1.GetLuckyGiftConfigRequest) (*activityv1.GetLuckyGiftConfigResponse, error)
|
GetLuckyGiftConfig(ctx context.Context, req *activityv1.GetLuckyGiftConfigRequest) (*activityv1.GetLuckyGiftConfigResponse, error)
|
||||||
UpsertLuckyGiftConfig(ctx context.Context, req *activityv1.UpsertLuckyGiftConfigRequest) (*activityv1.UpsertLuckyGiftConfigResponse, error)
|
UpsertLuckyGiftConfig(ctx context.Context, req *activityv1.UpsertLuckyGiftConfigRequest) (*activityv1.UpsertLuckyGiftConfigResponse, error)
|
||||||
|
ListLuckyGiftConfigs(ctx context.Context, req *activityv1.ListLuckyGiftConfigsRequest) (*activityv1.ListLuckyGiftConfigsResponse, error)
|
||||||
ListLuckyGiftDraws(ctx context.Context, req *activityv1.ListLuckyGiftDrawsRequest) (*activityv1.ListLuckyGiftDrawsResponse, error)
|
ListLuckyGiftDraws(ctx context.Context, req *activityv1.ListLuckyGiftDrawsRequest) (*activityv1.ListLuckyGiftDrawsResponse, error)
|
||||||
RemoveRegionBroadcastMember(ctx context.Context, req *activityv1.RemoveRegionBroadcastMemberRequest) (*activityv1.RemoveRegionBroadcastMemberResponse, error)
|
RemoveRegionBroadcastMember(ctx context.Context, req *activityv1.RemoveRegionBroadcastMemberRequest) (*activityv1.RemoveRegionBroadcastMemberResponse, error)
|
||||||
ListLevelConfig(ctx context.Context, req *activityv1.ListLevelConfigRequest) (*activityv1.ListLevelConfigResponse, error)
|
ListLevelConfig(ctx context.Context, req *activityv1.ListLevelConfigRequest) (*activityv1.ListLevelConfigResponse, error)
|
||||||
@ -105,6 +106,10 @@ func (c *GRPCClient) UpsertLuckyGiftConfig(ctx context.Context, req *activityv1.
|
|||||||
return c.luckyGiftClient.UpsertLuckyGiftConfig(ctx, req)
|
return c.luckyGiftClient.UpsertLuckyGiftConfig(ctx, req)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *GRPCClient) ListLuckyGiftConfigs(ctx context.Context, req *activityv1.ListLuckyGiftConfigsRequest) (*activityv1.ListLuckyGiftConfigsResponse, error) {
|
||||||
|
return c.luckyGiftClient.ListLuckyGiftConfigs(ctx, req)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *GRPCClient) ListLuckyGiftDraws(ctx context.Context, req *activityv1.ListLuckyGiftDrawsRequest) (*activityv1.ListLuckyGiftDrawsResponse, error) {
|
func (c *GRPCClient) ListLuckyGiftDraws(ctx context.Context, req *activityv1.ListLuckyGiftDrawsRequest) (*activityv1.ListLuckyGiftDrawsResponse, error) {
|
||||||
return c.luckyGiftClient.ListLuckyGiftDraws(ctx, req)
|
return c.luckyGiftClient.ListLuckyGiftDraws(ctx, req)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -138,6 +138,21 @@ func (h *Handler) UpsertLuckyGiftConfig(c *gin.Context) {
|
|||||||
response.OK(c, item)
|
response.OK(c, item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *Handler) ListLuckyGiftConfigs(c *gin.Context) {
|
||||||
|
resp, err := h.activity.ListLuckyGiftConfigs(c.Request.Context(), &activityv1.ListLuckyGiftConfigsRequest{
|
||||||
|
Meta: h.meta(c),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
response.ServerError(c, "获取幸运礼物奖池列表失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
items := make([]configDTO, 0, len(resp.GetConfigs()))
|
||||||
|
for _, config := range resp.GetConfigs() {
|
||||||
|
items = append(items, configFromProto(config))
|
||||||
|
}
|
||||||
|
response.OK(c, items)
|
||||||
|
}
|
||||||
|
|
||||||
func (h *Handler) ListLuckyGiftDraws(c *gin.Context) {
|
func (h *Handler) ListLuckyGiftDraws(c *gin.Context) {
|
||||||
options := shared.ListOptions(c)
|
options := shared.ListOptions(c)
|
||||||
resp, err := h.activity.ListLuckyGiftDraws(c.Request.Context(), &activityv1.ListLuckyGiftDrawsRequest{
|
resp, err := h.activity.ListLuckyGiftDraws(c.Request.Context(), &activityv1.ListLuckyGiftDrawsRequest{
|
||||||
|
|||||||
@ -13,5 +13,6 @@ func RegisterRoutes(protected *gin.RouterGroup, h *Handler) {
|
|||||||
|
|
||||||
protected.GET("/admin/activity/lucky-gifts/config", middleware.RequirePermission("lucky-gift:view"), h.GetLuckyGiftConfig)
|
protected.GET("/admin/activity/lucky-gifts/config", middleware.RequirePermission("lucky-gift:view"), h.GetLuckyGiftConfig)
|
||||||
protected.PUT("/admin/activity/lucky-gifts/config", middleware.RequirePermission("lucky-gift:update"), h.UpsertLuckyGiftConfig)
|
protected.PUT("/admin/activity/lucky-gifts/config", middleware.RequirePermission("lucky-gift:update"), h.UpsertLuckyGiftConfig)
|
||||||
|
protected.GET("/admin/activity/lucky-gifts/configs", middleware.RequirePermission("lucky-gift:view"), h.ListLuckyGiftConfigs)
|
||||||
protected.GET("/admin/activity/lucky-gifts/draws", middleware.RequirePermission("lucky-gift:view"), h.ListLuckyGiftDraws)
|
protected.GET("/admin/activity/lucky-gifts/draws", middleware.RequirePermission("lucky-gift:view"), h.ListLuckyGiftDraws)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import (
|
|||||||
type Repository interface {
|
type Repository interface {
|
||||||
GetLuckyGiftConfig(ctx context.Context, poolID string) (domain.Config, bool, error)
|
GetLuckyGiftConfig(ctx context.Context, poolID string) (domain.Config, bool, error)
|
||||||
UpsertLuckyGiftConfig(ctx context.Context, config domain.Config, nowMS int64) (domain.Config, error)
|
UpsertLuckyGiftConfig(ctx context.Context, config domain.Config, nowMS int64) (domain.Config, error)
|
||||||
|
ListLuckyGiftConfigs(ctx context.Context) ([]domain.Config, error)
|
||||||
CheckLuckyGift(ctx context.Context, cmd domain.CheckCommand) (domain.CheckResult, error)
|
CheckLuckyGift(ctx context.Context, cmd domain.CheckCommand) (domain.CheckResult, error)
|
||||||
ExecuteLuckyGiftDraw(ctx context.Context, cmd domain.DrawCommand, nowMS int64) (domain.DrawResult, error)
|
ExecuteLuckyGiftDraw(ctx context.Context, cmd domain.DrawCommand, nowMS int64) (domain.DrawResult, error)
|
||||||
ListLuckyGiftDraws(ctx context.Context, query domain.DrawQuery) ([]domain.DrawResult, int64, error)
|
ListLuckyGiftDraws(ctx context.Context, query domain.DrawQuery) ([]domain.DrawResult, int64, error)
|
||||||
@ -96,6 +97,13 @@ func (s *Service) UpsertConfig(ctx context.Context, config domain.Config) (domai
|
|||||||
return s.repository.UpsertLuckyGiftConfig(ctx, config, s.now().UTC().UnixMilli())
|
return s.repository.UpsertLuckyGiftConfig(ctx, config, s.now().UTC().UnixMilli())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Service) ListConfigs(ctx context.Context) ([]domain.Config, error) {
|
||||||
|
if err := s.requireRepository(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return s.repository.ListLuckyGiftConfigs(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Service) ListDraws(ctx context.Context, query domain.DrawQuery) ([]domain.DrawResult, int64, error) {
|
func (s *Service) ListDraws(ctx context.Context, query domain.DrawQuery) ([]domain.DrawResult, int64, error) {
|
||||||
if err := s.requireRepository(); err != nil {
|
if err := s.requireRepository(); err != nil {
|
||||||
return nil, 0, err
|
return nil, 0, err
|
||||||
|
|||||||
@ -53,6 +53,10 @@ func (r *fakeLuckyGiftRepository) UpsertLuckyGiftConfig(_ context.Context, confi
|
|||||||
return config, nil
|
return config, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *fakeLuckyGiftRepository) ListLuckyGiftConfigs(context.Context) ([]domain.Config, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (r *fakeLuckyGiftRepository) CheckLuckyGift(context.Context, domain.CheckCommand) (domain.CheckResult, error) {
|
func (r *fakeLuckyGiftRepository) CheckLuckyGift(context.Context, domain.CheckCommand) (domain.CheckResult, error) {
|
||||||
return domain.CheckResult{}, nil
|
return domain.CheckResult{}, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -232,6 +232,41 @@ func (r *Repository) UpsertLuckyGiftConfig(ctx context.Context, config domain.Co
|
|||||||
return config, nil
|
return config, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *Repository) ListLuckyGiftConfigs(ctx context.Context) ([]domain.Config, error) {
|
||||||
|
if r == nil || r.db == nil {
|
||||||
|
return nil, xerr.New(xerr.Unavailable, "mysql repository is not configured")
|
||||||
|
}
|
||||||
|
appCode := appcode.FromContext(ctx)
|
||||||
|
rows, err := r.db.QueryContext(ctx, `
|
||||||
|
SELECT app_code, gift_id, enabled, rule_version, gift_price, target_rtp_ppm, pool_rate_ppm,
|
||||||
|
global_window_draws, gift_window_draws, novice_draw_limit, intermediate_draw_limit,
|
||||||
|
high_multiplier, high_water_pool_multiple, platform_pool_weight_ppm, room_pool_weight_ppm,
|
||||||
|
gift_pool_weight_ppm, initial_platform_pool, initial_gift_pool, initial_room_pool,
|
||||||
|
platform_reserve, gift_reserve, room_reserve, max_single_payout, user_hourly_payout_cap,
|
||||||
|
user_daily_payout_cap, device_daily_payout_cap, room_hourly_payout_cap, anchor_daily_payout_cap,
|
||||||
|
room_atmosphere_rate_ppm, room_atmosphere_initial, room_atmosphere_reserve,
|
||||||
|
activity_budget, activity_daily_limit, large_tier_enabled,
|
||||||
|
COALESCE(CAST(tiers_json AS CHAR), '[]'), updated_by_admin_id, created_at_ms, updated_at_ms
|
||||||
|
FROM lucky_gift_rules
|
||||||
|
WHERE app_code = ?
|
||||||
|
ORDER BY updated_at_ms DESC, gift_id ASC`,
|
||||||
|
appCode,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
configs := make([]domain.Config, 0)
|
||||||
|
for rows.Next() {
|
||||||
|
config, err := scanLuckyConfig(rows)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
configs = append(configs, config)
|
||||||
|
}
|
||||||
|
return configs, rows.Err()
|
||||||
|
}
|
||||||
|
|
||||||
func (r *Repository) CheckLuckyGift(ctx context.Context, cmd domain.CheckCommand) (domain.CheckResult, error) {
|
func (r *Repository) CheckLuckyGift(ctx context.Context, cmd domain.CheckCommand) (domain.CheckResult, error) {
|
||||||
poolID := luckyPoolID(cmd.PoolID)
|
poolID := luckyPoolID(cmd.PoolID)
|
||||||
config, exists, err := r.GetLuckyGiftConfig(ctx, poolID)
|
config, exists, err := r.GetLuckyGiftConfig(ctx, poolID)
|
||||||
@ -621,6 +656,10 @@ type luckyQueryer interface {
|
|||||||
QueryRowContext(context.Context, string, ...any) *sql.Row
|
QueryRowContext(context.Context, string, ...any) *sql.Row
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type luckyScanner interface {
|
||||||
|
Scan(...any) error
|
||||||
|
}
|
||||||
|
|
||||||
func (r *Repository) getLuckyGiftConfig(ctx context.Context, q luckyQueryer, appCode string, giftID string, forUpdate bool) (domain.Config, bool, error) {
|
func (r *Repository) getLuckyGiftConfig(ctx context.Context, q luckyQueryer, appCode string, giftID string, forUpdate bool) (domain.Config, bool, error) {
|
||||||
if giftID == "" {
|
if giftID == "" {
|
||||||
return domain.Config{}, false, nil
|
return domain.Config{}, false, nil
|
||||||
@ -643,9 +682,20 @@ func (r *Repository) getLuckyGiftConfig(ctx context.Context, q luckyQueryer, app
|
|||||||
WHERE app_code = ? AND gift_id = ?`+lockSQL,
|
WHERE app_code = ? AND gift_id = ?`+lockSQL,
|
||||||
appCode, giftID,
|
appCode, giftID,
|
||||||
)
|
)
|
||||||
|
config, err := scanLuckyConfig(row)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, sql.ErrNoRows) {
|
||||||
|
return domain.Config{}, false, nil
|
||||||
|
}
|
||||||
|
return domain.Config{}, false, err
|
||||||
|
}
|
||||||
|
return config, true, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func scanLuckyConfig(scanner luckyScanner) (domain.Config, error) {
|
||||||
var config domain.Config
|
var config domain.Config
|
||||||
var tiersJSON string
|
var tiersJSON string
|
||||||
if err := row.Scan(&config.AppCode, &config.GiftID, &config.Enabled, &config.RuleVersion, &config.GiftPrice, &config.TargetRTPPPM, &config.PoolRatePPM,
|
if err := scanner.Scan(&config.AppCode, &config.GiftID, &config.Enabled, &config.RuleVersion, &config.GiftPrice, &config.TargetRTPPPM, &config.PoolRatePPM,
|
||||||
&config.GlobalWindowDraws, &config.GiftWindowDraws, &config.NoviceDrawLimit, &config.IntermediateDrawLimit,
|
&config.GlobalWindowDraws, &config.GiftWindowDraws, &config.NoviceDrawLimit, &config.IntermediateDrawLimit,
|
||||||
&config.HighMultiplier, &config.HighWaterPoolMultiple, &config.PlatformPoolWeightPPM, &config.RoomPoolWeightPPM,
|
&config.HighMultiplier, &config.HighWaterPoolMultiple, &config.PlatformPoolWeightPPM, &config.RoomPoolWeightPPM,
|
||||||
&config.GiftPoolWeightPPM, &config.InitialPlatformPool, &config.InitialGiftPool, &config.InitialRoomPool,
|
&config.GiftPoolWeightPPM, &config.InitialPlatformPool, &config.InitialGiftPool, &config.InitialRoomPool,
|
||||||
@ -654,17 +704,14 @@ func (r *Repository) getLuckyGiftConfig(ctx context.Context, q luckyQueryer, app
|
|||||||
&config.RoomAtmosphereRatePPM, &config.RoomAtmosphereInitial, &config.RoomAtmosphereReserve,
|
&config.RoomAtmosphereRatePPM, &config.RoomAtmosphereInitial, &config.RoomAtmosphereReserve,
|
||||||
&config.ActivityBudget, &config.ActivityDailyLimit, &config.LargeTierEnabled,
|
&config.ActivityBudget, &config.ActivityDailyLimit, &config.LargeTierEnabled,
|
||||||
&tiersJSON, &config.UpdatedByAdminID, &config.CreatedAtMS, &config.UpdatedAtMS); err != nil {
|
&tiersJSON, &config.UpdatedByAdminID, &config.CreatedAtMS, &config.UpdatedAtMS); err != nil {
|
||||||
if errors.Is(err, sql.ErrNoRows) {
|
return domain.Config{}, err
|
||||||
return domain.Config{}, false, nil
|
|
||||||
}
|
|
||||||
return domain.Config{}, false, err
|
|
||||||
}
|
}
|
||||||
if err := json.Unmarshal([]byte(tiersJSON), &config.Tiers); err != nil {
|
if err := json.Unmarshal([]byte(tiersJSON), &config.Tiers); err != nil {
|
||||||
return domain.Config{}, false, err
|
return domain.Config{}, err
|
||||||
}
|
}
|
||||||
config.PoolID = config.GiftID
|
config.PoolID = config.GiftID
|
||||||
config.MultiplierPPMs = luckyMultiplierPPMsFromTiers(config.Tiers, config.GiftPrice)
|
config.MultiplierPPMs = luckyMultiplierPPMsFromTiers(config.Tiers, config.GiftPrice)
|
||||||
return config, true, nil
|
return config, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Repository) getLuckyUserPaidDraws(ctx context.Context, appCode string, userID int64, giftID string) (int64, error) {
|
func (r *Repository) getLuckyUserPaidDraws(ctx context.Context, appCode string, userID int64, giftID string) (int64, error) {
|
||||||
|
|||||||
@ -95,6 +95,19 @@ func (s *AdminLuckyGiftServer) UpsertLuckyGiftConfig(ctx context.Context, req *a
|
|||||||
return &activityv1.UpsertLuckyGiftConfigResponse{Config: luckyConfigToProto(updated)}, nil
|
return &activityv1.UpsertLuckyGiftConfigResponse{Config: luckyConfigToProto(updated)}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *AdminLuckyGiftServer) ListLuckyGiftConfigs(ctx context.Context, req *activityv1.ListLuckyGiftConfigsRequest) (*activityv1.ListLuckyGiftConfigsResponse, error) {
|
||||||
|
ctx = appcode.WithContext(ctx, req.GetMeta().GetAppCode())
|
||||||
|
configs, err := s.svc.ListConfigs(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return nil, xerr.ToGRPCError(err)
|
||||||
|
}
|
||||||
|
resp := &activityv1.ListLuckyGiftConfigsResponse{Configs: make([]*activityv1.LuckyGiftConfig, 0, len(configs))}
|
||||||
|
for _, config := range configs {
|
||||||
|
resp.Configs = append(resp.Configs, luckyConfigToProto(config))
|
||||||
|
}
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *AdminLuckyGiftServer) ListLuckyGiftDraws(ctx context.Context, req *activityv1.ListLuckyGiftDrawsRequest) (*activityv1.ListLuckyGiftDrawsResponse, error) {
|
func (s *AdminLuckyGiftServer) ListLuckyGiftDraws(ctx context.Context, req *activityv1.ListLuckyGiftDrawsRequest) (*activityv1.ListLuckyGiftDrawsResponse, error) {
|
||||||
ctx = appcode.WithContext(ctx, req.GetMeta().GetAppCode())
|
ctx = appcode.WithContext(ctx, req.GetMeta().GetAppCode())
|
||||||
draws, total, err := s.svc.ListDraws(ctx, domain.DrawQuery{
|
draws, total, err := s.svc.ListDraws(ctx, domain.DrawQuery{
|
||||||
|
|||||||
@ -62,11 +62,7 @@ func (c leaderccAdapterConfig) TokenTTL() time.Duration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Service) handleLeaderCCOperation(ctx context.Context, app string, platform gamedomain.Platform, req *gamev1.CallbackRequest, operation string, requestHash string) ([]byte, string, string, bool, string, error) {
|
func (s *Service) handleLeaderCCOperation(ctx context.Context, app string, platform gamedomain.Platform, req *gamev1.CallbackRequest, operation string, requestHash string) ([]byte, string, string, bool, string, error) {
|
||||||
// 灵仙是明文 JSON + MD5 签名,所以先做 IP 白名单,再进入具体接口校验签名。
|
// 灵仙不做 IP 白名单过滤,来源校验只依赖每个接口的 MD5 签名和 token/session 绑定。
|
||||||
if !callbackIPAllowed(req, platform.CallbackIPWhitelist) {
|
|
||||||
raw, contentType := leaderccJSON(leaderccCodeRiskRejected, "ip forbidden", map[string]any{})
|
|
||||||
return raw, contentType, strconv.Itoa(leaderccCodeRiskRejected), false, "", nil
|
|
||||||
}
|
|
||||||
switch operation {
|
switch operation {
|
||||||
// operation 由统一 callback 路由传入,兼容不同命名可以减少网关层特殊分支。
|
// operation 由统一 callback 路由传入,兼容不同命名可以减少网关层特殊分支。
|
||||||
case "userinfo", "user_info", "get_user_info":
|
case "userinfo", "user_info", "get_user_info":
|
||||||
|
|||||||
@ -102,6 +102,7 @@ type LaunchCommand struct {
|
|||||||
GameID string
|
GameID string
|
||||||
Scene string
|
Scene string
|
||||||
RoomID string
|
RoomID string
|
||||||
|
AccessToken string
|
||||||
}
|
}
|
||||||
|
|
||||||
type LaunchResult struct {
|
type LaunchResult struct {
|
||||||
@ -183,7 +184,13 @@ func (s *Service) LaunchGame(ctx context.Context, command LaunchCommand) (Launch
|
|||||||
|
|
||||||
now := s.now()
|
now := s.now()
|
||||||
sessionID := "game_sess_" + strconv.FormatInt(now.UnixMilli(), 10) + "_" + randomHex(6)
|
sessionID := "game_sess_" + strconv.FormatInt(now.UnixMilli(), 10) + "_" + randomHex(6)
|
||||||
token := "gt_" + randomHex(24)
|
token := strings.TrimSpace(command.AccessToken)
|
||||||
|
if token == "" {
|
||||||
|
if strings.EqualFold(game.AdapterType, gamedomain.AdapterYomiV4) || strings.EqualFold(game.AdapterType, gamedomain.AdapterLeaderCCV1) {
|
||||||
|
return LaunchResult{}, xerr.New(xerr.InvalidArgument, "access token is required for provider game launch")
|
||||||
|
}
|
||||||
|
token = "gt_" + randomHex(24)
|
||||||
|
}
|
||||||
sessionTTL := s.config.LaunchSessionTTL
|
sessionTTL := s.config.LaunchSessionTTL
|
||||||
// 三方游戏会在 H5 运行期间持续回调 token;厂商适配器可以把默认 15 分钟启动 TTL 拉长。
|
// 三方游戏会在 H5 运行期间持续回调 token;厂商适配器可以把默认 15 分钟启动 TTL 拉长。
|
||||||
if strings.EqualFold(game.AdapterType, gamedomain.AdapterYomiV4) {
|
if strings.EqualFold(game.AdapterType, gamedomain.AdapterYomiV4) {
|
||||||
@ -542,6 +549,10 @@ func normalizeScene(scene string) string {
|
|||||||
|
|
||||||
func buildLaunchURL(game gamedomain.LaunchableGame, session gamedomain.LaunchSession, token string) (string, error) {
|
func buildLaunchURL(game gamedomain.LaunchableGame, session gamedomain.LaunchSession, token string) (string, error) {
|
||||||
base := strings.TrimSpace(game.APIBaseURL)
|
base := strings.TrimSpace(game.APIBaseURL)
|
||||||
|
if strings.EqualFold(game.AdapterType, gamedomain.AdapterLeaderCCV1) && base == "" {
|
||||||
|
// 灵仙当前只需要我们提供回调域名和接口,不要求服务端拼 H5/Auth URL。
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
if base == "" {
|
if base == "" {
|
||||||
// demo 平台可以没有真实厂商域名,保留本地默认地址用于开发自测。
|
// demo 平台可以没有真实厂商域名,保留本地默认地址用于开发自测。
|
||||||
base = "https://game.example.local/h5"
|
base = "https://game.example.local/h5"
|
||||||
|
|||||||
@ -91,6 +91,7 @@ func TestLaunchGameBuildsYomiAuthURL(t *testing.T) {
|
|||||||
DisplayUserID: "420001",
|
DisplayUserID: "420001",
|
||||||
GameID: "yomi_fish_001",
|
GameID: "yomi_fish_001",
|
||||||
RoomID: "room_1",
|
RoomID: "room_1",
|
||||||
|
AccessToken: "app_access_token_yomi",
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("LaunchGame failed: %v", err)
|
t.Fatalf("LaunchGame failed: %v", err)
|
||||||
@ -98,7 +99,7 @@ func TestLaunchGameBuildsYomiAuthURL(t *testing.T) {
|
|||||||
if result.ExpiresAtMS != 1700086400000 {
|
if result.ExpiresAtMS != 1700086400000 {
|
||||||
t.Fatalf("yomi launch must use adapter token ttl, got %+v", result)
|
t.Fatalf("yomi launch must use adapter token ttl, got %+v", result)
|
||||||
}
|
}
|
||||||
for _, part := range []string{"gameUid=33", "platUserId=42", "lang=en", "gameLevelUid=0", "platRoomId=room_1", "platAuthCode=gt_"} {
|
for _, part := range []string{"gameUid=33", "platUserId=42", "lang=en", "gameLevelUid=0", "platRoomId=room_1", "platAuthCode=app_access_token_yomi"} {
|
||||||
if !strings.Contains(result.LaunchURL, part) {
|
if !strings.Contains(result.LaunchURL, part) {
|
||||||
t.Fatalf("yomi launch url missing %s: %s", part, result.LaunchURL)
|
t.Fatalf("yomi launch url missing %s: %s", part, result.LaunchURL)
|
||||||
}
|
}
|
||||||
@ -132,6 +133,7 @@ func TestLaunchGameBuildsLeaderCCURL(t *testing.T) {
|
|||||||
DisplayUserID: "420001",
|
DisplayUserID: "420001",
|
||||||
GameID: "lingxian_rocket_001",
|
GameID: "lingxian_rocket_001",
|
||||||
RoomID: "room_1",
|
RoomID: "room_1",
|
||||||
|
AccessToken: "app_access_token_lingxian",
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("LaunchGame failed: %v", err)
|
t.Fatalf("LaunchGame failed: %v", err)
|
||||||
@ -139,13 +141,47 @@ func TestLaunchGameBuildsLeaderCCURL(t *testing.T) {
|
|||||||
if result.ExpiresAtMS != 1700086400000 {
|
if result.ExpiresAtMS != 1700086400000 {
|
||||||
t.Fatalf("leadercc launch must use adapter token ttl, got %+v", result)
|
t.Fatalf("leadercc launch must use adapter token ttl, got %+v", result)
|
||||||
}
|
}
|
||||||
for _, part := range []string{"uid=420001", "token=gt_", "lang=zh-CN", "roomid=room_1"} {
|
for _, part := range []string{"uid=420001", "token=app_access_token_lingxian", "lang=zh-CN", "roomid=room_1"} {
|
||||||
if !strings.Contains(result.LaunchURL, part) {
|
if !strings.Contains(result.LaunchURL, part) {
|
||||||
t.Fatalf("leadercc launch url missing %s: %s", part, result.LaunchURL)
|
t.Fatalf("leadercc launch url missing %s: %s", part, result.LaunchURL)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLaunchGameAllowsLeaderCCWithoutLaunchURL(t *testing.T) {
|
||||||
|
repo := &fakeRepository{
|
||||||
|
launchable: gamedomain.LaunchableGame{
|
||||||
|
CatalogItem: gamedomain.CatalogItem{
|
||||||
|
AppCode: "lalu",
|
||||||
|
GameID: "lingxian_rocket_001",
|
||||||
|
PlatformCode: "lingxian",
|
||||||
|
ProviderGameID: "101",
|
||||||
|
GameName: "Rocket",
|
||||||
|
Status: gamedomain.StatusActive,
|
||||||
|
},
|
||||||
|
PlatformStatus: gamedomain.StatusActive,
|
||||||
|
AdapterType: gamedomain.AdapterLeaderCCV1,
|
||||||
|
AdapterConfigJSON: `{"token_ttl_seconds":86400}`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
svc := New(Config{LaunchSessionTTL: 15 * time.Minute}, repo, &fakeWallet{}, &fakeUser{})
|
||||||
|
svc.now = func() time.Time { return time.UnixMilli(1700000000000) }
|
||||||
|
|
||||||
|
result, err := svc.LaunchGame(context.Background(), LaunchCommand{
|
||||||
|
AppCode: "lalu",
|
||||||
|
UserID: 42,
|
||||||
|
DisplayUserID: "420001",
|
||||||
|
GameID: "lingxian_rocket_001",
|
||||||
|
AccessToken: "app_access_token_lingxian",
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("LaunchGame failed: %v", err)
|
||||||
|
}
|
||||||
|
if result.LaunchURL != "" || repo.session.LaunchTokenHash != stableHash("app_access_token_lingxian") {
|
||||||
|
t.Fatalf("leadercc without launch url should only create session: result=%+v session=%+v", result, repo.session)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestHandleLeaderCCUserInfoValidatesSignAndToken(t *testing.T) {
|
func TestHandleLeaderCCUserInfoValidatesSignAndToken(t *testing.T) {
|
||||||
key := "leadercc-test-key"
|
key := "leadercc-test-key"
|
||||||
token := "gt_lingxian_token"
|
token := "gt_lingxian_token"
|
||||||
@ -181,7 +217,7 @@ func TestHandleLeaderCCUserInfoValidatesSignAndToken(t *testing.T) {
|
|||||||
PlatformCode: "lingxian",
|
PlatformCode: "lingxian",
|
||||||
Operation: "userinfo",
|
Operation: "userinfo",
|
||||||
RawBody: []byte(`{"gameId":"101","uid":"420001","token":"` + token + `","roomId":"room_1","sign":"` + sign + `"}`),
|
RawBody: []byte(`{"gameId":"101","uid":"420001","token":"` + token + `","roomId":"room_1","sign":"` + sign + `"}`),
|
||||||
RemoteAddr: "3.1.174.194:443",
|
RemoteAddr: "203.0.113.10:443",
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("HandleCallback failed: %v", err)
|
t.Fatalf("HandleCallback failed: %v", err)
|
||||||
|
|||||||
@ -57,6 +57,7 @@ func (s *Server) LaunchGame(ctx context.Context, req *gamev1.LaunchGameRequest)
|
|||||||
GameID: req.GetGameId(),
|
GameID: req.GetGameId(),
|
||||||
Scene: req.GetScene(),
|
Scene: req.GetScene(),
|
||||||
RoomID: req.GetRoomId(),
|
RoomID: req.GetRoomId(),
|
||||||
|
AccessToken: req.GetAccessToken(),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerr.ToGRPCError(err)
|
return nil, xerr.ToGRPCError(err)
|
||||||
|
|||||||
@ -13,6 +13,7 @@ type UserAuthClient interface {
|
|||||||
LoginPassword(ctx context.Context, req *userv1.LoginPasswordRequest) (*userv1.AuthResponse, error)
|
LoginPassword(ctx context.Context, req *userv1.LoginPasswordRequest) (*userv1.AuthResponse, error)
|
||||||
LoginThirdParty(ctx context.Context, req *userv1.LoginThirdPartyRequest) (*userv1.AuthResponse, error)
|
LoginThirdParty(ctx context.Context, req *userv1.LoginThirdPartyRequest) (*userv1.AuthResponse, error)
|
||||||
SetPassword(ctx context.Context, req *userv1.SetPasswordRequest) (*userv1.SetPasswordResponse, error)
|
SetPassword(ctx context.Context, req *userv1.SetPasswordRequest) (*userv1.SetPasswordResponse, error)
|
||||||
|
QuickCreateAccount(ctx context.Context, req *userv1.QuickCreateAccountRequest) (*userv1.QuickCreateAccountResponse, error)
|
||||||
RefreshToken(ctx context.Context, req *userv1.RefreshTokenRequest) (*userv1.RefreshTokenResponse, error)
|
RefreshToken(ctx context.Context, req *userv1.RefreshTokenRequest) (*userv1.RefreshTokenResponse, error)
|
||||||
Logout(ctx context.Context, req *userv1.LogoutRequest) (*userv1.LogoutResponse, error)
|
Logout(ctx context.Context, req *userv1.LogoutRequest) (*userv1.LogoutResponse, error)
|
||||||
RecordLoginBlocked(ctx context.Context, req *userv1.RecordLoginBlockedRequest) (*userv1.RecordLoginBlockedResponse, error)
|
RecordLoginBlocked(ctx context.Context, req *userv1.RecordLoginBlockedRequest) (*userv1.RecordLoginBlockedResponse, error)
|
||||||
@ -177,6 +178,10 @@ func (c *grpcUserAuthClient) SetPassword(ctx context.Context, req *userv1.SetPas
|
|||||||
return c.client.SetPassword(ctx, req)
|
return c.client.SetPassword(ctx, req)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *grpcUserAuthClient) QuickCreateAccount(ctx context.Context, req *userv1.QuickCreateAccountRequest) (*userv1.QuickCreateAccountResponse, error) {
|
||||||
|
return c.client.QuickCreateAccount(ctx, req)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *grpcUserAuthClient) RefreshToken(ctx context.Context, req *userv1.RefreshTokenRequest) (*userv1.RefreshTokenResponse, error) {
|
func (c *grpcUserAuthClient) RefreshToken(ctx context.Context, req *userv1.RefreshTokenRequest) (*userv1.RefreshTokenResponse, error) {
|
||||||
return c.client.RefreshToken(ctx, req)
|
return c.client.RefreshToken(ctx, req)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,11 +5,13 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/netip"
|
"net/netip"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
userv1 "hyapp.local/api/proto/user/v1"
|
userv1 "hyapp.local/api/proto/user/v1"
|
||||||
"hyapp/pkg/appcode"
|
"hyapp/pkg/appcode"
|
||||||
|
"hyapp/pkg/idgen"
|
||||||
"hyapp/services/gateway-service/internal/auth"
|
"hyapp/services/gateway-service/internal/auth"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -31,6 +33,16 @@ type authTokenData struct {
|
|||||||
OnboardingStatus string `json:"onboarding_status"`
|
OnboardingStatus string `json:"onboarding_status"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// quickCreateAccountData 直接把联调最关心的 uid/token 放到顶层,token 内仍保留标准登录响应。
|
||||||
|
type quickCreateAccountData struct {
|
||||||
|
UID string `json:"uid"`
|
||||||
|
Account string `json:"account"`
|
||||||
|
AccessToken string `json:"access_token"`
|
||||||
|
RefreshToken string `json:"refresh_token,omitempty"`
|
||||||
|
PasswordSet bool `json:"password_set"`
|
||||||
|
Token authTokenData `json:"token"`
|
||||||
|
}
|
||||||
|
|
||||||
// loginPassword 处理账号密码登录;账号就是当前有效短号。
|
// loginPassword 处理账号密码登录;账号就是当前有效短号。
|
||||||
func (h *Handler) loginPassword(writer http.ResponseWriter, request *http.Request) {
|
func (h *Handler) loginPassword(writer http.ResponseWriter, request *http.Request) {
|
||||||
var body struct {
|
var body struct {
|
||||||
@ -78,6 +90,126 @@ func (h *Handler) loginPassword(writer http.ResponseWriter, request *http.Reques
|
|||||||
httpkit.WriteOK(writer, request, authData(resp.GetToken(), nil))
|
httpkit.WriteOK(writer, request, authData(resp.GetToken(), nil))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// quickCreateAccount 为游戏厂商联调快速创建一个完整账号;返回 uid 即 App 登录账号和游戏 uid。
|
||||||
|
func (h *Handler) quickCreateAccount(writer http.ResponseWriter, request *http.Request) {
|
||||||
|
var body struct {
|
||||||
|
Password string `json:"password"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
Avatar string `json:"avatar"`
|
||||||
|
Gender string `json:"gender"`
|
||||||
|
Country string `json:"country"`
|
||||||
|
InviteCode string `json:"invite_code"`
|
||||||
|
DeviceID string `json:"device_id"`
|
||||||
|
Device string `json:"device"`
|
||||||
|
OSVersion string `json:"os_version"`
|
||||||
|
Birth string `json:"birth"`
|
||||||
|
AppVersion string `json:"app_version"`
|
||||||
|
BuildNumber string `json:"build_number"`
|
||||||
|
Source string `json:"source"`
|
||||||
|
InstallChannel string `json:"install_channel"`
|
||||||
|
Campaign string `json:"campaign"`
|
||||||
|
Platform string `json:"platform"`
|
||||||
|
Language string `json:"language"`
|
||||||
|
Timezone string `json:"timezone"`
|
||||||
|
}
|
||||||
|
if !decode(writer, request, &body) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
body.Password = strings.TrimSpace(body.Password)
|
||||||
|
if body.Password == "" {
|
||||||
|
httpkit.WriteError(writer, request, http.StatusBadRequest, httpkit.CodeInvalidArgument, "invalid argument")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 默认值全部保持可落库、可登录、可过 user-service 资料校验;调用方仍可按需覆盖。
|
||||||
|
if strings.TrimSpace(body.Username) == "" {
|
||||||
|
body.Username = "quick_" + strconv.FormatInt(time.Now().UnixMilli(), 10)
|
||||||
|
}
|
||||||
|
if strings.TrimSpace(body.Avatar) == "" {
|
||||||
|
body.Avatar = "https://cdn.example.com/avatar/default.png"
|
||||||
|
}
|
||||||
|
if strings.TrimSpace(body.Gender) == "" {
|
||||||
|
body.Gender = "unknown"
|
||||||
|
}
|
||||||
|
if strings.TrimSpace(body.Country) == "" {
|
||||||
|
body.Country = "SG"
|
||||||
|
}
|
||||||
|
if strings.TrimSpace(body.DeviceID) == "" {
|
||||||
|
body.DeviceID = idgen.New("quick_device")
|
||||||
|
}
|
||||||
|
if strings.TrimSpace(body.Platform) == "" {
|
||||||
|
body.Platform = "android"
|
||||||
|
}
|
||||||
|
if strings.TrimSpace(body.Language) == "" {
|
||||||
|
body.Language = "zh-CN"
|
||||||
|
}
|
||||||
|
if strings.TrimSpace(body.Timezone) == "" {
|
||||||
|
body.Timezone = "Asia/Shanghai"
|
||||||
|
}
|
||||||
|
if strings.TrimSpace(body.Source) == "" {
|
||||||
|
body.Source = "quick_account"
|
||||||
|
}
|
||||||
|
if strings.TrimSpace(body.InstallChannel) == "" {
|
||||||
|
body.InstallChannel = "game_integration"
|
||||||
|
}
|
||||||
|
|
||||||
|
if !h.allowPublicAuthRequest(writer, request, authRateInput{
|
||||||
|
operation: authOperationThirdParty,
|
||||||
|
deviceID: body.DeviceID,
|
||||||
|
provider: "quick_account",
|
||||||
|
}) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !h.allowLoginRisk(writer, request, loginRiskInput{
|
||||||
|
Channel: "quick_account",
|
||||||
|
Platform: body.Platform,
|
||||||
|
Language: body.Language,
|
||||||
|
Timezone: body.Timezone,
|
||||||
|
}) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if h.userClient == nil {
|
||||||
|
httpkit.WriteError(writer, request, http.StatusBadGateway, httpkit.CodeUpstreamError, "upstream service error")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
resp, err := h.userClient.QuickCreateAccount(request.Context(), &userv1.QuickCreateAccountRequest{
|
||||||
|
Meta: authRequestMetaWithLoginContext(request, body.DeviceID, body.Platform, body.Language, body.Timezone),
|
||||||
|
Password: body.Password,
|
||||||
|
Username: body.Username,
|
||||||
|
Avatar: body.Avatar,
|
||||||
|
Gender: body.Gender,
|
||||||
|
Country: body.Country,
|
||||||
|
InviteCode: body.InviteCode,
|
||||||
|
DeviceId: body.DeviceID,
|
||||||
|
Device: body.Device,
|
||||||
|
OsVersion: body.OSVersion,
|
||||||
|
Birth: body.Birth,
|
||||||
|
AppVersion: body.AppVersion,
|
||||||
|
BuildNumber: body.BuildNumber,
|
||||||
|
Source: body.Source,
|
||||||
|
InstallChannel: body.InstallChannel,
|
||||||
|
Campaign: body.Campaign,
|
||||||
|
Platform: body.Platform,
|
||||||
|
Language: body.Language,
|
||||||
|
Timezone: body.Timezone,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
httpkit.WriteRPCError(writer, request, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
token := authData(resp.GetToken(), nil)
|
||||||
|
httpkit.WriteOK(writer, request, quickCreateAccountData{
|
||||||
|
UID: token.DisplayUserID,
|
||||||
|
Account: token.DisplayUserID,
|
||||||
|
AccessToken: token.AccessToken,
|
||||||
|
RefreshToken: token.RefreshToken,
|
||||||
|
PasswordSet: resp.GetPasswordSet(),
|
||||||
|
Token: token,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// loginThirdParty 处理三方登录即注册。
|
// loginThirdParty 处理三方登录即注册。
|
||||||
func (h *Handler) loginThirdParty(writer http.ResponseWriter, request *http.Request) {
|
func (h *Handler) loginThirdParty(writer http.ResponseWriter, request *http.Request) {
|
||||||
var body struct {
|
var body struct {
|
||||||
|
|||||||
@ -64,8 +64,9 @@ func TestLaunchGameForwardsDisplayUserID(t *testing.T) {
|
|||||||
handler := NewHandlerWithClients(&fakeRoomClient{}, nil, nil, &fakeUserProfileClient{})
|
handler := NewHandlerWithClients(&fakeRoomClient{}, nil, nil, &fakeUserProfileClient{})
|
||||||
handler.SetGameClient(gameClient)
|
handler.SetGameClient(gameClient)
|
||||||
router := handler.Routes(auth.NewVerifier("secret"))
|
router := handler.Routes(auth.NewVerifier("secret"))
|
||||||
|
accessToken := signGatewayToken(t, "secret", 42)
|
||||||
request := httptest.NewRequest(http.MethodPost, "/api/v1/games/demo_rocket_001/launch", bytes.NewReader([]byte(`{"scene":"voice_room","room_id":"room-1"}`)))
|
request := httptest.NewRequest(http.MethodPost, "/api/v1/games/demo_rocket_001/launch", bytes.NewReader([]byte(`{"scene":"voice_room","room_id":"room-1"}`)))
|
||||||
request.Header.Set("Authorization", "Bearer "+signGatewayToken(t, "secret", 42))
|
request.Header.Set("Authorization", "Bearer "+accessToken)
|
||||||
recorder := httptest.NewRecorder()
|
recorder := httptest.NewRecorder()
|
||||||
|
|
||||||
router.ServeHTTP(recorder, request)
|
router.ServeHTTP(recorder, request)
|
||||||
@ -73,7 +74,7 @@ func TestLaunchGameForwardsDisplayUserID(t *testing.T) {
|
|||||||
if recorder.Code != http.StatusOK {
|
if recorder.Code != http.StatusOK {
|
||||||
t.Fatalf("status mismatch: got %d body=%s", recorder.Code, recorder.Body.String())
|
t.Fatalf("status mismatch: got %d body=%s", recorder.Code, recorder.Body.String())
|
||||||
}
|
}
|
||||||
if gameClient.lastLaunch.GetGameId() != "demo_rocket_001" || gameClient.lastLaunch.GetDisplayUserId() != "100001" || gameClient.lastLaunch.GetRoomId() != "room-1" {
|
if gameClient.lastLaunch.GetGameId() != "demo_rocket_001" || gameClient.lastLaunch.GetDisplayUserId() != "100001" || gameClient.lastLaunch.GetRoomId() != "room-1" || gameClient.lastLaunch.GetAccessToken() != accessToken {
|
||||||
t.Fatalf("LaunchGame request mismatch: %+v", gameClient.lastLaunch)
|
t.Fatalf("LaunchGame request mismatch: %+v", gameClient.lastLaunch)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,6 +73,7 @@ func (h *Handler) launchGame(writer http.ResponseWriter, request *http.Request)
|
|||||||
GameId: gameID,
|
GameId: gameID,
|
||||||
Scene: body.Scene,
|
Scene: body.Scene,
|
||||||
RoomId: body.RoomID,
|
RoomId: body.RoomID,
|
||||||
|
AccessToken: bearerAccessToken(request),
|
||||||
})
|
})
|
||||||
httpkit.Write(writer, request, gameLaunchDataFromProto(resp), err)
|
httpkit.Write(writer, request, gameLaunchDataFromProto(resp), err)
|
||||||
}
|
}
|
||||||
@ -132,6 +133,14 @@ func requestLanguage(request *http.Request) string {
|
|||||||
return strings.TrimSpace(value)
|
return strings.TrimSpace(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func bearerAccessToken(request *http.Request) string {
|
||||||
|
header := strings.TrimSpace(request.Header.Get("Authorization"))
|
||||||
|
if !strings.HasPrefix(header, "Bearer ") {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return strings.TrimSpace(strings.TrimPrefix(header, "Bearer "))
|
||||||
|
}
|
||||||
|
|
||||||
func flattenedHeaders(request *http.Request) map[string]string {
|
func flattenedHeaders(request *http.Request) map[string]string {
|
||||||
headers := make(map[string]string, len(request.Header))
|
headers := make(map[string]string, len(request.Header))
|
||||||
for key, values := range request.Header {
|
for key, values := range request.Header {
|
||||||
|
|||||||
@ -29,11 +29,12 @@ type Config struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type AuthHandlers struct {
|
type AuthHandlers struct {
|
||||||
LoginPassword http.HandlerFunc
|
LoginPassword http.HandlerFunc
|
||||||
SetPassword http.HandlerFunc
|
SetPassword http.HandlerFunc
|
||||||
LoginThirdParty http.HandlerFunc
|
QuickCreateAccount http.HandlerFunc
|
||||||
RefreshToken http.HandlerFunc
|
LoginThirdParty http.HandlerFunc
|
||||||
Logout http.HandlerFunc
|
RefreshToken http.HandlerFunc
|
||||||
|
Logout http.HandlerFunc
|
||||||
}
|
}
|
||||||
|
|
||||||
type AppHandlers struct {
|
type AppHandlers struct {
|
||||||
@ -220,6 +221,7 @@ func (r routes) registerAuthRoutes() {
|
|||||||
h := r.config.Auth
|
h := r.config.Auth
|
||||||
r.public("/auth/account/login", "", h.LoginPassword)
|
r.public("/auth/account/login", "", h.LoginPassword)
|
||||||
r.auth("/auth/password/set", "", h.SetPassword)
|
r.auth("/auth/password/set", "", h.SetPassword)
|
||||||
|
r.public("/auth/account/quick-create", http.MethodPost, h.QuickCreateAccount)
|
||||||
r.public("/auth/third-party/login", "", h.LoginThirdParty)
|
r.public("/auth/third-party/login", "", h.LoginThirdParty)
|
||||||
r.public("/auth/token/refresh", "", h.RefreshToken)
|
r.public("/auth/token/refresh", "", h.RefreshToken)
|
||||||
r.public("/auth/logout", "", h.Logout)
|
r.public("/auth/logout", "", h.Logout)
|
||||||
|
|||||||
@ -236,6 +236,7 @@ type fakeUserAuthClient struct {
|
|||||||
lastLoginThirdParty *userv1.LoginThirdPartyRequest
|
lastLoginThirdParty *userv1.LoginThirdPartyRequest
|
||||||
lastLoginPassword *userv1.LoginPasswordRequest
|
lastLoginPassword *userv1.LoginPasswordRequest
|
||||||
lastSetPassword *userv1.SetPasswordRequest
|
lastSetPassword *userv1.SetPasswordRequest
|
||||||
|
lastQuickCreate *userv1.QuickCreateAccountRequest
|
||||||
lastRefresh *userv1.RefreshTokenRequest
|
lastRefresh *userv1.RefreshTokenRequest
|
||||||
lastLogout *userv1.LogoutRequest
|
lastLogout *userv1.LogoutRequest
|
||||||
lastBlocked *userv1.RecordLoginBlockedRequest
|
lastBlocked *userv1.RecordLoginBlockedRequest
|
||||||
@ -445,6 +446,21 @@ func (f *fakeUserAuthClient) SetPassword(_ context.Context, req *userv1.SetPassw
|
|||||||
return &userv1.SetPasswordResponse{PasswordSet: true}, nil
|
return &userv1.SetPasswordResponse{PasswordSet: true}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *fakeUserAuthClient) QuickCreateAccount(_ context.Context, req *userv1.QuickCreateAccountRequest) (*userv1.QuickCreateAccountResponse, error) {
|
||||||
|
f.lastQuickCreate = req
|
||||||
|
return &userv1.QuickCreateAccountResponse{Token: &userv1.AuthToken{
|
||||||
|
UserId: 10001,
|
||||||
|
DisplayUserId: "100001",
|
||||||
|
SessionId: "sess-quick",
|
||||||
|
AccessToken: "access-quick",
|
||||||
|
RefreshToken: "refresh-quick",
|
||||||
|
ExpiresInSec: 1800,
|
||||||
|
TokenType: "Bearer",
|
||||||
|
ProfileCompleted: true,
|
||||||
|
OnboardingStatus: "completed",
|
||||||
|
}, PasswordSet: true}, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (f *fakeUserAuthClient) RefreshToken(_ context.Context, req *userv1.RefreshTokenRequest) (*userv1.RefreshTokenResponse, error) {
|
func (f *fakeUserAuthClient) RefreshToken(_ context.Context, req *userv1.RefreshTokenRequest) (*userv1.RefreshTokenResponse, error) {
|
||||||
f.lastRefresh = req
|
f.lastRefresh = req
|
||||||
f.refreshCount++
|
f.refreshCount++
|
||||||
@ -2563,6 +2579,50 @@ func TestAccountLoginAcceptsAccountField(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestQuickCreateAccountCreatesCompletedPasswordAccount(t *testing.T) {
|
||||||
|
userClient := &fakeUserAuthClient{}
|
||||||
|
router := NewHandler(&fakeRoomClient{}, userClient).Routes(auth.NewVerifier("secret"))
|
||||||
|
body := []byte(`{"password":"secret-pass"}`)
|
||||||
|
request := httptest.NewRequest(http.MethodPost, "/api/v1/auth/account/quick-create", bytes.NewReader(body))
|
||||||
|
request.Header.Set("X-Request-ID", "req-quick-create")
|
||||||
|
request.Header.Set("X-App-Code", "lalu")
|
||||||
|
recorder := httptest.NewRecorder()
|
||||||
|
|
||||||
|
router.ServeHTTP(recorder, request)
|
||||||
|
|
||||||
|
if recorder.Code != http.StatusOK {
|
||||||
|
t.Fatalf("status mismatch: got %d body=%s", recorder.Code, recorder.Body.String())
|
||||||
|
}
|
||||||
|
var response httpkit.ResponseEnvelope
|
||||||
|
if err := json.NewDecoder(recorder.Body).Decode(&response); err != nil {
|
||||||
|
t.Fatalf("decode response failed: %v", err)
|
||||||
|
}
|
||||||
|
if response.Code != httpkit.CodeOK || response.RequestID != assertGeneratedRequestID(t, recorder, "req-quick-create") {
|
||||||
|
t.Fatalf("unexpected envelope: %+v", response)
|
||||||
|
}
|
||||||
|
req := userClient.lastQuickCreate
|
||||||
|
if req == nil {
|
||||||
|
t.Fatal("QuickCreateAccount request was not sent")
|
||||||
|
}
|
||||||
|
if req.GetPassword() != "secret-pass" || req.GetUsername() == "" || req.GetAvatar() == "" {
|
||||||
|
t.Fatalf("quick create profile defaults were not populated: %+v", req)
|
||||||
|
}
|
||||||
|
if req.GetCountry() != "SG" || req.GetGender() != "unknown" || req.GetDeviceId() == "" {
|
||||||
|
t.Fatalf("quick create required defaults mismatch: %+v", req)
|
||||||
|
}
|
||||||
|
if req.GetPlatform() != "android" || req.GetLanguage() != "zh-CN" || req.GetTimezone() != "Asia/Shanghai" {
|
||||||
|
t.Fatalf("quick create login context mismatch: %+v", req)
|
||||||
|
}
|
||||||
|
if req.GetMeta().GetAppCode() != "lalu" || req.GetMeta().GetDeviceId() != req.GetDeviceId() {
|
||||||
|
t.Fatalf("quick create meta mismatch: %+v", req.GetMeta())
|
||||||
|
}
|
||||||
|
|
||||||
|
data, ok := response.Data.(map[string]any)
|
||||||
|
if !ok || data["uid"] != "100001" || data["account"] != "100001" || data["access_token"] != "access-quick" || data["password_set"] != true {
|
||||||
|
t.Fatalf("quick create response mismatch: %+v", response.Data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestLoginRiskFastGuardBlocksLanguage(t *testing.T) {
|
func TestLoginRiskFastGuardBlocksLanguage(t *testing.T) {
|
||||||
userClient := &fakeUserAuthClient{}
|
userClient := &fakeUserAuthClient{}
|
||||||
handler := NewHandler(&fakeRoomClient{}, userClient)
|
handler := NewHandler(&fakeRoomClient{}, userClient)
|
||||||
|
|||||||
@ -114,11 +114,12 @@ func (h *Handler) Routes(jwtVerifier *auth.Verifier) http.Handler {
|
|||||||
return h.profileAPIHandler(jwtVerifier, handler)
|
return h.profileAPIHandler(jwtVerifier, handler)
|
||||||
},
|
},
|
||||||
Auth: httproutes.AuthHandlers{
|
Auth: httproutes.AuthHandlers{
|
||||||
LoginPassword: h.loginPassword,
|
LoginPassword: h.loginPassword,
|
||||||
SetPassword: h.setPassword,
|
SetPassword: h.setPassword,
|
||||||
LoginThirdParty: h.loginThirdParty,
|
QuickCreateAccount: h.quickCreateAccount,
|
||||||
RefreshToken: h.refreshToken,
|
LoginThirdParty: h.loginThirdParty,
|
||||||
Logout: h.logout,
|
RefreshToken: h.refreshToken,
|
||||||
|
Logout: h.logout,
|
||||||
},
|
},
|
||||||
App: httproutes.AppHandlers{
|
App: httproutes.AppHandlers{
|
||||||
ListRegistrationCountries: userAPI.ListRegistrationCountries,
|
ListRegistrationCountries: userAPI.ListRegistrationCountries,
|
||||||
|
|||||||
119
services/user-service/internal/service/auth/quick_account.go
Normal file
119
services/user-service/internal/service/auth/quick_account.go
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
package auth
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"hyapp/pkg/appcode"
|
||||||
|
"hyapp/pkg/xerr"
|
||||||
|
authdomain "hyapp/services/user-service/internal/domain/auth"
|
||||||
|
invitedomain "hyapp/services/user-service/internal/domain/invite"
|
||||||
|
userdomain "hyapp/services/user-service/internal/domain/user"
|
||||||
|
)
|
||||||
|
|
||||||
|
// QuickCreateAccount 创建一个已完成资料、已设置密码、可立即登录的账号。
|
||||||
|
// 该能力只复用内部领域事务,不依赖 firebase/mock provider,方便游戏方联调时快速拿 uid/token。
|
||||||
|
func (s *Service) QuickCreateAccount(ctx context.Context, password string, registration authdomain.ThirdPartyRegistration, meta Meta) (authdomain.Token, error) {
|
||||||
|
meta.AppCode = appcode.Normalize(meta.AppCode)
|
||||||
|
registration.AppCode = meta.AppCode
|
||||||
|
registration = normalizeThirdPartyRegistration(registration, meta)
|
||||||
|
meta.Platform = registration.Platform
|
||||||
|
meta.Language = registration.Language
|
||||||
|
meta.Timezone = registration.Timezone
|
||||||
|
password = strings.TrimSpace(password)
|
||||||
|
if password == "" {
|
||||||
|
return authdomain.Token{}, xerr.New(xerr.InvalidArgument, "password is required")
|
||||||
|
}
|
||||||
|
if registration.DeviceID == "" || registration.Platform == "" {
|
||||||
|
// refresh session 必须绑定设备,平台也会进入注册来源和风控审计。
|
||||||
|
return authdomain.Token{}, xerr.New(xerr.InvalidArgument, "device_id and platform are required")
|
||||||
|
}
|
||||||
|
if registration.Username == "" || registration.Avatar == "" || registration.Gender == "" || registration.Country == "" {
|
||||||
|
// 快捷账号直接跳过 onboarding,因此必须一次性写齐客户端准入所需的最小资料。
|
||||||
|
return authdomain.Token{}, xerr.New(xerr.InvalidArgument, "username, avatar, gender and country are required")
|
||||||
|
}
|
||||||
|
if err := validateThirdPartyRegistration(registration); err != nil {
|
||||||
|
return authdomain.Token{}, err
|
||||||
|
}
|
||||||
|
if s.authRepository == nil {
|
||||||
|
return authdomain.Token{}, xerr.New(xerr.Unavailable, "auth repository is not configured")
|
||||||
|
}
|
||||||
|
|
||||||
|
registration, err := s.resolveRegistrationCountry(ctx, registration)
|
||||||
|
if err != nil {
|
||||||
|
return authdomain.Token{}, err
|
||||||
|
}
|
||||||
|
passwordHash, err := hashPassword(password)
|
||||||
|
if err != nil {
|
||||||
|
return authdomain.Token{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var lastErr error
|
||||||
|
for attempt := 0; attempt < s.allocateMaxAttempts; attempt++ {
|
||||||
|
user, displayIdentity := s.newUserWithIdentity(attempt)
|
||||||
|
user = applyThirdPartyRegistration(user, registration)
|
||||||
|
user.ProfileCompleted = true
|
||||||
|
user.ProfileCompletedAtMs = user.CreatedAtMs
|
||||||
|
user.OnboardingStatus = userdomain.OnboardingStatusCompleted
|
||||||
|
|
||||||
|
displayUserID, err := s.authRepository.AllocateDisplayUserID(ctx, registration.AppCode)
|
||||||
|
if err != nil {
|
||||||
|
return authdomain.Token{}, err
|
||||||
|
}
|
||||||
|
user.DefaultDisplayUserID = displayUserID
|
||||||
|
user.CurrentDisplayUserID = displayUserID
|
||||||
|
displayIdentity.AppCode = registration.AppCode
|
||||||
|
displayIdentity.DisplayUserID = displayUserID
|
||||||
|
displayIdentity.DefaultDisplayUserID = displayUserID
|
||||||
|
if !userdomain.ValidDisplayUserID(displayIdentity.DisplayUserID) {
|
||||||
|
// 分配器或历史种子异常时不写库,直接尝试下一个候选。
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
session, refreshToken, err := s.newSession(registration.AppCode, user.UserID, registration.DeviceID)
|
||||||
|
if err != nil {
|
||||||
|
return authdomain.Token{}, err
|
||||||
|
}
|
||||||
|
account := authdomain.PasswordAccount{
|
||||||
|
AppCode: registration.AppCode,
|
||||||
|
UserID: user.UserID,
|
||||||
|
DisplayUserID: displayUserID,
|
||||||
|
PasswordHash: passwordHash,
|
||||||
|
HashAlg: hashAlgBcrypt,
|
||||||
|
CreatedAtMs: user.CreatedAtMs,
|
||||||
|
UpdatedAtMs: user.UpdatedAtMs,
|
||||||
|
}
|
||||||
|
inviteBind := invitedomain.BindCommand{
|
||||||
|
AppCode: registration.AppCode,
|
||||||
|
InvitedUserID: user.UserID,
|
||||||
|
InvitedRegionID: registration.RegionID,
|
||||||
|
InviteCode: registration.InviteCode,
|
||||||
|
Source: "quick_account_creation",
|
||||||
|
RequestID: meta.RequestID,
|
||||||
|
BoundAtMs: user.CreatedAtMs,
|
||||||
|
}
|
||||||
|
err = s.authRepository.CreatePasswordUser(ctx, user, displayIdentity, account, session, inviteBind)
|
||||||
|
if err == nil {
|
||||||
|
s.audit(ctx, meta, user.UserID, loginPassword, "", resultSuccess, "")
|
||||||
|
token, tokenErr := s.issueToken(user, session.SessionID, refreshToken)
|
||||||
|
if tokenErr != nil {
|
||||||
|
return authdomain.Token{}, tokenErr
|
||||||
|
}
|
||||||
|
s.enqueueLoginIPRiskJob(ctx, meta, token, "account", registration.Platform, registration.Language, registration.Timezone)
|
||||||
|
return token, nil
|
||||||
|
}
|
||||||
|
if xerr.IsCode(err, xerr.DisplayUserIDExists) {
|
||||||
|
// 默认短号冲突可重试,避免少量并发建号把快捷入口打成失败。
|
||||||
|
lastErr = err
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
s.audit(ctx, meta, 0, loginPassword, "", resultFailed, string(xerr.CodeOf(err)))
|
||||||
|
return authdomain.Token{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if lastErr != nil {
|
||||||
|
s.audit(ctx, meta, 0, loginPassword, "", resultFailed, string(xerr.DisplayUserIDAllocateFailed))
|
||||||
|
}
|
||||||
|
return authdomain.Token{}, xerr.New(xerr.DisplayUserIDAllocateFailed, "display_user_id allocation failed")
|
||||||
|
}
|
||||||
@ -40,6 +40,8 @@ type AuthRepository interface {
|
|||||||
AllocateDisplayUserID(ctx context.Context, appCode string) (string, error)
|
AllocateDisplayUserID(ctx context.Context, appCode string) (string, error)
|
||||||
// SetPassword 为已有用户首次写入密码身份。
|
// SetPassword 为已有用户首次写入密码身份。
|
||||||
SetPassword(ctx context.Context, account authdomain.PasswordAccount) error
|
SetPassword(ctx context.Context, account authdomain.PasswordAccount) error
|
||||||
|
// CreatePasswordUser 原子创建用户、默认短号、密码身份和首个 session。
|
||||||
|
CreatePasswordUser(ctx context.Context, user userdomain.User, identity userdomain.Identity, account authdomain.PasswordAccount, session authdomain.Session, invite invitedomain.BindCommand) error
|
||||||
// FindPasswordByDisplayUserID 通过当前 active display_user_id 读取密码身份。
|
// FindPasswordByDisplayUserID 通过当前 active display_user_id 读取密码身份。
|
||||||
FindPasswordByDisplayUserID(ctx context.Context, displayUserID string, nowMs int64) (authdomain.PasswordAccount, error)
|
FindPasswordByDisplayUserID(ctx context.Context, displayUserID string, nowMs int64) (authdomain.PasswordAccount, error)
|
||||||
// CreateSession 创建新的 refresh session。
|
// CreateSession 创建新的 refresh session。
|
||||||
|
|||||||
@ -224,6 +224,51 @@ func TestThirdPartyUserSetsPasswordThenLogsIn(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestQuickCreateAccountCreatesCompletedPasswordLogin(t *testing.T) {
|
||||||
|
// 快捷建号必须一次性得到可登录短号、已完成资料快照和密码身份,服务游戏联调直接取 uid/token。
|
||||||
|
ctx := context.Background()
|
||||||
|
repository := mysqltest.NewRepository(t)
|
||||||
|
seedCountry(t, repository, "SG")
|
||||||
|
now := time.UnixMilli(2000)
|
||||||
|
svc := newAuthService(repository, &now, []int64{900011}, []string{"100011"})
|
||||||
|
|
||||||
|
token, err := svc.QuickCreateAccount(ctx, "secret-pass", authdomain.ThirdPartyRegistration{
|
||||||
|
Username: "Lingxian Test",
|
||||||
|
Avatar: "https://cdn.example/avatar.png",
|
||||||
|
Gender: "unknown",
|
||||||
|
Country: "SG",
|
||||||
|
DeviceID: "quick-dev",
|
||||||
|
Platform: "ios",
|
||||||
|
Language: "en-US",
|
||||||
|
Timezone: "Asia/Shanghai",
|
||||||
|
AppVersion: "1.0.0",
|
||||||
|
}, authservice.Meta{RequestID: "req-quick-create", AppCode: "lalu", ClientIP: "203.0.113.10", UserAgent: "quick-test/1.0"})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("QuickCreateAccount failed: %v", err)
|
||||||
|
}
|
||||||
|
if token.UserID != 900011 || token.DisplayUserID == "" || token.AccessToken == "" || token.RefreshToken == "" {
|
||||||
|
t.Fatalf("unexpected quick token: %+v", token)
|
||||||
|
}
|
||||||
|
if !token.ProfileCompleted || token.OnboardingStatus != string(userdomain.OnboardingStatusCompleted) {
|
||||||
|
t.Fatalf("quick account must be completed: %+v", token)
|
||||||
|
}
|
||||||
|
user, err := repository.GetUser(ctx, token.UserID)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("GetUser failed: %v", err)
|
||||||
|
}
|
||||||
|
if user.Username != "Lingxian Test" || user.Country != "SG" || !user.ProfileCompleted {
|
||||||
|
t.Fatalf("quick user profile mismatch: %+v", user)
|
||||||
|
}
|
||||||
|
|
||||||
|
loginToken, err := svc.LoginPassword(ctx, token.DisplayUserID, "secret-pass", "quick-dev", authservice.Meta{RequestID: "req-quick-login", AppCode: "lalu"})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("LoginPassword for quick account failed: %v", err)
|
||||||
|
}
|
||||||
|
if loginToken.UserID != token.UserID || loginToken.DisplayUserID != token.DisplayUserID || !loginToken.ProfileCompleted {
|
||||||
|
t.Fatalf("quick account login token mismatch: %+v", loginToken)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestRefreshTokenCarriesCompletedOnboardingStatus(t *testing.T) {
|
func TestRefreshTokenCarriesCompletedOnboardingStatus(t *testing.T) {
|
||||||
// gateway profile gate 依赖 access token 快照;refresh 必须在用户完成注册后带出最新状态。
|
// gateway profile gate 依赖 access token 快照;refresh 必须在用户完成注册后带出最新状态。
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|||||||
@ -7,7 +7,11 @@ import (
|
|||||||
"hyapp/pkg/appcode"
|
"hyapp/pkg/appcode"
|
||||||
"hyapp/pkg/xerr"
|
"hyapp/pkg/xerr"
|
||||||
authdomain "hyapp/services/user-service/internal/domain/auth"
|
authdomain "hyapp/services/user-service/internal/domain/auth"
|
||||||
|
invitedomain "hyapp/services/user-service/internal/domain/invite"
|
||||||
|
userdomain "hyapp/services/user-service/internal/domain/user"
|
||||||
identitystorage "hyapp/services/user-service/internal/storage/mysql/identity"
|
identitystorage "hyapp/services/user-service/internal/storage/mysql/identity"
|
||||||
|
invitestorage "hyapp/services/user-service/internal/storage/mysql/invite"
|
||||||
|
userstorage "hyapp/services/user-service/internal/storage/mysql/user"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (r *Repository) SetPassword(ctx context.Context, account authdomain.PasswordAccount) error {
|
func (r *Repository) SetPassword(ctx context.Context, account authdomain.PasswordAccount) error {
|
||||||
@ -24,6 +28,39 @@ func (r *Repository) SetPassword(ctx context.Context, account authdomain.Passwor
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CreatePasswordUser 原子创建完整密码账号,服务快捷建号和联调账号准备。
|
||||||
|
func (r *Repository) CreatePasswordUser(ctx context.Context, user userdomain.User, identity userdomain.Identity, account authdomain.PasswordAccount, session authdomain.Session, inviteBind invitedomain.BindCommand) error {
|
||||||
|
// 账号创建必须和默认短号、密码身份、refresh session 同事务提交,避免返回不可登录的 uid。
|
||||||
|
tx, err := r.db.BeginTx(ctx, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer tx.Rollback()
|
||||||
|
|
||||||
|
if err := userstorage.InsertUserIdentity(ctx, tx, user, identity); err != nil {
|
||||||
|
// 默认短号唯一键冲突交给 service 使用新 user_id/display_user_id 重试。
|
||||||
|
return mapAuthDuplicateError(err)
|
||||||
|
}
|
||||||
|
if _, err := invitestorage.EnsurePrimaryCodeForUser(ctx, tx, user.AppCode, user.UserID, user.CreatedAtMs); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if _, err := invitestorage.BindRelation(ctx, tx, inviteBind); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if _, err := tx.ExecContext(ctx, `
|
||||||
|
INSERT INTO password_accounts (app_code, user_id, password_hash, hash_alg, created_at_ms, updated_at_ms)
|
||||||
|
VALUES (?, ?, ?, ?, ?, ?)
|
||||||
|
`, appcode.Normalize(account.AppCode), account.UserID, account.PasswordHash, account.HashAlg, account.CreatedAtMs, account.UpdatedAtMs); err != nil {
|
||||||
|
return mapAuthDuplicateError(err)
|
||||||
|
}
|
||||||
|
if err := insertSession(ctx, tx, session); err != nil {
|
||||||
|
// session 写入失败时必须回滚用户和密码身份,否则客户端拿不到 refresh token 却占用账号。
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return tx.Commit()
|
||||||
|
}
|
||||||
|
|
||||||
// FindPasswordByDisplayUserID 通过当前 active display_user_id 查找用户密码身份。
|
// FindPasswordByDisplayUserID 通过当前 active display_user_id 查找用户密码身份。
|
||||||
|
|
||||||
func (r *Repository) FindPasswordByDisplayUserID(ctx context.Context, displayUserID string, nowMs int64) (authdomain.PasswordAccount, error) {
|
func (r *Repository) FindPasswordByDisplayUserID(ctx context.Context, displayUserID string, nowMs int64) (authdomain.PasswordAccount, error) {
|
||||||
|
|||||||
@ -241,6 +241,11 @@ func (r *Repository) SetPassword(ctx context.Context, account authdomain.Passwor
|
|||||||
return r.Repository.AuthRepository().SetPassword(ctx, account)
|
return r.Repository.AuthRepository().SetPassword(ctx, account)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CreatePasswordUser 让测试 wrapper 继续满足认证接口。
|
||||||
|
func (r *Repository) CreatePasswordUser(ctx context.Context, user userdomain.User, identity userdomain.Identity, account authdomain.PasswordAccount, session authdomain.Session, invite invitedomain.BindCommand) error {
|
||||||
|
return r.Repository.AuthRepository().CreatePasswordUser(ctx, user, identity, account, session, invite)
|
||||||
|
}
|
||||||
|
|
||||||
// FindPasswordByDisplayUserID 让测试 wrapper 继续满足认证接口。
|
// FindPasswordByDisplayUserID 让测试 wrapper 继续满足认证接口。
|
||||||
func (r *Repository) FindPasswordByDisplayUserID(ctx context.Context, displayUserID string, nowMs int64) (authdomain.PasswordAccount, error) {
|
func (r *Repository) FindPasswordByDisplayUserID(ctx context.Context, displayUserID string, nowMs int64) (authdomain.PasswordAccount, error) {
|
||||||
return r.Repository.AuthRepository().FindPasswordByDisplayUserID(ctx, displayUserID, nowMs)
|
return r.Repository.AuthRepository().FindPasswordByDisplayUserID(ctx, displayUserID, nowMs)
|
||||||
|
|||||||
@ -136,6 +136,37 @@ func (s *Server) SetPassword(ctx context.Context, req *userv1.SetPasswordRequest
|
|||||||
return &userv1.SetPasswordResponse{PasswordSet: true}, nil
|
return &userv1.SetPasswordResponse{PasswordSet: true}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// QuickCreateAccount 为游戏联调快速创建一个已完成资料且可密码登录的账号。
|
||||||
|
func (s *Server) QuickCreateAccount(ctx context.Context, req *userv1.QuickCreateAccountRequest) (*userv1.QuickCreateAccountResponse, error) {
|
||||||
|
ctx = contextWithApp(ctx, req.GetMeta())
|
||||||
|
registration := authdomain.ThirdPartyRegistration{
|
||||||
|
Username: req.GetUsername(),
|
||||||
|
Gender: req.GetGender(),
|
||||||
|
Country: req.GetCountry(),
|
||||||
|
InviteCode: req.GetInviteCode(),
|
||||||
|
IP: req.GetMeta().GetClientIp(),
|
||||||
|
DeviceID: req.GetDeviceId(),
|
||||||
|
Device: req.GetDevice(),
|
||||||
|
OSVersion: req.GetOsVersion(),
|
||||||
|
Avatar: req.GetAvatar(),
|
||||||
|
BirthDate: req.GetBirth(),
|
||||||
|
AppVersion: req.GetAppVersion(),
|
||||||
|
BuildNumber: req.GetBuildNumber(),
|
||||||
|
Source: req.GetSource(),
|
||||||
|
InstallChannel: req.GetInstallChannel(),
|
||||||
|
Campaign: req.GetCampaign(),
|
||||||
|
Platform: req.GetPlatform(),
|
||||||
|
Language: req.GetLanguage(),
|
||||||
|
Timezone: req.GetTimezone(),
|
||||||
|
}
|
||||||
|
token, err := s.authSvc.QuickCreateAccount(ctx, req.GetPassword(), registration, authMeta(req.GetMeta()))
|
||||||
|
if err != nil {
|
||||||
|
return nil, xerr.ToGRPCError(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &userv1.QuickCreateAccountResponse{Token: toProtoToken(token), PasswordSet: true}, nil
|
||||||
|
}
|
||||||
|
|
||||||
// RefreshToken 执行 refresh token 轮换。
|
// RefreshToken 执行 refresh token 轮换。
|
||||||
func (s *Server) RefreshToken(ctx context.Context, req *userv1.RefreshTokenRequest) (*userv1.RefreshTokenResponse, error) {
|
func (s *Server) RefreshToken(ctx context.Context, req *userv1.RefreshTokenRequest) (*userv1.RefreshTokenResponse, error) {
|
||||||
ctx = contextWithApp(ctx, req.GetMeta())
|
ctx = contextWithApp(ctx, req.GetMeta())
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user