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

219 lines
9.2 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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