feat: linuxdo根据等级设置额度

This commit is contained in:
liuweiqing 2024-03-15 19:26:20 +08:00
parent 4ce2381182
commit b76dde7f3a
3 changed files with 26 additions and 4 deletions

View File

@ -50,7 +50,7 @@ var PasswordLoginEnabled = true
var PasswordRegisterEnabled = true
var EmailVerificationEnabled = false
var GitHubOAuthEnabled = false
var LinuxDoOAuthEnabled = false
var LinuxDoOAuthEnabled = true
var WeChatAuthEnabled = false
var TelegramOAuthEnabled = false
var TurnstileCheckEnabled = false
@ -83,8 +83,8 @@ var SMTPToken = ""
var GitHubClientId = ""
var GitHubClientSecret = ""
var LinuxDoClientId = ""
var LinuxDoClientSecret = ""
var LinuxDoClientId = "cpgOEy7OYi0hKMx23zcioFe2VQUlgIF2"
var LinuxDoClientSecret = "PKXwhPs9tPLRGbgItKacUizzZdwSQfBW"
var WeChatServerAddress = ""
var WeChatServerToken = ""
@ -96,9 +96,12 @@ var TurnstileSecretKey = ""
var TelegramBotToken = ""
var TelegramBotName = ""
var QuotaForNewUser = 0
var QuotaForNewUser = 500000 //1$
var QuotaForInviter = 0
var QuotaForInvitee = 0
var QuotaForLinuxDoLevel1 = 10 //10$
var QuotaForLinuxDoLevel2 = 200 //200$
var QuotaForLinuxDoLevel3 = 1000 //1000$
var ChannelDisableThreshold = 5.0
var AutomaticDisableChannelEnabled = false
var AutomaticEnableChannelEnabled = false

View File

@ -119,6 +119,7 @@ func LinuxDoOAuth(c *gin.Context) {
LinuxDoId: strconv.Itoa(linuxdoUser.ID),
}
if model.IsLinuxDoIdAlreadyTaken(user.LinuxDoId) {
//如果已经登录了就查找用户信息填充到user中
err := user.FillUserByLinuxDoId()
if err != nil {
c.JSON(http.StatusOK, gin.H{
@ -147,6 +148,23 @@ func LinuxDoOAuth(c *gin.Context) {
"message": err.Error(),
})
return
} else {
// 添加调试信息:记录用户等级和相应的配额
common.SysLog(fmt.Sprintf("Setting quota for user with trust level %d: %s", linuxdoUser.TrustLevel, user.Username))
switch linuxdoUser.TrustLevel {
case 1:
model.IncreaseUserQuota(user.Id, common.QuotaForLinuxDoLevel1*500000)
common.SysLog(fmt.Sprintf("User '%s' assigned quota: %d (Level 1)", user.Username, common.QuotaForLinuxDoLevel1))
case 2:
model.IncreaseUserQuota(user.Id, common.QuotaForLinuxDoLevel2*500000)
common.SysLog(fmt.Sprintf("User '%s' assigned quota: %d (Level 2)", user.Username, common.QuotaForLinuxDoLevel2))
case 3:
model.IncreaseUserQuota(user.Id, common.QuotaForLinuxDoLevel3*500000)
common.SysLog(fmt.Sprintf("User '%s' assigned quota: %d (Level 3)", user.Username, common.QuotaForLinuxDoLevel3))
default:
common.SysLog(fmt.Sprintf("WARNING: User '%s' has an unknown trust level: %d", user.Username, linuxdoUser.TrustLevel))
}
}
} else {
c.JSON(http.StatusOK, gin.H{

View File

@ -174,6 +174,7 @@ func (user *User) Insert(inviterId int) error {
}
}
user.Quota = common.QuotaForNewUser
common.SysLog(fmt.Sprintf("普通用户注册中应该在linuxdo之前 '%s',额度:'%d'", user.Username, user.Quota))
user.AccessToken = common.GetUUID()
user.AffCode = common.GetRandomString(4)
result := DB.Create(user)