Squashed commit of the following: commit 66d0e5e94c0394d83b47b58bd130ba2addce2930 Author: Sun <95302870@qq.com> Date: Thu Jan 25 13:20:34 2024 +0800 更新1.3.0-beta24-01-25 commit 52a81e5f558b3e7b329f828adbd8255960dd750b Author: Sun <95302870@qq.com> Date: Thu Jan 25 13:13:08 2024 +0800 Squashed commit of the following: commit 908d87357c4e22868eff85f377bb8cd22f3785d7 Author: Sun <95302870@qq.com> Date: Thu Jan 25 13:12:14 2024 +0800 增加前端版本号 commit 8ed2b636476c7a14ae4e1761f7712949b7ce60fc Author: Sun <95302870@qq.com> Date: Thu Jan 25 12:29:49 2024 +0800 增加自动获取前端版本号的git tag commit ba7d70f9cabf020ab9ce682be5e593b649aed071 Author: Sun <95302870@qq.com> Date: Thu Jan 25 10:58:15 2024 +0800 优化代码 commit 104543b96fb4d5f9362d29da22390d9a0565c395 Author: Sun <95302870@qq.com> Date: Wed Jan 24 21:28:31 2024 +0800 增加系统状态组件的部分样式 commit 70c87c94c688a14d3bbe53be191c2186ec469a01 Author: Sun <95302870@qq.com> Date: Wed Jan 24 20:55:05 2024 +0800 时间组件和搜索栏组件增加样式类型 commit 6bab5a264fdb1281763d73bf022335667845dc67 Author: Sun <95302870@qq.com> Date: Wed Jan 24 20:41:33 2024 +0800 将项目列表增加样式并优化减少dom嵌套 commit 99d18df7f0a57ec1cead9bce7b2b4b11427cc2e2 Author: Sun <95302870@qq.com> Date: Wed Jan 24 20:11:07 2024 +0800 增加系统状态、logo等类名并简化部分组件dom commit bf1cc0cc0014f751b6453ebfb357b575b0a54615 Author: Sun <95302870@qq.com> Date: Wed Jan 24 17:17:41 2024 +0800 更新关于页面 commit fceacf58b87b988827f0baa6086e8296c843c495 Author: Sun <95302870@qq.com> Date: Wed Jan 24 14:54:37 2024 +0800 增加隐藏网络模式切换开关 commit e0dcc49f5b23618103c5ee15e13758164d2eddf2 Author: Sun <95302870@qq.com> Date: Wed Jan 24 13:55:28 2024 +0800 优化部分错误码 commit 863cdf0fc1fc406304784d4304ba6be31e5133ff Author: Sun <95302870@qq.com> Date: Wed Jan 24 12:54:55 2024 +0800 声明暴露端口 commit 5b25ef9c194dc0112cd10250c04344dd6f57be27 Author: Sun <95302870@qq.com> Date: Wed Jan 24 12:38:48 2024 +0800 修改命令行所有的输出内容为英文
152 lines
3.8 KiB
Go
152 lines
3.8 KiB
Go
package system
|
|
|
|
import (
|
|
"sun-panel/api/api_v1/common/apiData/systemApiStructs"
|
|
"sun-panel/api/api_v1/common/apiReturn"
|
|
"sun-panel/api/api_v1/common/base"
|
|
"sun-panel/global"
|
|
"sun-panel/lib/cmn"
|
|
"sun-panel/models"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/gin-gonic/gin/binding"
|
|
)
|
|
|
|
type UserApi struct{}
|
|
|
|
func (a *UserApi) GetInfo(c *gin.Context) {
|
|
userInfo, _ := base.GetCurrentUserInfo(c)
|
|
apiReturn.SuccessData(c, gin.H{
|
|
"userId": userInfo.ID,
|
|
"id": userInfo.ID,
|
|
"headImage": userInfo.HeadImage,
|
|
"name": userInfo.Name,
|
|
"role": userInfo.Role,
|
|
// "token": userInfo.Token,
|
|
|
|
})
|
|
}
|
|
|
|
func (a *UserApi) GetAuthInfo(c *gin.Context) {
|
|
userInfo, _ := base.GetCurrentUserInfo(c)
|
|
visitMode := base.GetCurrentVisitMode(c)
|
|
user := models.User{}
|
|
user.ID = userInfo.ID
|
|
user.HeadImage = userInfo.HeadImage
|
|
user.Name = userInfo.Name
|
|
user.Role = userInfo.Role
|
|
user.Username = userInfo.Username
|
|
apiReturn.SuccessData(c, gin.H{
|
|
"user": user,
|
|
"visitMode": visitMode,
|
|
})
|
|
}
|
|
|
|
// 修改资料
|
|
func (a *UserApi) UpdateInfo(c *gin.Context) {
|
|
userInfo, _ := base.GetCurrentUserInfo(c)
|
|
type UpdateUserInfoStruct struct {
|
|
HeadImage string `json:"headImage"`
|
|
Name string `json:"name" validate:"max=15,min=3,required"`
|
|
}
|
|
params := UpdateUserInfoStruct{}
|
|
|
|
err := c.ShouldBindBodyWith(¶ms, binding.JSON)
|
|
if err != nil {
|
|
apiReturn.ErrorParamFomat(c, err.Error())
|
|
return
|
|
}
|
|
|
|
if errMsg, err := base.ValidateInputStruct(¶ms); err != nil {
|
|
apiReturn.ErrorParamFomat(c, errMsg)
|
|
return
|
|
}
|
|
|
|
mUser := models.User{}
|
|
err = mUser.UpdateUserInfoByUserId(userInfo.ID, map[string]interface{}{
|
|
"head_image": params.HeadImage,
|
|
"name": params.Name,
|
|
})
|
|
// 删除缓存
|
|
global.UserToken.Delete(userInfo.Token)
|
|
if err != nil {
|
|
apiReturn.ErrorDatabase(c, err.Error())
|
|
}
|
|
apiReturn.Success(c)
|
|
}
|
|
|
|
// 修改密码
|
|
func (a *UserApi) UpdatePasssword(c *gin.Context) {
|
|
type UpdatePasssStruct struct {
|
|
OldPassword string `json:"oldPassword"`
|
|
NewPassword string `json:"newPassword"`
|
|
}
|
|
|
|
params := UpdatePasssStruct{}
|
|
|
|
err := c.ShouldBindBodyWith(¶ms, binding.JSON)
|
|
if err != nil {
|
|
apiReturn.ErrorParamFomat(c, err.Error())
|
|
return
|
|
}
|
|
userInfo, _ := base.GetCurrentUserInfo(c)
|
|
mUser := models.User{}
|
|
if v, err := mUser.GetUserInfoByUid(userInfo.ID); err != nil {
|
|
apiReturn.ErrorParamFomat(c, err.Error())
|
|
return
|
|
} else {
|
|
if v.Password != cmn.PasswordEncryption(params.OldPassword) {
|
|
// 旧密码不正确
|
|
apiReturn.ErrorByCode(c, 1007)
|
|
return
|
|
}
|
|
}
|
|
res := global.Db.Model(&models.User{}).Where("id", userInfo.ID).Updates(map[string]interface{}{
|
|
"password": cmn.PasswordEncryption(params.NewPassword),
|
|
"token": "",
|
|
})
|
|
if res.Error != nil {
|
|
apiReturn.ErrorDatabase(c, res.Error.Error())
|
|
return
|
|
}
|
|
// 删除token
|
|
global.UserToken.Delete(userInfo.Token)
|
|
apiReturn.Success(c)
|
|
}
|
|
|
|
// 获取推荐码
|
|
func (a *UserApi) GetReferralCode(c *gin.Context) {
|
|
currentUserInfo, _ := base.GetCurrentUserInfo(c)
|
|
mUser := models.User{}
|
|
userInfo, err := mUser.GetUserInfoByUid(currentUserInfo.ID)
|
|
if err != nil {
|
|
apiReturn.ErrorDatabase(c, err.Error())
|
|
return
|
|
}
|
|
|
|
// 为空生成一个
|
|
if userInfo.ReferralCode == "" {
|
|
for {
|
|
referralCode := cmn.BuildRandCode(8, cmn.RAND_CODE_MODE2)
|
|
global.Logger.Debug("referralCode:", referralCode)
|
|
|
|
// 查询是否有重复的
|
|
if row := global.Db.Find(&userInfo, "referral_code=?", referralCode).RowsAffected; row != 0 {
|
|
apiReturn.ErrorDatabase(c, err.Error())
|
|
continue
|
|
}
|
|
|
|
// 创建新的邀请码
|
|
if err := global.Db.Model(&models.User{}).Where("id=?", userInfo.ID).Update("referral_code", referralCode).Error; err != nil {
|
|
apiReturn.ErrorDatabase(c, err.Error())
|
|
return
|
|
} else {
|
|
userInfo.ReferralCode = referralCode
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
apiReturn.SuccessData(c, systemApiStructs.GetReferralCodeResp{ReferralCode: userInfo.ReferralCode})
|
|
}
|