219 lines
9.2 KiB
Go
219 lines
9.2 KiB
Go
|
package usecase
|
|||
|
|
|||
|
import (
|
|||
|
"app-cloudep-member-server/pkg/domain/member"
|
|||
|
"context"
|
|||
|
)
|
|||
|
|
|||
|
// AccountUseCase 定義了帳號服務的操作方法
|
|||
|
type AccountUseCase interface {
|
|||
|
MemberUseCase
|
|||
|
BindingMemberUseCase
|
|||
|
VerifyMemberUseCase
|
|||
|
UIDGenerateUseCase
|
|||
|
}
|
|||
|
|
|||
|
type MemberUseCase interface {
|
|||
|
// CreateUserAccount 創建用戶帳號
|
|||
|
CreateUserAccount(ctx context.Context, req CreateLoginUserRequest) error
|
|||
|
// GetUIDByAccount 通過帳號取得 UID
|
|||
|
GetUIDByAccount(ctx context.Context, req GetUIDByAccountRequest) (GetUIDByAccountResponse, error)
|
|||
|
// GetUserAccountInfo 取得用戶帳號資訊
|
|||
|
GetUserAccountInfo(ctx context.Context, req GetUIDByAccountRequest) (GetAccountInfoResponse, error)
|
|||
|
// UpdateUserToken 更新用戶 Token (密碼)
|
|||
|
UpdateUserToken(ctx context.Context, req UpdateTokenRequest) error
|
|||
|
// UpdateUserInfo 更新用戶資訊
|
|||
|
UpdateUserInfo(ctx context.Context, req *UpdateUserInfoRequest) error
|
|||
|
// UpdateStatus 更新用戶狀態
|
|||
|
UpdateStatus(ctx context.Context, req UpdateStatusRequest) error
|
|||
|
// GetUserInfo 取得用戶資訊
|
|||
|
GetUserInfo(ctx context.Context, req GetUserInfoRequest) (UserInfo, error)
|
|||
|
// ListMember 取得會員列表
|
|||
|
ListMember(ctx context.Context, req ListUserInfoRequest) (ListUserInfoResponse, error)
|
|||
|
}
|
|||
|
|
|||
|
type BindingMemberUseCase interface {
|
|||
|
// BindUserInfo 綁定用戶信息
|
|||
|
BindUserInfo(ctx context.Context, req CreateUserInfoRequest) error
|
|||
|
// BindAccount 綁定帳號到 UID
|
|||
|
BindAccount(ctx context.Context, req BindingUser) (BindingUser, error)
|
|||
|
// BindVerifyEmail 驗證Email 後綁定到會員
|
|||
|
BindVerifyEmail(ctx context.Context, uid, email string) error
|
|||
|
// BindVerifyPhone 驗證 Phone 後綁定到會員
|
|||
|
BindVerifyPhone(ctx context.Context, uid, phone string) error
|
|||
|
}
|
|||
|
|
|||
|
// CreateUserInfoRequest 用於創建用戶詳細信息
|
|||
|
type CreateUserInfoRequest struct {
|
|||
|
UID string `json:"uid"` // 用戶 UID
|
|||
|
AvatarURL *string `json:"avatar_url,omitempty"` // 頭像 URL(可選)
|
|||
|
FullName *string `json:"full_name,omitempty"` // 用戶全名
|
|||
|
Nickname *string `json:"nickname,omitempty"` // 暱稱(可選)
|
|||
|
GenderCode *int64 `json:"gender_code,omitempty"` // 性別代碼
|
|||
|
Birthdate *int64 `json:"birthdate,omitempty"` // 生日 (格式: 19930417)
|
|||
|
PhoneNumber *string `json:"phone_number,omitempty"` // 電話
|
|||
|
Email *string `json:"email,omitempty"` // 電話
|
|||
|
Address *string `json:"address,omitempty"` // 地址
|
|||
|
AlarmCategory member.AlarmType `json:"alarm_category"` // 警報類型
|
|||
|
UserStatus member.Status `json:"user_status"` // 用戶狀態
|
|||
|
PreferredLanguage string `json:"preferred_language"` // 使用語言
|
|||
|
Currency string `json:"currency"` // 使用幣種
|
|||
|
}
|
|||
|
|
|||
|
type UserInfo struct {
|
|||
|
CreateUserInfoRequest
|
|||
|
CreateTime int64 `json:"create_time"` // 創建時間
|
|||
|
UpdateTime int64 `json:"update_time"` // 更新時間
|
|||
|
}
|
|||
|
|
|||
|
type UpdateUserInfoRequest struct {
|
|||
|
UID string `json:"uid"` // 用戶 UID
|
|||
|
AvatarURL *string `json:"avatar_url,omitempty"` // 頭像 URL(可選)
|
|||
|
FullName *string `json:"full_name,omitempty"` // 用戶全名
|
|||
|
Nickname *string `json:"nickname,omitempty"` // 暱稱(可選)
|
|||
|
GenderCode *int8 `json:"gender_code,omitempty"` // 性別代碼
|
|||
|
Birthdate *int64 `json:"birthdate,omitempty"` // 生日 (格式: 19930417)
|
|||
|
Address *string `json:"address,omitempty"` // 地址
|
|||
|
AlarmCategory *member.AlarmType `json:"alarm_category,omitempty"` // 警報類型
|
|||
|
UserStatus *member.Status `json:"user_status,omitempty"` // 用戶狀態
|
|||
|
PreferredLanguage *string `json:"preferred_language,omitempty"` // 使用語言
|
|||
|
Currency *string `json:"currency,omitempty"` // 使用幣種
|
|||
|
}
|
|||
|
|
|||
|
type CreateLoginUserRequest struct {
|
|||
|
LoginID string `json:"login_id"` // 登錄 ID
|
|||
|
Platform member.Platform `json:"platform"` // 平台類型
|
|||
|
Token string `json:"token"` // 驗證 Token
|
|||
|
}
|
|||
|
|
|||
|
// BindingUser 用於綁定用戶帳號
|
|||
|
type BindingUser struct {
|
|||
|
UID string `json:"uid"` // 用戶 UID
|
|||
|
LoginID string `json:"login_id"` // 登錄 ID
|
|||
|
Type member.AccountType `json:"type"` // 綁定類型
|
|||
|
}
|
|||
|
|
|||
|
// GetUIDByAccountRequest 用於通過帳號獲取用戶 UID
|
|||
|
type GetUIDByAccountRequest struct {
|
|||
|
Account string `json:"account"` // 帳號
|
|||
|
}
|
|||
|
|
|||
|
// GetUIDByAccountResponse 用於返回帳號對應的 UID 信息
|
|||
|
type GetUIDByAccountResponse struct {
|
|||
|
UID string `json:"uid"` // 用戶 UID
|
|||
|
Account string `json:"account"` // 帳號
|
|||
|
}
|
|||
|
|
|||
|
// GetAccountInfoResponse 用於返回用戶帳號信息
|
|||
|
type GetAccountInfoResponse struct {
|
|||
|
Data CreateLoginUserRequest `json:"data"` // 登錄用戶信息
|
|||
|
}
|
|||
|
|
|||
|
// UpdateTokenRequest 用於更新用戶 Token
|
|||
|
type UpdateTokenRequest struct {
|
|||
|
Account string `json:"account"` // 帳號
|
|||
|
Token string `json:"token"` // 新 Token
|
|||
|
Platform int64 `json:"platform"` // 平台類型
|
|||
|
}
|
|||
|
|
|||
|
// GenerateRefreshCodeRequest 用於請求產生刷新代碼
|
|||
|
type GenerateRefreshCodeRequest struct {
|
|||
|
LoginID string `json:"login_id"` // 帳號
|
|||
|
CodeType member.GenerateCodeType `json:"code_type"` // 代碼類型
|
|||
|
}
|
|||
|
|
|||
|
// VerifyCode 用於表示驗證代碼
|
|||
|
type VerifyCode struct {
|
|||
|
VerifyCode string `json:"verify_code"` // 驗證碼
|
|||
|
}
|
|||
|
|
|||
|
// GenerateRefreshCodeResponse 用於返回生成的驗證代碼
|
|||
|
type GenerateRefreshCodeResponse struct {
|
|||
|
Data VerifyCode `json:"data"` // 驗證碼數據
|
|||
|
}
|
|||
|
|
|||
|
// VerifyRefreshCodeRequest 用於驗證刷新代碼
|
|||
|
type VerifyRefreshCodeRequest struct {
|
|||
|
LoginID string `json:"Login_id"` // 帳號
|
|||
|
CodeType member.GenerateCodeType `json:"code_type"` // 代碼類型
|
|||
|
VerifyCode string `json:"verify_code"` // 驗證碼
|
|||
|
}
|
|||
|
|
|||
|
// UpdateStatusRequest 用於更新用戶狀態
|
|||
|
type UpdateStatusRequest struct {
|
|||
|
UID string `json:"uid"` // 用戶 UID
|
|||
|
Status member.Status `json:"status"` // 用戶狀態
|
|||
|
}
|
|||
|
|
|||
|
// GetUserInfoRequest 用於請求取得用戶詳細信息
|
|||
|
type GetUserInfoRequest struct {
|
|||
|
UID string `json:"uid,omitempty"` // 用戶 UID
|
|||
|
NickName string `json:"nick_name,omitempty"` // 暱稱(可選)
|
|||
|
}
|
|||
|
|
|||
|
// GetUserInfoResponse 用於返回用戶詳細信息
|
|||
|
type GetUserInfoResponse struct {
|
|||
|
Data UserInfo `json:"data"` // 用戶信息
|
|||
|
}
|
|||
|
|
|||
|
// ListUserInfoRequest 用於查詢符合條件的用戶列表
|
|||
|
type ListUserInfoRequest struct {
|
|||
|
VerificationType *member.AccountType `json:"verification_type,omitempty"` // 驗證類型(可選)
|
|||
|
AlarmCategory *member.AlarmType `json:"alarm_category,omitempty"` // 警報類型(可選)
|
|||
|
UserStatus *member.Status `json:"user_status,omitempty"` // 用戶狀態(可選)
|
|||
|
CreateStartTime *int64 `json:"create_start_time,omitempty"` // 創建開始時間(可選)
|
|||
|
CreateEndTime *int64 `json:"create_end_time,omitempty"` // 創建結束時間(可選)
|
|||
|
PageSize int64 `json:"page_size"` // 每頁大小
|
|||
|
PageIndex int64 `json:"page_index"` // 當前頁索引
|
|||
|
}
|
|||
|
|
|||
|
// ListUserInfoResponse 用於返回查詢的用戶列表及分頁信息
|
|||
|
type ListUserInfoResponse struct {
|
|||
|
Data []UserInfo `json:"data"` // 用戶列表
|
|||
|
Page Pager `json:"page"` // 分頁信息
|
|||
|
}
|
|||
|
|
|||
|
// VerifyAuthResultRequest 用於請求驗證授權結果
|
|||
|
type VerifyAuthResultRequest struct {
|
|||
|
Token string `json:"token"` // 驗證 Token
|
|||
|
Account string `json:"account"` // 帳號
|
|||
|
}
|
|||
|
|
|||
|
// VerifyAuthResultResponse 用於返回授權驗證結果
|
|||
|
type VerifyAuthResultResponse struct {
|
|||
|
Status bool `json:"status"` // 驗證結果狀態
|
|||
|
}
|
|||
|
|
|||
|
// TwitterAccessTokenResponse 用於返回 Twitter 授權令牌
|
|||
|
type TwitterAccessTokenResponse struct {
|
|||
|
Token string `json:"token"` // 授權 Token
|
|||
|
}
|
|||
|
|
|||
|
type GoogleTokenInfo struct {
|
|||
|
Iss string `json:"iss"` // 發行者 (issuer) 通常為 "https://accounts.google.com"
|
|||
|
Sub string `json:"sub"` // 使用者唯一 ID
|
|||
|
Aud string `json:"aud"` // Audience,應該與你的 Client ID 匹配
|
|||
|
Exp string `json:"exp"` // 過期時間 (UNIX timestamp)
|
|||
|
Iat string `json:"iat"` // 發行時間 (UNIX timestamp)
|
|||
|
Email string `json:"email"` // 使用者的電子郵件
|
|||
|
EmailVerified string `json:"email_verified"` // 郵件是否已驗證
|
|||
|
Name string `json:"name"` // 使用者的名稱
|
|||
|
Picture string `json:"picture"` // 使用者的頭像 URL
|
|||
|
}
|
|||
|
|
|||
|
type LineAccessTokenResponse struct {
|
|||
|
AccessToken string `json:"access_token"`
|
|||
|
IDToken string `json:"id_token"`
|
|||
|
ExpiresIn int `json:"expires_in"`
|
|||
|
TokenType string `json:"token_type"`
|
|||
|
Scope string `json:"scope"`
|
|||
|
RefreshToken string `json:"refresh_token"`
|
|||
|
}
|
|||
|
|
|||
|
type LineUserProfile struct {
|
|||
|
UserID string `json:"userId"`
|
|||
|
DisplayName string `json:"displayName"`
|
|||
|
PictureURL string `json:"pictureUrl"`
|
|||
|
StatusMessage string `json:"statusMessage"`
|
|||
|
}
|