diff --git a/apis/admin/user.api b/apis/admin/user.api index dc0c5e8..699fe6d 100644 --- a/apis/admin/user.api +++ b/apis/admin/user.api @@ -19,6 +19,7 @@ type ( Size int `form:"size"` Search string `form:"search,omitempty"` UserId *int64 `form:"user_id,omitempty"` + Unscoped bool `form:"unscoped,omitempty"` SubscribeId *int64 `form:"subscribe_id,omitempty"` UserSubscribeId *int64 `form:"user_subscribe_id,omitempty"` } diff --git a/internal/logic/admin/user/getUserListLogic.go b/internal/logic/admin/user/getUserListLogic.go index 3859f76..8935af1 100644 --- a/internal/logic/admin/user/getUserListLogic.go +++ b/internal/logic/admin/user/getUserListLogic.go @@ -30,6 +30,7 @@ func (l *GetUserListLogic) GetUserList(req *types.GetUserListRequest) (*types.Ge list, total, err := l.svcCtx.UserModel.QueryPageList(l.ctx, req.Page, req.Size, &user.UserFilterParams{ UserId: req.UserId, Search: req.Search, + Unscoped: req.Unscoped, SubscribeId: req.SubscribeId, UserSubscribeId: req.UserSubscribeId, Order: "DESC", diff --git a/internal/model/user/model.go b/internal/model/user/model.go index 86caa0d..65b3589 100644 --- a/internal/model/user/model.go +++ b/internal/model/user/model.go @@ -62,6 +62,7 @@ type UserFilterParams struct { SubscribeId *int64 UserSubscribeId *int64 Order string // Order by id, e.g., "desc" + Unscoped bool // Whether to include soft-deleted records } type customUserLogicModel interface { @@ -148,6 +149,9 @@ func (m *customUserModel) QueryPageList(ctx context.Context, page, size int, fil if filter.Order != "" { conn = conn.Order(fmt.Sprintf("user.id %s", filter.Order)) } + if filter.Unscoped { + conn = conn.Unscoped() + } } return conn.Model(&User{}).Group("user.id").Count(&total).Limit(size).Offset((page - 1) * size).Preload("UserDevices").Preload("AuthMethods").Find(&list).Error }) diff --git a/internal/types/types.go b/internal/types/types.go index c7bf4bf..d44d465 100644 --- a/internal/types/types.go +++ b/internal/types/types.go @@ -1043,6 +1043,7 @@ type GetUserListRequest struct { Size int `form:"size"` Search string `form:"search,omitempty"` UserId *int64 `form:"user_id,omitempty"` + Unscoped bool `form:"unscoped,omitempty"` SubscribeId *int64 `form:"subscribe_id,omitempty"` UserSubscribeId *int64 `form:"user_subscribe_id,omitempty"` }