|
|
@@ -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,
|