From d38a58b57b3c92f0b8ca333ce8a5cf110561930e Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Mon, 17 Oct 2022 14:38:42 +0800 Subject: [PATCH 1/2] bug fix --- services/badge/user.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/badge/user.go b/services/badge/user.go index 70fc7bba7..b4273d8d2 100644 --- a/services/badge/user.go +++ b/services/badge/user.go @@ -65,8 +65,8 @@ func GetUserAllBadges(userId int64) ([]models.UserAllBadgeInCategory, error) { if err != nil { return nil, err } - r := make([]models.UserAllBadgeInCategory, len(categoryList)) - for i, v := range categoryList { + r := make([]models.UserAllBadgeInCategory, 0) + for _, v := range categoryList { badges, err := models.GetBadgeByCategoryId(v.ID) if badges == nil || len(badges) == 0 { continue @@ -89,7 +89,7 @@ func GetUserAllBadges(userId int64) ([]models.UserAllBadgeInCategory, error) { bArray[j] = b } t.Badges = bArray - r[i] = t + r = append(r, t) } return r, nil } From 4e2ec5ac738610556857ce00b8d706c79f9f62f4 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Mon, 17 Oct 2022 14:55:11 +0800 Subject: [PATCH 2/2] add total badges --- models/badge_user.go | 3 +++ routers/user/profile.go | 7 +++++++ services/badge/user.go | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/models/badge_user.go b/models/badge_user.go index 32861248e..9b556bc0e 100644 --- a/models/badge_user.go +++ b/models/badge_user.go @@ -142,6 +142,9 @@ func GetUserBadgesPaging(userId int64, opts GetUserBadgesOpts) ([]*Badge, error) err := x.Join("INNER", "badge_user", "badge_user.badge_id = badge.id").Where(cond).OrderBy("badge_user.id desc").Limit(opts.PageSize, (opts.Page-1)*opts.PageSize).Find(&r) return r, err } +func CountUserBadges(userId int64) (int64, error) { + return x.Where("user_id = ?", userId).Count(&BadgeUser{}) +} func GetUserBadges(userId, categoryId int64) ([]*Badge, error) { cond := builder.NewCond() diff --git a/routers/user/profile.go b/routers/user/profile.go index 1d275c191..66a480b7f 100755 --- a/routers/user/profile.go +++ b/routers/user/profile.go @@ -97,12 +97,19 @@ func Profile(ctx *context.Context) { ctx.ServerError("GetUserBadges", err) return } + // Count user badges + cnt, err := badge.CountUserBadges(ctxUser.ID) + if err != nil { + ctx.ServerError("CountUserBadges", err) + return + } ctx.Data["Title"] = ctxUser.DisplayName() ctx.Data["PageIsUserProfile"] = true ctx.Data["Owner"] = ctxUser ctx.Data["OpenIDs"] = openIDs ctx.Data["RecentBadges"] = badges + ctx.Data["TotalBadges"] = cnt ctx.Data["EnableHeatmap"] = setting.Service.EnableUserHeatmap ctx.Data["HeatmapUser"] = ctxUser.Name showPrivate := ctx.IsSigned && (ctx.User.IsAdmin || ctx.User.ID == ctxUser.ID) diff --git a/services/badge/user.go b/services/badge/user.go index b4273d8d2..025b10f77 100644 --- a/services/badge/user.go +++ b/services/badge/user.go @@ -60,6 +60,10 @@ func GetUserBadges(userId int64, opts models.ListOptions) ([]*models.Badge4UserS return r, nil } +func CountUserBadges(userId int64) (int64, error) { + return models.CountUserBadges(userId) +} + func GetUserAllBadges(userId int64) ([]models.UserAllBadgeInCategory, error) { categoryList, err := models.GetBadgeCategoryList() if err != nil {