作者 tangxvhui

获取评论信息失败

@@ -3,8 +3,10 @@ package article @@ -3,8 +3,10 @@ package article
3 import ( 3 import (
4 "context" 4 "context"
5 5
  6 + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/db/transaction"
6 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain" 7 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain"
7 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata" 8 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata"
  9 + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr"
8 10
9 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" 11 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc"
10 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" 12 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types"
@@ -14,15 +16,17 @@ import ( @@ -14,15 +16,17 @@ import (
14 16
15 type MiniArticleMarkListLogic struct { 17 type MiniArticleMarkListLogic struct {
16 logx.Logger 18 logx.Logger
17 - ctx context.Context  
18 - svcCtx *svc.ServiceContext 19 + ctx context.Context
  20 + svcCtx *svc.ServiceContext
  21 + userCache map[int64]*domain.User
19 } 22 }
20 23
21 func NewMiniArticleMarkListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MiniArticleMarkListLogic { 24 func NewMiniArticleMarkListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MiniArticleMarkListLogic {
22 return &MiniArticleMarkListLogic{ 25 return &MiniArticleMarkListLogic{
23 - Logger: logx.WithContext(ctx),  
24 - ctx: ctx,  
25 - svcCtx: svcCtx, 26 + Logger: logx.WithContext(ctx),
  27 + ctx: ctx,
  28 + svcCtx: svcCtx,
  29 + userCache: make(map[int64]*domain.User, 0),
26 } 30 }
27 } 31 }
28 32
@@ -36,10 +40,16 @@ func (l *MiniArticleMarkListLogic) MiniArticleMarkList(req *types.MiniArticleMar @@ -36,10 +40,16 @@ func (l *MiniArticleMarkListLogic) MiniArticleMarkList(req *types.MiniArticleMar
36 if err != nil { 40 if err != nil {
37 return nil, err 41 return nil, err
38 } 42 }
  43 + companyInfo, err := l.svcCtx.CompanyRepository.FindOne(l.ctx, l.svcCtx.DefaultDBConn(), userToken.CompanyId)
  44 + if err != nil {
  45 + return nil, xerr.NewErrMsgErr("获取评论信息失败", err)
  46 + }
39 resp = &types.MiniArticleMarkListResponse{} 47 resp = &types.MiniArticleMarkListResponse{}
40 resp.Total = total 48 resp.Total = total
41 resp.List = make([]types.MiniArticleMarkItem, 0) 49 resp.List = make([]types.MiniArticleMarkItem, 0)
  50 + var author domain.User
42 for _, item := range list { 51 for _, item := range list {
  52 + author = l.getAuthor(l.svcCtx.DefaultDBConn(), item.Author.Id)
43 to := types.MiniArticleMarkItem{ 53 to := types.MiniArticleMarkItem{
44 Id: item.Id, 54 Id: item.Id,
45 CompanyId: item.CompanyId, 55 CompanyId: item.CompanyId,
@@ -48,10 +58,10 @@ func (l *MiniArticleMarkListLogic) MiniArticleMarkList(req *types.MiniArticleMar @@ -48,10 +58,10 @@ func (l *MiniArticleMarkListLogic) MiniArticleMarkList(req *types.MiniArticleMar
48 Author: types.SimpleUser{ 58 Author: types.SimpleUser{
49 Id: item.Author.Id, 59 Id: item.Author.Id,
50 CompanyId: item.Author.CompanyId, 60 CompanyId: item.Author.CompanyId,
51 - CompanyName: item.Author.Company,  
52 - Name: item.Author.Name,  
53 - Avatar: item.Author.Avatar,  
54 - Position: item.Author.Position, 61 + CompanyName: companyInfo.Name,
  62 + Name: author.Name,
  63 + Avatar: author.Avatar,
  64 + Position: author.Position,
55 }, 65 },
56 UpdatedAt: item.UpdatedAt, 66 UpdatedAt: item.UpdatedAt,
57 } 67 }
@@ -59,3 +69,15 @@ func (l *MiniArticleMarkListLogic) MiniArticleMarkList(req *types.MiniArticleMar @@ -59,3 +69,15 @@ func (l *MiniArticleMarkListLogic) MiniArticleMarkList(req *types.MiniArticleMar
59 } 69 }
60 return resp, nil 70 return resp, nil
61 } 71 }
  72 +
  73 +func (l *MiniArticleMarkListLogic) getAuthor(conn transaction.Conn, userid int64) domain.User {
  74 + if u, ok := l.userCache[userid]; ok {
  75 + return *u
  76 + }
  77 + toUser, err := l.svcCtx.UserRepository.FindOne(l.ctx, conn, userid)
  78 + if err == nil {
  79 + l.userCache[toUser.Id] = toUser
  80 + return *toUser
  81 + }
  82 + return domain.User{}
  83 +}