feat: openid login
This commit is contained in:
+176
-292
@@ -7,13 +7,12 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
unsafe "unsafe"
|
||||
|
||||
_ "google.golang.org/genproto/googleapis/api/annotations"
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
unsafe "unsafe"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -83,195 +82,22 @@ func (x *Response) GetData() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
// 小程序注册
|
||||
type RegisterReq struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
Openid string `protobuf:"bytes,1,opt,name=openid,proto3" json:"openid,omitempty"` // 可空;空则服务端模拟
|
||||
Nickname string `protobuf:"bytes,2,opt,name=nickname,proto3" json:"nickname,omitempty"`
|
||||
Avatar string `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar,omitempty"`
|
||||
Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"`
|
||||
Gender uint32 `protobuf:"varint,5,opt,name=gender,proto3" json:"gender,omitempty"` // 1男 2女
|
||||
Birthday string `protobuf:"bytes,6,opt,name=birthday,proto3" json:"birthday,omitempty"`
|
||||
Username string `protobuf:"bytes,7,opt,name=username,proto3" json:"username,omitempty"`
|
||||
AppId uint32 `protobuf:"varint,8,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` // 应用标识
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
|
||||
func (x *RegisterReq) Reset() {
|
||||
*x = RegisterReq{}
|
||||
mi := &file_user_user_proto_msgTypes[1]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
|
||||
func (x *RegisterReq) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*RegisterReq) ProtoMessage() {}
|
||||
|
||||
func (x *RegisterReq) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[1]
|
||||
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 RegisterReq.ProtoReflect.Descriptor instead.
|
||||
func (*RegisterReq) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{1}
|
||||
}
|
||||
|
||||
func (x *RegisterReq) GetOpenid() string {
|
||||
if x != nil {
|
||||
return x.Openid
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *RegisterReq) GetNickname() string {
|
||||
if x != nil {
|
||||
return x.Nickname
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *RegisterReq) GetAvatar() string {
|
||||
if x != nil {
|
||||
return x.Avatar
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *RegisterReq) GetMobile() string {
|
||||
if x != nil {
|
||||
return x.Mobile
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *RegisterReq) GetGender() uint32 {
|
||||
if x != nil {
|
||||
return x.Gender
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *RegisterReq) GetBirthday() string {
|
||||
if x != nil {
|
||||
return x.Birthday
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *RegisterReq) GetUsername() string {
|
||||
if x != nil {
|
||||
return x.Username
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *RegisterReq) GetAppId() uint32 {
|
||||
if x != nil {
|
||||
return x.AppId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// 账号密码注册
|
||||
type RegisterByUserReq struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
Type uint32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` // 1手机号 2邮箱
|
||||
Account string `protobuf:"bytes,2,opt,name=account,proto3" json:"account,omitempty"`
|
||||
Pwd string `protobuf:"bytes,3,opt,name=pwd,proto3" json:"pwd,omitempty"`
|
||||
Code string `protobuf:"bytes,4,opt,name=code,proto3" json:"code,omitempty"`
|
||||
AppId uint32 `protobuf:"varint,5,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` // 应用标识
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
|
||||
func (x *RegisterByUserReq) Reset() {
|
||||
*x = RegisterByUserReq{}
|
||||
mi := &file_user_user_proto_msgTypes[2]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
|
||||
func (x *RegisterByUserReq) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*RegisterByUserReq) ProtoMessage() {}
|
||||
|
||||
func (x *RegisterByUserReq) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[2]
|
||||
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 RegisterByUserReq.ProtoReflect.Descriptor instead.
|
||||
func (*RegisterByUserReq) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{2}
|
||||
}
|
||||
|
||||
func (x *RegisterByUserReq) GetType() uint32 {
|
||||
if x != nil {
|
||||
return x.Type
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *RegisterByUserReq) GetAccount() string {
|
||||
if x != nil {
|
||||
return x.Account
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *RegisterByUserReq) GetPwd() string {
|
||||
if x != nil {
|
||||
return x.Pwd
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *RegisterByUserReq) GetCode() string {
|
||||
if x != nil {
|
||||
return x.Code
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *RegisterByUserReq) GetAppId() uint32 {
|
||||
if x != nil {
|
||||
return x.AppId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// openid 登录
|
||||
// 统一登录:grant_type = openid | password | sms
|
||||
type LoginReq struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
Openid string `protobuf:"bytes,1,opt,name=openid,proto3" json:"openid,omitempty"`
|
||||
ClientCode string `protobuf:"bytes,1,opt,name=client_code,json=clientCode,proto3" json:"client_code,omitempty"` // 端编码,如 user_skin / user_o2 / sale_beauty
|
||||
GrantType string `protobuf:"bytes,2,opt,name=grant_type,json=grantType,proto3" json:"grant_type,omitempty"` // openid | password | sms
|
||||
Code string `protobuf:"bytes,3,opt,name=code,proto3" json:"code,omitempty"` // grant_type=openid 时传微信 login code
|
||||
Mobile string `protobuf:"bytes,4,opt,name=mobile,proto3" json:"mobile,omitempty"` // grant_type=password|sms
|
||||
Password string `protobuf:"bytes,5,opt,name=password,proto3" json:"password,omitempty"` // grant_type=password
|
||||
SmsCode string `protobuf:"bytes,6,opt,name=sms_code,json=smsCode,proto3" json:"sms_code,omitempty"` // grant_type=sms
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
|
||||
func (x *LoginReq) Reset() {
|
||||
*x = LoginReq{}
|
||||
mi := &file_user_user_proto_msgTypes[3]
|
||||
mi := &file_user_user_proto_msgTypes[1]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -283,7 +109,7 @@ func (x *LoginReq) String() string {
|
||||
func (*LoginReq) ProtoMessage() {}
|
||||
|
||||
func (x *LoginReq) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[3]
|
||||
mi := &file_user_user_proto_msgTypes[1]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -296,12 +122,47 @@ func (x *LoginReq) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use LoginReq.ProtoReflect.Descriptor instead.
|
||||
func (*LoginReq) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{3}
|
||||
return file_user_user_proto_rawDescGZIP(), []int{1}
|
||||
}
|
||||
|
||||
func (x *LoginReq) GetOpenid() string {
|
||||
func (x *LoginReq) GetClientCode() string {
|
||||
if x != nil {
|
||||
return x.Openid
|
||||
return x.ClientCode
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *LoginReq) GetGrantType() string {
|
||||
if x != nil {
|
||||
return x.GrantType
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *LoginReq) GetCode() string {
|
||||
if x != nil {
|
||||
return x.Code
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *LoginReq) GetMobile() string {
|
||||
if x != nil {
|
||||
return x.Mobile
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *LoginReq) GetPassword() string {
|
||||
if x != nil {
|
||||
return x.Password
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *LoginReq) GetSmsCode() string {
|
||||
if x != nil {
|
||||
return x.SmsCode
|
||||
}
|
||||
return ""
|
||||
}
|
||||
@@ -318,7 +179,7 @@ type UserItemsReq struct {
|
||||
|
||||
func (x *UserItemsReq) Reset() {
|
||||
*x = UserItemsReq{}
|
||||
mi := &file_user_user_proto_msgTypes[4]
|
||||
mi := &file_user_user_proto_msgTypes[2]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -330,7 +191,7 @@ func (x *UserItemsReq) String() string {
|
||||
func (*UserItemsReq) ProtoMessage() {}
|
||||
|
||||
func (x *UserItemsReq) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[4]
|
||||
mi := &file_user_user_proto_msgTypes[2]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -343,7 +204,7 @@ func (x *UserItemsReq) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use UserItemsReq.ProtoReflect.Descriptor instead.
|
||||
func (*UserItemsReq) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{4}
|
||||
return file_user_user_proto_rawDescGZIP(), []int{2}
|
||||
}
|
||||
|
||||
func (x *UserItemsReq) GetMobile() string {
|
||||
@@ -378,7 +239,7 @@ type UserStatusReq struct {
|
||||
|
||||
func (x *UserStatusReq) Reset() {
|
||||
*x = UserStatusReq{}
|
||||
mi := &file_user_user_proto_msgTypes[5]
|
||||
mi := &file_user_user_proto_msgTypes[3]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -390,7 +251,7 @@ func (x *UserStatusReq) String() string {
|
||||
func (*UserStatusReq) ProtoMessage() {}
|
||||
|
||||
func (x *UserStatusReq) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[5]
|
||||
mi := &file_user_user_proto_msgTypes[3]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -403,7 +264,7 @@ func (x *UserStatusReq) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use UserStatusReq.ProtoReflect.Descriptor instead.
|
||||
func (*UserStatusReq) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{5}
|
||||
return file_user_user_proto_rawDescGZIP(), []int{3}
|
||||
}
|
||||
|
||||
func (x *UserStatusReq) GetId() int64 {
|
||||
@@ -427,17 +288,17 @@ type EnsureBizIdentityReq struct {
|
||||
Avatar string `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar,omitempty"`
|
||||
Gender uint32 `protobuf:"varint,4,opt,name=gender,proto3" json:"gender,omitempty"`
|
||||
Birthday string `protobuf:"bytes,5,opt,name=birthday,proto3" json:"birthday,omitempty"`
|
||||
ClientCode string `protobuf:"bytes,6,opt,name=client_code,json=clientCode,proto3" json:"client_code,omitempty"` // 如 sale_beauty / store_beauty / store_pos
|
||||
CredentialType string `protobuf:"bytes,7,opt,name=credential_type,json=credentialType,proto3" json:"credential_type,omitempty"` // password / wecom / openid ...
|
||||
Identifier string `protobuf:"bytes,8,opt,name=identifier,proto3" json:"identifier,omitempty"` // 登录标识;空则默认用手机号
|
||||
Secret string `protobuf:"bytes,9,opt,name=secret,proto3" json:"secret,omitempty"` // 密码明文等,服务端哈希后入库
|
||||
ClientCode string `protobuf:"bytes,6,opt,name=client_code,json=clientCode,proto3" json:"client_code,omitempty"`
|
||||
CredentialType string `protobuf:"bytes,7,opt,name=credential_type,json=credentialType,proto3" json:"credential_type,omitempty"`
|
||||
Identifier string `protobuf:"bytes,8,opt,name=identifier,proto3" json:"identifier,omitempty"`
|
||||
Secret string `protobuf:"bytes,9,opt,name=secret,proto3" json:"secret,omitempty"`
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
|
||||
func (x *EnsureBizIdentityReq) Reset() {
|
||||
*x = EnsureBizIdentityReq{}
|
||||
mi := &file_user_user_proto_msgTypes[6]
|
||||
mi := &file_user_user_proto_msgTypes[4]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -449,7 +310,7 @@ func (x *EnsureBizIdentityReq) String() string {
|
||||
func (*EnsureBizIdentityReq) ProtoMessage() {}
|
||||
|
||||
func (x *EnsureBizIdentityReq) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[6]
|
||||
mi := &file_user_user_proto_msgTypes[4]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -460,8 +321,9 @@ func (x *EnsureBizIdentityReq) ProtoReflect() protoreflect.Message {
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use EnsureBizIdentityReq.ProtoReflect.Descriptor instead.
|
||||
func (*EnsureBizIdentityReq) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{6}
|
||||
return file_user_user_proto_rawDescGZIP(), []int{4}
|
||||
}
|
||||
|
||||
func (x *EnsureBizIdentityReq) GetMobile() string {
|
||||
@@ -530,7 +392,7 @@ func (x *EnsureBizIdentityReq) GetSecret() string {
|
||||
type EnsureBizIdentityData struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
UserId int64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
|
||||
Created bool `protobuf:"varint,2,opt,name=created,proto3" json:"created,omitempty"` // 是否新建了 users
|
||||
Created bool `protobuf:"varint,2,opt,name=created,proto3" json:"created,omitempty"`
|
||||
Mobile string `protobuf:"bytes,3,opt,name=mobile,proto3" json:"mobile,omitempty"`
|
||||
Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
|
||||
unknownFields protoimpl.UnknownFields
|
||||
@@ -539,7 +401,7 @@ type EnsureBizIdentityData struct {
|
||||
|
||||
func (x *EnsureBizIdentityData) Reset() {
|
||||
*x = EnsureBizIdentityData{}
|
||||
mi := &file_user_user_proto_msgTypes[7]
|
||||
mi := &file_user_user_proto_msgTypes[5]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -551,7 +413,7 @@ func (x *EnsureBizIdentityData) String() string {
|
||||
func (*EnsureBizIdentityData) ProtoMessage() {}
|
||||
|
||||
func (x *EnsureBizIdentityData) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[7]
|
||||
mi := &file_user_user_proto_msgTypes[5]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -564,7 +426,7 @@ func (x *EnsureBizIdentityData) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use EnsureBizIdentityData.ProtoReflect.Descriptor instead.
|
||||
func (*EnsureBizIdentityData) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{7}
|
||||
return file_user_user_proto_rawDescGZIP(), []int{5}
|
||||
}
|
||||
|
||||
func (x *EnsureBizIdentityData) GetUserId() int64 {
|
||||
@@ -595,7 +457,6 @@ func (x *EnsureBizIdentityData) GetName() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
// 内部:按 ids 批量查用户基础信息
|
||||
type UsersByIdsReq struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
Ids []int64 `protobuf:"varint,1,rep,packed,name=ids,proto3" json:"ids,omitempty"`
|
||||
@@ -605,7 +466,7 @@ type UsersByIdsReq struct {
|
||||
|
||||
func (x *UsersByIdsReq) Reset() {
|
||||
*x = UsersByIdsReq{}
|
||||
mi := &file_user_user_proto_msgTypes[8]
|
||||
mi := &file_user_user_proto_msgTypes[6]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -617,7 +478,7 @@ func (x *UsersByIdsReq) String() string {
|
||||
func (*UsersByIdsReq) ProtoMessage() {}
|
||||
|
||||
func (x *UsersByIdsReq) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[8]
|
||||
mi := &file_user_user_proto_msgTypes[6]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -630,7 +491,7 @@ func (x *UsersByIdsReq) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use UsersByIdsReq.ProtoReflect.Descriptor instead.
|
||||
func (*UsersByIdsReq) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{8}
|
||||
return file_user_user_proto_rawDescGZIP(), []int{6}
|
||||
}
|
||||
|
||||
func (x *UsersByIdsReq) GetIds() []int64 {
|
||||
@@ -655,7 +516,7 @@ type UserBriefItem struct {
|
||||
|
||||
func (x *UserBriefItem) Reset() {
|
||||
*x = UserBriefItem{}
|
||||
mi := &file_user_user_proto_msgTypes[9]
|
||||
mi := &file_user_user_proto_msgTypes[7]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -667,7 +528,7 @@ func (x *UserBriefItem) String() string {
|
||||
func (*UserBriefItem) ProtoMessage() {}
|
||||
|
||||
func (x *UserBriefItem) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[9]
|
||||
mi := &file_user_user_proto_msgTypes[7]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -680,7 +541,7 @@ func (x *UserBriefItem) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use UserBriefItem.ProtoReflect.Descriptor instead.
|
||||
func (*UserBriefItem) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{9}
|
||||
return file_user_user_proto_rawDescGZIP(), []int{7}
|
||||
}
|
||||
|
||||
func (x *UserBriefItem) GetId() int64 {
|
||||
@@ -741,7 +602,7 @@ type UsersByIdsData struct {
|
||||
|
||||
func (x *UsersByIdsData) Reset() {
|
||||
*x = UsersByIdsData{}
|
||||
mi := &file_user_user_proto_msgTypes[10]
|
||||
mi := &file_user_user_proto_msgTypes[8]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -753,7 +614,7 @@ func (x *UsersByIdsData) String() string {
|
||||
func (*UsersByIdsData) ProtoMessage() {}
|
||||
|
||||
func (x *UsersByIdsData) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[10]
|
||||
mi := &file_user_user_proto_msgTypes[8]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -766,7 +627,7 @@ func (x *UsersByIdsData) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use UsersByIdsData.ProtoReflect.Descriptor instead.
|
||||
func (*UsersByIdsData) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{10}
|
||||
return file_user_user_proto_rawDescGZIP(), []int{8}
|
||||
}
|
||||
|
||||
func (x *UsersByIdsData) GetItems() []*UserBriefItem {
|
||||
@@ -776,18 +637,17 @@ func (x *UsersByIdsData) GetItems() []*UserBriefItem {
|
||||
return nil
|
||||
}
|
||||
|
||||
// 内部:修改用户手机号(同步凭证 identifier)
|
||||
type UpdateMobileReq struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
UserId int64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
|
||||
Mobile string `protobuf:"bytes,2,opt,name=mobile,proto3" json:"mobile,omitempty"` // 新手机号明文
|
||||
Mobile string `protobuf:"bytes,2,opt,name=mobile,proto3" json:"mobile,omitempty"`
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
|
||||
func (x *UpdateMobileReq) Reset() {
|
||||
*x = UpdateMobileReq{}
|
||||
mi := &file_user_user_proto_msgTypes[11]
|
||||
mi := &file_user_user_proto_msgTypes[9]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -799,7 +659,7 @@ func (x *UpdateMobileReq) String() string {
|
||||
func (*UpdateMobileReq) ProtoMessage() {}
|
||||
|
||||
func (x *UpdateMobileReq) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[11]
|
||||
mi := &file_user_user_proto_msgTypes[9]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -812,7 +672,7 @@ func (x *UpdateMobileReq) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use UpdateMobileReq.ProtoReflect.Descriptor instead.
|
||||
func (*UpdateMobileReq) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{11}
|
||||
return file_user_user_proto_rawDescGZIP(), []int{9}
|
||||
}
|
||||
|
||||
func (x *UpdateMobileReq) GetUserId() int64 {
|
||||
@@ -832,14 +692,14 @@ func (x *UpdateMobileReq) GetMobile() string {
|
||||
type UpdateMobileData struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
UserId int64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
|
||||
Mobile string `protobuf:"bytes,2,opt,name=mobile,proto3" json:"mobile,omitempty"` // 加密后手机号
|
||||
Mobile string `protobuf:"bytes,2,opt,name=mobile,proto3" json:"mobile,omitempty"`
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
|
||||
func (x *UpdateMobileData) Reset() {
|
||||
*x = UpdateMobileData{}
|
||||
mi := &file_user_user_proto_msgTypes[12]
|
||||
mi := &file_user_user_proto_msgTypes[10]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -851,7 +711,7 @@ func (x *UpdateMobileData) String() string {
|
||||
func (*UpdateMobileData) ProtoMessage() {}
|
||||
|
||||
func (x *UpdateMobileData) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[12]
|
||||
mi := &file_user_user_proto_msgTypes[10]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -864,7 +724,7 @@ func (x *UpdateMobileData) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use UpdateMobileData.ProtoReflect.Descriptor instead.
|
||||
func (*UpdateMobileData) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{12}
|
||||
return file_user_user_proto_rawDescGZIP(), []int{10}
|
||||
}
|
||||
|
||||
func (x *UpdateMobileData) GetUserId() int64 {
|
||||
@@ -881,7 +741,6 @@ func (x *UpdateMobileData) GetMobile() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
// 内部:撤销业务端开通(删除/禁用销售或门店时)
|
||||
type RevokeBizClientReq struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
UserId int64 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
|
||||
@@ -892,7 +751,7 @@ type RevokeBizClientReq struct {
|
||||
|
||||
func (x *RevokeBizClientReq) Reset() {
|
||||
*x = RevokeBizClientReq{}
|
||||
mi := &file_user_user_proto_msgTypes[13]
|
||||
mi := &file_user_user_proto_msgTypes[11]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -904,7 +763,7 @@ func (x *RevokeBizClientReq) String() string {
|
||||
func (*RevokeBizClientReq) ProtoMessage() {}
|
||||
|
||||
func (x *RevokeBizClientReq) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[13]
|
||||
mi := &file_user_user_proto_msgTypes[11]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -917,7 +776,7 @@ func (x *RevokeBizClientReq) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use RevokeBizClientReq.ProtoReflect.Descriptor instead.
|
||||
func (*RevokeBizClientReq) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{13}
|
||||
return file_user_user_proto_rawDescGZIP(), []int{11}
|
||||
}
|
||||
|
||||
func (x *RevokeBizClientReq) GetUserId() int64 {
|
||||
@@ -943,7 +802,7 @@ type RevokeBizClientData struct {
|
||||
|
||||
func (x *RevokeBizClientData) Reset() {
|
||||
*x = RevokeBizClientData{}
|
||||
mi := &file_user_user_proto_msgTypes[14]
|
||||
mi := &file_user_user_proto_msgTypes[12]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
@@ -955,7 +814,7 @@ func (x *RevokeBizClientData) String() string {
|
||||
func (*RevokeBizClientData) ProtoMessage() {}
|
||||
|
||||
func (x *RevokeBizClientData) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[14]
|
||||
mi := &file_user_user_proto_msgTypes[12]
|
||||
if x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
@@ -968,7 +827,7 @@ func (x *RevokeBizClientData) ProtoReflect() protoreflect.Message {
|
||||
|
||||
// Deprecated: Use RevokeBizClientData.ProtoReflect.Descriptor instead.
|
||||
func (*RevokeBizClientData) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{14}
|
||||
return file_user_user_proto_rawDescGZIP(), []int{12}
|
||||
}
|
||||
|
||||
func (x *RevokeBizClientData) GetRevoked() bool {
|
||||
@@ -978,6 +837,42 @@ func (x *RevokeBizClientData) GetRevoked() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
type InfoReq struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
|
||||
func (x *InfoReq) Reset() {
|
||||
*x = InfoReq{}
|
||||
mi := &file_user_user_proto_msgTypes[13]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
|
||||
func (x *InfoReq) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*InfoReq) ProtoMessage() {}
|
||||
|
||||
func (x *InfoReq) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_user_user_proto_msgTypes[13]
|
||||
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 InfoReq.ProtoReflect.Descriptor instead.
|
||||
func (*InfoReq) Descriptor() ([]byte, []int) {
|
||||
return file_user_user_proto_rawDescGZIP(), []int{13}
|
||||
}
|
||||
|
||||
var File_user_user_proto protoreflect.FileDescriptor
|
||||
|
||||
const file_user_user_proto_rawDesc = "" +
|
||||
@@ -986,24 +881,16 @@ const file_user_user_proto_rawDesc = "" +
|
||||
"\bResponse\x12\x12\n" +
|
||||
"\x04code\x18\x01 \x01(\x05R\x04code\x12\x10\n" +
|
||||
"\x03msg\x18\x02 \x01(\tR\x03msg\x12\x12\n" +
|
||||
"\x04data\x18\x03 \x01(\tR\x04data\"\xd8\x01\n" +
|
||||
"\vRegisterReq\x12\x16\n" +
|
||||
"\x06openid\x18\x01 \x01(\tR\x06openid\x12\x1a\n" +
|
||||
"\bnickname\x18\x02 \x01(\tR\bnickname\x12\x16\n" +
|
||||
"\x06avatar\x18\x03 \x01(\tR\x06avatar\x12\x16\n" +
|
||||
"\x06mobile\x18\x04 \x01(\tR\x06mobile\x12\x16\n" +
|
||||
"\x06gender\x18\x05 \x01(\rR\x06gender\x12\x1a\n" +
|
||||
"\bbirthday\x18\x06 \x01(\tR\bbirthday\x12\x1a\n" +
|
||||
"\busername\x18\a \x01(\tR\busername\x12\x15\n" +
|
||||
"\x06app_id\x18\b \x01(\rR\x05appId\"~\n" +
|
||||
"\x11RegisterByUserReq\x12\x12\n" +
|
||||
"\x04type\x18\x01 \x01(\rR\x04type\x12\x18\n" +
|
||||
"\aaccount\x18\x02 \x01(\tR\aaccount\x12\x10\n" +
|
||||
"\x03pwd\x18\x03 \x01(\tR\x03pwd\x12\x12\n" +
|
||||
"\x04code\x18\x04 \x01(\tR\x04code\x12\x15\n" +
|
||||
"\x06app_id\x18\x05 \x01(\rR\x05appId\"\"\n" +
|
||||
"\bLoginReq\x12\x16\n" +
|
||||
"\x06openid\x18\x01 \x01(\tR\x06openid\"N\n" +
|
||||
"\x04data\x18\x03 \x01(\tR\x04data\"\xad\x01\n" +
|
||||
"\bLoginReq\x12\x1f\n" +
|
||||
"\vclient_code\x18\x01 \x01(\tR\n" +
|
||||
"clientCode\x12\x1d\n" +
|
||||
"\n" +
|
||||
"grant_type\x18\x02 \x01(\tR\tgrantType\x12\x12\n" +
|
||||
"\x04code\x18\x03 \x01(\tR\x04code\x12\x16\n" +
|
||||
"\x06mobile\x18\x04 \x01(\tR\x06mobile\x12\x1a\n" +
|
||||
"\bpassword\x18\x05 \x01(\tR\bpassword\x12\x19\n" +
|
||||
"\bsms_code\x18\x06 \x01(\tR\asmsCode\"N\n" +
|
||||
"\fUserItemsReq\x12\x16\n" +
|
||||
"\x06mobile\x18\x01 \x01(\tR\x06mobile\x12\x12\n" +
|
||||
"\x04page\x18\x02 \x01(\x05R\x04page\x12\x12\n" +
|
||||
@@ -1052,11 +939,11 @@ const file_user_user_proto_rawDesc = "" +
|
||||
"\vclient_code\x18\x02 \x01(\tR\n" +
|
||||
"clientCode\"/\n" +
|
||||
"\x13RevokeBizClientData\x12\x18\n" +
|
||||
"\arevoked\x18\x01 \x01(\bR\arevoked2\xb6\x05\n" +
|
||||
"\x04User\x12O\n" +
|
||||
"\bRegister\x12\x11.user.RegisterReq\x1a\x0e.user.Response\" \x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/customer/v3/register\x12`\n" +
|
||||
"\x0eRegisterByUser\x12\x17.user.RegisterByUserReq\x1a\x0e.user.Response\"%\x82\xd3\xe4\x93\x02\x1f:\x01*\"\x1a/customer/v3/register/user\x12F\n" +
|
||||
"\x05Login\x12\x0e.user.LoginReq\x1a\x0e.user.Response\"\x1d\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/customer/v3/login\x12P\n" +
|
||||
"\arevoked\x18\x01 \x01(\bR\arevoked\"\t\n" +
|
||||
"\aInfoReq2\xc3\x04\n" +
|
||||
"\x04User\x12A\n" +
|
||||
"\x05Login\x12\x0e.user.LoginReq\x1a\x0e.user.Response\"\x18\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/api/v3/login\x12C\n" +
|
||||
"\x04Info\x12\r.user.InfoReq\x1a\x0e.user.Response\"\x1c\x82\xd3\xe4\x93\x02\x16:\x01*\x12\x11/api/v3/user/info\x12P\n" +
|
||||
"\tUserItems\x12\x12.user.UserItemsReq\x1a\x0e.user.Response\"\x1f\x82\xd3\xe4\x93\x02\x19:\x01*\x12\x14/admin/v3/user/items\x12S\n" +
|
||||
"\n" +
|
||||
"UserStatus\x12\x13.user.UserStatusReq\x1a\x0e.user.Response\" \x82\xd3\xe4\x93\x02\x1a:\x01*\x1a\x15/admin/v3/user/status\x12L\n" +
|
||||
@@ -1078,46 +965,43 @@ func file_user_user_proto_rawDescGZIP() []byte {
|
||||
return file_user_user_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_user_user_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
|
||||
var file_user_user_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
|
||||
var file_user_user_proto_goTypes = []any{
|
||||
(*Response)(nil), // 0: user.Response
|
||||
(*RegisterReq)(nil), // 1: user.RegisterReq
|
||||
(*RegisterByUserReq)(nil), // 2: user.RegisterByUserReq
|
||||
(*LoginReq)(nil), // 3: user.LoginReq
|
||||
(*UserItemsReq)(nil), // 4: user.UserItemsReq
|
||||
(*UserStatusReq)(nil), // 5: user.UserStatusReq
|
||||
(*EnsureBizIdentityReq)(nil), // 6: user.EnsureBizIdentityReq
|
||||
(*EnsureBizIdentityData)(nil), // 7: user.EnsureBizIdentityData
|
||||
(*UsersByIdsReq)(nil), // 8: user.UsersByIdsReq
|
||||
(*UserBriefItem)(nil), // 9: user.UserBriefItem
|
||||
(*UsersByIdsData)(nil), // 10: user.UsersByIdsData
|
||||
(*UpdateMobileReq)(nil), // 11: user.UpdateMobileReq
|
||||
(*UpdateMobileData)(nil), // 12: user.UpdateMobileData
|
||||
(*RevokeBizClientReq)(nil), // 13: user.RevokeBizClientReq
|
||||
(*RevokeBizClientData)(nil), // 14: user.RevokeBizClientData
|
||||
(*LoginReq)(nil), // 1: user.LoginReq
|
||||
(*UserItemsReq)(nil), // 2: user.UserItemsReq
|
||||
(*UserStatusReq)(nil), // 3: user.UserStatusReq
|
||||
(*EnsureBizIdentityReq)(nil), // 4: user.EnsureBizIdentityReq
|
||||
(*EnsureBizIdentityData)(nil), // 5: user.EnsureBizIdentityData
|
||||
(*UsersByIdsReq)(nil), // 6: user.UsersByIdsReq
|
||||
(*UserBriefItem)(nil), // 7: user.UserBriefItem
|
||||
(*UsersByIdsData)(nil), // 8: user.UsersByIdsData
|
||||
(*UpdateMobileReq)(nil), // 9: user.UpdateMobileReq
|
||||
(*UpdateMobileData)(nil), // 10: user.UpdateMobileData
|
||||
(*RevokeBizClientReq)(nil), // 11: user.RevokeBizClientReq
|
||||
(*RevokeBizClientData)(nil), // 12: user.RevokeBizClientData
|
||||
(*InfoReq)(nil), // 13: user.InfoReq
|
||||
}
|
||||
var file_user_user_proto_depIdxs = []int32{
|
||||
9, // 0: user.UsersByIdsData.items:type_name -> user.UserBriefItem
|
||||
1, // 1: user.User.Register:input_type -> user.RegisterReq
|
||||
2, // 2: user.User.RegisterByUser:input_type -> user.RegisterByUserReq
|
||||
3, // 3: user.User.Login:input_type -> user.LoginReq
|
||||
4, // 4: user.User.UserItems:input_type -> user.UserItemsReq
|
||||
5, // 5: user.User.UserStatus:input_type -> user.UserStatusReq
|
||||
6, // 6: user.User.EnsureBizIdentity:input_type -> user.EnsureBizIdentityReq
|
||||
8, // 7: user.User.UsersByIds:input_type -> user.UsersByIdsReq
|
||||
11, // 8: user.User.UpdateMobile:input_type -> user.UpdateMobileReq
|
||||
13, // 9: user.User.RevokeBizClient:input_type -> user.RevokeBizClientReq
|
||||
0, // 10: user.User.Register:output_type -> user.Response
|
||||
0, // 11: user.User.RegisterByUser:output_type -> user.Response
|
||||
0, // 12: user.User.Login:output_type -> user.Response
|
||||
0, // 13: user.User.UserItems:output_type -> user.Response
|
||||
0, // 14: user.User.UserStatus:output_type -> user.Response
|
||||
7, // 15: user.User.EnsureBizIdentity:output_type -> user.EnsureBizIdentityData
|
||||
10, // 16: user.User.UsersByIds:output_type -> user.UsersByIdsData
|
||||
12, // 17: user.User.UpdateMobile:output_type -> user.UpdateMobileData
|
||||
14, // 18: user.User.RevokeBizClient:output_type -> user.RevokeBizClientData
|
||||
10, // [10:19] is the sub-list for method output_type
|
||||
1, // [1:10] is the sub-list for method input_type
|
||||
7, // 0: user.UsersByIdsData.items:type_name -> user.UserBriefItem
|
||||
1, // 1: user.User.Login:input_type -> user.LoginReq
|
||||
13, // 2: user.User.Info:input_type -> user.InfoReq
|
||||
2, // 3: user.User.UserItems:input_type -> user.UserItemsReq
|
||||
3, // 4: user.User.UserStatus:input_type -> user.UserStatusReq
|
||||
4, // 5: user.User.EnsureBizIdentity:input_type -> user.EnsureBizIdentityReq
|
||||
6, // 6: user.User.UsersByIds:input_type -> user.UsersByIdsReq
|
||||
9, // 7: user.User.UpdateMobile:input_type -> user.UpdateMobileReq
|
||||
11, // 8: user.User.RevokeBizClient:input_type -> user.RevokeBizClientReq
|
||||
0, // 9: user.User.Login:output_type -> user.Response
|
||||
0, // 10: user.User.Info:output_type -> user.Response
|
||||
0, // 11: user.User.UserItems:output_type -> user.Response
|
||||
0, // 12: user.User.UserStatus:output_type -> user.Response
|
||||
5, // 13: user.User.EnsureBizIdentity:output_type -> user.EnsureBizIdentityData
|
||||
8, // 14: user.User.UsersByIds:output_type -> user.UsersByIdsData
|
||||
10, // 15: user.User.UpdateMobile:output_type -> user.UpdateMobileData
|
||||
12, // 16: user.User.RevokeBizClient:output_type -> user.RevokeBizClientData
|
||||
9, // [9:17] is the sub-list for method output_type
|
||||
1, // [1:9] is the sub-list for method input_type
|
||||
1, // [1:1] is the sub-list for extension type_name
|
||||
1, // [1:1] is the sub-list for extension extendee
|
||||
0, // [0:1] is the sub-list for field type_name
|
||||
@@ -1134,7 +1018,7 @@ func file_user_user_proto_init() {
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: unsafe.Slice(unsafe.StringData(file_user_user_proto_rawDesc), len(file_user_user_proto_rawDesc)),
|
||||
NumEnums: 0,
|
||||
NumMessages: 15,
|
||||
NumMessages: 14,
|
||||
NumExtensions: 0,
|
||||
NumServices: 1,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user