Merge branch 'dev' of http://gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss into dev
正在显示
26 个修改的文件
包含
331 行增加
和
70 行删除
@@ -7,6 +7,9 @@ | @@ -7,6 +7,9 @@ | ||
7 | 管理后台“易数家“前端入口:https://digital-front-platform-dev.fjmaimaimai.com/ | 7 | 管理后台“易数家“前端入口:https://digital-front-platform-dev.fjmaimaimai.com/ |
8 | 跳转后的实际管理后台地址: https://sumifcc-x-front-test.sumifcc.com | 8 | 跳转后的实际管理后台地址: https://sumifcc-x-front-test.sumifcc.com |
9 | 9 | ||
10 | + 样例账号 18860183050 密码 123456 | ||
11 | + | ||
12 | + | ||
10 | ### 可设置环境变量 | 13 | ### 可设置环境变量 |
11 | - DataSource | 14 | - DataSource |
12 | 数据库连接,样例 | 15 | 数据库连接,样例 |
@@ -374,7 +374,7 @@ type ( | @@ -374,7 +374,7 @@ type ( | ||
374 | SystemArticleSearchRequest { | 374 | SystemArticleSearchRequest { |
375 | CompanyId int64 `json:"companyId,optional"` | 375 | CompanyId int64 `json:"companyId,optional"` |
376 | Title string `json:"title,optional"` //标题 | 376 | Title string `json:"title,optional"` //标题 |
377 | - Author string `json:"author,optional"` //发布人 | 377 | + Author int64 `json:"author,optional"` //发布人 |
378 | BeginTime int64 `json:"beginTime,optional"` //开始时间 | 378 | BeginTime int64 `json:"beginTime,optional"` //开始时间 |
379 | EndTime int64 `json:"endTime,optional"` //结束时间 | 379 | EndTime int64 `json:"endTime,optional"` //结束时间 |
380 | Tags []int64 `json:"tags,optional"` //标签 | 380 | Tags []int64 `json:"tags,optional"` //标签 |
@@ -389,11 +389,12 @@ type ( | @@ -389,11 +389,12 @@ type ( | ||
389 | SystemArticleSearch { | 389 | SystemArticleSearch { |
390 | Id int64 `json:"id"` //id | 390 | Id int64 `json:"id"` //id |
391 | Title string `json:"title"` //标题 | 391 | Title string `json:"title"` //标题 |
392 | + AuthorId int64 `json:"authorId"` //发布人ID | ||
392 | Author string `json:"author"` //发布人 | 393 | Author string `json:"author"` //发布人 |
393 | Images []string `json:"images"` //图片 | 394 | Images []string `json:"images"` //图片 |
394 | CreatedAt int64 `json:"createdAt"` //文章的创建日期 | 395 | CreatedAt int64 `json:"createdAt"` //文章的创建日期 |
395 | CountLove int `json:"countLove"` //点赞数量 | 396 | CountLove int `json:"countLove"` //点赞数量 |
396 | - CountComment int `json:"CountComment"` //评论数量 | 397 | + CountComment int `json:"countComment"` //评论数量 |
397 | Show int `json:"show"` //是否隐藏 [0显示、1不显示] | 398 | Show int `json:"show"` //是否隐藏 [0显示、1不显示] |
398 | Tags []string `json:"tags"` //标签 | 399 | Tags []string `json:"tags"` //标签 |
399 | TargetUser int `json:"targetUser"` //分发方式 [0分发给所有人、1分发给指定的人] | 400 | TargetUser int `json:"targetUser"` //分发方式 [0分发给所有人、1分发给指定的人] |
@@ -76,6 +76,10 @@ service Core { | @@ -76,6 +76,10 @@ service Core { | ||
76 | @doc "管理后台变更评论" | 76 | @doc "管理后台变更评论" |
77 | @handler SystemEditAticleComment | 77 | @handler SystemEditAticleComment |
78 | post /article_comment/edit (SystemEditCommentRequest)returns (SystemEditCommentResponse) | 78 | post /article_comment/edit (SystemEditCommentRequest)returns (SystemEditCommentResponse) |
79 | + | ||
80 | + @doc "编辑评论的运营点赞数" | ||
81 | + @handler SystemEditAticleCommentLove | ||
82 | + post /article_comment/edit/love (SystemEditCommentLoveRequest)returns (SystemEditCommentLoveResponse) | ||
79 | } | 83 | } |
80 | 84 | ||
81 | //评论的填写人 | 85 | //评论的填写人 |
@@ -254,7 +258,7 @@ type ( | @@ -254,7 +258,7 @@ type ( | ||
254 | Size int `json:"size"` | 258 | Size int `json:"size"` |
255 | ArticleId int64 `json:"articleId"` // 文章ID | 259 | ArticleId int64 `json:"articleId"` // 文章ID |
256 | TopId int64 `json:"topId,optional"` // 文章顶层ID | 260 | TopId int64 `json:"topId,optional"` // 文章顶层ID |
257 | - Author string `json:"author,optional"` // 用户 | 261 | + Author int64 `json:"author,optional"` // 用户 |
258 | Show int `json:"show,optional"` // 显示状态 | 262 | Show int `json:"show,optional"` // 显示状态 |
259 | BeginTime int64 `json:"beginTime,optional"` // 开始时间 | 263 | BeginTime int64 `json:"beginTime,optional"` // 开始时间 |
260 | EndTime int64 `json:"endTime,optional"` // 结束时间 | 264 | EndTime int64 `json:"endTime,optional"` // 结束时间 |
@@ -289,7 +293,7 @@ type ( | @@ -289,7 +293,7 @@ type ( | ||
289 | Size int `json:"size"` | 293 | Size int `json:"size"` |
290 | CompanyId int64 `json:",optional"` // | 294 | CompanyId int64 `json:",optional"` // |
291 | TopId int64 `json:"topId,optional"` // 评论的顶层ID | 295 | TopId int64 `json:"topId,optional"` // 评论的顶层ID |
292 | - FromUser string `json:"fromUser,optional"` // 用户 | 296 | + FromUserId int64 `json:"fromUserId,optional"` // 用户 |
293 | Show int `json:"show,optional"` // 显示状态 | 297 | Show int `json:"show,optional"` // 显示状态 |
294 | BeginTime int64 `json:"beginTime,optional"` // 填写评论的开始时间 | 298 | BeginTime int64 `json:"beginTime,optional"` // 填写评论的开始时间 |
295 | EndTime int64 `json:"endTime,optional"` // 填写评论的结束时间 | 299 | EndTime int64 `json:"endTime,optional"` // 填写评论的结束时间 |
@@ -368,3 +372,18 @@ type ( | @@ -368,3 +372,18 @@ type ( | ||
368 | Id int64 `json:"id"` | 372 | Id int64 `json:"id"` |
369 | } | 373 | } |
370 | ) | 374 | ) |
375 | + | ||
376 | +// 管理后台变更评论的运营点赞 | ||
377 | +type ( | ||
378 | + SystemEditCommentLoveRequest { | ||
379 | + CompanyId int64 `json:",optional"` | ||
380 | + ParamList []SystemEditLove `json:"paramList"` | ||
381 | + } | ||
382 | + SystemEditLove { | ||
383 | + Id int64 `json:"id"` | ||
384 | + CountAdminLove int `json:"countAdminLove,optional"` | ||
385 | + } | ||
386 | + SystemEditCommentLoveResponse { | ||
387 | + ParamList []SystemEditLove `json:"paramList"` | ||
388 | + } | ||
389 | +) |
@@ -15,7 +15,7 @@ func SystemEditAticleCommentHandler(svcCtx *svc.ServiceContext) http.HandlerFunc | @@ -15,7 +15,7 @@ func SystemEditAticleCommentHandler(svcCtx *svc.ServiceContext) http.HandlerFunc | ||
15 | return func(w http.ResponseWriter, r *http.Request) { | 15 | return func(w http.ResponseWriter, r *http.Request) { |
16 | var req types.SystemEditCommentRequest | 16 | var req types.SystemEditCommentRequest |
17 | if err := httpx.Parse(r, &req); err != nil { | 17 | if err := httpx.Parse(r, &req); err != nil { |
18 | - httpx.ErrorCtx(r.Context(), w, err) | 18 | + result.HttpResult(r, w, nil, err) |
19 | return | 19 | return |
20 | } | 20 | } |
21 | 21 |
1 | +package comment | ||
2 | + | ||
3 | +import ( | ||
4 | + "net/http" | ||
5 | + | ||
6 | + "github.com/zeromicro/go-zero/rest/httpx" | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/logic/comment" | ||
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 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata" | ||
11 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/result" | ||
12 | +) | ||
13 | + | ||
14 | +// 单独编辑评论的运营点赞数量 | ||
15 | +func SystemEditAticleCommentLoveHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { | ||
16 | + return func(w http.ResponseWriter, r *http.Request) { | ||
17 | + var req types.SystemEditCommentLoveRequest | ||
18 | + if err := httpx.Parse(r, &req); err != nil { | ||
19 | + result.HttpResult(r, w, nil, err) | ||
20 | + return | ||
21 | + } | ||
22 | + token := contextdata.GetUserTokenFromCtx(r.Context()) | ||
23 | + req.CompanyId = token.CompanyId | ||
24 | + l := comment.NewSystemEditAticleCommentLoveLogic(r.Context(), svcCtx) | ||
25 | + resp, err := l.SystemEditAticleCommentLove(&req) | ||
26 | + result.HttpResult(r, w, resp, err) | ||
27 | + } | ||
28 | +} |
@@ -11,6 +11,7 @@ import ( | @@ -11,6 +11,7 @@ import ( | ||
11 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/result" | 11 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/result" |
12 | ) | 12 | ) |
13 | 13 | ||
14 | +// 管理后台的评论列表 | ||
14 | func SystemListAticleCommentHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { | 15 | func SystemListAticleCommentHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { |
15 | return func(w http.ResponseWriter, r *http.Request) { | 16 | return func(w http.ResponseWriter, r *http.Request) { |
16 | var req types.SystemListCommentRequest | 17 | var req types.SystemListCommentRequest |
@@ -133,6 +133,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { | @@ -133,6 +133,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { | ||
133 | Path: "/article_comment/edit", | 133 | Path: "/article_comment/edit", |
134 | Handler: comment.SystemEditAticleCommentHandler(serverCtx), | 134 | Handler: comment.SystemEditAticleCommentHandler(serverCtx), |
135 | }, | 135 | }, |
136 | + { | ||
137 | + Method: http.MethodPost, | ||
138 | + Path: "/article_comment/edit/love", | ||
139 | + Handler: comment.SystemEditAticleCommentLoveHandler(serverCtx), | ||
140 | + }, | ||
136 | }..., | 141 | }..., |
137 | ), | 142 | ), |
138 | rest.WithJwt(serverCtx.Config.SystemAuth.AccessSecret), | 143 | rest.WithJwt(serverCtx.Config.SystemAuth.AccessSecret), |
@@ -28,6 +28,9 @@ func NewMiniArticleSearchMeLogic(ctx context.Context, svcCtx *svc.ServiceContext | @@ -28,6 +28,9 @@ func NewMiniArticleSearchMeLogic(ctx context.Context, svcCtx *svc.ServiceContext | ||
28 | // MiniArticleSearchMe 获取我发布的文章 | 28 | // MiniArticleSearchMe 获取我发布的文章 |
29 | func (l *MiniArticleSearchMeLogic) MiniArticleSearchMe(req *types.MiniArticleSearchMeRequest) (resp *types.MiniArticleSearchMeResponse, err error) { | 29 | func (l *MiniArticleSearchMeLogic) MiniArticleSearchMe(req *types.MiniArticleSearchMeRequest) (resp *types.MiniArticleSearchMeResponse, err error) { |
30 | var conn = l.svcCtx.DefaultDBConn() | 30 | var conn = l.svcCtx.DefaultDBConn() |
31 | + if req.Size > 100 { | ||
32 | + req.Size = 100 | ||
33 | + } | ||
31 | queryOptions := domain.NewQueryOptions(). | 34 | queryOptions := domain.NewQueryOptions(). |
32 | WithOffsetLimit(req.Page, req.Size). | 35 | WithOffsetLimit(req.Page, req.Size). |
33 | MustWithKV("authorId", req.AuthorId) | 36 | MustWithKV("authorId", req.AuthorId) |
@@ -5,6 +5,7 @@ import ( | @@ -5,6 +5,7 @@ import ( | ||
5 | "strconv" | 5 | "strconv" |
6 | "strings" | 6 | "strings" |
7 | "text/template" | 7 | "text/template" |
8 | + "unicode/utf8" | ||
8 | 9 | ||
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/svc" |
10 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" | 11 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" |
@@ -34,6 +35,16 @@ func NewMiniCreateArticleLogic(ctx context.Context, svcCtx *svc.ServiceContext) | @@ -34,6 +35,16 @@ func NewMiniCreateArticleLogic(ctx context.Context, svcCtx *svc.ServiceContext) | ||
34 | // 创建新文章 | 35 | // 创建新文章 |
35 | func (l *MiniCreateArticleLogic) MiniCreateArticle(req *types.MiniArticleCreateRequest) (resp *types.MiniArticleCreateResponse, err error) { | 36 | func (l *MiniCreateArticleLogic) MiniCreateArticle(req *types.MiniArticleCreateRequest) (resp *types.MiniArticleCreateResponse, err error) { |
36 | var conn = l.svcCtx.DefaultDBConn() | 37 | var conn = l.svcCtx.DefaultDBConn() |
38 | + | ||
39 | + // 检查文字数量 | ||
40 | + wordNum := 0 | ||
41 | + for i := range req.Section { | ||
42 | + num := utf8.RuneCountInString(req.Section[i]) | ||
43 | + wordNum += num | ||
44 | + } | ||
45 | + if wordNum >= 1000 { | ||
46 | + return nil, xerr.NewErrMsgErr("最多只能输入1000字", err) | ||
47 | + } | ||
37 | // 检查发布人 | 48 | // 检查发布人 |
38 | author, err := l.svcCtx.UserRepository.FindOne(l.ctx, conn, req.AuthorId) | 49 | author, err := l.svcCtx.UserRepository.FindOne(l.ctx, conn, req.AuthorId) |
39 | if err != nil { | 50 | if err != nil { |
@@ -28,7 +28,9 @@ func NewMiniSearchArticleDraftMeLogic(ctx context.Context, svcCtx *svc.ServiceCo | @@ -28,7 +28,9 @@ func NewMiniSearchArticleDraftMeLogic(ctx context.Context, svcCtx *svc.ServiceCo | ||
28 | // 查询我的草稿箱内容列表 | 28 | // 查询我的草稿箱内容列表 |
29 | func (l *MiniSearchArticleDraftMeLogic) MiniSearchArticleDraftMe(req *types.MiniArticleDraftSearchMeRequest) (resp *types.MiniArticleDraftSearchMeResponse, err error) { | 29 | func (l *MiniSearchArticleDraftMeLogic) MiniSearchArticleDraftMe(req *types.MiniArticleDraftSearchMeRequest) (resp *types.MiniArticleDraftSearchMeResponse, err error) { |
30 | var conn = l.svcCtx.DefaultDBConn() | 30 | var conn = l.svcCtx.DefaultDBConn() |
31 | - | 31 | + if req.Size > 100 { |
32 | + req.Size = 100 | ||
33 | + } | ||
32 | queryOption := domain.NewQueryOptions(). | 34 | queryOption := domain.NewQueryOptions(). |
33 | WithOffsetLimit(req.Page, req.Size). | 35 | WithOffsetLimit(req.Page, req.Size). |
34 | MustWithKV("authorId", req.AuthorId) | 36 | MustWithKV("authorId", req.AuthorId) |
@@ -29,7 +29,9 @@ func NewMiniSearchArticlePageLogic(ctx context.Context, svcCtx *svc.ServiceConte | @@ -29,7 +29,9 @@ func NewMiniSearchArticlePageLogic(ctx context.Context, svcCtx *svc.ServiceConte | ||
29 | func (l *MiniSearchArticlePageLogic) MiniSearchArticlePage(req *types.MiniSearchArticleRequest) (resp *types.MiniSearchArticleResponse, err error) { | 29 | func (l *MiniSearchArticlePageLogic) MiniSearchArticlePage(req *types.MiniSearchArticleRequest) (resp *types.MiniSearchArticleResponse, err error) { |
30 | 30 | ||
31 | var conn = l.svcCtx.DefaultDBConn() | 31 | var conn = l.svcCtx.DefaultDBConn() |
32 | - | 32 | + if req.Size > 100 { |
33 | + req.Size = 100 | ||
34 | + } | ||
33 | cnt, articleList, err := l.svcCtx.ArticleRepository.CustomSearchBy(l.ctx, conn, req.UserId, req.CompanyId, | 35 | cnt, articleList, err := l.svcCtx.ArticleRepository.CustomSearchBy(l.ctx, conn, req.UserId, req.CompanyId, |
34 | req.TagCategory, req.TagId, [2]int64{req.BeginTime, req.EndTime}, req.SearchWord, req.Page, req.Size) | 36 | req.TagCategory, req.TagId, [2]int64{req.BeginTime, req.EndTime}, req.SearchWord, req.Page, req.Size) |
35 | if err != nil { | 37 | if err != nil { |
@@ -30,7 +30,8 @@ func (l *SystemSearchArticleLogic) SystemSearchArticle(req *types.SystemArticleS | @@ -30,7 +30,8 @@ func (l *SystemSearchArticleLogic) SystemSearchArticle(req *types.SystemArticleS | ||
30 | queryOptions := domain.NewQueryOptions(). | 30 | queryOptions := domain.NewQueryOptions(). |
31 | WithOffsetLimit(req.Page, req.Size). | 31 | WithOffsetLimit(req.Page, req.Size). |
32 | WithKV("title", req.Title). | 32 | WithKV("title", req.Title). |
33 | - WithKV("author", req.Author). | 33 | + WithKV("authorId", req.Author). |
34 | + WithKV("tags", req.Tags). | ||
34 | WithKV("beginCreatedAt", req.BeginTime). | 35 | WithKV("beginCreatedAt", req.BeginTime). |
35 | WithKV("endCreatedAt", req.EndTime) | 36 | WithKV("endCreatedAt", req.EndTime) |
36 | total, articles, err := l.svcCtx.ArticleRepository.Find(l.ctx, conn, req.CompanyId, queryOptions) | 37 | total, articles, err := l.svcCtx.ArticleRepository.Find(l.ctx, conn, req.CompanyId, queryOptions) |
@@ -41,23 +42,49 @@ func (l *SystemSearchArticleLogic) SystemSearchArticle(req *types.SystemArticleS | @@ -41,23 +42,49 @@ func (l *SystemSearchArticleLogic) SystemSearchArticle(req *types.SystemArticleS | ||
41 | Total: int(total), | 42 | Total: int(total), |
42 | List: make([]types.SystemArticleSearch, 0), | 43 | List: make([]types.SystemArticleSearch, 0), |
43 | } | 44 | } |
45 | + authorIds := make([]int64, 0) | ||
44 | lo.ForEach(articles, func(item *domain.Article, index int) { | 46 | lo.ForEach(articles, func(item *domain.Article, index int) { |
47 | + authorIds = append(authorIds, item.AuthorId) | ||
48 | + }) | ||
49 | + //查询用户数据,重新赋值更新用户名称 | ||
50 | + _, users, _ := l.svcCtx.UserRepository.Find(l.ctx, conn, domain.NewQueryOptions().WithFindOnly().WithKV("ids", authorIds)) | ||
51 | + //获取标签 | ||
52 | + _, tags, _ := l.svcCtx.ArticleTagRepository.Find(l.ctx, conn, req.CompanyId, domain.NewQueryOptions()) | ||
53 | + lo.ForEach(articles, func(item *domain.Article, index int) { | ||
54 | + //图片 | ||
45 | images := make([]string, 0) | 55 | images := make([]string, 0) |
46 | lo.ForEach(item.Images, func(img domain.Image, n int) { | 56 | lo.ForEach(item.Images, func(img domain.Image, n int) { |
47 | images = append(images, img.Url) | 57 | images = append(images, img.Url) |
48 | }) | 58 | }) |
59 | + //发布人 | ||
60 | + author := item.Author.Name | ||
61 | + for _, user := range users { | ||
62 | + if user.Id == item.AuthorId { | ||
63 | + author = user.Name | ||
64 | + } | ||
65 | + } | ||
66 | + //标签 | ||
67 | + articleTags := make([]string, 0) | ||
68 | + lo.ForEach(item.Tags, func(tagId int64, index int) { | ||
69 | + for _, t := range tags { | ||
70 | + if t.Id == tagId { | ||
71 | + articleTags = append(articleTags, t.Name) | ||
72 | + } | ||
73 | + } | ||
74 | + }) | ||
49 | resp.List = append(resp.List, types.SystemArticleSearch{ | 75 | resp.List = append(resp.List, types.SystemArticleSearch{ |
50 | Id: item.Id, | 76 | Id: item.Id, |
51 | Title: item.Title, | 77 | Title: item.Title, |
52 | - Author: item.Author.Name, | 78 | + AuthorId: item.AuthorId, |
79 | + Author: author, | ||
53 | Images: images, | 80 | Images: images, |
54 | CreatedAt: item.CreatedAt, | 81 | CreatedAt: item.CreatedAt, |
55 | CountLove: item.CountLove, | 82 | CountLove: item.CountLove, |
56 | CountComment: item.CountComment, | 83 | CountComment: item.CountComment, |
57 | Show: int(item.Show), | 84 | Show: int(item.Show), |
58 | - Tags: nil, | 85 | + Tags: articleTags, |
59 | TargetUser: int(item.TargetUser), | 86 | TargetUser: int(item.TargetUser), |
60 | }) | 87 | }) |
61 | }) | 88 | }) |
62 | - return resp, nil | 89 | + return |
63 | } | 90 | } |
@@ -3,6 +3,7 @@ package article | @@ -3,6 +3,7 @@ package article | ||
3 | import ( | 3 | import ( |
4 | "context" | 4 | "context" |
5 | "strconv" | 5 | "strconv" |
6 | + "unicode/utf8" | ||
6 | 7 | ||
7 | "strings" | 8 | "strings" |
8 | 9 | ||
@@ -42,6 +43,17 @@ func (l *SystemUpdateArticleLogic) SystemUpdateArticle(req *types.SystemArticleU | @@ -42,6 +43,17 @@ func (l *SystemUpdateArticleLogic) SystemUpdateArticle(req *types.SystemArticleU | ||
42 | //TargetUser 设定为分发给所有人,清空 WhoRead | 43 | //TargetUser 设定为分发给所有人,清空 WhoRead |
43 | req.WhoRead = make([]int64, 0) | 44 | req.WhoRead = make([]int64, 0) |
44 | } | 45 | } |
46 | + | ||
47 | + // 检查文字数量 | ||
48 | + wordNum := 0 | ||
49 | + for i := range req.Section { | ||
50 | + num := utf8.RuneCountInString(req.Section[i].Content) | ||
51 | + wordNum += num | ||
52 | + } | ||
53 | + if wordNum >= 1000 { | ||
54 | + return nil, xerr.NewErrMsgErr("最多只能输入1000字", err) | ||
55 | + } | ||
56 | + | ||
45 | // 获取当前用户信息 | 57 | // 获取当前用户信息 |
46 | userMe, err := l.svcCtx.ApiAuthService.MeInfo(l.ctx, authlib.RequestUserMeQuery{Token: req.AccessToken}) | 58 | userMe, err := l.svcCtx.ApiAuthService.MeInfo(l.ctx, authlib.RequestUserMeQuery{Token: req.AccessToken}) |
47 | if err != nil { | 59 | if err != nil { |
@@ -2,7 +2,6 @@ package comment | @@ -2,7 +2,6 @@ package comment | ||
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "context" | 4 | "context" |
5 | - | ||
6 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" | 5 | "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" | 6 | "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" | 7 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/db/transaction" |
@@ -29,61 +28,69 @@ func NewMiniDeleteArticleCommentLogic(ctx context.Context, svcCtx *svc.ServiceCo | @@ -29,61 +28,69 @@ func NewMiniDeleteArticleCommentLogic(ctx context.Context, svcCtx *svc.ServiceCo | ||
29 | // 小程序端人人员删除评论 | 28 | // 小程序端人人员删除评论 |
30 | func (l *MiniDeleteArticleCommentLogic) MiniDeleteArticleComment(req *types.MiniDeleteArticleCommentRequest) (resp *types.MiniDeleteArticleCommentResponse, err error) { | 29 | func (l *MiniDeleteArticleCommentLogic) MiniDeleteArticleComment(req *types.MiniDeleteArticleCommentRequest) (resp *types.MiniDeleteArticleCommentResponse, err error) { |
31 | var conn = l.svcCtx.DefaultDBConn() | 30 | var conn = l.svcCtx.DefaultDBConn() |
32 | - commetInfo, err := l.svcCtx.ArticleCommentRepository.FindOne(l.ctx, conn, req.CommentId) | 31 | + commentInfo, err := l.svcCtx.ArticleCommentRepository.FindOne(l.ctx, conn, req.CommentId) |
33 | if err != nil { | 32 | if err != nil { |
34 | return nil, xerr.NewErrMsgErr("删除评论信息失败", err) | 33 | return nil, xerr.NewErrMsgErr("删除评论信息失败", err) |
35 | } | 34 | } |
36 | 35 | ||
37 | - if commetInfo.FromUserId != req.UserId { | 36 | + if commentInfo.FromUserId != req.UserId { |
38 | return nil, xerr.NewErrMsg("没有操作权限") | 37 | return nil, xerr.NewErrMsg("没有操作权限") |
39 | } | 38 | } |
40 | 39 | ||
41 | - if commetInfo.Show == domain.CommentShowDisable { | 40 | + if commentInfo.Show == domain.CommentShowDisable { |
42 | resp = &types.MiniDeleteArticleCommentResponse{ | 41 | resp = &types.MiniDeleteArticleCommentResponse{ |
43 | - Id: commetInfo.Id, | 42 | + Id: commentInfo.Id, |
44 | } | 43 | } |
45 | return resp, nil | 44 | return resp, nil |
46 | } | 45 | } |
47 | - commetInfo.Show = domain.CommentShowDisable | 46 | + commentInfo.Show = domain.CommentShowDisable |
48 | 47 | ||
49 | // 变更回复数量 | 48 | // 变更回复数量 |
50 | err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, c transaction.Conn) error { | 49 | err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, c transaction.Conn) error { |
51 | - _, err = l.svcCtx.ArticleCommentRepository.Update(ctx, c, commetInfo) | 50 | + _, err = l.svcCtx.ArticleCommentRepository.Update(ctx, c, commentInfo) |
52 | if err != nil { | 51 | if err != nil { |
53 | return err | 52 | return err |
54 | } | 53 | } |
55 | // 减少上级评论的回复数量 | 54 | // 减少上级评论的回复数量 |
56 | - if commetInfo.Pid != 0 { | ||
57 | - err = l.svcCtx.ArticleCommentRepository.IncreaseCountReply(l.ctx, c, -1, commetInfo.Pid) | 55 | + if commentInfo.Pid != 0 { |
56 | + err = l.svcCtx.ArticleCommentRepository.IncreaseCountReply(l.ctx, c, -1, commentInfo.Pid) | ||
58 | if err != nil { | 57 | if err != nil { |
59 | return err | 58 | return err |
60 | } | 59 | } |
61 | } | 60 | } |
62 | // 减少最顶层的评论回复计数 | 61 | // 减少最顶层的评论回复计数 |
63 | - if commetInfo.TopId != 0 && commetInfo.Pid != commetInfo.TopId { | ||
64 | - err = l.svcCtx.ArticleCommentRepository.IncreaseCountReply(l.ctx, c, -1, commetInfo.TopId) | 62 | + if commentInfo.TopId != 0 && commentInfo.Pid != commentInfo.TopId { |
63 | + err = l.svcCtx.ArticleCommentRepository.IncreaseCountReply(l.ctx, c, -1, commentInfo.TopId) | ||
65 | if err != nil { | 64 | if err != nil { |
66 | return err | 65 | return err |
67 | } | 66 | } |
68 | } | 67 | } |
69 | //减少加段落评论计数 | 68 | //减少加段落评论计数 |
70 | - if commetInfo.SectionId > 0 { | ||
71 | - err = l.svcCtx.ArticleSectionRepository.IncreaseCountComment(ctx, c, -1, commetInfo.SectionId) | 69 | + if commentInfo.SectionId > 0 { |
70 | + err = l.svcCtx.ArticleSectionRepository.IncreaseCountComment(ctx, c, -1, commentInfo.SectionId) | ||
72 | if err != nil { | 71 | if err != nil { |
73 | return err | 72 | return err |
74 | } | 73 | } |
75 | } | 74 | } |
76 | // 减少文章的评论数 | 75 | // 减少文章的评论数 |
77 | - err = l.svcCtx.ArticleRepository.IncreaseCountComment(ctx, c, -1, commetInfo.ArticleId) | 76 | + err = l.svcCtx.ArticleRepository.IncreaseCountComment(ctx, c, -1, commentInfo.ArticleId) |
78 | if err != nil { | 77 | if err != nil { |
79 | return err | 78 | return err |
80 | } | 79 | } |
80 | + | ||
81 | + //// 评论被隐藏消息 | ||
82 | + //var messageLogic = message.NewMiniSystemLogic(l.ctx, l.svcCtx) | ||
83 | + //err = messageLogic.AbnormalCommentHidden(c, commentInfo.CompanyId, commentInfo.FromUserId, commentInfo.Content) | ||
84 | + //if err != nil { | ||
85 | + // return err | ||
86 | + //} | ||
87 | + | ||
81 | return nil | 88 | return nil |
82 | }, true) | 89 | }, true) |
83 | 90 | ||
84 | if err != nil { | 91 | if err != nil { |
85 | return nil, xerr.NewErrMsgErr("删除评论信息失败", err) | 92 | return nil, xerr.NewErrMsgErr("删除评论信息失败", err) |
86 | } | 93 | } |
87 | - resp = &types.MiniDeleteArticleCommentResponse{Id: commetInfo.Id} | 94 | + resp = &types.MiniDeleteArticleCommentResponse{Id: commentInfo.Id} |
88 | return resp, nil | 95 | return resp, nil |
89 | } | 96 | } |
@@ -45,7 +45,7 @@ func (l *MiniGetArticleCommentLogic) MiniGetArticleComment(req *types.MiniGetArt | @@ -45,7 +45,7 @@ func (l *MiniGetArticleCommentLogic) MiniGetArticleComment(req *types.MiniGetArt | ||
45 | } | 45 | } |
46 | 46 | ||
47 | if commentInfo.Show == domain.CommentShowDisable { | 47 | if commentInfo.Show == domain.CommentShowDisable { |
48 | - return nil, xerr.NewErrMsg("具体评论已被关闭") | 48 | + return nil, xerr.NewErrMsg("抱歉,此内容根据运营管理规则已隐藏,暂不可见") |
49 | } | 49 | } |
50 | 50 | ||
51 | queryOption := domain.NewQueryOptions(). | 51 | queryOption := domain.NewQueryOptions(). |
@@ -36,8 +36,8 @@ func (l *MiniListArticleCommentLogic) MiniListArticleComment(req *types.MiniList | @@ -36,8 +36,8 @@ func (l *MiniListArticleCommentLogic) MiniListArticleComment(req *types.MiniList | ||
36 | if err != nil { | 36 | if err != nil { |
37 | return nil, xerr.NewErrMsgErr("获取评论信息失败", err) | 37 | return nil, xerr.NewErrMsgErr("获取评论信息失败", err) |
38 | } | 38 | } |
39 | - if req.Size > 40 { | ||
40 | - req.Size = 40 | 39 | + if req.Size > 100 { |
40 | + req.Size = 100 | ||
41 | } | 41 | } |
42 | 42 | ||
43 | queryOption := domain.NewQueryOptions(). | 43 | queryOption := domain.NewQueryOptions(). |
@@ -119,7 +119,7 @@ func (l *MiniListArticleCommentLogic) MiniListArticleComment(req *types.MiniList | @@ -119,7 +119,7 @@ func (l *MiniListArticleCommentLogic) MiniListArticleComment(req *types.MiniList | ||
119 | } | 119 | } |
120 | 120 | ||
121 | //获取回复的评论 | 121 | //获取回复的评论 |
122 | - cntReply, reply := l.listCommentReply(item.Comment.Id, flagMap) | 122 | + cntReply, reply := l.listCommentReply(companyInfo.Id, item.Comment.Id, flagMap) |
123 | resp.List[i] = item | 123 | resp.List[i] = item |
124 | resp.List[i].Reply = reply | 124 | resp.List[i].Reply = reply |
125 | resp.List[i].TotalReply = cntReply | 125 | resp.List[i].TotalReply = cntReply |
@@ -128,9 +128,9 @@ func (l *MiniListArticleCommentLogic) MiniListArticleComment(req *types.MiniList | @@ -128,9 +128,9 @@ func (l *MiniListArticleCommentLogic) MiniListArticleComment(req *types.MiniList | ||
128 | } | 128 | } |
129 | 129 | ||
130 | // listCommentReply | 130 | // listCommentReply |
131 | -func (l *MiniListArticleCommentLogic) listCommentReply(commentId int64, loveFlagMap map[int64]struct{}) (cnt int64, replyList []types.ArticleCommentItem) { | 131 | +func (l *MiniListArticleCommentLogic) listCommentReply(companyId int64, commentId int64, loveFlagMap map[int64]struct{}) (cnt int64, replyList []types.ArticleCommentItem) { |
132 | var conn = l.svcCtx.DefaultDBConn() | 132 | var conn = l.svcCtx.DefaultDBConn() |
133 | - companyInfo, err := l.svcCtx.CompanyRepository.FindOne(l.ctx, conn, commentId) | 133 | + companyInfo, err := l.svcCtx.CompanyRepository.FindOne(l.ctx, conn, companyId) |
134 | if err != nil { | 134 | if err != nil { |
135 | return 0, []types.ArticleCommentItem{} | 135 | return 0, []types.ArticleCommentItem{} |
136 | } | 136 | } |
@@ -35,9 +35,11 @@ func (l *SystemArticleCommentSearchLogic) SystemArticleCommentSearch(req *types. | @@ -35,9 +35,11 @@ func (l *SystemArticleCommentSearchLogic) SystemArticleCommentSearch(req *types. | ||
35 | WithKV("articleId", req.ArticleId). | 35 | WithKV("articleId", req.ArticleId). |
36 | WithKV("topId", req.TopId). | 36 | WithKV("topId", req.TopId). |
37 | WithKV("show", req.Show). | 37 | WithKV("show", req.Show). |
38 | - WithKV("fromUserName", req.Author). | ||
39 | WithKV("beginCreatedAt", req.BeginTime). | 38 | WithKV("beginCreatedAt", req.BeginTime). |
40 | WithKV("endCreatedAt", req.EndTime) | 39 | WithKV("endCreatedAt", req.EndTime) |
40 | + if req.Author > 0 { | ||
41 | + queryOptions = queryOptions.WithKV("fromUserId", req.Author) | ||
42 | + } | ||
41 | total, comments, err := l.svcCtx.ArticleCommentRepository.Find(l.ctx, conn, queryOptions) | 43 | total, comments, err := l.svcCtx.ArticleCommentRepository.Find(l.ctx, conn, queryOptions) |
42 | if err != nil { | 44 | if err != nil { |
43 | return nil, xerr.NewErrMsgErr("获取文章评论失败", err) | 45 | return nil, xerr.NewErrMsgErr("获取文章评论失败", err) |
@@ -46,6 +48,7 @@ func (l *SystemArticleCommentSearchLogic) SystemArticleCommentSearch(req *types. | @@ -46,6 +48,7 @@ func (l *SystemArticleCommentSearchLogic) SystemArticleCommentSearch(req *types. | ||
46 | Total: total, | 48 | Total: total, |
47 | List: make([]types.SystemArticleCommentSearchItem, 0), | 49 | List: make([]types.SystemArticleCommentSearchItem, 0), |
48 | } | 50 | } |
51 | + authorIds := make([]int64, 0) | ||
49 | lo.ForEach(comments, func(item *domain.ArticleComment, index int) { | 52 | lo.ForEach(comments, func(item *domain.ArticleComment, index int) { |
50 | resp.List = append(resp.List, types.SystemArticleCommentSearchItem{ | 53 | resp.List = append(resp.List, types.SystemArticleCommentSearchItem{ |
51 | Id: item.Id, | 54 | Id: item.Id, |
@@ -68,6 +71,22 @@ func (l *SystemArticleCommentSearchLogic) SystemArticleCommentSearch(req *types. | @@ -68,6 +71,22 @@ func (l *SystemArticleCommentSearchLogic) SystemArticleCommentSearch(req *types. | ||
68 | Content: item.Content, | 71 | Content: item.Content, |
69 | Show: int(item.Show), | 72 | Show: int(item.Show), |
70 | }) | 73 | }) |
74 | + authorIds = append(authorIds, item.FromUserId) | ||
75 | + }) | ||
76 | + //查询用户数据,重新赋值更新用户名称 | ||
77 | + _, users, _ := l.svcCtx.UserRepository.Find(l.ctx, conn, domain.NewQueryOptions().WithFindOnly().WithKV("ids", authorIds)) | ||
78 | + lo.ForEach(resp.List, func(item types.SystemArticleCommentSearchItem, index int) { | ||
79 | + for _, user := range users { | ||
80 | + if user.Id == item.FromUserId { | ||
81 | + resp.List[index].FromUser = types.CommentAuthor{ | ||
82 | + Id: user.Id, | ||
83 | + Name: user.Name, | ||
84 | + Avatar: user.Avatar, | ||
85 | + Position: user.Position, | ||
86 | + Company: item.FromUser.Company, | ||
87 | + } | ||
88 | + } | ||
89 | + } | ||
71 | }) | 90 | }) |
72 | return | 91 | return |
73 | } | 92 | } |
1 | +package comment | ||
2 | + | ||
3 | +import ( | ||
4 | + "context" | ||
5 | + | ||
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" | ||
8 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/db/transaction" | ||
9 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain" | ||
10 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr" | ||
11 | + | ||
12 | + "github.com/zeromicro/go-zero/core/logx" | ||
13 | +) | ||
14 | + | ||
15 | +type SystemEditAticleCommentLoveLogic struct { | ||
16 | + logx.Logger | ||
17 | + ctx context.Context | ||
18 | + svcCtx *svc.ServiceContext | ||
19 | +} | ||
20 | + | ||
21 | +func NewSystemEditAticleCommentLoveLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SystemEditAticleCommentLoveLogic { | ||
22 | + return &SystemEditAticleCommentLoveLogic{ | ||
23 | + Logger: logx.WithContext(ctx), | ||
24 | + ctx: ctx, | ||
25 | + svcCtx: svcCtx, | ||
26 | + } | ||
27 | +} | ||
28 | + | ||
29 | +func (l *SystemEditAticleCommentLoveLogic) SystemEditAticleCommentLove(req *types.SystemEditCommentLoveRequest) (resp *types.SystemEditCommentLoveResponse, err error) { | ||
30 | + var conn = l.svcCtx.DefaultDBConn() | ||
31 | + | ||
32 | + if len(req.ParamList) <= 0 { | ||
33 | + return &types.SystemEditCommentLoveResponse{}, nil | ||
34 | + } | ||
35 | + paramMap := map[int64]int{} | ||
36 | + ids := []int64{} | ||
37 | + for _, val := range req.ParamList { | ||
38 | + if val.CountAdminLove < 0 { | ||
39 | + return nil, xerr.NewErrMsg("运营点赞数不能小于0") | ||
40 | + } | ||
41 | + ids = append(ids, val.Id) | ||
42 | + paramMap[val.Id] = val.CountAdminLove | ||
43 | + } | ||
44 | + | ||
45 | + queryOption := domain.NewQueryOptions().WithFindOnly().MustWithKV("ids", ids) | ||
46 | + _, commetList, err := l.svcCtx.ArticleCommentRepository.Find(l.ctx, conn, queryOption) | ||
47 | + if err != nil { | ||
48 | + return nil, xerr.NewErrMsgErr("编辑评论信息失败", err) | ||
49 | + } | ||
50 | + resp = &types.SystemEditCommentLoveResponse{} | ||
51 | + for _, val := range commetList { | ||
52 | + if val.CompanyId != req.CompanyId { | ||
53 | + return nil, xerr.NewErrMsg("没有操作权限") | ||
54 | + } | ||
55 | + if u, ok := paramMap[val.Id]; ok { | ||
56 | + val.CountAdminLove = u | ||
57 | + resp.ParamList = append(resp.ParamList, types.SystemEditLove{ | ||
58 | + Id: val.Id, | ||
59 | + CountAdminLove: val.CountAdminLove, | ||
60 | + }) | ||
61 | + } | ||
62 | + } | ||
63 | + err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, c transaction.Conn) error { | ||
64 | + for _, val := range commetList { | ||
65 | + _, err := l.svcCtx.ArticleCommentRepository.UpdateWithVersion(ctx, c, val) | ||
66 | + if err != nil { | ||
67 | + return err | ||
68 | + } | ||
69 | + } | ||
70 | + return nil | ||
71 | + }, true) | ||
72 | + if err != nil { | ||
73 | + return nil, xerr.NewErrMsgErr("编辑评论信息失败", err) | ||
74 | + } | ||
75 | + | ||
76 | + return resp, nil | ||
77 | +} |
@@ -2,6 +2,7 @@ package comment | @@ -2,6 +2,7 @@ package comment | ||
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "context" | 4 | "context" |
5 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/logic/message" | ||
5 | 6 | ||
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/svc" |
7 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" | 8 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" |
@@ -61,49 +62,57 @@ func (l *SystemEditAticleCommentShowLogic) SystemEditAticleCommentShow(req *type | @@ -61,49 +62,57 @@ func (l *SystemEditAticleCommentShowLogic) SystemEditAticleCommentShow(req *type | ||
61 | 62 | ||
62 | func (l *SystemEditAticleCommentShowLogic) disableShow(commentId int64, companyId int64) error { | 63 | func (l *SystemEditAticleCommentShowLogic) disableShow(commentId int64, companyId int64) error { |
63 | var conn = l.svcCtx.DefaultDBConn() | 64 | var conn = l.svcCtx.DefaultDBConn() |
64 | - commetInfo, err := l.svcCtx.ArticleCommentRepository.FindOne(l.ctx, conn, commentId) | 65 | + commentInfo, err := l.svcCtx.ArticleCommentRepository.FindOne(l.ctx, conn, commentId) |
65 | if err != nil { | 66 | if err != nil { |
66 | return xerr.NewErrMsgErr("删除评论信息失败", err) | 67 | return xerr.NewErrMsgErr("删除评论信息失败", err) |
67 | } | 68 | } |
68 | - if commetInfo.CompanyId != companyId { | 69 | + if commentInfo.CompanyId != companyId { |
69 | return xerr.NewErrMsg("没有操作权限") | 70 | return xerr.NewErrMsg("没有操作权限") |
70 | } | 71 | } |
71 | - if commetInfo.Show == domain.CommentShowDisable { | 72 | + if commentInfo.Show == domain.CommentShowDisable { |
72 | return nil | 73 | return nil |
73 | } | 74 | } |
74 | - commetInfo.Show = domain.CommentShowDisable | 75 | + commentInfo.Show = domain.CommentShowDisable |
75 | // 变更回复数量 | 76 | // 变更回复数量 |
76 | err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, c transaction.Conn) error { | 77 | err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, c transaction.Conn) error { |
77 | - _, err = l.svcCtx.ArticleCommentRepository.Update(ctx, c, commetInfo) | 78 | + _, err = l.svcCtx.ArticleCommentRepository.Update(ctx, c, commentInfo) |
78 | if err != nil { | 79 | if err != nil { |
79 | return err | 80 | return err |
80 | } | 81 | } |
81 | // 减少上级评论的回复数量 | 82 | // 减少上级评论的回复数量 |
82 | - if commetInfo.Pid != 0 { | ||
83 | - err = l.svcCtx.ArticleCommentRepository.IncreaseCountReply(l.ctx, c, -1, commetInfo.Pid) | 83 | + if commentInfo.Pid != 0 { |
84 | + err = l.svcCtx.ArticleCommentRepository.IncreaseCountReply(l.ctx, c, -1, commentInfo.Pid) | ||
84 | if err != nil { | 85 | if err != nil { |
85 | return err | 86 | return err |
86 | } | 87 | } |
87 | } | 88 | } |
88 | // 减少最顶层的评论回复计数 | 89 | // 减少最顶层的评论回复计数 |
89 | - if commetInfo.TopId != 0 && commetInfo.Pid != commetInfo.TopId { | ||
90 | - err = l.svcCtx.ArticleCommentRepository.IncreaseCountReply(l.ctx, c, -1, commetInfo.TopId) | 90 | + if commentInfo.TopId != 0 && commentInfo.Pid != commentInfo.TopId { |
91 | + err = l.svcCtx.ArticleCommentRepository.IncreaseCountReply(l.ctx, c, -1, commentInfo.TopId) | ||
91 | if err != nil { | 92 | if err != nil { |
92 | return err | 93 | return err |
93 | } | 94 | } |
94 | } | 95 | } |
95 | //减少加段落评论计数 | 96 | //减少加段落评论计数 |
96 | - if commetInfo.SectionId > 0 { | ||
97 | - err = l.svcCtx.ArticleSectionRepository.IncreaseCountComment(ctx, c, -1, commetInfo.SectionId) | 97 | + if commentInfo.SectionId > 0 { |
98 | + err = l.svcCtx.ArticleSectionRepository.IncreaseCountComment(ctx, c, -1, commentInfo.SectionId) | ||
98 | if err != nil { | 99 | if err != nil { |
99 | return err | 100 | return err |
100 | } | 101 | } |
101 | } | 102 | } |
102 | // 减少文章的评论数 | 103 | // 减少文章的评论数 |
103 | - err = l.svcCtx.ArticleRepository.IncreaseCountComment(ctx, c, -1, commetInfo.ArticleId) | 104 | + err = l.svcCtx.ArticleRepository.IncreaseCountComment(ctx, c, -1, commentInfo.ArticleId) |
104 | if err != nil { | 105 | if err != nil { |
105 | return err | 106 | return err |
106 | } | 107 | } |
108 | + | ||
109 | + // 评论被隐藏消息 | ||
110 | + var messageLogic = message.NewMiniSystemLogic(l.ctx, l.svcCtx) | ||
111 | + err = messageLogic.AbnormalCommentHidden(c, commentInfo.CompanyId, commentInfo.FromUserId, commentInfo.Content) | ||
112 | + if err != nil { | ||
113 | + return err | ||
114 | + } | ||
115 | + | ||
107 | return nil | 116 | return nil |
108 | }, true) | 117 | }, true) |
109 | 118 |
@@ -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/pkg/xerr" | 9 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr" |
9 | 10 | ||
10 | "github.com/zeromicro/go-zero/core/logx" | 11 | "github.com/zeromicro/go-zero/core/logx" |
@@ -14,6 +15,7 @@ type SystemListAticleCommentLogic struct { | @@ -14,6 +15,7 @@ type SystemListAticleCommentLogic struct { | ||
14 | logx.Logger | 15 | logx.Logger |
15 | ctx context.Context | 16 | ctx context.Context |
16 | svcCtx *svc.ServiceContext | 17 | svcCtx *svc.ServiceContext |
18 | + userCache map[int64]types.CommentAuthor | ||
17 | } | 19 | } |
18 | 20 | ||
19 | func NewSystemListAticleCommentLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SystemListAticleCommentLogic { | 21 | func NewSystemListAticleCommentLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SystemListAticleCommentLogic { |
@@ -21,6 +23,7 @@ func NewSystemListAticleCommentLogic(ctx context.Context, svcCtx *svc.ServiceCon | @@ -21,6 +23,7 @@ func NewSystemListAticleCommentLogic(ctx context.Context, svcCtx *svc.ServiceCon | ||
21 | Logger: logx.WithContext(ctx), | 23 | Logger: logx.WithContext(ctx), |
22 | ctx: ctx, | 24 | ctx: ctx, |
23 | svcCtx: svcCtx, | 25 | svcCtx: svcCtx, |
26 | + userCache: make(map[int64]types.CommentAuthor), | ||
24 | } | 27 | } |
25 | } | 28 | } |
26 | 29 | ||
@@ -29,7 +32,7 @@ func (l *SystemListAticleCommentLogic) SystemListAticleComment(req *types.System | @@ -29,7 +32,7 @@ func (l *SystemListAticleCommentLogic) SystemListAticleComment(req *types.System | ||
29 | var conn = l.svcCtx.DefaultDBConn() | 32 | var conn = l.svcCtx.DefaultDBConn() |
30 | 33 | ||
31 | cnt, commentList, err := l.svcCtx.ArticleCommentRepository.CustomSearchBy(l.ctx, conn, req.CompanyId, req.Page, req.Size, | 34 | cnt, commentList, err := l.svcCtx.ArticleCommentRepository.CustomSearchBy(l.ctx, conn, req.CompanyId, req.Page, req.Size, |
32 | - req.TopId, req.ArticleTitle, req.Content, req.FromUser, req.Show, [2]int64{req.BeginTime, req.EndTime}, | 35 | + req.TopId, req.ArticleTitle, req.Content, req.FromUserId, req.Show, [2]int64{req.BeginTime, req.EndTime}, |
33 | ) | 36 | ) |
34 | if err != nil { | 37 | if err != nil { |
35 | return nil, xerr.NewErrMsgErr("获取评论列表失败", err) | 38 | return nil, xerr.NewErrMsgErr("获取评论列表失败", err) |
@@ -47,13 +50,7 @@ func (l *SystemListAticleCommentLogic) SystemListAticleComment(req *types.System | @@ -47,13 +50,7 @@ func (l *SystemListAticleCommentLogic) SystemListAticleComment(req *types.System | ||
47 | TopId: val.TopId, | 50 | TopId: val.TopId, |
48 | ArticleTitle: val.ArticleTitle, | 51 | ArticleTitle: val.ArticleTitle, |
49 | FromUserId: val.FromUserId, | 52 | FromUserId: val.FromUserId, |
50 | - FromUser: types.CommentAuthor{ | ||
51 | - Id: val.FromUser.Id, | ||
52 | - Name: val.FromUser.Name, | ||
53 | - Avatar: val.FromUser.Avatar, | ||
54 | - Position: val.FromUser.Position, | ||
55 | - Company: val.FromUser.Company, | ||
56 | - }, | 53 | + FromUser: l.getCommentAuthor(conn, val.FromUserId, ""), |
57 | CreatedAt: val.CreatedAt, | 54 | CreatedAt: val.CreatedAt, |
58 | Content: val.Content, | 55 | Content: val.Content, |
59 | Show: val.Show, | 56 | Show: val.Show, |
@@ -65,3 +62,22 @@ func (l *SystemListAticleCommentLogic) SystemListAticleComment(req *types.System | @@ -65,3 +62,22 @@ func (l *SystemListAticleCommentLogic) SystemListAticleComment(req *types.System | ||
65 | 62 | ||
66 | return resp, nil | 63 | return resp, nil |
67 | } | 64 | } |
65 | + | ||
66 | +func (l *SystemListAticleCommentLogic) getCommentAuthor(conn transaction.Conn, userid int64, companyName string) types.CommentAuthor { | ||
67 | + if u, ok := l.userCache[userid]; ok { | ||
68 | + return u | ||
69 | + } | ||
70 | + toUser, err := l.svcCtx.UserRepository.FindOne(l.ctx, conn, userid) | ||
71 | + if err == nil { | ||
72 | + commentToUser := types.CommentAuthor{ | ||
73 | + Id: toUser.Id, | ||
74 | + Name: toUser.Name, | ||
75 | + Avatar: toUser.Avatar, | ||
76 | + Position: toUser.Position, | ||
77 | + Company: companyName, | ||
78 | + } | ||
79 | + l.userCache[toUser.Id] = commentToUser | ||
80 | + return commentToUser | ||
81 | + } | ||
82 | + return types.CommentAuthor{} | ||
83 | +} |
@@ -169,7 +169,7 @@ type SystemArticleCommentSearchRequest struct { | @@ -169,7 +169,7 @@ type SystemArticleCommentSearchRequest struct { | ||
169 | Size int `json:"size"` | 169 | Size int `json:"size"` |
170 | ArticleId int64 `json:"articleId"` // 文章ID | 170 | ArticleId int64 `json:"articleId"` // 文章ID |
171 | TopId int64 `json:"topId,optional"` // 文章顶层ID | 171 | TopId int64 `json:"topId,optional"` // 文章顶层ID |
172 | - Author string `json:"author,optional"` // 用户 | 172 | + Author int64 `json:"author,optional"` // 用户 |
173 | Show int `json:"show,optional"` // 显示状态 | 173 | Show int `json:"show,optional"` // 显示状态 |
174 | BeginTime int64 `json:"beginTime,optional"` // 开始时间 | 174 | BeginTime int64 `json:"beginTime,optional"` // 开始时间 |
175 | EndTime int64 `json:"endTime,optional"` // 结束时间 | 175 | EndTime int64 `json:"endTime,optional"` // 结束时间 |
@@ -203,7 +203,7 @@ type SystemListCommentRequest struct { | @@ -203,7 +203,7 @@ type SystemListCommentRequest struct { | ||
203 | Size int `json:"size"` | 203 | Size int `json:"size"` |
204 | CompanyId int64 `json:",optional"` // | 204 | CompanyId int64 `json:",optional"` // |
205 | TopId int64 `json:"topId,optional"` // 评论的顶层ID | 205 | TopId int64 `json:"topId,optional"` // 评论的顶层ID |
206 | - FromUser string `json:"fromUser,optional"` // 用户 | 206 | + FromUserId int64 `json:"fromUserId,optional"` // 用户 |
207 | Show int `json:"show,optional"` // 显示状态 | 207 | Show int `json:"show,optional"` // 显示状态 |
208 | BeginTime int64 `json:"beginTime,optional"` // 填写评论的开始时间 | 208 | BeginTime int64 `json:"beginTime,optional"` // 填写评论的开始时间 |
209 | EndTime int64 `json:"endTime,optional"` // 填写评论的结束时间 | 209 | EndTime int64 `json:"endTime,optional"` // 填写评论的结束时间 |
@@ -275,6 +275,20 @@ type SystemEditCommentResponse struct { | @@ -275,6 +275,20 @@ type SystemEditCommentResponse struct { | ||
275 | Id int64 `json:"id"` | 275 | Id int64 `json:"id"` |
276 | } | 276 | } |
277 | 277 | ||
278 | +type SystemEditCommentLoveRequest struct { | ||
279 | + CompanyId int64 `json:",optional"` | ||
280 | + ParamList []SystemEditLove `json:"paramList"` | ||
281 | +} | ||
282 | + | ||
283 | +type SystemEditLove struct { | ||
284 | + Id int64 `json:"id"` | ||
285 | + CountAdminLove int `json:"countAdminLove,optional"` | ||
286 | +} | ||
287 | + | ||
288 | +type SystemEditCommentLoveResponse struct { | ||
289 | + ParamList []SystemEditLove `json:"paramList"` | ||
290 | +} | ||
291 | + | ||
278 | type MessageRequest struct { | 292 | type MessageRequest struct { |
279 | Page int `json:"page"` | 293 | Page int `json:"page"` |
280 | Size int `json:"size"` | 294 | Size int `json:"size"` |
@@ -1142,7 +1156,7 @@ type SystemArticleGetResponse struct { | @@ -1142,7 +1156,7 @@ type SystemArticleGetResponse struct { | ||
1142 | type SystemArticleSearchRequest struct { | 1156 | type SystemArticleSearchRequest struct { |
1143 | CompanyId int64 `json:"companyId,optional"` | 1157 | CompanyId int64 `json:"companyId,optional"` |
1144 | Title string `json:"title,optional"` //标题 | 1158 | Title string `json:"title,optional"` //标题 |
1145 | - Author string `json:"author,optional"` //发布人 | 1159 | + Author int64 `json:"author,optional"` //发布人 |
1146 | BeginTime int64 `json:"beginTime,optional"` //开始时间 | 1160 | BeginTime int64 `json:"beginTime,optional"` //开始时间 |
1147 | EndTime int64 `json:"endTime,optional"` //结束时间 | 1161 | EndTime int64 `json:"endTime,optional"` //结束时间 |
1148 | Tags []int64 `json:"tags,optional"` //标签 | 1162 | Tags []int64 `json:"tags,optional"` //标签 |
@@ -1158,11 +1172,12 @@ type SystemArticleSearchResponse struct { | @@ -1158,11 +1172,12 @@ type SystemArticleSearchResponse struct { | ||
1158 | type SystemArticleSearch struct { | 1172 | type SystemArticleSearch struct { |
1159 | Id int64 `json:"id"` //id | 1173 | Id int64 `json:"id"` //id |
1160 | Title string `json:"title"` //标题 | 1174 | Title string `json:"title"` //标题 |
1175 | + AuthorId int64 `json:"authorId"` //发布人ID | ||
1161 | Author string `json:"author"` //发布人 | 1176 | Author string `json:"author"` //发布人 |
1162 | Images []string `json:"images"` //图片 | 1177 | Images []string `json:"images"` //图片 |
1163 | CreatedAt int64 `json:"createdAt"` //文章的创建日期 | 1178 | CreatedAt int64 `json:"createdAt"` //文章的创建日期 |
1164 | CountLove int `json:"countLove"` //点赞数量 | 1179 | CountLove int `json:"countLove"` //点赞数量 |
1165 | - CountComment int `json:"CountComment"` //评论数量 | 1180 | + CountComment int `json:"countComment"` //评论数量 |
1166 | Show int `json:"show"` //是否隐藏 [0显示、1不显示] | 1181 | Show int `json:"show"` //是否隐藏 [0显示、1不显示] |
1167 | Tags []string `json:"tags"` //标签 | 1182 | Tags []string `json:"tags"` //标签 |
1168 | TargetUser int `json:"targetUser"` //分发方式 [0分发给所有人、1分发给指定的人] | 1183 | TargetUser int `json:"targetUser"` //分发方式 [0分发给所有人、1分发给指定的人] |
@@ -143,8 +143,8 @@ with | @@ -143,8 +143,8 @@ with | ||
143 | -- 过滤出可展示的文章id | 143 | -- 过滤出可展示的文章id |
144 | t_article_and_tag_2 as ( | 144 | t_article_and_tag_2 as ( |
145 | select article_and_tag.article_id,article_and_tag.tag_id | 145 | select article_and_tag.article_id,article_and_tag.tag_id |
146 | - from article_and_tag | ||
147 | - join article on article_and_tag.article_id = article.id | 146 | + from article |
147 | + join article_and_tag on article_and_tag.article_id = article.id | ||
148 | where article.deleted_at=0 | 148 | where article.deleted_at=0 |
149 | and article.company_id = ? | 149 | and article.company_id = ? |
150 | and article."show" = ? | 150 | and article."show" = ? |
@@ -337,7 +337,7 @@ func (repository *ArticleCommentRepository) Top5Comment(ctx context.Context, con | @@ -337,7 +337,7 @@ func (repository *ArticleCommentRepository) Top5Comment(ctx context.Context, con | ||
337 | } | 337 | } |
338 | 338 | ||
339 | func (repository *ArticleCommentRepository) CustomSearchBy(ctx context.Context, conn transaction.Conn, companyId int64, page int, size int, | 339 | func (repository *ArticleCommentRepository) CustomSearchBy(ctx context.Context, conn transaction.Conn, companyId int64, page int, size int, |
340 | - topId int64, articleTitle string, contentLike string, fromUserName string, show int, createdAtRange [2]int64) (int, []*domain.ArticleCommentShow, error) { | 340 | + topId int64, articleTitle string, contentLike string, fromUserId int64, show int, createdAtRange [2]int64) (int, []*domain.ArticleCommentShow, error) { |
341 | 341 | ||
342 | if size <= 0 { | 342 | if size <= 0 { |
343 | size = 20 | 343 | size = 20 |
@@ -358,9 +358,9 @@ func (repository *ArticleCommentRepository) CustomSearchBy(ctx context.Context, | @@ -358,9 +358,9 @@ func (repository *ArticleCommentRepository) CustomSearchBy(ctx context.Context, | ||
358 | condition = append(condition, "%"+contentLike+"%") | 358 | condition = append(condition, "%"+contentLike+"%") |
359 | } | 359 | } |
360 | 360 | ||
361 | - if len(fromUserName) > 0 { | ||
362 | - where += ` and article_comment.from_user ->>'name' like ? ` | ||
363 | - condition = append(condition, "%"+fromUserName+"%") | 361 | + if fromUserId > 0 { |
362 | + where += ` and article_comment.from_user_id = ? ` | ||
363 | + condition = append(condition, fromUserId) | ||
364 | } | 364 | } |
365 | if show > 0 { | 365 | if show > 0 { |
366 | where += ` and article_comment."show" =? ` | 366 | where += ` and article_comment."show" =? ` |
@@ -425,7 +425,6 @@ func (repository *ArticleCommentRepository) CustomSearchBy(ctx context.Context, | @@ -425,7 +425,6 @@ func (repository *ArticleCommentRepository) CustomSearchBy(ctx context.Context, | ||
425 | ArticleTitle: val.ArticleTitle, | 425 | ArticleTitle: val.ArticleTitle, |
426 | Id: val.Id, | 426 | Id: val.Id, |
427 | FromUserId: val.FromUserId, | 427 | FromUserId: val.FromUserId, |
428 | - FromUser: val.FromUser, | ||
429 | Content: val.Content, | 428 | Content: val.Content, |
430 | CountReply: val.CountReply, | 429 | CountReply: val.CountReply, |
431 | CountUserLove: val.CountUserLove, | 430 | CountUserLove: val.CountUserLove, |
@@ -3,6 +3,7 @@ package repository | @@ -3,6 +3,7 @@ package repository | ||
3 | import ( | 3 | import ( |
4 | "context" | 4 | "context" |
5 | "fmt" | 5 | "fmt" |
6 | + "strings" | ||
6 | 7 | ||
7 | "github.com/pkg/errors" | 8 | "github.com/pkg/errors" |
8 | "github.com/tiptok/gocomm/pkg/cache" | 9 | "github.com/tiptok/gocomm/pkg/cache" |
@@ -127,9 +128,6 @@ func (repository *ArticleRepository) Find(ctx context.Context, conn transaction. | @@ -127,9 +128,6 @@ func (repository *ArticleRepository) Find(ctx context.Context, conn transaction. | ||
127 | if v, ok := queryOptions["title"]; ok && v.(string) != "" { | 128 | if v, ok := queryOptions["title"]; ok && v.(string) != "" { |
128 | tx = tx.Where("title like ?", "%"+v.(string)+"%") | 129 | tx = tx.Where("title like ?", "%"+v.(string)+"%") |
129 | } | 130 | } |
130 | - if v, ok := queryOptions["author"]; ok && v.(string) != "" { | ||
131 | - tx = tx.Where(`author #>> '{"name"}' like ?`, "%"+v.(string)+"%") | ||
132 | - } | ||
133 | if v, ok := queryOptions["beginCreatedAt"]; ok { | 131 | if v, ok := queryOptions["beginCreatedAt"]; ok { |
134 | tx = tx.Where("created_at >= ?", v) | 132 | tx = tx.Where("created_at >= ?", v) |
135 | } | 133 | } |
@@ -139,6 +137,13 @@ func (repository *ArticleRepository) Find(ctx context.Context, conn transaction. | @@ -139,6 +137,13 @@ func (repository *ArticleRepository) Find(ctx context.Context, conn transaction. | ||
139 | if v, ok := queryOptions["authorId"]; ok { | 137 | if v, ok := queryOptions["authorId"]; ok { |
140 | tx = tx.Where("author_id=?", v) | 138 | tx = tx.Where("author_id=?", v) |
141 | } | 139 | } |
140 | + if v, ok := queryOptions["tags"]; ok && len(v.([]int64)) > 0 { | ||
141 | + values := make([]string, 0) | ||
142 | + for _, item := range v.([]int64) { | ||
143 | + values = append(values, fmt.Sprintf("%v", item)) | ||
144 | + } | ||
145 | + tx = tx.Where("tags @> ?", "["+strings.Join(values, ",")+"]") | ||
146 | + } | ||
142 | if total, tx = transaction.PaginationAndCount(ctx, tx, queryOptions, &ms); tx.Error != nil { | 147 | if total, tx = transaction.PaginationAndCount(ctx, tx, queryOptions, &ms); tx.Error != nil { |
143 | return dms, tx.Error | 148 | return dms, tx.Error |
144 | } | 149 | } |
@@ -57,7 +57,6 @@ type ArticleCommentShow struct { | @@ -57,7 +57,6 @@ type ArticleCommentShow struct { | ||
57 | TopId int64 | 57 | TopId int64 |
58 | ArticleTitle string // 文章标题 | 58 | ArticleTitle string // 文章标题 |
59 | FromUserId int64 // 评论填写人的id | 59 | FromUserId int64 // 评论填写人的id |
60 | - FromUser UserSimple // 评论填写人 | ||
61 | Content string // 评论内容 | 60 | Content string // 评论内容 |
62 | CountReply int // 回复数量 | 61 | CountReply int // 回复数量 |
63 | CountUserLove int // 用户点赞数量 | 62 | CountUserLove int // 用户点赞数量 |
@@ -78,5 +77,5 @@ type ArticleCommentRepository interface { | @@ -78,5 +77,5 @@ type ArticleCommentRepository interface { | ||
78 | Top5Comment(ctx context.Context, conn transaction.Conn, companyId int64, articleId int64) ([]*ArticleComment, error) | 77 | Top5Comment(ctx context.Context, conn transaction.Conn, companyId int64, articleId int64) ([]*ArticleComment, error) |
79 | // 特定的查询 | 78 | // 特定的查询 |
80 | CustomSearchBy(ctx context.Context, conn transaction.Conn, companyId int64, page int, size int, | 79 | CustomSearchBy(ctx context.Context, conn transaction.Conn, companyId int64, page int, size int, |
81 | - topId int64, articleTitle string, contentLike string, fromUserName string, show int, createdAtRange [2]int64) (int, []*ArticleCommentShow, error) | 80 | + topId int64, articleTitle string, contentLike string, fromUserId int64, show int, createdAtRange [2]int64) (int, []*ArticleCommentShow, error) |
82 | } | 81 | } |
@@ -2,8 +2,9 @@ package domain | @@ -2,8 +2,9 @@ package domain | ||
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | "context" | 4 | "context" |
5 | - "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/db/transaction" | ||
6 | "reflect" | 5 | "reflect" |
6 | + | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/db/transaction" | ||
7 | ) | 8 | ) |
8 | 9 | ||
9 | func OffsetLimit(page, size int) (offset int, limit int) { | 10 | func OffsetLimit(page, size int) (offset int, limit int) { |
-
请 注册 或 登录 后发表评论