作者 tangxvhui

获取文章点赞的人员列表

@@ -129,7 +129,7 @@ type ( @@ -129,7 +129,7 @@ type (
129 Size int `json:"size"` //分页,每页几条 129 Size int `json:"size"` //分页,每页几条
130 } 130 }
131 MiniUserLikeArticleResponse { 131 MiniUserLikeArticleResponse {
132 - Total int `json:"total"` //总数 132 + Total int64 `json:"total"` //总数
133 List []WhichUserLikeArticle `json:"list"` //列表 133 List []WhichUserLikeArticle `json:"list"` //列表
134 } 134 }
135 WhichUserLikeArticle { 135 WhichUserLikeArticle {
@@ -7,6 +7,7 @@ import ( @@ -7,6 +7,7 @@ import (
7 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/logic/article" 7 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/logic/article"
8 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" 8 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc"
9 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" 9 "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types"
  10 + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata"
10 ) 11 )
11 12
12 func MiniUserLikeArticleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { 13 func MiniUserLikeArticleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
@@ -18,6 +19,8 @@ func MiniUserLikeArticleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { @@ -18,6 +19,8 @@ func MiniUserLikeArticleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
18 } 19 }
19 20
20 l := article.NewMiniUserLikeArticleLogic(r.Context(), svcCtx) 21 l := article.NewMiniUserLikeArticleLogic(r.Context(), svcCtx)
  22 + token := contextdata.GetUserTokenFromCtx(r.Context())
  23 + req.CompanyId = token.CompanyId
21 resp, err := l.MiniUserLikeArticle(&req) 24 resp, err := l.MiniUserLikeArticle(&req)
22 if err != nil { 25 if err != nil {
23 httpx.ErrorCtx(r.Context(), w, err) 26 httpx.ErrorCtx(r.Context(), w, err)
@@ -5,6 +5,8 @@ import ( @@ -5,6 +5,8 @@ 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/domain"
  9 + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr"
8 10
9 "github.com/zeromicro/go-zero/core/logx" 11 "github.com/zeromicro/go-zero/core/logx"
10 ) 12 )
@@ -23,8 +25,54 @@ func NewMiniUserLikeArticleLogic(ctx context.Context, svcCtx *svc.ServiceContext @@ -23,8 +25,54 @@ func NewMiniUserLikeArticleLogic(ctx context.Context, svcCtx *svc.ServiceContext
23 } 25 }
24 } 26 }
25 27
  28 +// 获取点赞的人员列表
26 func (l *MiniUserLikeArticleLogic) MiniUserLikeArticle(req *types.MiniUserLikeArticleRequest) (resp *types.MiniUserLikeArticleResponse, err error) { 29 func (l *MiniUserLikeArticleLogic) MiniUserLikeArticle(req *types.MiniUserLikeArticleRequest) (resp *types.MiniUserLikeArticleResponse, err error) {
27 - // todo: add your logic here and delete this line 30 + var conn = l.svcCtx.DefaultDBConn()
  31 + queryOption := domain.NewQueryOptions().
  32 + WithOffsetLimit(req.Page, req.Size).
  33 + MustWithKV("articleId", req.ArticleId).
  34 + MustWithKV("commentId", 0)
  35 + cnt, flagList, err := l.svcCtx.UserLoveFlagRepository.Find(l.ctx, conn, queryOption)
  36 + if err != nil {
  37 + return nil, xerr.NewErrMsgErr("获取人员列表失败", err)
  38 + }
  39 + uidList := []int64{}
  40 + for _, val := range flagList {
  41 + uidList = append(uidList, val.UserId)
  42 + }
  43 + queryOption = domain.NewQueryOptions().
  44 + WithFindOnly().
  45 + MustWithKV("ids", uidList)
28 46
29 - return 47 + // 获取人员列表
  48 + _, userList, err := l.svcCtx.UserRepository.Find(l.ctx, conn, queryOption)
  49 + if err != nil {
  50 + return nil, xerr.NewErrMsgErr("获取人员列表失败", err)
  51 + }
  52 + userMap := map[int64]*domain.User{}
  53 + for i := range userList {
  54 + if userList[i].CompanyId != req.CompanyId {
  55 + return nil, xerr.NewErrMsg("操作失败")
  56 + }
  57 + userMap[userList[i].Id] = userList[i]
  58 + }
  59 + resp = &types.MiniUserLikeArticleResponse{
  60 + Total: cnt,
  61 + List: make([]types.WhichUserLikeArticle, len(flagList)),
  62 + }
  63 + for i, val := range flagList {
  64 + item := types.WhichUserLikeArticle{
  65 + ArticleId: val.ArticleId,
  66 + UserId: val.UserId,
  67 + Name: "[用户已被清除]",
  68 + Avatar: "",
  69 + CreatedAt: val.CreatedAt,
  70 + }
  71 + if u, ok := userMap[val.UserId]; ok {
  72 + item.Name = u.Name
  73 + item.Avatar = u.Avatar
  74 + }
  75 + resp.List[i] = item
  76 + }
  77 + return resp, nil
30 } 78 }
@@ -338,7 +338,7 @@ type MiniUserLikeArticleRequest struct { @@ -338,7 +338,7 @@ type MiniUserLikeArticleRequest struct {
338 } 338 }
339 339
340 type MiniUserLikeArticleResponse struct { 340 type MiniUserLikeArticleResponse struct {
341 - Total int `json:"total"` //总数 341 + Total int64 `json:"total"` //总数
342 List []WhichUserLikeArticle `json:"list"` //列表 342 List []WhichUserLikeArticle `json:"list"` //列表
343 } 343 }
344 344