作者 tangxvhui

获取文章点赞的人员列表

... ... @@ -129,7 +129,7 @@ type (
Size int `json:"size"` //分页,每页几条
}
MiniUserLikeArticleResponse {
Total int `json:"total"` //总数
Total int64 `json:"total"` //总数
List []WhichUserLikeArticle `json:"list"` //列表
}
WhichUserLikeArticle {
... ...
... ... @@ -7,6 +7,7 @@ import (
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/logic/article"
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc"
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types"
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata"
)
func MiniUserLikeArticleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
... ... @@ -18,6 +19,8 @@ func MiniUserLikeArticleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
}
l := article.NewMiniUserLikeArticleLogic(r.Context(), svcCtx)
token := contextdata.GetUserTokenFromCtx(r.Context())
req.CompanyId = token.CompanyId
resp, err := l.MiniUserLikeArticle(&req)
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
... ...
... ... @@ -5,6 +5,8 @@ import (
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc"
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types"
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain"
"gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr"
"github.com/zeromicro/go-zero/core/logx"
)
... ... @@ -23,8 +25,54 @@ func NewMiniUserLikeArticleLogic(ctx context.Context, svcCtx *svc.ServiceContext
}
}
// 获取点赞的人员列表
func (l *MiniUserLikeArticleLogic) MiniUserLikeArticle(req *types.MiniUserLikeArticleRequest) (resp *types.MiniUserLikeArticleResponse, err error) {
// todo: add your logic here and delete this line
var conn = l.svcCtx.DefaultDBConn()
queryOption := domain.NewQueryOptions().
WithOffsetLimit(req.Page, req.Size).
MustWithKV("articleId", req.ArticleId).
MustWithKV("commentId", 0)
cnt, flagList, err := l.svcCtx.UserLoveFlagRepository.Find(l.ctx, conn, queryOption)
if err != nil {
return nil, xerr.NewErrMsgErr("获取人员列表失败", err)
}
uidList := []int64{}
for _, val := range flagList {
uidList = append(uidList, val.UserId)
}
queryOption = domain.NewQueryOptions().
WithFindOnly().
MustWithKV("ids", uidList)
return
// 获取人员列表
_, userList, err := l.svcCtx.UserRepository.Find(l.ctx, conn, queryOption)
if err != nil {
return nil, xerr.NewErrMsgErr("获取人员列表失败", err)
}
userMap := map[int64]*domain.User{}
for i := range userList {
if userList[i].CompanyId != req.CompanyId {
return nil, xerr.NewErrMsg("操作失败")
}
userMap[userList[i].Id] = userList[i]
}
resp = &types.MiniUserLikeArticleResponse{
Total: cnt,
List: make([]types.WhichUserLikeArticle, len(flagList)),
}
for i, val := range flagList {
item := types.WhichUserLikeArticle{
ArticleId: val.ArticleId,
UserId: val.UserId,
Name: "[用户已被清除]",
Avatar: "",
CreatedAt: val.CreatedAt,
}
if u, ok := userMap[val.UserId]; ok {
item.Name = u.Name
item.Avatar = u.Avatar
}
resp.List[i] = item
}
return resp, nil
}
... ...
... ... @@ -338,7 +338,7 @@ type MiniUserLikeArticleRequest struct {
}
type MiniUserLikeArticleResponse struct {
Total int `json:"total"` //总数
Total int64 `json:"total"` //总数
List []WhichUserLikeArticle `json:"list"` //列表
}
... ...