/*
|
Copyright [2020] [https://www.xiaonuo.vip]
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
you may not use this file except in compliance with the License.
|
You may obtain a copy of the License at
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
Unless required by applicable law or agreed to in writing, software
|
distributed under the License is distributed on an "AS IS" BASIS,
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
See the License for the specific language governing permissions and
|
limitations under the License.
|
|
Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
|
1.请不要删除和修改根目录下的LICENSE文件。
|
2.请不要删除和修改Snowy源码头部的版权声明。
|
3.请保留源码和相关描述文件的项目出处,作者声明等。
|
4.分发源码时候,请注明软件出处 https://gitee.com/xiaonuobase/snowy
|
5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/xiaonuobase/snowy
|
6.若您的项目无法满足以上几点,可申请商业授权,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
*/
|
package vip.xiaonuo.modular.blogarticlecomment.controller;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.collection.CollUtil;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
import vip.xiaonuo.core.annotion.BusinessLog;
|
import vip.xiaonuo.core.consts.MyConstant;
|
import vip.xiaonuo.core.enums.LogAnnotionOpTypeEnum;
|
import vip.xiaonuo.core.exception.BlogException;
|
import vip.xiaonuo.core.pojo.response.ResponseData;
|
import vip.xiaonuo.core.pojo.response.SuccessResponseData;
|
import vip.xiaonuo.modular.blogarticle.entity.BlogArticle;
|
import vip.xiaonuo.modular.blogarticle.service.BlogArticleService;
|
import vip.xiaonuo.modular.blogarticlecomment.entity.BlogArticleComment;
|
import vip.xiaonuo.modular.blogarticlecomment.entity.BlogCommentVo;
|
import vip.xiaonuo.modular.blogarticlecomment.param.BlogArticleCommentAddDto;
|
import vip.xiaonuo.modular.blogarticlecomment.param.BlogCommentQueryDto;
|
import vip.xiaonuo.modular.blogarticlecomment.service.BlogArticleCommentService;
|
|
import javax.annotation.Resource;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* blog 留言/评论 控制器 (提供给外部blog系统查询)
|
*
|
* @author inleft
|
* @date 2022-02-09 18:20:22
|
*/
|
@RestController
|
@RequestMapping("/outside")
|
public class BlogArticleCommentOutsideController {
|
|
@Resource
|
private BlogArticleService blogArticleService;
|
|
|
@Resource
|
private BlogArticleCommentService blogArticleCommentService;
|
|
|
@PostMapping("/blogComment/add")
|
@BusinessLog(title = "外部blog系统_blog留言/评论_增加", opType = LogAnnotionOpTypeEnum.ADD)
|
public ResponseData add(@RequestBody @Validated(BlogArticleCommentAddDto.add.class) BlogArticleCommentAddDto addDto) {
|
if (addDto.getCommentType().equals(MyConstant.CommentType.type_2)) {
|
if (addDto.getArticleId() == null) {
|
throw new BlogException("评论类型为日志评论,日志id不能为空");
|
}
|
BlogArticle checkArticle = blogArticleService.getById(addDto.getId());
|
if (checkArticle == null) {
|
throw new BlogException("查询不到相关日志");
|
}
|
|
if (checkArticle.getIsAllowedComment().equals(MyConstant.No)) {
|
throw new BlogException("该日志评论已经关闭..");
|
}
|
}
|
BlogArticleComment insert = new BlogArticleComment();
|
BeanUtil.copyProperties(addDto, insert);
|
insert.setIsCheck(MyConstant.Yes);
|
insert.setIsEnable(MyConstant.Yes);
|
insert.setIsReceiveCallback(addDto.getIsReceiveMail());
|
|
blogArticleCommentService.save(insert);
|
|
return new SuccessResponseData();
|
}
|
|
|
@GetMapping("/blogComment/queryBlogCommentList")
|
@BusinessLog(title = "外部blog系统_blog留言/评论_查询", opType = LogAnnotionOpTypeEnum.QUERY)
|
public ResponseData queryBlogCommentList(BlogCommentQueryDto queryDto) {
|
if (queryDto.getArticleId() != null && blogArticleService.getById(queryDto.getArticleId()) == null) {
|
throw new BlogException("查询不到相关日志");
|
}
|
|
Page queryPage = new Page<>(queryDto.getPageNo(), queryDto.getPageSize());
|
|
|
List<BlogArticleComment> commentList = blogArticleCommentService.lambdaQuery()
|
.eq(queryDto.getArticleId() != null, BlogArticleComment::getArticleId, queryDto.getArticleId())
|
.eq(BlogArticleComment::getCommentType, queryDto.getArticleId() == null ? MyConstant.CommentType.type_1 : MyConstant.CommentType.type_2)
|
.eq(BlogArticleComment::getIsCheck, MyConstant.Yes)
|
.eq(BlogArticleComment::getIsEnable, MyConstant.Yes)
|
.eq(BlogArticleComment::getParentId, 0)
|
.orderByDesc(BlogArticleComment::getCreateDate)
|
.page(queryPage).getRecords();
|
|
int limitCount = 3;
|
List<BlogCommentVo> res = commentList.stream().map(e -> {
|
BlogCommentVo vo = new BlogCommentVo();
|
BeanUtil.copyProperties(e, vo);
|
vo.setIsHasNext(MyConstant.No);
|
List<BlogCommentVo> replyList = blogArticleCommentService.getReplyListById(e.getId(), limitCount);
|
vo.setReplyList(replyList);
|
|
if (e.getAuthStatus().equals(MyConstant.AuthStatus.privateCode)) {
|
vo.setCommentContent(MyConstant.privateComment);
|
}
|
|
if (CollUtil.isNotEmpty(replyList)
|
&& blogArticleCommentService.lambdaQuery()
|
.eq(BlogArticleComment::getParentId, e.getId())
|
.eq(BlogArticleComment::getIsCheck, MyConstant.Yes)
|
.eq(BlogArticleComment::getIsEnable, MyConstant.Yes)
|
.count() > limitCount) {
|
vo.setIsHasNext(MyConstant.Yes);
|
}
|
return vo;
|
}
|
).collect(Collectors.toList());
|
|
queryPage.setRecords(res);
|
return new SuccessResponseData(queryPage);
|
}
|
|
@GetMapping("/blogComment/queryBlogCommentSubList")
|
@BusinessLog(title = "外部blog系统_blog留言/评论子列表_查询", opType = LogAnnotionOpTypeEnum.QUERY)
|
public ResponseData queryBlogCommentSubList(BlogCommentQueryDto queryDto) {
|
if (queryDto.getArticleId() != null && blogArticleCommentService.getById(queryDto.getCommentId()) == null) {
|
throw new BlogException("查询不到相关评论");
|
}
|
|
|
List<BlogCommentVo> replyList = blogArticleCommentService.getReplyListById(queryDto.getCommentId(), null);
|
for (BlogCommentVo vo : replyList) {
|
vo.setIsHasNext(MyConstant.No);
|
if (vo.getAuthStatus().equals(MyConstant.AuthStatus.privateCode)) {
|
vo.setCommentContent(MyConstant.privateComment);
|
}
|
}
|
|
return new SuccessResponseData(replyList);
|
}
|
}
|