作者 tangxvhui

bug 4538 调整 评论中 人员信息的获取

@@ -5,6 +5,7 @@ import ( @@ -5,6 +5,7 @@ import (
5 5
6 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" 6 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc"
7 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" 7 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types"
  8 + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/db/transaction"
8 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain" 9 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain"
9 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr" 10 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr"
10 11
@@ -15,6 +16,7 @@ type MiniTop5ArticleCommentLogic struct { @@ -15,6 +16,7 @@ type MiniTop5ArticleCommentLogic struct {
15 logx.Logger 16 logx.Logger
16 ctx context.Context 17 ctx context.Context
17 svcCtx *svc.ServiceContext 18 svcCtx *svc.ServiceContext
  19 + userCache map[int64]types.CommentAuthor
18 } 20 }
19 21
20 func NewMiniTop5ArticleCommentLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MiniTop5ArticleCommentLogic { 22 func NewMiniTop5ArticleCommentLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MiniTop5ArticleCommentLogic {
@@ -22,6 +24,7 @@ func NewMiniTop5ArticleCommentLogic(ctx context.Context, svcCtx *svc.ServiceCont @@ -22,6 +24,7 @@ func NewMiniTop5ArticleCommentLogic(ctx context.Context, svcCtx *svc.ServiceCont
22 Logger: logx.WithContext(ctx), 24 Logger: logx.WithContext(ctx),
23 ctx: ctx, 25 ctx: ctx,
24 svcCtx: svcCtx, 26 svcCtx: svcCtx,
  27 + userCache: make(map[int64]types.CommentAuthor),
25 } 28 }
26 } 29 }
27 30
@@ -50,9 +53,15 @@ func (l *MiniTop5ArticleCommentLogic) MiniTop5ArticleComment(req *types.MiniTop5 @@ -50,9 +53,15 @@ func (l *MiniTop5ArticleCommentLogic) MiniTop5ArticleComment(req *types.MiniTop5
50 resp = &types.MiniTop5ArticleCommentResponse{ 53 resp = &types.MiniTop5ArticleCommentResponse{
51 List: make([]types.ArticleCommentItem, len(commentList)), 54 List: make([]types.ArticleCommentItem, len(commentList)),
52 } 55 }
  56 + companyInfo, err := l.svcCtx.CompanyRepository.FindOne(l.ctx, conn, req.CompanyId)
  57 + if err != nil {
  58 + return nil, xerr.NewErrMsgErr("获取公司信息失败", err)
  59 +
  60 + }
53 for i, val := range commentList { 61 for i, val := range commentList {
54 item := NewArticleCommentItem(val) 62 item := NewArticleCommentItem(val)
55 - 63 + item.FromUser = l.getCommentAuthor(conn, val.FromUserId, companyInfo.Name)
  64 + item.ToUser = l.getCommentAuthor(conn, val.ToUserId, companyInfo.Name)
56 if _, ok := flagMap[val.Id]; ok { 65 if _, ok := flagMap[val.Id]; ok {
57 item.MeLoveFlag = 1 66 item.MeLoveFlag = 1
58 } 67 }
@@ -70,6 +79,25 @@ func (l *MiniTop5ArticleCommentLogic) MiniTop5ArticleComment(req *types.MiniTop5 @@ -70,6 +79,25 @@ func (l *MiniTop5ArticleCommentLogic) MiniTop5ArticleComment(req *types.MiniTop5
70 return 79 return
71 } 80 }
72 81
  82 +func (l *MiniTop5ArticleCommentLogic) getCommentAuthor(conn transaction.Conn, userid int64, companyName string) types.CommentAuthor {
  83 + if u, ok := l.userCache[userid]; ok {
  84 + return u
  85 + }
  86 + toUser, err := l.svcCtx.UserRepository.FindOne(l.ctx, conn, userid)
  87 + if err == nil {
  88 + commentToUser := types.CommentAuthor{
  89 + Id: toUser.Id,
  90 + Name: toUser.Name,
  91 + Avatar: toUser.Avatar,
  92 + Position: toUser.Position,
  93 + Company: companyName,
  94 + }
  95 + l.userCache[toUser.Id] = commentToUser
  96 + return commentToUser
  97 + }
  98 + return types.CommentAuthor{}
  99 +}
  100 +
73 func NewArticleCommentItem(val *domain.ArticleComment) types.ArticleCommentItem { 101 func NewArticleCommentItem(val *domain.ArticleComment) types.ArticleCommentItem {
74 item := types.ArticleCommentItem{ 102 item := types.ArticleCommentItem{
75 Id: val.Id, 103 Id: val.Id,
@@ -61,7 +61,7 @@ type ArticleCommentShow struct { @@ -61,7 +61,7 @@ type ArticleCommentShow struct {
61 CountReply int // 回复数量 61 CountReply int // 回复数量
62 CountUserLove int // 用户点赞数量 62 CountUserLove int // 用户点赞数量
63 CountAdminLove int // 运营点赞数量 63 CountAdminLove int // 运营点赞数量
64 - Show int // 评论的展示状态(0显示、1不显示) 64 + Show int // 评论的展示状态(1显示、2不显示)
65 CreatedAt int64 // 评论的创建时间 65 CreatedAt int64 // 评论的创建时间
66 } 66 }
67 67