修复不能删除注销用户的问题

This commit is contained in:
CaIon 2023-12-27 16:46:18 +08:00
parent 14592f9758
commit e8bcf60f0a
2 changed files with 19 additions and 3 deletions

View File

@ -647,7 +647,7 @@ func ManageUser(c *gin.Context) {
Username: req.Username,
}
// Fill attributes
model.DB.Where(&user).First(&user)
model.DB.Unscoped().Where(&user).First(&user)
if user.Id == 0 {
c.JSON(http.StatusOK, gin.H{
"success": false,
@ -683,7 +683,7 @@ func ManageUser(c *gin.Context) {
})
return
}
if err := user.Delete(); err != nil {
if err := user.HardDelete(); err != nil {
c.JSON(http.StatusOK, gin.H{
"success": false,
"message": err.Error(),

View File

@ -37,7 +37,15 @@ type User struct {
// CheckUserExistOrDeleted check if user exist or deleted, if not exist, return false, nil, if deleted or exist, return true, nil
func CheckUserExistOrDeleted(username string, email string) (bool, error) {
var user User
err := DB.Unscoped().First(&user, "username = ? or email = ?", username, email).Error
// err := DB.Unscoped().First(&user, "username = ? or email = ?", username, email).Error
// check email if empty
var err error
if email == "" {
err = DB.Unscoped().First(&user, "username = ?", username).Error
} else {
err = DB.Unscoped().First(&user, "username = ? or email = ?", username, email).Error
}
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
// not exist, return false, nil
@ -208,6 +216,14 @@ func (user *User) Delete() error {
return err
}
func (user *User) HardDelete() error {
if user.Id == 0 {
return errors.New("id 为空!")
}
err := DB.Unscoped().Delete(user).Error
return err
}
// ValidateAndFill check password & user status
func (user *User) ValidateAndFill() (err error) {
// When querying with struct, GORM will only query with non-zero fields,