diff --git a/internal/handler/ghome/account/login.go b/internal/handler/ghome/account/login.go index 9f2f553..b3d0e98 100644 --- a/internal/handler/ghome/account/login.go +++ b/internal/handler/ghome/account/login.go @@ -136,8 +136,8 @@ func addUser(dbSession *xorm.Session, phone, password string, isDefault bool) (g awardID := 1 // 音乃木坂学生 backgroundID := 1 // 初始背景 unitID := 31 // 初始高坂穂乃果 - userName := "音乃木坂学生" - userDesc := "你好。" + userName := usermodel.DefaultAutoUserName + userDesc := usermodel.DefaultAutoUserDesc // 是否初始化 if isDefault { // 初始化默认用户 diff --git a/internal/handler/webui/profile.go b/internal/handler/webui/profile.go index 489bace..4d5259b 100644 --- a/internal/handler/webui/profile.go +++ b/internal/handler/webui/profile.go @@ -135,7 +135,55 @@ func updateProfile(ctx *gin.Context) { }) } +func resetProfile(ctx *gin.Context) { + pref := usermodel.UserPref{} + exists, err := db.UserEng.Table(new(usermodel.UserPref)). + Where("user_id = ?", ctx.GetInt("userid")).Get(&pref) + if err != nil || !exists { + ctx.JSON(http.StatusOK, webuischema.Msg{ + Code: 1, + Message: "用户资料读取失败!", + }) + return + } + + pref.ResetProfileDefaults() + pref.UpdateTime = time.Now().Unix() + + _, err = db.UserEng.Table(new(usermodel.UserPref)). + Where("user_id = ?", ctx.GetInt("userid")). + Cols( + "user_name", + "user_level", + "user_desc", + "invite_code", + "user_exp", + "next_exp", + "game_coin", + "sns_coin", + "energy_max", + "over_max_energy", + "profile_version", + "update_time", + ). + Update(&pref) + if err != nil { + ctx.JSON(http.StatusOK, webuischema.Msg{ + Code: 1, + Message: "重置失败!", + }) + return + } + + ctx.JSON(http.StatusOK, webuischema.Msg{ + Code: 0, + Message: "已恢复默认值!", + Redirect: "/admin/profile", + }) +} + func init() { router.AddHandler("admin", "GET", "/profile", middleware.WebAuth, profilePage) router.AddHandler("admin", "POST", "/profile", middleware.WebAuth, updateProfile) + router.AddHandler("admin", "POST", "/profile/reset", middleware.WebAuth, resetProfile) } diff --git a/internal/model/user/userpref.go b/internal/model/user/userpref.go index 030a973..ff73016 100644 --- a/internal/model/user/userpref.go +++ b/internal/model/user/userpref.go @@ -8,6 +8,8 @@ import ( const CurrentUserPrefProfileVersion = 1 const ( + DefaultAutoUserName = "音乃木坂学生" + DefaultAutoUserDesc = "你好。" DefaultUserLevel = 1028 DefaultUserExp = 1089696 DefaultUserNextExp = 1207185 @@ -65,6 +67,22 @@ func (u *UserPref) ApplyProfileDefaults() { u.ProfileVersion = CurrentUserPrefProfileVersion } +func (u *UserPref) ResetProfileDefaults() { + u.UserName = DefaultAutoUserName + u.UserDesc = DefaultAutoUserDesc + u.UserLevel = DefaultUserLevel + u.UserExp = DefaultUserExp + u.NextExp = DefaultUserNextExp + u.GameCoin = DefaultUserGameCoin + u.SnsCoin = DefaultUserSnsCoin + u.EnergyMax = DefaultUserEnergyMax + u.OverMaxEnergy = DefaultUserOverMaxEnergy + if u.UserID > 0 { + u.InviteCode = strconv.Itoa(u.UserID) + } + u.ProfileVersion = CurrentUserPrefProfileVersion +} + func (u UserPref) NeedsProfileMigration() bool { return u.ProfileVersion < CurrentUserPrefProfileVersion } diff --git a/static/templates/admin/profile.html b/static/templates/admin/profile.html index 25fc02f..eb0f1f3 100644 --- a/static/templates/admin/profile.html +++ b/static/templates/admin/profile.html @@ -7,6 +7,25 @@