From e8bcf60f0aa59dc0a6f2ca47d0fbeff5c4015741 Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Wed, 27 Dec 2023 16:46:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8D=E8=83=BD=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=B3=A8=E9=94=80=E7=94=A8=E6=88=B7=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/user.go | 4 ++-- model/user.go | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/controller/user.go b/controller/user.go index baae157..f70dbd3 100644 --- a/controller/user.go +++ b/controller/user.go @@ -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(), diff --git a/model/user.go b/model/user.go index 58c97c3..155cabe 100644 --- a/model/user.go +++ b/model/user.go @@ -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,