Documentation
¶
Index ¶
- type AuthMethod
- type BalanceLog
- type CommissionLog
- type ConnectionRecords
- type DailyTrafficStats
- type DeviceOnlineStatistics
- type LoginLog
- type Subscribe
- type SubscribeDiscount
- type SubscribePriceOption
- type TrafficLimit
- type TrafficStats
- type UserAffiliate
- type UserDevice
- type UserInfo
- type UserRepo
- type UserSubscribe
- type UserSubscribeLog
- type UserUseCase
- func (uc *UserUseCase) BindOAuth(ctx context.Context, method, redirect string) (string, error)
- func (uc *UserUseCase) BindOAuthCallback(ctx context.Context, userID int, method string, callback string) error
- func (uc *UserUseCase) BindTelegram(ctx context.Context, session string, botName string) (string, int64, error)
- func (uc *UserUseCase) DeleteCurrentUserAccount(ctx context.Context, userID int, sessionID string) error
- func (uc *UserUseCase) DeviceWSConnect(ctx context.Context) error
- func (uc *UserUseCase) GetDeviceList(ctx context.Context, userID int) ([]*UserDevice, int32, error)
- func (uc *UserUseCase) GetDeviceOnlineStatistics(ctx context.Context, userID int) (*DeviceOnlineStatistics, error)
- func (uc *UserUseCase) GetLoginLog(ctx context.Context, userID int, page, size int) ([]*LoginLog, int32, error)
- func (uc *UserUseCase) GetOAuthMethods(ctx context.Context, userID int) ([]*AuthMethod, error)
- func (uc *UserUseCase) GetSubscribeLog(ctx context.Context, userID int, page, size int) ([]*UserSubscribeLog, int32, error)
- func (uc *UserUseCase) GetUserTrafficStats(ctx context.Context, userID int, userSubscribeID int64, days int) (*TrafficStats, error)
- func (uc *UserUseCase) PreUnsubscribe(ctx context.Context, userID, id int) (int64, error)
- func (uc *UserUseCase) QueryUserAffiliate(ctx context.Context, userID int) (registers int64, totalCommission int64, err error)
- func (uc *UserUseCase) QueryUserAffiliateList(ctx context.Context, userID int, page, size int) ([]*UserAffiliate, int32, error)
- func (uc *UserUseCase) QueryUserBalanceLog(ctx context.Context, userID int) ([]*BalanceLog, int32, error)
- func (uc *UserUseCase) QueryUserCommissionLog(ctx context.Context, userID int, page, size int) ([]*CommissionLog, int32, error)
- func (uc *UserUseCase) QueryUserInfo(ctx context.Context, userID int) (*UserInfo, error)
- func (uc *UserUseCase) QueryUserSubscribe(ctx context.Context, userID int) ([]*UserSubscribe, int32, error)
- func (uc *UserUseCase) ResetUserSubscribeToken(ctx context.Context, userID, userSubscribeID int) error
- func (uc *UserUseCase) UnbindDevice(ctx context.Context, userID, deviceID int) error
- func (uc *UserUseCase) UnbindOAuth(ctx context.Context, userID int, method string) error
- func (uc *UserUseCase) UnbindTelegram(ctx context.Context, userID int) error
- func (uc *UserUseCase) Unsubscribe(ctx context.Context, userID, id int) error
- func (uc *UserUseCase) UpdateBindEmail(ctx context.Context, userID int, email string) error
- func (uc *UserUseCase) UpdateBindMobile(ctx context.Context, userID int, areaCode, mobile, code string) error
- func (uc *UserUseCase) UpdateUserNotify(ctx context.Context, userID int, ...) error
- func (uc *UserUseCase) UpdateUserPassword(ctx context.Context, userID int, password string) error
- func (uc *UserUseCase) UpdateUserRules(ctx context.Context, userID int, rules []string) error
- func (uc *UserUseCase) UpdateUserSubscribeNote(ctx context.Context, userID int, userSubscribeID int64, note string) error
- func (uc *UserUseCase) VerifyEmail(ctx context.Context, userID int, email, code string) error
- type WeeklyStat
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AuthMethod ¶
AuthMethod 认证方法
type BalanceLog ¶
type BalanceLog struct {
Type int32
UserID int64
Amount int64
OrderNo string
Balance int64
Timestamp int64
}
BalanceLog 余额日志
type CommissionLog ¶
CommissionLog 佣金日志
type ConnectionRecords ¶
type ConnectionRecords struct {
CurrentContinuousDays int64
HistoryContinuousDays int64
LongestSingleConnection int64
}
ConnectionRecords 连接记录
type DailyTrafficStats ¶
type DeviceOnlineStatistics ¶
type DeviceOnlineStatistics struct {
WeeklyStats []*WeeklyStat
ConnectionRecords *ConnectionRecords
}
DeviceOnlineStatistics 设备在线统计
type LoginLog ¶
type LoginLog struct {
ID int64
UserID int64
LoginIP string
UserAgent string
Success bool
Timestamp int64
}
LoginLog 登录日志
type Subscribe ¶
type Subscribe struct {
ID int64
Name string
Language string
Description string
UnitPrice int64
UnitTime string
Replacement int64
Inventory int64
Traffic int64
SpeedLimit int64
DeviceLimit int64
Quota int64
Nodes []int64
NodeTags []string
NodeGroupIDs []int64
NodeGroupID int64
TrafficLimit []*TrafficLimit
Show bool
Sell bool
Sort int64
DeductionRatio int64
AllowDeduction bool
ResetCycle int64
RenewalReset bool
ShowOriginalPrice bool
PriceOptions []SubscribePriceOption
Discount []*SubscribeDiscount
CreatedAt int64
UpdatedAt int64
}
Subscribe 订阅套餐信息
type SubscribeDiscount ¶
SubscribeDiscount 订阅折扣信息
type SubscribePriceOption ¶ added in v1.0.10
type TrafficLimit ¶
type TrafficStats ¶
type TrafficStats struct {
List []*DailyTrafficStats
TotalUpload int64
TotalDownload int64
TotalTraffic int64
}
type UserAffiliate ¶
UserAffiliate 用户推荐信息
type UserDevice ¶
type UserDevice struct {
ID int64
IP string
Identifier string
UserAgent string
Online bool
Enabled bool
CreatedAt int64
UpdatedAt int64
}
UserDevice 用户设备信息
type UserInfo ¶
type UserInfo struct {
ID int64
Avatar string
Balance int64
Commission int64
ReferralPercentage int32
OnlyFirstPurchase bool
GiftAmount int64
Telegram int64
ReferCode string
RefererID int64
Enable bool
IsAdmin bool
EnableBalanceNotify bool
EnableLoginNotify bool
EnableSubscribeNotify bool
EnableTradeNotify bool
AuthMethods []*AuthMethod
UserDevices []*UserDevice
Rules []string
CreatedAt int64
UpdatedAt int64
DeletedAt int64
IsDel bool
}
UserInfo 用户信息
type UserRepo ¶
type UserRepo interface {
// QueryUserInfo 查询用户信息
// 从context获取当前用户
// 返回用户信息,AuthIdentifier需要脱敏
// AuthMethods需要按照email、mobile优先级排序
QueryUserInfo(ctx context.Context, userID int) (*UserInfo, error)
// GetLoginLog 获取登录日志
// 从proxy_system_log表查询type=6(Login)的日志
GetLoginLog(ctx context.Context, userID int, page, size int) ([]*LoginLog, int32, error)
// QueryUserBalanceLog 查询用户余额日志
// 从proxy_system_log表查询type=8(Balance)的日志
// 固定查询全部,page=1, size=99999
QueryUserBalanceLog(ctx context.Context, userID int) ([]*BalanceLog, int32, error)
// QueryUserCommissionLog 查询用户佣金日志
// 从proxy_system_log表查询type=9(Commission)的日志
QueryUserCommissionLog(ctx context.Context, userID int, page, size int) ([]*CommissionLog, int32, error)
// QueryUserAffiliate 查询用户推荐数量
// 查询referer_id=当前用户的用户数量
// 查询commission日志求和
QueryUserAffiliate(ctx context.Context, userID int) (registers int64, totalCommission int64, err error)
// QueryUserAffiliateList 查询用户推荐列表
// 查询referer_id=当前用户的用户列表
// 需要查询每个用户的AuthMethod并脱敏
QueryUserAffiliateList(ctx context.Context, userID int, page, size int) ([]*UserAffiliate, int32, error)
// GetOAuthMethods 获取OAuth方法
// 查询当前用户的所有AuthMethods
GetOAuthMethods(ctx context.Context, userID int) ([]*AuthMethod, error)
// QueryUserSubscribe 查询用户订阅
// 查询status in (0,1,2,3)的订阅
// 需要解析Discount字段并计算ResetTime
QueryUserSubscribe(ctx context.Context, userID int) ([]*UserSubscribe, int32, error)
// GetSubscribeLog 获取订阅日志
// 从proxy_system_log查询type=20(Subscribe)的日志
GetSubscribeLog(ctx context.Context, userID int, page, size int) ([]*UserSubscribeLog, int32, error)
// ResetUserSubscribeToken 重置订阅令牌
// 验证UserSubscribeId属于当前用户
// 生成新Token和UUID
// 清除缓存
ResetUserSubscribeToken(ctx context.Context, userID, userSubscribeID int) error
// PreUnsubscribe 预退订
// 调用CalculateRemainingAmount计算退款金额
PreUnsubscribe(ctx context.Context, userID, id int) (deductionAmount int64, err error)
// Unsubscribe 退订
// 验证订阅状态 status in (0,1,2)
// 使用事务处理退款逻辑
// 清除缓存
Unsubscribe(ctx context.Context, userID, id int) error
// UpdateUserNotify 更新通知设置
// 更新用户的4个通知开关
UpdateUserNotify(ctx context.Context, userID int, enableLoginNotify, enableBalanceNotify, enableSubscribeNotify, enableTradeNotify *bool) error
// UpdateUserPassword 更新密码
// 使用加密函数加密密码
UpdateUserPassword(ctx context.Context, userID int, password string) error
// BindTelegram 绑定Telegram
// 从JWT session获取,生成Telegram Bot URL
// 过期时间5分钟
BindTelegram(ctx context.Context, session string, botName string) (url string, expiredAt int64, err error)
// UnbindTelegram 解绑Telegram
// 查询telegram AuthMethod并删除
// 发送Telegram通知(需要telegram bot)
UnbindTelegram(ctx context.Context, userID int) error
// BindOAuth 绑定OAuth
// 根据method(google/apple/github/facebook)生成OAuth URL
// 生成state code并存入Redis(5分钟过期)
BindOAuth(ctx context.Context, method, redirect string) (string, error)
// BindOAuthCallback OAuth回调
// 验证state code
// 交换token获取用户信息
// 创建AuthMethod记录
BindOAuthCallback(ctx context.Context, userID int, method string, callback string) error
// UnbindOAuth 解绑OAuth
// 验证method不能为email/mobile
// 删除对应AuthMethod
UnbindOAuth(ctx context.Context, userID int, method string) error
// VerifyEmail 验证邮箱
// 从Redis验证code
// 设置AuthMethod.Verified=true
VerifyEmail(ctx context.Context, userID int, email, code string) error
// UpdateBindMobile 更新绑定手机
// 验证手机验证码
// 检查手机号是否已被其他用户绑定
// 创建或更新mobile AuthMethod
UpdateBindMobile(ctx context.Context, userID int, areaCode, mobile, code string) error
// UpdateBindEmail 更新绑定邮箱
// 检查邮箱是否已被其他用户绑定
// 创建或更新email AuthMethod(Verified=false)
UpdateBindEmail(ctx context.Context, userID int, email string) error
// DeviceWSConnect 设备WebSocket连接
// 升级WebSocket连接并添加设备到管理器
DeviceWSConnect(ctx context.Context) error
// GetDeviceList 获取设备列表
// 查询用户的所有设备
GetDeviceList(ctx context.Context, userID int) ([]*UserDevice, int32, error)
// UnbindDevice 解绑设备
// 验证设备属于当前用户并删除设备
UnbindDevice(ctx context.Context, userID, deviceID int) error
// GetDeviceOnlineStatistics 获取设备在线统计
// 获取设备连接统计信息
GetDeviceOnlineStatistics(ctx context.Context, userID int) (*DeviceOnlineStatistics, error)
// UpdateUserSubscribeNote 更新用户订阅备注
UpdateUserSubscribeNote(ctx context.Context, userID int, userSubscribeID int64, note string) error
// UpdateUserRules 更新用户规则
UpdateUserRules(ctx context.Context, userID int, rules []string) error
// DeleteCurrentUserAccount 删除当前用户账号
DeleteCurrentUserAccount(ctx context.Context, userID int, sessionID string) error
// GetUserTrafficStats 获取用户流量统计
GetUserTrafficStats(ctx context.Context, userID int, userSubscribeID int64, days int) (*TrafficStats, error)
}
UserRepo Public User数据仓库接口
type UserSubscribe ¶
type UserSubscribe struct {
ID int64
UserID int64
OrderID int64
SubscribeID int64
Subscribe *Subscribe
NodeGroupID int64
GroupLocked bool
StartTime int64
ExpireTime int64
FinishedAt int64
ResetTime int64
Traffic int64
Download int64
Upload int64
Token string
Status int32
Short string
CreatedAt int64
UpdatedAt int64
}
UserSubscribe 用户订阅信息
type UserSubscribeLog ¶
type UserSubscribeLog struct {
ID int64
UserID int64
UserSubscribeID int64
Token string
IP string
UserAgent string
Timestamp int64
}
UserSubscribeLog 用户订阅日志
type UserUseCase ¶
type UserUseCase struct {
// contains filtered or unexported fields
}
UserUseCase Public User用例
func NewUserUseCase ¶
func NewUserUseCase(repo UserRepo) *UserUseCase
NewUserUseCase 创建Public User用例
func (*UserUseCase) BindOAuthCallback ¶
func (uc *UserUseCase) BindOAuthCallback(ctx context.Context, userID int, method string, callback string) error
BindOAuthCallback OAuth回调
func (*UserUseCase) BindTelegram ¶
func (uc *UserUseCase) BindTelegram(ctx context.Context, session string, botName string) (string, int64, error)
BindTelegram 绑定Telegram
func (*UserUseCase) DeleteCurrentUserAccount ¶
func (uc *UserUseCase) DeleteCurrentUserAccount(ctx context.Context, userID int, sessionID string) error
DeleteCurrentUserAccount 删除当前用户账号
func (*UserUseCase) DeviceWSConnect ¶
func (uc *UserUseCase) DeviceWSConnect(ctx context.Context) error
DeviceWSConnect 设备WebSocket连接
func (*UserUseCase) GetDeviceList ¶
func (uc *UserUseCase) GetDeviceList(ctx context.Context, userID int) ([]*UserDevice, int32, error)
GetDeviceList 获取设备列表
func (*UserUseCase) GetDeviceOnlineStatistics ¶
func (uc *UserUseCase) GetDeviceOnlineStatistics(ctx context.Context, userID int) (*DeviceOnlineStatistics, error)
GetDeviceOnlineStatistics 获取设备在线统计
func (*UserUseCase) GetLoginLog ¶
func (uc *UserUseCase) GetLoginLog(ctx context.Context, userID int, page, size int) ([]*LoginLog, int32, error)
GetLoginLog 获取登录日志
func (*UserUseCase) GetOAuthMethods ¶
func (uc *UserUseCase) GetOAuthMethods(ctx context.Context, userID int) ([]*AuthMethod, error)
GetOAuthMethods 获取OAuth方法
func (*UserUseCase) GetSubscribeLog ¶
func (uc *UserUseCase) GetSubscribeLog(ctx context.Context, userID int, page, size int) ([]*UserSubscribeLog, int32, error)
GetSubscribeLog 获取订阅日志
func (*UserUseCase) GetUserTrafficStats ¶
func (uc *UserUseCase) GetUserTrafficStats(ctx context.Context, userID int, userSubscribeID int64, days int) (*TrafficStats, error)
GetUserTrafficStats 获取用户流量统计
func (*UserUseCase) PreUnsubscribe ¶
PreUnsubscribe 预退订
func (*UserUseCase) QueryUserAffiliate ¶
func (uc *UserUseCase) QueryUserAffiliate(ctx context.Context, userID int) (registers int64, totalCommission int64, err error)
QueryUserAffiliate 查询用户推荐数量
func (*UserUseCase) QueryUserAffiliateList ¶
func (uc *UserUseCase) QueryUserAffiliateList(ctx context.Context, userID int, page, size int) ([]*UserAffiliate, int32, error)
QueryUserAffiliateList 查询用户推荐列表
func (*UserUseCase) QueryUserBalanceLog ¶
func (uc *UserUseCase) QueryUserBalanceLog(ctx context.Context, userID int) ([]*BalanceLog, int32, error)
QueryUserBalanceLog 查询用户余额日志
func (*UserUseCase) QueryUserCommissionLog ¶
func (uc *UserUseCase) QueryUserCommissionLog(ctx context.Context, userID int, page, size int) ([]*CommissionLog, int32, error)
QueryUserCommissionLog 查询用户佣金日志
func (*UserUseCase) QueryUserInfo ¶
QueryUserInfo 查询用户信息
func (*UserUseCase) QueryUserSubscribe ¶
func (uc *UserUseCase) QueryUserSubscribe(ctx context.Context, userID int) ([]*UserSubscribe, int32, error)
QueryUserSubscribe 查询用户订阅
func (*UserUseCase) ResetUserSubscribeToken ¶
func (uc *UserUseCase) ResetUserSubscribeToken(ctx context.Context, userID, userSubscribeID int) error
ResetUserSubscribeToken 重置订阅令牌
func (*UserUseCase) UnbindDevice ¶
func (uc *UserUseCase) UnbindDevice(ctx context.Context, userID, deviceID int) error
UnbindDevice 解绑设备
func (*UserUseCase) UnbindOAuth ¶
UnbindOAuth 解绑OAuth
func (*UserUseCase) UnbindTelegram ¶
func (uc *UserUseCase) UnbindTelegram(ctx context.Context, userID int) error
UnbindTelegram 解绑Telegram
func (*UserUseCase) Unsubscribe ¶
func (uc *UserUseCase) Unsubscribe(ctx context.Context, userID, id int) error
Unsubscribe 退订
func (*UserUseCase) UpdateBindEmail ¶
UpdateBindEmail 更新绑定邮箱
func (*UserUseCase) UpdateBindMobile ¶
func (uc *UserUseCase) UpdateBindMobile(ctx context.Context, userID int, areaCode, mobile, code string) error
UpdateBindMobile 更新绑定手机
func (*UserUseCase) UpdateUserNotify ¶
func (uc *UserUseCase) UpdateUserNotify(ctx context.Context, userID int, enableLoginNotify, enableBalanceNotify, enableSubscribeNotify, enableTradeNotify *bool) error
UpdateUserNotify 更新通知设置
func (*UserUseCase) UpdateUserPassword ¶
UpdateUserPassword 更新密码
func (*UserUseCase) UpdateUserRules ¶
UpdateUserRules 更新用户规则
func (*UserUseCase) UpdateUserSubscribeNote ¶
func (uc *UserUseCase) UpdateUserSubscribeNote(ctx context.Context, userID int, userSubscribeID int64, note string) error
UpdateUserSubscribeNote 更新用户订阅备注
func (*UserUseCase) VerifyEmail ¶
VerifyEmail 验证邮箱