app-cloudep-member-server/pkg/domain/usecase/account.go

219 lines
9.2 KiB
Go
Raw Permalink Normal View History

2024-12-30 03:58:14 +00:00
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"`
}