You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

user.go 2.7 kB

2 years ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package badge
  2. import (
  3. "code.gitea.io/gitea/models"
  4. "code.gitea.io/gitea/modules/log"
  5. )
  6. func GetBadgeUsers(badgeId int64, opts models.ListOptions) (int64, []*models.BadgeUser4SHow, error) {
  7. total, list, err := models.GetBadgeUsers(badgeId, opts)
  8. if err != nil {
  9. return 0, nil, err
  10. }
  11. if len(list) == 0 {
  12. return 0, nil, nil
  13. }
  14. r := make([]*models.BadgeUser4SHow, len(list))
  15. for i := 0; i < len(list); i++ {
  16. r[i] = list[i].ToShow()
  17. }
  18. return total, r, nil
  19. }
  20. func AddBadgeUsers(badgeId int64, userNames []string) (int, error) {
  21. userIds := models.GetUserIdsByUserNames(userNames)
  22. if len(userIds) == 0 {
  23. return 0, nil
  24. }
  25. successCount := 0
  26. for _, v := range userIds {
  27. m := models.BadgeUser{
  28. UserId: v,
  29. BadgeId: badgeId,
  30. }
  31. _, err := models.AddBadgeUser(m)
  32. if err != nil {
  33. log.Error("AddBadgeUser err in loop, m=%+v. e=%v", m, err)
  34. continue
  35. }
  36. successCount++
  37. }
  38. return successCount, nil
  39. }
  40. func DelBadgeUser(id int64) error {
  41. _, err := models.DelBadgeUser(id)
  42. return err
  43. }
  44. //GetUserBadges Only Returns badges the user has earned
  45. func GetUserBadges(userId int64, opts models.ListOptions) ([]*models.Badge4UserShow, error) {
  46. badges, err := models.GetUserBadgesPaging(userId, models.GetUserBadgesOpts{ListOptions: opts})
  47. if err != nil {
  48. return nil, err
  49. }
  50. r := make([]*models.Badge4UserShow, len(badges))
  51. for i, v := range badges {
  52. r[i] = v.ToUserShow()
  53. }
  54. return r, nil
  55. }
  56. func CountUserBadges(userId int64) (int64, error) {
  57. return models.CountUserBadges(userId)
  58. }
  59. func GetUserAllBadges(userId int64) ([]models.UserAllBadgeInCategory, error) {
  60. categoryList, err := models.GetBadgeCategoryList()
  61. if err != nil {
  62. return nil, err
  63. }
  64. r := make([]models.UserAllBadgeInCategory, 0)
  65. for _, v := range categoryList {
  66. badges, err := models.GetBadgeByCategoryId(v.ID)
  67. if badges == nil || len(badges) == 0 {
  68. continue
  69. }
  70. userBadgeMap, err := getUserBadgesMap(userId, v.ID)
  71. if err != nil {
  72. return nil, err
  73. }
  74. t := models.UserAllBadgeInCategory{
  75. CategoryName: v.Name,
  76. CategoryId: v.ID,
  77. LightedNum: len(userBadgeMap),
  78. }
  79. bArray := make([]*models.BadgeShowWithStatus, len(badges))
  80. for j, v := range badges {
  81. b := &models.BadgeShowWithStatus{Badge: v.ToUserShow()}
  82. if _, has := userBadgeMap[v.ID]; has {
  83. b.IsLighted = true
  84. }
  85. bArray[j] = b
  86. }
  87. t.Badges = bArray
  88. r = append(r, t)
  89. }
  90. return r, nil
  91. }
  92. func getUserBadgesMap(userId, categoryId int64) (map[int64]*models.Badge, error) {
  93. userBadges, err := models.GetUserBadges(userId, categoryId)
  94. if err != nil {
  95. return nil, err
  96. }
  97. m := make(map[int64]*models.Badge, 0)
  98. for _, v := range userBadges {
  99. m[v.ID] = v
  100. }
  101. return m, nil
  102. }