This is an automated email from the ASF dual-hosted git repository.

linkinstar pushed a commit to branch feat/1.6.0/user
in repository https://gitbox.apache.org/repos/asf/answer.git


The following commit(s) were added to refs/heads/feat/1.6.0/user by this push:
     new b78be61e refactor(user): simplify suspended until logic
b78be61e is described below

commit b78be61ee84463afa6e8bfb79fbe17926ec15f8c
Author: LinkinStars <linkins...@foxmail.com>
AuthorDate: Thu Jun 26 16:42:24 2025 +0800

    refactor(user): simplify suspended until logic
---
 internal/schema/user_schema.go               | 14 ++++++--------
 internal/service/user_admin/user_backyard.go |  2 +-
 internal/service/user_common/user.go         |  2 +-
 3 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/internal/schema/user_schema.go b/internal/schema/user_schema.go
index a320ca9b..7ba8817a 100644
--- a/internal/schema/user_schema.go
+++ b/internal/schema/user_schema.go
@@ -109,7 +109,7 @@ func (r *UserLoginResp) ConvertFromUserEntity(userInfo 
*entity.User) {
        r.LastLoginDate = userInfo.LastLoginDate.Unix()
        r.Status = constant.ConvertUserStatus(userInfo.Status, 
userInfo.MailStatus)
        r.HavePassword = len(userInfo.Pass) > 0
-       if !userInfo.SuspendedUntil.IsZero() && userInfo.SuspendedUntil != 
entity.PermanentSuspensionTime {
+       if !userInfo.SuspendedUntil.IsZero() {
                r.SuspendedUntil = userInfo.SuspendedUntil.Unix()
        }
 }
@@ -127,7 +127,7 @@ func (r *GetCurrentLoginUserInfoResp) 
ConvertFromUserEntity(userInfo *entity.Use
        if len(r.ColorScheme) == 0 {
                r.ColorScheme = constant.ColorSchemeDefault
        }
-       if !userInfo.SuspendedUntil.IsZero() && userInfo.SuspendedUntil != 
entity.PermanentSuspensionTime {
+       if !userInfo.SuspendedUntil.IsZero() {
                r.SuspendedUntil = userInfo.SuspendedUntil.Unix()
        }
 }
@@ -176,7 +176,7 @@ func (r *GetOtherUserInfoByUsernameResp) 
ConvertFromUserEntity(userInfo *entity.
        r.CreatedAt = userInfo.CreatedAt.Unix()
        r.LastLoginDate = userInfo.LastLoginDate.Unix()
        r.Status = constant.ConvertUserStatus(userInfo.Status, 
userInfo.MailStatus)
-       if !userInfo.SuspendedUntil.IsZero() && userInfo.SuspendedUntil != 
entity.PermanentSuspensionTime {
+       if !userInfo.SuspendedUntil.IsZero() {
                r.SuspendedUntil = userInfo.SuspendedUntil.Unix()
        }
        r.StatusMsg = ""
@@ -187,9 +187,6 @@ func (r *GetOtherUserInfoByUsernameResp) 
ConvertFromUserEntityWithLang(ctx conte
        r.CreatedAt = userInfo.CreatedAt.Unix()
        r.LastLoginDate = userInfo.LastLoginDate.Unix()
        r.Status = constant.ConvertUserStatus(userInfo.Status, 
userInfo.MailStatus)
-       if !userInfo.SuspendedUntil.IsZero() && userInfo.SuspendedUntil != 
entity.PermanentSuspensionTime {
-               r.SuspendedUntil = userInfo.SuspendedUntil.Unix()
-       }
 
        lang := handler.GetLangByCtx(ctx)
        if userInfo.MailStatus == entity.EmailStatusToBeVerified {
@@ -197,10 +194,11 @@ func (r *GetOtherUserInfoByUsernameResp) 
ConvertFromUserEntityWithLang(ctx conte
        }
        switch userInfo.Status {
        case entity.UserStatusSuspended:
-               if userInfo.SuspendedUntil.IsZero() || userInfo.SuspendedUntil 
== entity.PermanentSuspensionTime {
+               if userInfo.SuspendedUntil.IsZero() || 
userInfo.SuspendedUntil.Year() >= 2099 {
                        r.StatusMsg = translator.Tr(lang, 
reason.UserStatusSuspendedForever)
                } else {
-                       trans := translator.GlobalTrans.Tr(lang, 
"ui.dates.long_date_with_year")
+                       r.SuspendedUntil = userInfo.SuspendedUntil.Unix()
+                       trans := translator.GlobalTrans.Tr(lang, 
"ui.dates.long_date_with_time")
                        suspendedUntilFormatted := 
day.Format(userInfo.SuspendedUntil.Unix(), trans, "UTC")
                        r.StatusMsg = translator.TrWithData(lang, 
reason.UserStatusSuspendedUntil, map[string]interface{}{
                                "SuspendedUntil": suspendedUntilFormatted,
diff --git a/internal/service/user_admin/user_backyard.go 
b/internal/service/user_admin/user_backyard.go
index 9992f8f8..0f6ec81e 100644
--- a/internal/service/user_admin/user_backyard.go
+++ b/internal/service/user_admin/user_backyard.go
@@ -527,7 +527,7 @@ func (us *UserAdminService) GetUserPage(ctx 
context.Context, req *schema.GetUser
                } else if u.Status == entity.UserStatusSuspended {
                        t.Status = constant.UserSuspended
                        t.SuspendedAt = u.SuspendedAt.Unix()
-                       if !u.SuspendedUntil.IsZero() && u.SuspendedUntil != 
entity.PermanentSuspensionTime {
+                       if !u.SuspendedUntil.IsZero() {
                                t.SuspendedUntil = u.SuspendedUntil.Unix()
                        }
                } else if u.MailStatus == entity.EmailStatusToBeVerified {
diff --git a/internal/service/user_common/user.go 
b/internal/service/user_common/user.go
index 166bf955..124972a1 100644
--- a/internal/service/user_common/user.go
+++ b/internal/service/user_common/user.go
@@ -180,7 +180,7 @@ func (us *UserCommon) FormatUserBasicInfo(ctx 
context.Context, userInfo *entity.
        userBasicInfo.Location = userInfo.Location
        userBasicInfo.Language = userInfo.Language
        userBasicInfo.Status = constant.ConvertUserStatus(userInfo.Status, 
userInfo.MailStatus)
-       if !userInfo.SuspendedUntil.IsZero() && userInfo.SuspendedUntil != 
entity.PermanentSuspensionTime {
+       if !userInfo.SuspendedUntil.IsZero() {
                userBasicInfo.SuspendedUntil = userInfo.SuspendedUntil.Unix()
        }
        if userBasicInfo.Status == constant.UserDeleted {

Reply via email to