feat: fix package name
This commit is contained in:
parent
0917885c1e
commit
040cc16b8e
|
@ -9,12 +9,6 @@ message OKResp {}
|
|||
message NoneReq {}
|
||||
|
||||
// ================ enum ================
|
||||
enum VerifyType {
|
||||
VERIFY_NONE = 0; // 初始(異常)
|
||||
VERIFY_OK = 1;
|
||||
VERIFY_NOT = 2; // 尚未
|
||||
}
|
||||
|
||||
enum AlarmType {
|
||||
ALARM_NONE = 0; // 初始(異常)
|
||||
ALARM_NOT = 1; // 未告警
|
||||
|
@ -61,19 +55,18 @@ message BindingUserResp {
|
|||
|
||||
message CreateUserInfoReq {
|
||||
string uid = 1;
|
||||
VerifyType verify_type = 2;
|
||||
AlarmType alarm_type = 3;
|
||||
MemberStatus status = 4;
|
||||
string language = 5;
|
||||
string currency = 6;
|
||||
optional string avatar= 7;
|
||||
optional string nick_name = 8;
|
||||
optional string full_name = 9;
|
||||
optional int64 gender = 10;
|
||||
optional int64 birthdate = 11;
|
||||
optional string phone_number = 12;
|
||||
optional string email = 13;
|
||||
optional string address = 14;
|
||||
AlarmType alarm_type = 2;
|
||||
MemberStatus status = 3;
|
||||
string language = 4;
|
||||
string currency = 5;
|
||||
optional string avatar= 6;
|
||||
optional string nick_name = 7;
|
||||
optional string full_name = 8;
|
||||
optional int64 gender = 9;
|
||||
optional int64 birthdate = 10;
|
||||
optional string phone_number = 11;
|
||||
optional string email = 12;
|
||||
optional string address = 13;
|
||||
}
|
||||
|
||||
message GetAccountInfoResp {
|
||||
|
@ -87,15 +80,12 @@ message UpdateUserInfoReq {
|
|||
optional string currency = 3;
|
||||
optional string nick_name = 4;
|
||||
optional string avatar = 5;
|
||||
optional VerifyType verify_type = 6;
|
||||
optional AlarmType alarm_type = 7;
|
||||
optional MemberStatus status = 8;
|
||||
optional string full_name = 9;
|
||||
optional int64 gender = 10;
|
||||
optional int64 birthdate = 11;
|
||||
optional string phone_number = 12;
|
||||
optional string email = 13;
|
||||
optional string address = 14;
|
||||
optional AlarmType alarm_type = 6;
|
||||
optional MemberStatus status = 7;
|
||||
optional string full_name = 8;
|
||||
optional int64 gender = 9;
|
||||
optional int64 birthdate = 10;
|
||||
optional string address = 11;
|
||||
}
|
||||
|
||||
message GetUIDByAccountReq {
|
||||
|
@ -144,15 +134,20 @@ message GetUserInfoReq {
|
|||
|
||||
message UserInfo {
|
||||
string uid = 1;
|
||||
VerifyType verify_type = 2;
|
||||
AlarmType alarm_type = 3;
|
||||
MemberStatus status = 4;
|
||||
string language = 5;
|
||||
string currency = 6;
|
||||
string avatar = 7;
|
||||
int64 create_time=8;
|
||||
int64 update_time=9;
|
||||
optional string nick_name = 10;
|
||||
optional string avatar_url = 2;
|
||||
optional string full_name = 3;
|
||||
optional string nick_name = 4;
|
||||
optional int64 gender_code = 5;
|
||||
optional int64 birthday = 6;
|
||||
optional string phone =7;
|
||||
optional string email=8;
|
||||
optional string address=9;
|
||||
AlarmType alarm_type = 10;
|
||||
MemberStatus status = 11;
|
||||
string language = 12;
|
||||
string currency = 13;
|
||||
int64 create_time=14;
|
||||
int64 update_time=15;
|
||||
}
|
||||
|
||||
message GetUserInfoResp {
|
||||
|
@ -160,13 +155,12 @@ message GetUserInfoResp {
|
|||
}
|
||||
|
||||
message ListUserInfoReq {
|
||||
optional VerifyType verify_type = 1;
|
||||
optional AlarmType alarm_type = 2;
|
||||
optional MemberStatus status = 3;
|
||||
optional int64 create_start_time = 4;
|
||||
optional int64 create_end_time = 5;
|
||||
int64 page_size =6;
|
||||
int64 page_index=7;
|
||||
optional AlarmType alarm_type = 1;
|
||||
optional MemberStatus status = 2;
|
||||
optional int64 create_start_time = 3;
|
||||
optional int64 create_end_time = 4;
|
||||
int64 page_size =5;
|
||||
int64 page_index=6;
|
||||
}
|
||||
|
||||
message ListUserInfoResp {
|
||||
|
@ -183,6 +177,19 @@ message VerifyAuthResultResp {
|
|||
bool status = 1;
|
||||
}
|
||||
|
||||
message VerifyGoogleAuthResultResp {
|
||||
bool status = 1;
|
||||
optional string iss =2; // 發行者 (issuer) 通常為 "https://accounts.google.com"
|
||||
optional string sub =3; // 使用者唯一 ID
|
||||
optional string aud =4; // Audience,應該與你的 Client ID 匹配
|
||||
optional string exp =5; // 過期時間 (UNIX timestamp)
|
||||
optional string iat =6; // 發行時間 (UNIX timestamp)
|
||||
optional string email =7; // 使用者的電子郵件
|
||||
optional string email_verified =8; // 郵件是否已驗證
|
||||
optional string name =9; // 使用者的名稱
|
||||
optional string picture =10; // 使用者的頭像 URL
|
||||
}
|
||||
|
||||
message TwitterAccessTokenResp {
|
||||
string token = 1;
|
||||
}
|
||||
|
@ -201,8 +208,18 @@ message LineAccessTokenResp {
|
|||
}
|
||||
|
||||
message LineUserProfile {
|
||||
string name = 1;
|
||||
string email = 2;
|
||||
string display_name = 1;
|
||||
string user_id = 2;
|
||||
string picture_url = 3;
|
||||
string status_message = 4;
|
||||
}
|
||||
|
||||
message LineGetTokenReq {
|
||||
string code = 1;
|
||||
}
|
||||
|
||||
message LineGetUserInfoReq {
|
||||
string token = 1;
|
||||
}
|
||||
|
||||
service Account {
|
||||
|
@ -237,12 +254,12 @@ service Account {
|
|||
// CheckRefreshCode 驗證忘記密碼 token 不刪除,只確認)
|
||||
rpc CheckRefreshCode(VerifyRefreshCodeReq) returns(OKResp);
|
||||
// VerifyGoogleAuthResult 驗證 google 登入是否有效
|
||||
rpc VerifyGoogleAuthResult(VerifyAuthResultReq)returns(VerifyAuthResultResp);
|
||||
rpc VerifyGoogleAuthResult(VerifyAuthResultReq)returns(VerifyGoogleAuthResultResp);
|
||||
// VerifyPlatformAuthResult 驗證 google 登入是否有效
|
||||
rpc VerifyPlatformAuthResult(VerifyAuthResultReq)returns(VerifyAuthResultResp);
|
||||
// LineCodeToAccessToken Line 驗證相關
|
||||
rpc LineCodeToAccessToken(NoneReq) returns (LineAccessTokenResp);
|
||||
rpc LineCodeToAccessToken(LineGetTokenReq) returns (LineAccessTokenResp);
|
||||
// LineGetProfileByAccessToken Line 驗證相關
|
||||
rpc LineGetProfileByAccessToken(NoneReq) returns (LineUserProfile);
|
||||
rpc LineGetProfileByAccessToken(LineGetUserInfoReq) returns (LineUserProfile);
|
||||
}
|
||||
// ================ account ================
|
|
@ -4,13 +4,11 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/redis"
|
||||
"github.com/zeromicro/go-zero/zrpc"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
zrpc.RpcServerConf
|
||||
redis.RedisConf
|
||||
// Redis Cluster
|
||||
Cache cache.CacheConf
|
||||
CacheExpireTime time.Duration
|
||||
|
|
|
@ -44,43 +44,30 @@ func (l *BindAccountLogic) BindAccount(in *member.BindingUserReq) (*member.Bindi
|
|||
}); err != nil {
|
||||
return nil, errs.InvalidFormat(err.Error())
|
||||
}
|
||||
|
||||
// 先確定有這個Account
|
||||
if _, err := l.svcCtx.AccountUseCase.GetUserAccountInfo(l.ctx, usecase.GetUIDByAccountRequest{Account: in.GetLoginId()}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var err error
|
||||
uid := in.GetUid()
|
||||
// 有 UID 綁看看,沒帶UID 近來,確認沒重複就直接綁一個給他
|
||||
if in.GetUid() == "" {
|
||||
uid, err = l.svcCtx.AccountUseCase.Generate(l.ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
t, err := int64ToInt32Safe(in.GetType())
|
||||
s, err := safeInt64ToInt32(in.GetType())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if _, err := l.svcCtx.AccountUseCase.BindAccount(l.ctx, usecase.BindingUser{
|
||||
LoginID: in.LoginId,
|
||||
UID: uid,
|
||||
Type: domain.AccountType(t),
|
||||
}); err != nil {
|
||||
account, err := l.svcCtx.AccountUseCase.BindAccount(l.ctx, usecase.BindingUser{
|
||||
UID: in.GetUid(),
|
||||
LoginID: in.GetLoginId(),
|
||||
Type: domain.AccountType(s),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.BindingUserResp{
|
||||
LoginId: in.LoginId,
|
||||
Uid: uid,
|
||||
LoginId: account.LoginID,
|
||||
Uid: account.UID,
|
||||
Type: in.GetType(),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func int64ToInt32Safe(value int64) (int32, error) {
|
||||
if value > math.MaxInt32 || value < math.MinInt32 {
|
||||
return 0, fmt.Errorf("value %d is out of int32 range", value)
|
||||
func safeInt64ToInt32(n int64) (int32, error) {
|
||||
if n < math.MinInt32 || n > math.MaxInt32 {
|
||||
return 0, fmt.Errorf("int64 value %d out of int8 range", n)
|
||||
}
|
||||
return int32(value), nil
|
||||
|
||||
return int32(n), nil
|
||||
}
|
||||
|
|
|
@ -5,8 +5,11 @@ import (
|
|||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
|
||||
domain "code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
type BindUserInfoLogic struct {
|
||||
|
@ -23,25 +26,42 @@ func NewBindUserInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Bind
|
|||
}
|
||||
}
|
||||
|
||||
type createUserInfo struct {
|
||||
Uid string `validate:"required"`
|
||||
VerifyType int32 `validate:"required,oneof=0 1 2 3"`
|
||||
AlarmType int32 `validate:"required,oneof=0 1 2"`
|
||||
Status int32 `validate:"required,oneof=1 2 3 4 5 6"`
|
||||
RoleId string `validate:"required"`
|
||||
Language string `validate:"required"`
|
||||
Currency string `validate:"required"`
|
||||
NickName string `validate:"required"`
|
||||
}
|
||||
|
||||
// 必要的還是在這邊驗一次好了
|
||||
type createUserInfoReq struct {
|
||||
Uid string `validate:"required"` // 唯一辨識碼
|
||||
UID string `validate:"required"` // 唯一辨識碼
|
||||
Language string `validate:"required"`
|
||||
Currency string `validate:"required"`
|
||||
}
|
||||
|
||||
// BindUserInfo 初次,綁定 User Info
|
||||
func (l *BindUserInfoLogic) BindUserInfo(in *member.CreateUserInfoReq) (*member.OKResp, error) {
|
||||
// 驗證資料
|
||||
if err := l.svcCtx.Validate.ValidateAll(&createUserInfoReq{
|
||||
UID: in.GetUid(),
|
||||
Language: in.GetLanguage(),
|
||||
Currency: in.GetCurrency(),
|
||||
}); err != nil {
|
||||
return nil, errs.InvalidFormat(err.Error())
|
||||
}
|
||||
|
||||
err := l.svcCtx.AccountUseCase.BindUserInfo(l.ctx, usecase.CreateUserInfoRequest{
|
||||
UID: in.GetUid(),
|
||||
AvatarURL: proto.String(in.GetAvatar()),
|
||||
FullName: proto.String(in.GetFullName()),
|
||||
Nickname: proto.String(in.GetNickName()),
|
||||
GenderCode: proto.Int64(in.GetGender()),
|
||||
Birthdate: proto.Int64(in.GetBirthdate()),
|
||||
PhoneNumber: proto.String(in.GetPhoneNumber()),
|
||||
Email: proto.String(in.GetEmail()),
|
||||
Address: proto.String(in.GetAddress()),
|
||||
PreferredLanguage: in.GetLanguage(),
|
||||
Currency: in.GetCurrency(),
|
||||
AlarmCategory: domain.AlarmType(in.GetAlarmType().Number()),
|
||||
UserStatus: domain.Status(in.GetStatus().Number()),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.OKResp{}, nil
|
||||
}
|
||||
|
|
|
@ -3,6 +3,8 @@ package accountlogic
|
|||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
|
||||
|
@ -23,9 +25,24 @@ func NewBindVerifyEmailLogic(ctx context.Context, svcCtx *svc.ServiceContext) *B
|
|||
}
|
||||
}
|
||||
|
||||
type bindEmailVerifyReq struct {
|
||||
UID string `validate:"required"` // 唯一辨識碼
|
||||
Email string `validate:"required"` // 唯一辨識碼
|
||||
}
|
||||
|
||||
// BindVerifyEmail 綁定 Email
|
||||
func (l *BindVerifyEmailLogic) BindVerifyEmail(in *member.BindVerifyEmailReq) (*member.OKResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
if err := l.svcCtx.Validate.ValidateAll(&bindEmailVerifyReq{
|
||||
UID: in.GetUid(),
|
||||
Email: in.GetEmail(),
|
||||
}); err != nil {
|
||||
return nil, errs.InvalidFormat(err.Error())
|
||||
}
|
||||
|
||||
err := l.svcCtx.AccountUseCase.BindVerifyEmail(l.ctx, in.GetUid(), in.GetEmail())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.OKResp{}, nil
|
||||
}
|
||||
|
|
|
@ -3,6 +3,8 @@ package accountlogic
|
|||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
|
||||
|
@ -23,9 +25,24 @@ func NewBindVerifyPhoneLogic(ctx context.Context, svcCtx *svc.ServiceContext) *B
|
|||
}
|
||||
}
|
||||
|
||||
type bindPhoneVerifyReq struct {
|
||||
UID string `validate:"required"` // 唯一辨識碼
|
||||
Phone string `validate:"required"` // 唯一辨識碼
|
||||
}
|
||||
|
||||
// BindVerifyPhone 綁定 Phone
|
||||
func (l *BindVerifyPhoneLogic) BindVerifyPhone(in *member.BindVerifyPhoneReq) (*member.OKResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
if err := l.svcCtx.Validate.ValidateAll(&bindPhoneVerifyReq{
|
||||
UID: in.GetUid(),
|
||||
Phone: in.GetPhone(),
|
||||
}); err != nil {
|
||||
return nil, errs.InvalidFormat(err.Error())
|
||||
}
|
||||
|
||||
err := l.svcCtx.AccountUseCase.BindVerifyPhone(l.ctx, in.GetUid(), in.GetPhone())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.OKResp{}, nil
|
||||
}
|
||||
|
|
|
@ -3,6 +3,10 @@ package accountlogic
|
|||
import (
|
||||
"context"
|
||||
|
||||
domain "code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
|
||||
|
@ -23,9 +27,35 @@ func NewCheckRefreshCodeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *
|
|||
}
|
||||
}
|
||||
|
||||
type checkRefreshCodeReq struct {
|
||||
LoginID string `validate:"required"`
|
||||
VerifyCode string `validate:"required"`
|
||||
}
|
||||
|
||||
// CheckRefreshCode 驗證忘記密碼 token 不刪除,只確認)
|
||||
func (l *CheckRefreshCodeLogic) CheckRefreshCode(in *member.VerifyRefreshCodeReq) (*member.OKResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
// 驗證資料
|
||||
if err := l.svcCtx.Validate.ValidateAll(&checkRefreshCodeReq{
|
||||
LoginID: in.GetAccount(),
|
||||
VerifyCode: in.GetVerifyCode(),
|
||||
}); err != nil {
|
||||
return nil, errs.InvalidFormat(err.Error())
|
||||
}
|
||||
code := domain.GenerateCodeType(in.GetCodeType())
|
||||
_, status := domain.GetCodeNameByCode(code)
|
||||
if !status {
|
||||
return nil, errs.InvalidFormat("codeType is invalid")
|
||||
}
|
||||
|
||||
// 執行
|
||||
err := l.svcCtx.AccountUseCase.CheckRefreshCode(l.ctx, usecase.VerifyRefreshCodeRequest{
|
||||
LoginID: in.GetAccount(),
|
||||
VerifyCode: in.GetVerifyCode(),
|
||||
CodeType: code,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.OKResp{}, nil
|
||||
}
|
||||
|
|
|
@ -2,6 +2,12 @@ package accountlogic
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"math"
|
||||
|
||||
domain "code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
|
@ -23,9 +29,47 @@ func NewCreateUserAccountLogic(ctx context.Context, svcCtx *svc.ServiceContext)
|
|||
}
|
||||
}
|
||||
|
||||
type createUserAccountReq struct {
|
||||
LoginID string `validate:"required"`
|
||||
Token string `validate:"required"`
|
||||
}
|
||||
|
||||
// CreateUserAccount 建立帳號與密碼 -> 可登入,但可不可以做其他事情看業務流程,也可以只註冊就好
|
||||
func (l *CreateUserAccountLogic) CreateUserAccount(in *member.CreateLoginUserReq) (*member.OKResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
// 驗證資料
|
||||
if err := l.svcCtx.Validate.ValidateAll(&createUserAccountReq{
|
||||
LoginID: in.GetLoginId(),
|
||||
Token: in.GetToken(),
|
||||
}); err != nil {
|
||||
return nil, errs.InvalidFormat(err.Error())
|
||||
}
|
||||
|
||||
toInt8, err := safeInt64ToInt8(in.GetPlatform())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
platform := domain.Platform(toInt8)
|
||||
if platform.ToString() == "" {
|
||||
return nil, errs.InvalidFormat("platform not found")
|
||||
}
|
||||
|
||||
err = l.svcCtx.AccountUseCase.CreateUserAccount(l.ctx, usecase.CreateLoginUserRequest{
|
||||
LoginID: in.GetLoginId(),
|
||||
Platform: platform,
|
||||
Token: in.GetToken(),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.OKResp{}, nil
|
||||
}
|
||||
|
||||
func safeInt64ToInt8(n int64) (int8, error) {
|
||||
if n < math.MinInt8 || n > math.MaxInt8 {
|
||||
return 0, fmt.Errorf("int64 value %d out of int8 range", n)
|
||||
}
|
||||
|
||||
return int8(n), nil
|
||||
}
|
||||
|
|
|
@ -5,6 +5,9 @@ import (
|
|||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
domain "code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
@ -23,9 +26,34 @@ func NewGenerateRefreshCodeLogic(ctx context.Context, svcCtx *svc.ServiceContext
|
|||
}
|
||||
}
|
||||
|
||||
type generateRefreshCodeReq struct {
|
||||
LoginID string `validate:"required"`
|
||||
}
|
||||
|
||||
// GenerateRefreshCode 這個帳號驗證碼(十分鐘),通用的
|
||||
func (l *GenerateRefreshCodeLogic) GenerateRefreshCode(in *member.GenerateRefreshCodeReq) (*member.GenerateRefreshCodeResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
// 驗證資料
|
||||
if err := l.svcCtx.Validate.ValidateAll(&generateRefreshCodeReq{
|
||||
LoginID: in.GetAccount(),
|
||||
}); err != nil {
|
||||
return nil, errs.InvalidFormat(err.Error())
|
||||
}
|
||||
ct := domain.GenerateCodeType(in.GetCodeType())
|
||||
_, status := domain.GetCodeNameByCode(ct)
|
||||
if !status {
|
||||
return nil, errs.InvalidFormat("codeType is invalid")
|
||||
}
|
||||
|
||||
return &member.GenerateRefreshCodeResp{}, nil
|
||||
// 產生
|
||||
code, err := l.svcCtx.AccountUseCase.GenerateRefreshCode(l.ctx, usecase.GenerateRefreshCodeRequest{
|
||||
LoginID: in.GetAccount(),
|
||||
CodeType: ct,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.GenerateRefreshCodeResp{
|
||||
Data: &member.VerifyCode{VerifyCode: code.Data.VerifyCode},
|
||||
}, nil
|
||||
}
|
||||
|
|
|
@ -3,6 +3,9 @@ package accountlogic
|
|||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
|
||||
|
@ -23,9 +26,27 @@ func NewGetUIDByAccountLogic(ctx context.Context, svcCtx *svc.ServiceContext) *G
|
|||
}
|
||||
}
|
||||
|
||||
type getUIDByAccountReq struct {
|
||||
Account string `validate:"required"`
|
||||
}
|
||||
|
||||
// GetUIDByAccount 用帳號換取 UID
|
||||
func (l *GetUIDByAccountLogic) GetUIDByAccount(in *member.GetUIDByAccountReq) (*member.GetUIDByAccountResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
if err := l.svcCtx.Validate.ValidateAll(&getUIDByAccountReq{
|
||||
Account: in.GetAccount(),
|
||||
}); err != nil {
|
||||
return nil, errs.InvalidFormat(err.Error())
|
||||
}
|
||||
|
||||
return &member.GetUIDByAccountResp{}, nil
|
||||
account, err := l.svcCtx.AccountUseCase.GetUIDByAccount(l.ctx, usecase.GetUIDByAccountRequest{
|
||||
Account: in.GetAccount(),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.GetUIDByAccountResp{
|
||||
Account: account.Account,
|
||||
Uid: account.UID,
|
||||
}, nil
|
||||
}
|
||||
|
|
|
@ -3,6 +3,9 @@ package accountlogic
|
|||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
|
||||
|
@ -23,9 +26,30 @@ func NewGetUserAccountInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext)
|
|||
}
|
||||
}
|
||||
|
||||
type getUserAccountInfoReq struct {
|
||||
Account string `validate:"required"`
|
||||
}
|
||||
|
||||
// GetUserAccountInfo 取得帳號密碼資料
|
||||
func (l *GetUserAccountInfoLogic) GetUserAccountInfo(in *member.GetUIDByAccountReq) (*member.GetAccountInfoResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
if err := l.svcCtx.Validate.ValidateAll(&getUserAccountInfoReq{
|
||||
Account: in.GetAccount(),
|
||||
}); err != nil {
|
||||
return nil, errs.InvalidFormat(err.Error())
|
||||
}
|
||||
|
||||
return &member.GetAccountInfoResp{}, nil
|
||||
info, err := l.svcCtx.AccountUseCase.GetUserAccountInfo(l.ctx, usecase.GetUIDByAccountRequest{
|
||||
Account: in.GetAccount(),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.GetAccountInfoResp{
|
||||
Data: &member.CreateLoginUserReq{
|
||||
LoginId: info.Data.LoginID,
|
||||
Token: info.Data.Token,
|
||||
Platform: info.Data.Platform.ToInt64(),
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
@ -25,7 +26,31 @@ func NewGetUserInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUs
|
|||
|
||||
// GetUserInfo 取得會員資訊
|
||||
func (l *GetUserInfoLogic) GetUserInfo(in *member.GetUserInfoReq) (*member.GetUserInfoResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
info, err := l.svcCtx.AccountUseCase.GetUserInfo(l.ctx, usecase.GetUserInfoRequest{
|
||||
UID: in.GetUid(),
|
||||
NickName: in.GetNickName(),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.GetUserInfoResp{}, nil
|
||||
return &member.GetUserInfoResp{
|
||||
Data: &member.UserInfo{
|
||||
Uid: info.UID,
|
||||
AvatarUrl: info.AvatarURL,
|
||||
NickName: info.Nickname,
|
||||
FullName: info.FullName,
|
||||
GenderCode: info.GenderCode,
|
||||
Birthday: info.Birthdate,
|
||||
Phone: info.PhoneNumber,
|
||||
Email: info.Email,
|
||||
Address: info.Address,
|
||||
AlarmType: member.AlarmType(info.AlarmCategory),
|
||||
Status: member.MemberStatus(info.UserStatus),
|
||||
Language: info.PreferredLanguage,
|
||||
Currency: info.Currency,
|
||||
CreateTime: info.CreateTime,
|
||||
UpdateTime: info.UpdateTime,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
|
|
@ -24,8 +24,13 @@ func NewLineCodeToAccessTokenLogic(ctx context.Context, svcCtx *svc.ServiceConte
|
|||
}
|
||||
|
||||
// LineCodeToAccessToken Line 驗證相關
|
||||
func (l *LineCodeToAccessTokenLogic) LineCodeToAccessToken(in *member.NoneReq) (*member.LineAccessTokenResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
func (l *LineCodeToAccessTokenLogic) LineCodeToAccessToken(in *member.LineGetTokenReq) (*member.LineAccessTokenResp, error) {
|
||||
token, err := l.svcCtx.AccountUseCase.LineCodeToAccessToken(l.ctx, in.GetCode())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.LineAccessTokenResp{}, nil
|
||||
return &member.LineAccessTokenResp{
|
||||
Token: token.AccessToken,
|
||||
}, nil
|
||||
}
|
||||
|
|
|
@ -24,8 +24,16 @@ func NewLineGetProfileByAccessTokenLogic(ctx context.Context, svcCtx *svc.Servic
|
|||
}
|
||||
|
||||
// LineGetProfileByAccessToken Line 驗證相關
|
||||
func (l *LineGetProfileByAccessTokenLogic) LineGetProfileByAccessToken(in *member.NoneReq) (*member.LineUserProfile, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
func (l *LineGetProfileByAccessTokenLogic) LineGetProfileByAccessToken(in *member.LineGetUserInfoReq) (*member.LineUserProfile, error) {
|
||||
user, err := l.svcCtx.AccountUseCase.LineGetProfileByAccessToken(l.ctx, in.GetToken())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.LineUserProfile{}, nil
|
||||
return &member.LineUserProfile{
|
||||
DisplayName: user.DisplayName,
|
||||
UserId: user.UserID,
|
||||
PictureUrl: user.PictureURL,
|
||||
StatusMessage: user.StatusMessage,
|
||||
}, nil
|
||||
}
|
||||
|
|
|
@ -3,8 +3,11 @@ package accountlogic
|
|||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
pb "code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
"google.golang.org/protobuf/proto"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
@ -24,8 +27,72 @@ func NewListMemberLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListMe
|
|||
}
|
||||
|
||||
// ListMember 取得會員列表
|
||||
func (l *ListMemberLogic) ListMember(in *member.ListUserInfoReq) (*member.ListUserInfoResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
func (l *ListMemberLogic) ListMember(in *pb.ListUserInfoReq) (*pb.ListUserInfoResp, error) {
|
||||
q := usecase.ListUserInfoRequest{
|
||||
PageSize: in.GetPageSize(),
|
||||
PageIndex: in.GetPageIndex(),
|
||||
}
|
||||
if in.CreateStartTime != nil {
|
||||
q.CreateStartTime = proto.Int64(in.GetCreateStartTime())
|
||||
}
|
||||
|
||||
return &member.ListUserInfoResp{}, nil
|
||||
if in.CreateEndTime != nil {
|
||||
q.CreateEndTime = proto.Int64(in.GetCreateEndTime())
|
||||
}
|
||||
if in.AlarmType != nil {
|
||||
a := member.AlarmType(in.GetAlarmType().Number())
|
||||
q.AlarmCategory = &a
|
||||
}
|
||||
|
||||
if in.Status != nil {
|
||||
s := member.Status(in.GetStatus().Number())
|
||||
q.UserStatus = &s
|
||||
}
|
||||
|
||||
members, err := l.svcCtx.AccountUseCase.ListMember(l.ctx, q)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
res := make([]*pb.UserInfo, 0, members.Page.Size)
|
||||
if len(members.Data) == 0 {
|
||||
return &pb.ListUserInfoResp{
|
||||
Data: res,
|
||||
Page: &pb.Pager{
|
||||
Total: 0,
|
||||
Size: members.Page.Size,
|
||||
Index: members.Page.Index,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
at := pb.AlarmType(members.Data[0].AlarmCategory)
|
||||
status := pb.MemberStatus(members.Data[0].UserStatus)
|
||||
|
||||
for _, m := range members.Data {
|
||||
res = append(res, &pb.UserInfo{
|
||||
Uid: m.UID,
|
||||
AvatarUrl: m.AvatarURL,
|
||||
FullName: m.FullName,
|
||||
NickName: m.Nickname,
|
||||
GenderCode: m.GenderCode,
|
||||
Birthday: m.Birthdate,
|
||||
Address: m.Address,
|
||||
Email: m.Email,
|
||||
Phone: m.PhoneNumber,
|
||||
Language: m.PreferredLanguage,
|
||||
Currency: m.Currency,
|
||||
AlarmType: at,
|
||||
Status: status,
|
||||
CreateTime: m.CreateTime,
|
||||
UpdateTime: m.UpdateTime,
|
||||
})
|
||||
}
|
||||
|
||||
return &pb.ListUserInfoResp{
|
||||
Data: res,
|
||||
Page: &pb.Pager{
|
||||
Total: members.Page.Total,
|
||||
Size: members.Page.Size,
|
||||
Index: members.Page.Index,
|
||||
},
|
||||
}, nil
|
||||
}
|
||||
|
|
|
@ -3,7 +3,11 @@ package accountlogic
|
|||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
|
||||
pb "code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
|
@ -24,8 +28,16 @@ func NewUpdateStatusLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Upda
|
|||
}
|
||||
|
||||
// UpdateStatus 修改狀態
|
||||
func (l *UpdateStatusLogic) UpdateStatus(in *member.UpdateStatusReq) (*member.OKResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
func (l *UpdateStatusLogic) UpdateStatus(in *pb.UpdateStatusReq) (*pb.OKResp, error) {
|
||||
if in.Status == pb.MemberStatus_STATUS_NONE {
|
||||
return nil, errs.InvalidFormat("failed to get correct status")
|
||||
}
|
||||
|
||||
return &member.OKResp{}, nil
|
||||
s := member.Status(in.GetStatus().Number())
|
||||
err := l.svcCtx.AccountUseCase.UpdateStatus(l.ctx, usecase.UpdateStatusRequest{Status: s, UID: in.GetUid()})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &pb.OKResp{}, nil
|
||||
}
|
||||
|
|
|
@ -3,7 +3,10 @@ package accountlogic
|
|||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
|
||||
pb "code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
|
@ -24,8 +27,39 @@ func NewUpdateUserInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Up
|
|||
}
|
||||
|
||||
// UpdateUserInfo 更新 User Info
|
||||
func (l *UpdateUserInfoLogic) UpdateUserInfo(in *member.UpdateUserInfoReq) (*member.OKResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
func (l *UpdateUserInfoLogic) UpdateUserInfo(in *pb.UpdateUserInfoReq) (*pb.OKResp, error) {
|
||||
q := usecase.UpdateUserInfoRequest{
|
||||
UID: in.GetUid(),
|
||||
AvatarURL: in.Avatar,
|
||||
FullName: in.FullName,
|
||||
Nickname: in.NickName,
|
||||
Birthdate: in.Birthdate,
|
||||
Address: in.Address,
|
||||
PreferredLanguage: in.Language,
|
||||
Currency: in.Currency,
|
||||
}
|
||||
if in.Gender != nil {
|
||||
c := *in.Gender
|
||||
code, err := safeInt64ToInt8(c)
|
||||
if err == nil {
|
||||
q.GenderCode = &code
|
||||
}
|
||||
}
|
||||
|
||||
return &member.OKResp{}, nil
|
||||
if in.AlarmType != nil {
|
||||
a := member.AlarmType(in.GetAlarmType().Number())
|
||||
q.AlarmCategory = &a
|
||||
}
|
||||
|
||||
if in.Status != nil {
|
||||
s := member.Status(in.GetStatus().Number())
|
||||
q.UserStatus = &s
|
||||
}
|
||||
|
||||
err := l.svcCtx.AccountUseCase.UpdateUserInfo(l.ctx, &q)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &pb.OKResp{}, nil
|
||||
}
|
||||
|
|
|
@ -3,6 +3,8 @@ package accountlogic
|
|||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
|
||||
|
@ -25,7 +27,15 @@ func NewUpdateUserTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *U
|
|||
|
||||
// UpdateUserToken 更新密碼
|
||||
func (l *UpdateUserTokenLogic) UpdateUserToken(in *member.UpdateTokenReq) (*member.OKResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
// 更新密碼
|
||||
err := l.svcCtx.AccountUseCase.UpdateUserToken(l.ctx, usecase.UpdateTokenRequest{
|
||||
Account: in.GetAccount(),
|
||||
Token: in.GetToken(),
|
||||
Platform: in.GetPlatform(),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.OKResp{}, nil
|
||||
}
|
||||
|
|
|
@ -3,6 +3,8 @@ package accountlogic
|
|||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
|
||||
|
@ -24,8 +26,26 @@ func NewVerifyGoogleAuthResultLogic(ctx context.Context, svcCtx *svc.ServiceCont
|
|||
}
|
||||
|
||||
// VerifyGoogleAuthResult 驗證 google 登入是否有效
|
||||
func (l *VerifyGoogleAuthResultLogic) VerifyGoogleAuthResult(in *member.VerifyAuthResultReq) (*member.VerifyAuthResultResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
func (l *VerifyGoogleAuthResultLogic) VerifyGoogleAuthResult(in *member.VerifyAuthResultReq) (*member.VerifyGoogleAuthResultResp, error) {
|
||||
result, err := l.svcCtx.AccountUseCase.VerifyGoogleAuthResult(l.ctx, usecase.VerifyAuthResultRequest{
|
||||
Account: in.GetAccount(),
|
||||
Token: in.GetToken(),
|
||||
})
|
||||
if err != nil {
|
||||
return &member.VerifyGoogleAuthResultResp{
|
||||
Status: false,
|
||||
}, err
|
||||
}
|
||||
|
||||
return &member.VerifyAuthResultResp{}, nil
|
||||
return &member.VerifyGoogleAuthResultResp{
|
||||
Status: true,
|
||||
Iss: &result.Iss,
|
||||
Aud: &result.Aud,
|
||||
Exp: &result.Exp,
|
||||
Iat: &result.Iat,
|
||||
Email: &result.Email,
|
||||
EmailVerified: &result.EmailVerified,
|
||||
Name: &result.Name,
|
||||
Picture: &result.Picture,
|
||||
}, nil
|
||||
}
|
||||
|
|
|
@ -3,6 +3,8 @@ package accountlogic
|
|||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
|
||||
|
@ -25,7 +27,15 @@ func NewVerifyPlatformAuthResultLogic(ctx context.Context, svcCtx *svc.ServiceCo
|
|||
|
||||
// VerifyPlatformAuthResult 驗證 google 登入是否有效
|
||||
func (l *VerifyPlatformAuthResultLogic) VerifyPlatformAuthResult(in *member.VerifyAuthResultReq) (*member.VerifyAuthResultResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
result, err := l.svcCtx.AccountUseCase.VerifyPlatformAuthResult(l.ctx, usecase.VerifyAuthResultRequest{
|
||||
Account: in.GetAccount(),
|
||||
Token: in.GetToken(),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.VerifyAuthResultResp{}, nil
|
||||
return &member.VerifyAuthResultResp{
|
||||
Status: result.Status,
|
||||
}, nil
|
||||
}
|
||||
|
|
|
@ -3,6 +3,10 @@ package accountlogic
|
|||
import (
|
||||
"context"
|
||||
|
||||
domain "code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
|
||||
|
||||
|
@ -23,9 +27,30 @@ func NewVerifyRefreshCodeLogic(ctx context.Context, svcCtx *svc.ServiceContext)
|
|||
}
|
||||
}
|
||||
|
||||
type verifyRefreshCodeRequest struct {
|
||||
LoginID string `validate:"required"`
|
||||
VerifyCode string `validate:"required"`
|
||||
CodeType int32 `validate:"required"`
|
||||
}
|
||||
|
||||
// VerifyRefreshCode 驗證忘記密碼 token
|
||||
func (l *VerifyRefreshCodeLogic) VerifyRefreshCode(in *member.VerifyRefreshCodeReq) (*member.OKResp, error) {
|
||||
// todo: add your logic here and delete this line
|
||||
if err := l.svcCtx.Validate.ValidateAll(&verifyRefreshCodeRequest{
|
||||
LoginID: in.Account,
|
||||
VerifyCode: in.VerifyCode,
|
||||
CodeType: in.CodeType,
|
||||
}); err != nil {
|
||||
return nil, errs.InvalidFormat(err.Error())
|
||||
}
|
||||
|
||||
err := l.svcCtx.AccountUseCase.VerifyRefreshCode(l.ctx, usecase.VerifyRefreshCodeRequest{
|
||||
LoginID: in.Account,
|
||||
VerifyCode: in.VerifyCode,
|
||||
CodeType: domain.GenerateCodeType(in.GetCodeType()),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &member.OKResp{}, nil
|
||||
}
|
||||
|
|
|
@ -114,7 +114,7 @@ func (s *AccountServer) CheckRefreshCode(ctx context.Context, in *member.VerifyR
|
|||
}
|
||||
|
||||
// VerifyGoogleAuthResult 驗證 google 登入是否有效
|
||||
func (s *AccountServer) VerifyGoogleAuthResult(ctx context.Context, in *member.VerifyAuthResultReq) (*member.VerifyAuthResultResp, error) {
|
||||
func (s *AccountServer) VerifyGoogleAuthResult(ctx context.Context, in *member.VerifyAuthResultReq) (*member.VerifyGoogleAuthResultResp, error) {
|
||||
l := accountlogic.NewVerifyGoogleAuthResultLogic(ctx, s.svcCtx)
|
||||
return l.VerifyGoogleAuthResult(in)
|
||||
}
|
||||
|
@ -126,13 +126,13 @@ func (s *AccountServer) VerifyPlatformAuthResult(ctx context.Context, in *member
|
|||
}
|
||||
|
||||
// LineCodeToAccessToken Line 驗證相關
|
||||
func (s *AccountServer) LineCodeToAccessToken(ctx context.Context, in *member.NoneReq) (*member.LineAccessTokenResp, error) {
|
||||
func (s *AccountServer) LineCodeToAccessToken(ctx context.Context, in *member.LineGetTokenReq) (*member.LineAccessTokenResp, error) {
|
||||
l := accountlogic.NewLineCodeToAccessTokenLogic(ctx, s.svcCtx)
|
||||
return l.LineCodeToAccessToken(in)
|
||||
}
|
||||
|
||||
// LineGetProfileByAccessToken Line 驗證相關
|
||||
func (s *AccountServer) LineGetProfileByAccessToken(ctx context.Context, in *member.NoneReq) (*member.LineUserProfile, error) {
|
||||
func (s *AccountServer) LineGetProfileByAccessToken(ctx context.Context, in *member.LineGetUserInfoReq) (*member.LineUserProfile, error) {
|
||||
l := accountlogic.NewLineGetProfileByAccessTokenLogic(ctx, s.svcCtx)
|
||||
return l.LineGetProfileByAccessToken(in)
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package svc
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/internal/config"
|
||||
cfg "code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/config"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
|
@ -46,6 +48,10 @@ func NewAccountUC(c *config.Config) usecase.AccountUseCase {
|
|||
EnableStandardReadWriteSplitMode: c.Mongo.EnableStandardReadWriteSplitMode,
|
||||
ConnectTimeoutMs: c.Mongo.ConnectTimeoutMs,
|
||||
}
|
||||
if c.Mongo.User != "" {
|
||||
conf.User = c.Mongo.User
|
||||
conf.Password = c.Mongo.Password
|
||||
}
|
||||
|
||||
// 快取選項
|
||||
cacheOpts := []cache.Option{
|
||||
|
@ -57,36 +63,47 @@ func NewAccountUC(c *config.Config) usecase.AccountUseCase {
|
|||
mgo.InitMongoOptions(*conf),
|
||||
}
|
||||
|
||||
newRedis, err := redis.NewRedis(c.RedisConf, redis.Cluster())
|
||||
newRedis, err := redis.NewRedis(c.Redis.RedisConf)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
ac := repository.NewAccountRepository(repository.AccountRepositoryParam{
|
||||
Conf: conf,
|
||||
CacheConf: c.Cache,
|
||||
CacheOpts: cacheOpts,
|
||||
DBOpts: dbOpts,
|
||||
})
|
||||
|
||||
u := repository.NewUserRepository(repository.UserRepositoryParam{
|
||||
Conf: conf,
|
||||
CacheConf: c.Cache,
|
||||
CacheOpts: cacheOpts,
|
||||
DBOpts: dbOpts,
|
||||
})
|
||||
guid := repository.NewAutoIDRepository(repository.AutoIDRepositoryParam{
|
||||
Conf: conf,
|
||||
DBOpts: dbOpts,
|
||||
})
|
||||
auid := repository.NewAccountUIDRepository(repository.AccountUIDRepositoryParam{
|
||||
Conf: conf,
|
||||
CacheConf: c.Cache,
|
||||
CacheOpts: cacheOpts,
|
||||
DBOpts: dbOpts,
|
||||
})
|
||||
|
||||
_, _ = ac.Index20241226001UP(context.Background())
|
||||
_, _ = u.Index20241226001UP(context.Background())
|
||||
_, _ = guid.Index20241226001UP(context.Background())
|
||||
_, _ = auid.Index20241226001UP(context.Background())
|
||||
|
||||
return uc.MustMemberUseCase(uc.MemberUseCaseParam{
|
||||
Account: repository.NewAccountRepository(repository.AccountRepositoryParam{
|
||||
Conf: conf,
|
||||
CacheConf: c.Cache,
|
||||
CacheOpts: cacheOpts,
|
||||
DBOpts: dbOpts,
|
||||
}),
|
||||
User: repository.NewUserRepository(repository.UserRepositoryParam{
|
||||
Conf: conf,
|
||||
CacheConf: c.Cache,
|
||||
CacheOpts: cacheOpts,
|
||||
DBOpts: dbOpts,
|
||||
}),
|
||||
AccountUID: repository.NewAccountUIDRepository(repository.AccountUIDRepositoryParam{
|
||||
Conf: conf,
|
||||
CacheConf: c.Cache,
|
||||
CacheOpts: cacheOpts,
|
||||
DBOpts: dbOpts,
|
||||
}),
|
||||
Account: ac,
|
||||
User: u,
|
||||
AccountUID: auid,
|
||||
VerifyCodeModel: repository.NewVerifyCodeRepository(newRedis),
|
||||
GenerateUID: repository.NewAutoIDRepository(repository.AutoIDRepositoryParam{
|
||||
Conf: conf,
|
||||
DBOpts: dbOpts,
|
||||
}),
|
||||
Config: prepareCfg(c),
|
||||
GenerateUID: guid,
|
||||
Config: prepareCfg(c),
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,8 @@ package repository
|
|||
import (
|
||||
"context"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
|
@ -14,7 +16,7 @@ type AccountRepository interface {
|
|||
Update(ctx context.Context, data *entity.Account) (*mongo.UpdateResult, error)
|
||||
Delete(ctx context.Context, id string) (int64, error)
|
||||
FindOneByAccount(ctx context.Context, loginID string) (*entity.Account, error)
|
||||
UpdateTokenByLoginID(ctx context.Context, account string, token string) error
|
||||
UpdateTokenByLoginID(ctx context.Context, account string, token string, platform member.Platform) error
|
||||
AccountIndexUP
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@ import (
|
|||
"errors"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/repository"
|
||||
|
@ -113,9 +115,9 @@ func (repo *AccountRepository) FindOneByAccount(ctx context.Context, loginID str
|
|||
}
|
||||
}
|
||||
|
||||
func (repo *AccountRepository) UpdateTokenByLoginID(ctx context.Context, account string, token string) error {
|
||||
func (repo *AccountRepository) UpdateTokenByLoginID(ctx context.Context, account string, token string, platform member.Platform) error {
|
||||
// todo: 之後需要同步快取
|
||||
filter := bson.M{"login_id": account}
|
||||
filter := bson.M{"login_id": account, "platform": platform.ToInt64()}
|
||||
update := bson.M{
|
||||
"$set": bson.M{
|
||||
"token": token,
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/repository"
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/repository"
|
||||
|
||||
mgo "code.30cm.net/digimon/library-go/mongo"
|
||||
"github.com/alicebob/miniredis/v2"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/repository"
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/repository"
|
||||
|
||||
mgo "code.30cm.net/digimon/library-go/mongo"
|
||||
"github.com/alicebob/miniredis/v2"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/repository"
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/repository"
|
||||
|
||||
mgo "code.30cm.net/digimon/library-go/mongo"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/repository"
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/repository"
|
||||
|
||||
mgo "code.30cm.net/digimon/library-go/mongo"
|
||||
"github.com/alicebob/miniredis/v2"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/repository"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/stores/redis"
|
||||
)
|
||||
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
package repository
|
||||
|
||||
import (
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain"
|
||||
"context"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain"
|
||||
|
||||
"github.com/alicebob/miniredis/v2"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/zeromicro/go-zero/core/stores/redis"
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"go.uber.org/mock/gomock"
|
||||
"google.golang.org/protobuf/proto"
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
mockRepo "code.30cm.net/digimon/app-cloudep-member-server/pkg/mock/repository"
|
||||
"context"
|
||||
"errors"
|
||||
"math"
|
||||
"testing"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
mockRepo "code.30cm.net/digimon/app-cloudep-member-server/pkg/mock/repository"
|
||||
|
||||
GIDLib "code.30cm.net/digimon/library-go/utils/invited_code"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"go.uber.org/mock/gomock"
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"math"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
|
@ -69,7 +70,7 @@ func (use *MemberUseCase) GetUIDByAccount(ctx context.Context, req usecase.GetUI
|
|||
e = errs.ResourceNotFoundWithScope(
|
||||
code.CloudEPMember,
|
||||
domain.FailedFindUIDByLoginIDErrorCode,
|
||||
fmt.Sprintf("failed to insert account: %s", req.Account),
|
||||
fmt.Sprintf("failed to find uid by account: %s", req.Account),
|
||||
)
|
||||
default:
|
||||
// 錯誤代碼 20-201-07
|
||||
|
@ -82,7 +83,7 @@ func (use *MemberUseCase) GetUIDByAccount(ctx context.Context, req usecase.GetUI
|
|||
{Key: "func", Value: "AccountUID.FindUIDByLoginID"},
|
||||
{Key: "err", Value: err.Error()},
|
||||
},
|
||||
"failed to find account").Wrap(err)
|
||||
"failed to find uid by account").Wrap(err)
|
||||
}
|
||||
|
||||
return usecase.GetUIDByAccountResponse{}, e
|
||||
|
@ -217,8 +218,11 @@ func (use *MemberUseCase) UpdateUserToken(ctx context.Context, req usecase.Updat
|
|||
fmt.Sprintf("failed to encrypt err: %s", e.Error()),
|
||||
)
|
||||
}
|
||||
|
||||
err := use.Account.UpdateTokenByLoginID(ctx, req.Account, token)
|
||||
toInt8, err := safeInt64ToInt8(req.Platform)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = use.Account.UpdateTokenByLoginID(ctx, req.Account, token, member.Platform(toInt8))
|
||||
if err != nil {
|
||||
var e *errs.LibError
|
||||
switch {
|
||||
|
@ -388,3 +392,11 @@ func GetOriginalInt64(value *int64) int64 {
|
|||
|
||||
return *value
|
||||
}
|
||||
|
||||
func safeInt64ToInt8(n int64) (int8, error) {
|
||||
if n < math.MinInt8 || n > math.MaxInt8 {
|
||||
return 0, fmt.Errorf("int64 value %d out of int8 range", n)
|
||||
}
|
||||
|
||||
return int8(n), nil
|
||||
}
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/config"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
|
@ -8,9 +12,6 @@ import (
|
|||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
mockRepo "code.30cm.net/digimon/app-cloudep-member-server/pkg/mock/repository"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/repository"
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
"code.30cm.net/digimon/library-go/errs/code"
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
"strconv"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
"code.30cm.net/digimon/library-go/errs/code"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
package usecase
|
||||
|
||||
import (
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
mockRepo "code.30cm.net/digimon/app-cloudep-member-server/pkg/mock/repository"
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/entity"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
|
||||
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
|
||||
mockRepo "code.30cm.net/digimon/app-cloudep-member-server/pkg/mock/repository"
|
||||
|
||||
"code.30cm.net/digimon/library-go/errs"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"go.uber.org/mock/gomock"
|
||||
|
|
Loading…
Reference in New Issue