This commit is contained in:
JNG 2026-01-12 14:36:08 +08:00
parent 6149b83ce4
commit 661ea9dee0
9 changed files with 1191 additions and 721 deletions

File diff suppressed because it is too large Load Diff

View File

@ -66,6 +66,8 @@ service AccountFiee {
rpc SendNationMsg (SendNationMsgRequest) returns (SendMsgStatusResponse) {} // -- rpc SendNationMsg (SendNationMsgRequest) returns (SendMsgStatusResponse) {} // --
rpc VerifySliderStatus(VerifySliderStatusRequest) returns (VerifySliderStatusResponse) {}// rpc VerifySliderStatus(VerifySliderStatusRequest) returns (VerifySliderStatusResponse) {}//
rpc SendNationTemplateMsg (SendNationMsgRequest) returns (SendMsgStatusResponse) {} // -- rpc SendNationTemplateMsg (SendNationMsgRequest) returns (SendMsgStatusResponse) {} // --
rpc GetInviterInfo(InviterInfoRequest) returns(InviterInfoResponse) {} //
rpc GetInviterList(InviterListRequest) returns(InviterListResponse) {} //
rpc CreateUserAndRealName (CreateUserAndRealNameRequest) returns (CreateUserAndRealNameResponse) {}// , rpc CreateUserAndRealName (CreateUserAndRealNameRequest) returns (CreateUserAndRealNameResponse) {}// ,
@ -101,7 +103,21 @@ service AccountFiee {
rpc GetChatAutoReplyRulerDetail ( GetChatAutoReplyRulerByIdRequest )returns( ChatAutoReplyRulerData ){} // rpc GetChatAutoReplyRulerDetail ( GetChatAutoReplyRulerByIdRequest )returns( ChatAutoReplyRulerData ){} //
rpc GetChatAutoReplyRulerList ( GetChatAutoReplyRulerListRequest )returns( GetChatAutoReplyRulerListResp ){} // rpc GetChatAutoReplyRulerList ( GetChatAutoReplyRulerListRequest )returns( GetChatAutoReplyRulerListResp ){} //
} }
message InviterListRequest{
repeated uint64 ids =1;
}
message InviterListResponse{
repeated InviterInfoResponse list = 1;
}
message InviterInfoRequest{
string code = 1;
}
message InviterInfoResponse{
uint64 id = 1;
string code = 2;
string name = 3;
string telNum = 4;
}
message VerifySliderStatusRequest { message VerifySliderStatusRequest {
string nonceStr = 1; string nonceStr = 1;
} }
@ -186,6 +202,8 @@ message UserListInfo{
string email = 24; string email = 24;
string AbroadTelAreaCode = 25; string AbroadTelAreaCode = 25;
string AbroadTel = 26; string AbroadTel = 26;
string inviterName = 27;
string inviterCode = 28;
} }
message UserListRequest{ message UserListRequest{
string domain = 1; string domain = 1;
@ -227,6 +245,7 @@ message UserInfoResponse{
string email = 22; string email = 22;
string AbroadTelAreaCode = 23; string AbroadTelAreaCode = 23;
string AbroadTel = 24; string AbroadTel = 24;
uint64 inviterId = 25;
} }
message RealNameResponse{ message RealNameResponse{
@ -642,6 +661,8 @@ message RegistRequest {
string telAreaCode = 5; string telAreaCode = 5;
string language = 6; string language = 6;
string nickName = 7; string nickName = 7;
uint64 inviterID = 8;
string inviterCode = 9;
} }
message LoginRequest { message LoginRequest {

View File

@ -17,6 +17,25 @@ var _ = proto.Marshal
var _ = fmt.Errorf var _ = fmt.Errorf
var _ = math.Inf var _ = math.Inf
func (this *InviterListRequest) Validate() error {
return nil
}
func (this *InviterListResponse) Validate() error {
for _, item := range this.List {
if item != nil {
if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil {
return github_com_mwitkow_go_proto_validators.FieldError("List", err)
}
}
}
return nil
}
func (this *InviterInfoRequest) Validate() error {
return nil
}
func (this *InviterInfoResponse) Validate() error {
return nil
}
func (this *VerifySliderStatusRequest) Validate() error { func (this *VerifySliderStatusRequest) Validate() error {
return nil return nil
} }

View File

@ -70,6 +70,8 @@ type AccountFieeClient interface {
SendNationMsg(ctx context.Context, in *SendNationMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment) SendNationMsg(ctx context.Context, in *SendNationMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment)
VerifySliderStatus(ctx context.Context, in *VerifySliderStatusRequest, opts ...grpc_go.CallOption) (*VerifySliderStatusResponse, common.ErrorWithAttachment) VerifySliderStatus(ctx context.Context, in *VerifySliderStatusRequest, opts ...grpc_go.CallOption) (*VerifySliderStatusResponse, common.ErrorWithAttachment)
SendNationTemplateMsg(ctx context.Context, in *SendNationMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment) SendNationTemplateMsg(ctx context.Context, in *SendNationMsgRequest, opts ...grpc_go.CallOption) (*SendMsgStatusResponse, common.ErrorWithAttachment)
GetInviterInfo(ctx context.Context, in *InviterInfoRequest, opts ...grpc_go.CallOption) (*InviterInfoResponse, common.ErrorWithAttachment)
GetInviterList(ctx context.Context, in *InviterListRequest, opts ...grpc_go.CallOption) (*InviterListResponse, common.ErrorWithAttachment)
CreateUserAndRealName(ctx context.Context, in *CreateUserAndRealNameRequest, opts ...grpc_go.CallOption) (*CreateUserAndRealNameResponse, common.ErrorWithAttachment) CreateUserAndRealName(ctx context.Context, in *CreateUserAndRealNameRequest, opts ...grpc_go.CallOption) (*CreateUserAndRealNameResponse, common.ErrorWithAttachment)
// submit info // submit info
SaveSubmitInfo(ctx context.Context, in *SubmitInfoRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment) SaveSubmitInfo(ctx context.Context, in *SubmitInfoRequest, opts ...grpc_go.CallOption) (*CommonResponse, common.ErrorWithAttachment)
@ -148,6 +150,8 @@ type AccountFieeClientImpl struct {
SendNationMsg func(ctx context.Context, in *SendNationMsgRequest) (*SendMsgStatusResponse, error) SendNationMsg func(ctx context.Context, in *SendNationMsgRequest) (*SendMsgStatusResponse, error)
VerifySliderStatus func(ctx context.Context, in *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error) VerifySliderStatus func(ctx context.Context, in *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error)
SendNationTemplateMsg func(ctx context.Context, in *SendNationMsgRequest) (*SendMsgStatusResponse, error) SendNationTemplateMsg func(ctx context.Context, in *SendNationMsgRequest) (*SendMsgStatusResponse, error)
GetInviterInfo func(ctx context.Context, in *InviterInfoRequest) (*InviterInfoResponse, error)
GetInviterList func(ctx context.Context, in *InviterListRequest) (*InviterListResponse, error)
CreateUserAndRealName func(ctx context.Context, in *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error) CreateUserAndRealName func(ctx context.Context, in *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error)
SaveSubmitInfo func(ctx context.Context, in *SubmitInfoRequest) (*CommonResponse, error) SaveSubmitInfo func(ctx context.Context, in *SubmitInfoRequest) (*CommonResponse, error)
CreateChatUser func(ctx context.Context, in *ChatUserData) (*CreateChatUserResp, error) CreateChatUser func(ctx context.Context, in *ChatUserData) (*CreateChatUserResp, error)
@ -436,6 +440,18 @@ func (c *accountFieeClient) SendNationTemplateMsg(ctx context.Context, in *SendN
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SendNationTemplateMsg", in, out) return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SendNationTemplateMsg", in, out)
} }
func (c *accountFieeClient) GetInviterInfo(ctx context.Context, in *InviterInfoRequest, opts ...grpc_go.CallOption) (*InviterInfoResponse, common.ErrorWithAttachment) {
out := new(InviterInfoResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetInviterInfo", in, out)
}
func (c *accountFieeClient) GetInviterList(ctx context.Context, in *InviterListRequest, opts ...grpc_go.CallOption) (*InviterListResponse, common.ErrorWithAttachment) {
out := new(InviterListResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetInviterList", in, out)
}
func (c *accountFieeClient) CreateUserAndRealName(ctx context.Context, in *CreateUserAndRealNameRequest, opts ...grpc_go.CallOption) (*CreateUserAndRealNameResponse, common.ErrorWithAttachment) { func (c *accountFieeClient) CreateUserAndRealName(ctx context.Context, in *CreateUserAndRealNameRequest, opts ...grpc_go.CallOption) (*CreateUserAndRealNameResponse, common.ErrorWithAttachment) {
out := new(CreateUserAndRealNameResponse) out := new(CreateUserAndRealNameResponse)
interfaceKey := ctx.Value(constant.InterfaceKey).(string) interfaceKey := ctx.Value(constant.InterfaceKey).(string)
@ -650,6 +666,8 @@ type AccountFieeServer interface {
SendNationMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error) SendNationMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error)
VerifySliderStatus(context.Context, *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error) VerifySliderStatus(context.Context, *VerifySliderStatusRequest) (*VerifySliderStatusResponse, error)
SendNationTemplateMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error) SendNationTemplateMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error)
GetInviterInfo(context.Context, *InviterInfoRequest) (*InviterInfoResponse, error)
GetInviterList(context.Context, *InviterListRequest) (*InviterListResponse, error)
CreateUserAndRealName(context.Context, *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error) CreateUserAndRealName(context.Context, *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error)
// submit info // submit info
SaveSubmitInfo(context.Context, *SubmitInfoRequest) (*CommonResponse, error) SaveSubmitInfo(context.Context, *SubmitInfoRequest) (*CommonResponse, error)
@ -811,6 +829,12 @@ func (UnimplementedAccountFieeServer) VerifySliderStatus(context.Context, *Verif
func (UnimplementedAccountFieeServer) SendNationTemplateMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error) { func (UnimplementedAccountFieeServer) SendNationTemplateMsg(context.Context, *SendNationMsgRequest) (*SendMsgStatusResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SendNationTemplateMsg not implemented") return nil, status.Errorf(codes.Unimplemented, "method SendNationTemplateMsg not implemented")
} }
func (UnimplementedAccountFieeServer) GetInviterInfo(context.Context, *InviterInfoRequest) (*InviterInfoResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetInviterInfo not implemented")
}
func (UnimplementedAccountFieeServer) GetInviterList(context.Context, *InviterListRequest) (*InviterListResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetInviterList not implemented")
}
func (UnimplementedAccountFieeServer) CreateUserAndRealName(context.Context, *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error) { func (UnimplementedAccountFieeServer) CreateUserAndRealName(context.Context, *CreateUserAndRealNameRequest) (*CreateUserAndRealNameResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateUserAndRealName not implemented") return nil, status.Errorf(codes.Unimplemented, "method CreateUserAndRealName not implemented")
} }
@ -2112,6 +2136,64 @@ func _AccountFiee_SendNationTemplateMsg_Handler(srv interface{}, ctx context.Con
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _AccountFiee_GetInviterInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(InviterInfoRequest)
if err := dec(in); err != nil {
return nil, err
}
base := srv.(dubbo3.Dubbo3GrpcService)
args := []interface{}{}
args = append(args, in)
md, _ := metadata.FromIncomingContext(ctx)
invAttachment := make(map[string]interface{}, len(md))
for k, v := range md {
invAttachment[k] = v
}
invo := invocation.NewRPCInvocation("GetInviterInfo", args, invAttachment)
if interceptor == nil {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
info := &grpc_go.UnaryServerInfo{
Server: srv,
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
return interceptor(ctx, in, info, handler)
}
func _AccountFiee_GetInviterList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(InviterListRequest)
if err := dec(in); err != nil {
return nil, err
}
base := srv.(dubbo3.Dubbo3GrpcService)
args := []interface{}{}
args = append(args, in)
md, _ := metadata.FromIncomingContext(ctx)
invAttachment := make(map[string]interface{}, len(md))
for k, v := range md {
invAttachment[k] = v
}
invo := invocation.NewRPCInvocation("GetInviterList", args, invAttachment)
if interceptor == nil {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
info := &grpc_go.UnaryServerInfo{
Server: srv,
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
return result, result.Error()
}
return interceptor(ctx, in, info, handler)
}
func _AccountFiee_CreateUserAndRealName_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) { func _AccountFiee_CreateUserAndRealName_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateUserAndRealNameRequest) in := new(CreateUserAndRealNameRequest)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -3095,6 +3177,14 @@ var AccountFiee_ServiceDesc = grpc_go.ServiceDesc{
MethodName: "SendNationTemplateMsg", MethodName: "SendNationTemplateMsg",
Handler: _AccountFiee_SendNationTemplateMsg_Handler, Handler: _AccountFiee_SendNationTemplateMsg_Handler,
}, },
{
MethodName: "GetInviterInfo",
Handler: _AccountFiee_GetInviterInfo_Handler,
},
{
MethodName: "GetInviterList",
Handler: _AccountFiee_GetInviterList_Handler,
},
{ {
MethodName: "CreateUserAndRealName", MethodName: "CreateUserAndRealName",
Handler: _AccountFiee_CreateUserAndRealName_Handler, Handler: _AccountFiee_CreateUserAndRealName_Handler,

17
pkg/model/inviter.go Normal file
View File

@ -0,0 +1,17 @@
package model
import (
"time"
"gorm.io/plugin/soft_delete"
)
type Inviter struct {
ID uint `gorm:"primarykey"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt soft_delete.DeletedAt `gorm:"column:deleted_at;type:int(11)"`
Code string `gorm:"column:code;comment:邀请码" json:"code"`
Name string `gorm:"column:name;comment:姓名" json:"name"`
TelNum string `gorm:"column:tel_num;comment:手机号" json:"telNum"`
}

View File

@ -25,6 +25,7 @@ func migration() {
AddTable(&User{}) AddTable(&User{})
AddTable(&RefreshToken{}) AddTable(&RefreshToken{})
AddTable(&SubmitInfo{}) AddTable(&SubmitInfo{})
AddTable(&Inviter{})
AddColumn(&User{}, "nickname") AddColumn(&User{}, "nickname")
AddColumn(&User{}, "language") AddColumn(&User{}, "language")
@ -32,6 +33,7 @@ func migration() {
AddColumn(&User{}, "abroad_tel") AddColumn(&User{}, "abroad_tel")
AddColumn(&User{}, "abroad_tel_area_code") AddColumn(&User{}, "abroad_tel_area_code")
AddColumn(&User{}, "email") AddColumn(&User{}, "email")
AddColumn(&User{}, "inviter_id")
AddColumn(&RealName{}, "id_number") AddColumn(&RealName{}, "id_number")
AddColumn(&RealName{}, "date_of_birth") AddColumn(&RealName{}, "date_of_birth")
} }

View File

@ -56,6 +56,8 @@ type User struct {
Email string `gorm:"column:email;comment:邮箱" json:"email"` Email string `gorm:"column:email;comment:邮箱" json:"email"`
AbroadTel string `gorm:"column:abroad_tel;comment:国外手机号" json:"abroadTel"` AbroadTel string `gorm:"column:abroad_tel;comment:国外手机号" json:"abroadTel"`
AbroadTelAreaCode string `gorm:"column:abroad_tel_area_code;comment:国外手机区号" json:"abroadTelAreaCode"` AbroadTelAreaCode string `gorm:"column:abroad_tel_area_code;comment:国外手机区号" json:"abroadTelAreaCode"`
InviterID uint
Inviter *Inviter `gorm:"foreignKey:InviterID" json:"inviter"`
} }
const ( const (

View File

@ -89,6 +89,13 @@ func BuildUserList(user []*model.User) []*account.UserListInfo {
DateOfBirth: "", DateOfBirth: "",
} }
} }
inviter := i.Inviter
if inviter == nil {
inviter = &model.Inviter{
Name: "",
Code: "",
}
}
userList = append(userList, &account.UserListInfo{ userList = append(userList, &account.UserListInfo{
Id: uint64(i.ID), Id: uint64(i.ID),
Status: int32(i.Status), Status: int32(i.Status),
@ -116,6 +123,8 @@ func BuildUserList(user []*model.User) []*account.UserListInfo {
Email: i.Email, Email: i.Email,
AbroadTelAreaCode: i.AbroadTelAreaCode, AbroadTelAreaCode: i.AbroadTelAreaCode,
AbroadTel: i.AbroadTel, AbroadTel: i.AbroadTel,
InviterName: inviter.Name,
InviterCode: inviter.Code,
}) })
} }
return userList return userList

View File

@ -542,6 +542,7 @@ func (a *AccountFieeProvider) Register(_ context.Context, in *account.RegistRequ
SubscriberNumber: SubscriberNumber, SubscriberNumber: SubscriberNumber,
Language: in.Language, Language: in.Language,
Nickname: in.NickName, Nickname: in.NickName,
InviterID: uint(in.InviterID),
} }
if err = model.DB.Create(&user).Error; err != nil { if err = model.DB.Create(&user).Error; err != nil {
return &account.RegisterResponse{Status: 0}, err return &account.RegisterResponse{Status: 0}, err
@ -570,7 +571,48 @@ func (a *AccountFieeProvider) CheckPwd(_ context.Context, in *account.CheckPwdRe
return response, nil return response, nil
} }
func (a *AccountFieeProvider) GetInviterInfo(_ context.Context, in *account.InviterInfoRequest) (*account.InviterInfoResponse, error) {
if in.Code == "" {
return &account.InviterInfoResponse{}, errors.New("邀请码不能为空")
}
var Inviter model.Inviter
if err := model.DB.Where(&model.Inviter{Code: in.Code}).First(&Inviter).Error; err != nil {
return &account.InviterInfoResponse{}, err
}
return &account.InviterInfoResponse{
Id: uint64(Inviter.ID),
Code: Inviter.Code,
Name: Inviter.Name,
TelNum: Inviter.TelNum,
}, nil
}
func (a *AccountFieeProvider) GetInviterList(_ context.Context, in *account.InviterListRequest) (*account.InviterListResponse, error) {
if len(in.Ids) == 0 {
return &account.InviterListResponse{}, errors.New("邀请人ID不能为空")
}
var inviters []*model.Inviter
if err := model.DB.Model(&model.Inviter{}).
Where("id IN (?)", in.Ids).
Find(&inviters).Error; err != nil {
return &account.InviterListResponse{}, err
}
// 初始化响应对象
res := &account.InviterListResponse{
List: make([]*account.InviterInfoResponse, 0, len(inviters)),
}
// 转换数据
for _, v := range inviters {
info := &account.InviterInfoResponse{
Id: uint64(v.ID),
Code: v.Code,
Name: v.Name,
TelNum: v.TelNum,
}
res.List = append(res.List, info)
}
return res, nil
}
func (a *AccountFieeProvider) Authentication(_ context.Context, in *account.AuthenticationRequest) (*account.RequestStatus, error) { func (a *AccountFieeProvider) Authentication(_ context.Context, in *account.AuthenticationRequest) (*account.RequestStatus, error) {
claims, err := jwt.ParseToken(in.Token, m.JWTSecret) claims, err := jwt.ParseToken(in.Token, m.JWTSecret)
if err != nil { if err != nil {
@ -703,7 +745,7 @@ func (a *AccountFieeProvider) UserList(ctx context.Context, in *account.UserList
if in.Page > 0 && in.PageSize > 0 { if in.Page > 0 && in.PageSize > 0 {
modelObj.Limit(int(in.PageSize)).Offset(page.GetOffset(in.Page, in.PageSize)) modelObj.Limit(int(in.PageSize)).Offset(page.GetOffset(in.Page, in.PageSize))
} }
modelObj.Preload("RealName").Find(&users) modelObj.Preload("RealName").Preload("Inviter").Find(&users)
response := &account.UserListResponse{} response := &account.UserListResponse{}
@ -1001,6 +1043,7 @@ func (a *AccountFieeProvider) UserByTel(_ context.Context, in *account.UserByTel
Domain: *user.Domain, Domain: *user.Domain,
SubscriberNumber: user.SubscriberNumber, SubscriberNumber: user.SubscriberNumber,
IdNumber: realName.IdNumber, IdNumber: realName.IdNumber,
InviterId: uint64(user.InviterID),
} }
return response, nil return response, nil
} }