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"`
|
||
}
|