You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@answer.apache.org by li...@apache.org on 2025/01/03 03:52:54 UTC
(incubator-answer) 03/04: feat: remove user config
This is an automated email from the ASF dual-hosted git repository.
linkinstar pushed a commit to branch test
in repository https://gitbox.apache.org/repos/asf/incubator-answer.git
commit d9bd3a2626fe835af9ffa09f3a58d84c4d57653d
Author: Luffy <52...@qq52o.cn>
AuthorDate: Mon Dec 30 13:19:42 2024 +0800
feat: remove user config
---
cmd/wire_gen.go | 8 ++---
internal/repo/activity_common/activity_repo.go | 2 +-
internal/repo/badge/badge_repo.go | 9 +++++
internal/repo/notification/notification_repo.go | 16 +++++++++
.../repo/plugin_config/plugin_user_config_repo.go | 8 +++++
internal/service/activity_common/activity.go | 2 +-
internal/service/badge/badge_service.go | 2 ++
internal/service/content/question_service.go | 2 +-
.../service/notification_common/notification.go | 2 ++
.../service/plugin_common/plugin_common_service.go | 1 +
internal/service/user_admin/user_backyard.go | 41 +++++++++++++++++++---
11 files changed, 82 insertions(+), 11 deletions(-)
diff --git a/cmd/wire_gen.go b/cmd/wire_gen.go
index 3f267984..4363f08b 100644
--- a/cmd/wire_gen.go
+++ b/cmd/wire_gen.go
@@ -227,8 +227,11 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
contentRevisionService := content.NewRevisionService(revisionRepo, userCommon, questionCommon, answerService, objService, questionRepo, answerRepo, tagRepo, tagCommonService, notificationQueueService, activityQueueService, reportRepo, reviewService, reviewActivityRepo)
revisionController := controller.NewRevisionController(contentRevisionService, rankService)
rankController := controller.NewRankController(rankService)
+ badgeRepo := badge.NewBadgeRepo(dataData, uniqueIDRepo)
+ notificationRepo := notification2.NewNotificationRepo(dataData)
+ pluginUserConfigRepo := plugin_config.NewPluginUserConfigRepo(dataData)
userAdminRepo := user.NewUserAdminRepo(dataData, authRepo)
- userAdminService := user_admin.NewUserAdminService(userAdminRepo, userRoleRelService, authService, userCommon, userActiveActivityRepo, siteInfoCommonService, emailService, questionRepo, answerRepo, commentCommonRepo, userExternalLoginRepo)
+ userAdminService := user_admin.NewUserAdminService(userAdminRepo, userRoleRelService, authService, userCommon, userActiveActivityRepo, siteInfoCommonService, emailService, questionRepo, answerRepo, commentCommonRepo, userExternalLoginRepo, notificationRepo, pluginUserConfigRepo, badgeRepo)
userAdminController := controller_admin.NewUserAdminController(userAdminService)
reasonRepo := reason.NewReasonRepo(configService)
reasonService := reason2.NewReasonService(reasonRepo)
@@ -237,9 +240,7 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
siteInfoService := siteinfo.NewSiteInfoService(siteInfoRepo, siteInfoCommonService, emailService, tagCommonService, configService, questionCommon)
siteInfoController := controller_admin.NewSiteInfoController(siteInfoService)
controllerSiteInfoController := controller.NewSiteInfoController(siteInfoCommonService)
- notificationRepo := notification2.NewNotificationRepo(dataData)
notificationCommon := notificationcommon.NewNotificationCommon(dataData, notificationRepo, userCommon, activityRepo, followRepo, objService, notificationQueueService, userExternalLoginRepo, siteInfoCommonService)
- badgeRepo := badge.NewBadgeRepo(dataData, uniqueIDRepo)
notificationService := notification.NewNotificationService(dataData, notificationRepo, notificationCommon, revisionService, userRepo, reportRepo, reviewService, badgeRepo)
notificationController := controller.NewNotificationController(notificationService, rankService)
dashboardService := dashboard.NewDashboardService(questionRepo, answerRepo, commentCommonRepo, voteRepo, userRepo, reportRepo, configService, siteInfoCommonService, serviceConf, reviewService, revisionRepo, dataData)
@@ -253,7 +254,6 @@ func initApplication(debug bool, serverConf *conf.Server, dbConf *data.Database,
activityController := controller.NewActivityController(activityService)
roleController := controller_admin.NewRoleController(roleService)
pluginConfigRepo := plugin_config.NewPluginConfigRepo(dataData)
- pluginUserConfigRepo := plugin_config.NewPluginUserConfigRepo(dataData)
importerService := importer.NewImporterService(questionService, rankService, userCommon)
pluginCommonService := plugin_common.NewPluginCommonService(pluginConfigRepo, pluginUserConfigRepo, configService, dataData, importerService)
pluginController := controller_admin.NewPluginController(pluginCommonService)
diff --git a/internal/repo/activity_common/activity_repo.go b/internal/repo/activity_common/activity_repo.go
index 9f0a59e4..0fce5a74 100644
--- a/internal/repo/activity_common/activity_repo.go
+++ b/internal/repo/activity_common/activity_repo.go
@@ -107,7 +107,7 @@ func (ar *ActivityRepo) GetActivity(ctx context.Context, session *xorm.Session,
return
}
-func (ar *ActivityRepo) GetUserActivitysByActivityType(ctx context.Context, userID string, activityType int) (
+func (ar *ActivityRepo) GetUserActivitiesByActivityType(ctx context.Context, userID string, activityType int) (
activityList []*entity.Activity, err error) {
activityList = make([]*entity.Activity, 0)
err = ar.data.DB.Context(ctx).Where("user_id = ?", userID).
diff --git a/internal/repo/badge/badge_repo.go b/internal/repo/badge/badge_repo.go
index d52fc122..4c5e51ae 100644
--- a/internal/repo/badge/badge_repo.go
+++ b/internal/repo/badge/badge_repo.go
@@ -149,3 +149,12 @@ func (r *badgeRepo) UpdateAwardCount(ctx context.Context, badgeID string, awardC
}
return
}
+
+// DeleteUserBadge delete user badge
+func (r *badgeRepo) DeleteUserBadge(ctx context.Context, userID string) (err error) {
+ _, err = r.data.DB.Context(ctx).Where("user_id = ?", userID).Delete(&entity.BadgeAward{})
+ if err != nil {
+ err = errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
+ }
+ return
+}
diff --git a/internal/repo/notification/notification_repo.go b/internal/repo/notification/notification_repo.go
index 5a2a6cc7..09ee9f35 100644
--- a/internal/repo/notification/notification_repo.go
+++ b/internal/repo/notification/notification_repo.go
@@ -137,3 +137,19 @@ func (nr *notificationRepo) CountNotificationByUser(ctx context.Context, cond *e
}
return count, err
}
+
+func (nr *notificationRepo) DeleteNotification(ctx context.Context, userID string) (err error) {
+ _, err = nr.data.DB.Context(ctx).Where("user_id = ?", userID).Delete(&entity.Notification{})
+ if err != nil {
+ return errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
+ }
+ return
+}
+
+func (nr *notificationRepo) DeleteUserNotificationConfig(ctx context.Context, userID string) (err error) {
+ _, err = nr.data.DB.Context(ctx).Where("user_id = ?", userID).Delete(&entity.UserNotificationConfig{})
+ if err != nil {
+ return errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
+ }
+ return
+}
diff --git a/internal/repo/plugin_config/plugin_user_config_repo.go b/internal/repo/plugin_config/plugin_user_config_repo.go
index 5b3b54de..3ab011ef 100644
--- a/internal/repo/plugin_config/plugin_user_config_repo.go
+++ b/internal/repo/plugin_config/plugin_user_config_repo.go
@@ -97,3 +97,11 @@ func (ur *pluginUserConfigRepo) GetPluginUserConfigPage(ctx context.Context, pag
}
return
}
+
+func (ur *pluginUserConfigRepo) DeleteUserPluginConfig(ctx context.Context, userID string) (err error) {
+ _, err = ur.data.DB.Context(ctx).Where("user_id = ?", userID).Delete(&entity.PluginUserConfig{})
+ if err != nil {
+ err = errors.InternalServer(reason.DatabaseError).WithError(err).WithStack()
+ }
+ return
+}
diff --git a/internal/service/activity_common/activity.go b/internal/service/activity_common/activity.go
index 6b3557c0..62a8bb88 100644
--- a/internal/service/activity_common/activity.go
+++ b/internal/service/activity_common/activity.go
@@ -37,7 +37,7 @@ type ActivityRepo interface {
GetActivityTypeByObjectType(ctx context.Context, objectKey, action string) (activityType int, err error)
GetActivity(ctx context.Context, session *xorm.Session, objectID, userID string, activityType int) (
existsActivity *entity.Activity, exist bool, err error)
- GetUserActivitysByActivityType(ctx context.Context, userID string, activityType int) (activityList []*entity.Activity, err error)
+ GetUserActivitiesByActivityType(ctx context.Context, userID string, activityType int) (activityList []*entity.Activity, err error)
GetUserIDObjectIDActivitySum(ctx context.Context, userID, objectID string) (int, error)
GetActivityTypeByConfigKey(ctx context.Context, configKey string) (activityType int, err error)
AddActivity(ctx context.Context, activity *entity.Activity) (err error)
diff --git a/internal/service/badge/badge_service.go b/internal/service/badge/badge_service.go
index 0ab538a3..5ed4c157 100644
--- a/internal/service/badge/badge_service.go
+++ b/internal/service/badge/badge_service.go
@@ -45,6 +45,8 @@ type BadgeRepo interface {
UpdateStatus(ctx context.Context, id string, status int8) (err error)
UpdateAwardCount(ctx context.Context, badgeID string, awardCount int) (err error)
+
+ DeleteUserBadge(ctx context.Context, userID string) (err error)
}
type BadgeService struct {
diff --git a/internal/service/content/question_service.go b/internal/service/content/question_service.go
index 145f7da1..1a282142 100644
--- a/internal/service/content/question_service.go
+++ b/internal/service/content/question_service.go
@@ -1445,7 +1445,7 @@ func (qs *QuestionService) GetRecommendQuestionPage(ctx context.Context, req *sc
if err != nil {
return nil, 0, err
}
- activities, err := qs.activityRepo.GetUserActivitysByActivityType(ctx, req.LoginUserID, activityType)
+ activities, err := qs.activityRepo.GetUserActivitiesByActivityType(ctx, req.LoginUserID, activityType)
if err != nil {
return nil, 0, err
}
diff --git a/internal/service/notification_common/notification.go b/internal/service/notification_common/notification.go
index 9d08e258..b967970b 100644
--- a/internal/service/notification_common/notification.go
+++ b/internal/service/notification_common/notification.go
@@ -55,6 +55,8 @@ type NotificationRepo interface {
UpdateNotificationContent(ctx context.Context, notification *entity.Notification) (err error)
GetById(ctx context.Context, id string) (*entity.Notification, bool, error)
CountNotificationByUser(ctx context.Context, cond *entity.Notification) (int64, error)
+ DeleteNotification(ctx context.Context, userID string) (err error)
+ DeleteUserNotificationConfig(ctx context.Context, userID string) (err error)
}
type NotificationCommon struct {
diff --git a/internal/service/plugin_common/plugin_common_service.go b/internal/service/plugin_common/plugin_common_service.go
index ea6701bd..044f39cb 100644
--- a/internal/service/plugin_common/plugin_common_service.go
+++ b/internal/service/plugin_common/plugin_common_service.go
@@ -49,6 +49,7 @@ type PluginUserConfigRepo interface {
pluginUserConfig *entity.PluginUserConfig, exist bool, err error)
GetPluginUserConfigPage(ctx context.Context, page, pageSize int) (
pluginUserConfigs []*entity.PluginUserConfig, total int64, err error)
+ DeleteUserPluginConfig(ctx context.Context, userID string) (err error)
}
// PluginCommonService user service
diff --git a/internal/service/user_admin/user_backyard.go b/internal/service/user_admin/user_backyard.go
index e7f63d5f..6f436b0c 100644
--- a/internal/service/user_admin/user_backyard.go
+++ b/internal/service/user_admin/user_backyard.go
@@ -27,8 +27,11 @@ import (
"github.com/apache/incubator-answer/internal/base/translator"
"github.com/apache/incubator-answer/internal/base/validator"
answercommon "github.com/apache/incubator-answer/internal/service/answer_common"
+ "github.com/apache/incubator-answer/internal/service/badge"
"github.com/apache/incubator-answer/internal/service/comment_common"
"github.com/apache/incubator-answer/internal/service/export"
+ notificationcommon "github.com/apache/incubator-answer/internal/service/notification_common"
+ "github.com/apache/incubator-answer/internal/service/plugin_common"
questioncommon "github.com/apache/incubator-answer/internal/service/question_common"
"github.com/apache/incubator-answer/pkg/token"
"net/mail"
@@ -79,6 +82,9 @@ type UserAdminService struct {
answerCommonRepo answercommon.AnswerRepo
commentCommonRepo comment_common.CommentCommonRepo
userExternalLoginRepo user_external_login.UserExternalLoginRepo
+ notificationRepo notificationcommon.NotificationRepo
+ pluginUserConfigRepo plugin_common.PluginUserConfigRepo
+ badgeRepo badge.BadgeRepo
}
// NewUserAdminService new user admin service
@@ -94,6 +100,9 @@ func NewUserAdminService(
answerCommonRepo answercommon.AnswerRepo,
commentCommonRepo comment_common.CommentCommonRepo,
userExternalLoginRepo user_external_login.UserExternalLoginRepo,
+ notificationRepo notificationcommon.NotificationRepo,
+ pluginUserConfigRepo plugin_common.PluginUserConfigRepo,
+ badgeRepo badge.BadgeRepo,
) *UserAdminService {
return &UserAdminService{
userRepo: userRepo,
@@ -107,6 +116,9 @@ func NewUserAdminService(
answerCommonRepo: answerCommonRepo,
commentCommonRepo: commentCommonRepo,
userExternalLoginRepo: userExternalLoginRepo,
+ notificationRepo: notificationRepo,
+ pluginUserConfigRepo: pluginUserConfigRepo,
+ badgeRepo: badgeRepo,
}
}
@@ -154,10 +166,7 @@ func (us *UserAdminService) UpdateUserStatus(ctx context.Context, req *schema.Up
}
if req.IsDeleted() {
- err := us.userExternalLoginRepo.DeleteUserExternalLoginByUserID(ctx, userInfo.ID)
- if err != nil {
- log.Errorf("remove all user external login error: %v", err)
- }
+ us.removeAllUserConfiguration(ctx, userInfo.ID)
}
// if user reputation is zero means this user is inactive, so try to activate this user.
@@ -167,6 +176,30 @@ func (us *UserAdminService) UpdateUserStatus(ctx context.Context, req *schema.Up
return nil
}
+// removeAllUserConfiguration remove all user configuration
+func (us *UserAdminService) removeAllUserConfiguration(ctx context.Context, userID string) {
+ err := us.userExternalLoginRepo.DeleteUserExternalLoginByUserID(ctx, userID)
+ if err != nil {
+ log.Errorf("remove all user external login error: %v", err)
+ }
+ err = us.notificationRepo.DeleteNotification(ctx, userID)
+ if err != nil {
+ log.Errorf("remove all user notification error: %v", err)
+ }
+ err = us.notificationRepo.DeleteUserNotificationConfig(ctx, userID)
+ if err != nil {
+ log.Errorf("remove all user notification config error: %v", err)
+ }
+ err = us.pluginUserConfigRepo.DeleteUserPluginConfig(ctx, userID)
+ if err != nil {
+ log.Errorf("remove all user plugin config error: %v", err)
+ }
+ err = us.badgeRepo.DeleteUserBadge(ctx, userID)
+ if err != nil {
+ log.Errorf("remove all user badge error: %v", err)
+ }
+}
+
// removeAllUserCreatedContent remove all user created content
func (us *UserAdminService) removeAllUserCreatedContent(ctx context.Context, userID string) {
if err := us.questionCommonRepo.RemoveAllUserQuestion(ctx, userID); err != nil {