From dc85a258a89bfc5263ce238eb3e5deb0731dee4c Mon Sep 17 00:00:00 2001 From: zchengo <1933757688@qq.com> Date: Sat, 24 Dec 2022 22:25:37 +0800 Subject: [PATCH] perf: clear user related data --- server/service/user.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/server/service/user.go b/server/service/user.go index aecad8a..9ec3cba 100644 --- a/server/service/user.go +++ b/server/service/user.go @@ -168,7 +168,21 @@ func (u *UserService) Delete(param models.UserDeleteParam) int { if code != param.Code { return response.ErrCodeVerityCodeInvalid } - err := global.Db.Delete(&models.User{}, param.Id).Error + err := global.Db.Transaction(func(tx *gorm.DB) error { + mw := map[interface{}]string{ + &models.Product{}: "creator = ?", + &models.Customer{}: "creator = ?", + &models.Contract{}: "creator = ?", + &models.Subscribe{}: "uid = ?", + &models.User{}: "id = ?", + } + for k, v := range mw { + if err := tx.Where(v, param.Id).Delete(k).Error; err != nil { + return err + } + } + return nil + }) if err != nil { return response.ErrCodeFailed } @@ -179,11 +193,11 @@ func (u *UserService) Delete(param models.UserDeleteParam) int { func (u *UserService) GetInfo(uid int64) (*models.UserPersonInfo, int) { var user models.UserPersonInfo err := global.Db.Transaction(func(tx *gorm.DB) error { - if err := global.Db.Table(USER).Where("id = ?", uid).First(&user).Error; err != nil { + if err := tx.Table(USER).Where("id = ?", uid).First(&user).Error; err != nil { return err } var subscribe models.Subscribe - if err := global.Db.Table(SUBSCRIBE).Select("version").Where("uid = ?", uid).First(&subscribe).Error; err != nil { + if err := tx.Table(SUBSCRIBE).Select("version").Where("uid = ?", uid).First(&subscribe).Error; err != nil { return err } user.Version = subscribe.Version