作者 郑周

1 文章浏览记录 列表

@@ -34,6 +34,10 @@ service Core { @@ -34,6 +34,10 @@ service Core {
34 @handler MiniArticleMarkUserRead 34 @handler MiniArticleMarkUserRead
35 post /article/mark/user_read (MiniArticleMarkUserReadRequest) returns (MiniArticleMarkUserReadResponse) 35 post /article/mark/user_read (MiniArticleMarkUserReadRequest) returns (MiniArticleMarkUserReadResponse)
36 36
  37 + @doc "小程序获取文章浏览记录"
  38 + @handler MiniArticleMarkList
  39 + post /article/mark/list (MiniArticleMarkListRequest) returns (MiniArticleMarkListResponse)
  40 +
37 @doc "小程序获取我发布的文章" 41 @doc "小程序获取我发布的文章"
38 @handler MiniArticleSearchMe 42 @handler MiniArticleSearchMe
39 post /article/search/me (MiniArticleSearchMeRequest) returns (MiniArticleSearchMeResponse) 43 post /article/search/me (MiniArticleSearchMeRequest) returns (MiniArticleSearchMeResponse)
@@ -160,6 +160,29 @@ type ( @@ -160,6 +160,29 @@ type (
160 } 160 }
161 ) 161 )
162 162
  163 +type (
  164 + MiniArticleMarkListRequest {
  165 + Page int `json:"page"`
  166 + Size int `json:"size"`
  167 + }
  168 +
  169 + MiniArticleMarkListResponse {
  170 + Total int64 `json:"total"`
  171 + List []MiniArticleMarkItem `json:"list"`
  172 + }
  173 +
  174 + MiniArticleMarkItem {
  175 + Id int64 `json:"id"`
  176 + CompanyId int64 `json:"companyId"`
  177 + UserId int64 `json:"userId"`
  178 + ArticleId int64 `json:"articleId"`
  179 + Title string `json:"title"`
  180 + Author SimpleUser `json:"author"` // 发布人
  181 + UpdatedAt int64 `json:"updatedAt"`
  182 + }
  183 +
  184 +)
  185 +
163 //管理后台获取文章详情 186 //管理后台获取文章详情
164 type ( 187 type (
165 SystemArticleGetRequest { 188 SystemArticleGetRequest {
  1 +package article
  2 +
  3 +import (
  4 + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/result"
  5 + "net/http"
  6 +
  7 + "github.com/zeromicro/go-zero/rest/httpx"
  8 + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/logic/article"
  9 + "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"
  11 +)
  12 +
  13 +func MiniArticleMarkListHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
  14 + return func(w http.ResponseWriter, r *http.Request) {
  15 + var req types.MiniArticleMarkListRequest
  16 + if err := httpx.Parse(r, &req); err != nil {
  17 + httpx.ErrorCtx(r.Context(), w, err)
  18 + return
  19 + }
  20 +
  21 + l := article.NewMiniArticleMarkListLogic(r.Context(), svcCtx)
  22 + resp, err := l.MiniArticleMarkList(&req)
  23 + result.HttpResult(r, w, resp, err)
  24 + }
  25 +}
@@ -215,6 +215,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { @@ -215,6 +215,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
215 }, 215 },
216 { 216 {
217 Method: http.MethodPost, 217 Method: http.MethodPost,
  218 + Path: "/article/mark/list",
  219 + Handler: article.MiniArticleMarkListHandler(serverCtx),
  220 + },
  221 + {
  222 + Method: http.MethodPost,
218 Path: "/article/search/me", 223 Path: "/article/search/me",
219 Handler: article.MiniArticleSearchMeHandler(serverCtx), 224 Handler: article.MiniArticleSearchMeHandler(serverCtx),
220 }, 225 },
  1 +package article
  2 +
  3 +import (
  4 + "context"
  5 + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain"
  6 + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata"
  7 +
  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"
  10 +
  11 + "github.com/zeromicro/go-zero/core/logx"
  12 +)
  13 +
  14 +type MiniArticleMarkListLogic struct {
  15 + logx.Logger
  16 + ctx context.Context
  17 + svcCtx *svc.ServiceContext
  18 +}
  19 +
  20 +func NewMiniArticleMarkListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MiniArticleMarkListLogic {
  21 + return &MiniArticleMarkListLogic{
  22 + Logger: logx.WithContext(ctx),
  23 + ctx: ctx,
  24 + svcCtx: svcCtx,
  25 + }
  26 +}
  27 +
  28 +func (l *MiniArticleMarkListLogic) MiniArticleMarkList(req *types.MiniArticleMarkListRequest) (resp *types.MiniArticleMarkListResponse, err error) {
  29 + var userToken = contextdata.GetUserTokenFromCtx(l.ctx)
  30 +
  31 + total, list, err := l.svcCtx.UserReadArticleRepository.Find(l.ctx, l.svcCtx.DefaultDBConn(), domain.NewQueryOptions().
  32 + WithOffsetLimit(req.Page, req.Size).
  33 + WithKV("userId", userToken.UserId))
  34 + if err != nil {
  35 + return nil, err
  36 + }
  37 + resp = &types.MiniArticleMarkListResponse{}
  38 + resp.Total = total
  39 + resp.List = make([]types.MiniArticleMarkItem, 0)
  40 + for _, item := range list {
  41 + to := types.MiniArticleMarkItem{
  42 + Id: item.Id,
  43 + CompanyId: item.CompanyId,
  44 + ArticleId: item.ArticleId,
  45 + Title: item.Title,
  46 + Author: types.SimpleUser{
  47 + Id: item.Author.Id,
  48 + CompanyId: item.Author.CompanyId,
  49 + CompanyName: item.Author.Company,
  50 + Name: item.Author.Name,
  51 + Avatar: item.Author.Avatar,
  52 + Position: item.Author.Position,
  53 + },
  54 + UpdatedAt: item.UpdatedAt,
  55 + }
  56 + resp.List = append(resp.List, to)
  57 + }
  58 + return resp, nil
  59 +}
@@ -460,6 +460,26 @@ type MiniArticleMarkUserReadResponse struct { @@ -460,6 +460,26 @@ type MiniArticleMarkUserReadResponse struct {
460 Id int64 `json:"id"` 460 Id int64 `json:"id"`
461 } 461 }
462 462
  463 +type MiniArticleMarkListRequest struct {
  464 + Page int `json:"page"`
  465 + Size int `json:"size"`
  466 +}
  467 +
  468 +type MiniArticleMarkListResponse struct {
  469 + Total int64 `json:"total"`
  470 + List []MiniArticleMarkItem `json:"list"`
  471 +}
  472 +
  473 +type MiniArticleMarkItem struct {
  474 + Id int64 `json:"id"`
  475 + CompanyId int64 `json:"companyId"`
  476 + UserId int64 `json:"userId"`
  477 + ArticleId int64 `json:"articleId"`
  478 + Title string `json:"title"`
  479 + Author SimpleUser `json:"author"` // 发布人
  480 + UpdatedAt int64 `json:"updatedAt"`
  481 +}
  482 +
463 type SystemArticleGetRequest struct { 483 type SystemArticleGetRequest struct {
464 Id int64 `path:"id"` //id 484 Id int64 `path:"id"` //id
465 CompanyId int64 `path:",optional"` 485 CompanyId int64 `path:",optional"`