diff --git a/pom.xml b/pom.xml
index 57b3d437aebb07d91bbe18ec868046345fb42617..e3ed399f7b5b0c45597a45653a5db260d6b998d4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,6 +11,7 @@
com.test
community
0.0.1-SNAPSHOT
+ jar
1.8
diff --git a/src/main/java/com/test/community/CommunityServletInitializer.java b/src/main/java/com/test/community/CommunityServletInitializer.java
new file mode 100644
index 0000000000000000000000000000000000000000..3eb150dd39e77d2c74921b6f1061eece7db11b25
--- /dev/null
+++ b/src/main/java/com/test/community/CommunityServletInitializer.java
@@ -0,0 +1,16 @@
+package com.test.community;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+/**
+ * @author chenjunji
+ * @version 1.0
+ * @description: TODO
+ * @since 2023/5/3 16:13
+ */
+public class CommunityServletInitializer extends SpringBootServletInitializer{
+ protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){
+ return builder.sources(CommunityApplication.class);
+ }
+}
diff --git a/src/main/java/com/test/community/controller/CommentController.java b/src/main/java/com/test/community/controller/CommentController.java
index c7c6092def11808b9ec93bb0711bce522a1da8ad..e3292f06022d143d67ff1587660c7d3f0fd1420c 100644
--- a/src/main/java/com/test/community/controller/CommentController.java
+++ b/src/main/java/com/test/community/controller/CommentController.java
@@ -4,6 +4,7 @@ import com.test.community.Event.EventProducer;
import com.test.community.entity.Comment;
import com.test.community.entity.DiscussPost;
import com.test.community.entity.Event;
+import com.test.community.entity.Page;
import com.test.community.service.CommentService;
import com.test.community.service.DiscussPostService;
import com.test.community.service.LikeService;
@@ -46,7 +47,6 @@ public class CommentController implements CommunityConstant {
@Autowired
private LikeService likeService;
- //@RequestMapping(path = "/add/{discussPostId}",method = RequestMethod.POST)
@PostMapping("/add/{discussPostId}")
@ResponseBody
public String addComment(@PathVariable("discussPostId") int discussPostId, Comment comment, @RequestParam(value = "file",required = false) List fileList){
@@ -59,7 +59,6 @@ public class CommentController implements CommunityConstant {
comment.setUserId(hostHolder.getUser().getId());//统一处理用户没登陆的情况
comment.setStatus(0);
comment.setCreateTime(new Date());
-
//处理图片
if (fileList!=null){
List urlList = new ArrayList<>();
@@ -80,7 +79,6 @@ public class CommentController implements CommunityConstant {
}else {
comment.setUrl("");
}
-
commentService.addComment(comment);
//触发评论事件
Event event = new Event()
@@ -108,12 +106,81 @@ public class CommentController implements CommunityConstant {
.setEntityType(ENTITY_TYPE_POST)
.setEntityId(discussPostId);
eventProducer.handleEvent(event);
+ //计算帖子分数
+ String redisKey = RedisKeyUtil.getPostScoreKey();
+ redisTemplate.opsForSet().add(redisKey,discussPostId);
+ }
+ DiscussPost discussPost = discussPostService.findDiscussPostById(discussPostId);
+ Page page = new Page();
+ page.setLimit(5);
+ page.setRows(discussPost.getCommentCount());
+ return CommunityUtil.getJSONString(0,""+page.getTotal());
+ }
+
+ @PostMapping("/addReplay/{discussPostId}/{current}")
+ public String addReplayComment(@PathVariable("discussPostId") int discussPostId,@PathVariable("current") int current ,Comment comment, @RequestParam(value = "file",required = false) List fileList){
+ if ("".equals(comment.getContent())){
+ return CommunityUtil.getJSONString(403,"内容不能为空");
+ }
+ if(hostHolder.getUser()==null){
+ return CommunityUtil.getJSONString(403,"小伙子你还没登陆");
+ }
+ comment.setUserId(hostHolder.getUser().getId());//统一处理用户没登陆的情况
+ comment.setStatus(0);
+ comment.setCreateTime(new Date());
+ //处理图片
+ if (fileList!=null){
+ List urlList = new ArrayList<>();
+ for (MultipartFile file:fileList){
+ String fileName = file.getOriginalFilename();
+ String suffix = fileName.substring(fileName.lastIndexOf("."));
+ fileName = CommunityUtil.generateUUID()+suffix;
+ try {
+ String url = OssFileUtil.uploadAliyun(file,fileName);
+ urlList.add(url);
+ } catch (IOException e) {
+ log.error("上传图片失败"+e);
+ throw new RuntimeException("上传文件失败,服务器发生异常",e);
+ }
+ }
+ String urls = String.valueOf(urlList).substring(1,urlList.toString().length()-1);
+ comment.setUrl(urls);
+ }else {
+ comment.setUrl("");
+ }
+ commentService.addComment(comment);
+ //触发评论事件
+ Event event = new Event()
+ .setTopic(TOPIC_COMMENT)
+ .setUserId(hostHolder.getUser().getId())
+ .setEntityType(comment.getEntityType())
+ .setEntityId(comment.getEntityId())
+ .setData("discussPostId",discussPostId);
+
+ if (comment.getEntityType() == ENTITY_TYPE_POST) {
+ DiscussPost target = discussPostService.findDiscussPostById(comment.getEntityId());
+ event.setEntityUserId(target.getUserId());
+ } else if (comment.getEntityType() == ENTITY_TYPE_COMMENT) {
+ Comment target = commentService.findCommentById(comment.getEntityId());
+ event.setEntityUserId(target.getUserId());
+ }
+ eventProducer.handleEvent(event);
+
+ // 回复帖子相当于更改了帖子信息,需要触发事件 以便更新到es
+ if (comment.getEntityType() ==ENTITY_TYPE_POST){
+ //触发发帖事件
+ event = new Event()
+ .setTopic(TOPIC_PUBLISH)
+ .setUserId(comment.getUserId())
+ .setEntityType(ENTITY_TYPE_POST)
+ .setEntityId(discussPostId);
+ eventProducer.handleEvent(event);
//计算帖子分数
String redisKey = RedisKeyUtil.getPostScoreKey();
redisTemplate.opsForSet().add(redisKey,discussPostId);
}
- return CommunityUtil.getJSONString(0,"发送成功");
+ return "redirect:/discuss/replay/" + discussPostId+"/"+comment.getEntityId()+"/"+current;
}
}
diff --git a/src/main/java/com/test/community/controller/DataController.java b/src/main/java/com/test/community/controller/DataController.java
index c37e73917ab2802a2939ff3d8a67a79a6481aab4..8238611cd3980ca8c5c49dceddad4b9c05cade65 100644
--- a/src/main/java/com/test/community/controller/DataController.java
+++ b/src/main/java/com/test/community/controller/DataController.java
@@ -22,7 +22,7 @@ public class DataController {
//统计页面
@RequestMapping(path = "/data",method = {RequestMethod.POST,RequestMethod.GET})
public String getDataPage(){
- return "/site/admin/data";
+ return "site/admin/data";
}
//统计网站uv
diff --git a/src/main/java/com/test/community/controller/DiscussPostController.java b/src/main/java/com/test/community/controller/DiscussPostController.java
index 9f7d7d60188ffb87661220603455864f58beb81d..dd4d47f7312ddeddaa9c600f6e1347809b14ff9d 100644
--- a/src/main/java/com/test/community/controller/DiscussPostController.java
+++ b/src/main/java/com/test/community/controller/DiscussPostController.java
@@ -16,6 +16,7 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.ModelAndView;
import java.io.IOException;
import java.util.*;
@@ -88,8 +89,6 @@ public class DiscussPostController implements CommunityConstant {
discussPost.setContent(content);
discussPost.setCreateTime(new Date());
discussPostService.addDiscussPosts(discussPost);
-
-
//触发发帖事件
Event event = new Event()
.setTopic(TOPIC_PUBLISH)
@@ -97,17 +96,16 @@ public class DiscussPostController implements CommunityConstant {
.setEntityType(ENTITY_TYPE_POST)
.setEntityId(discussPost.getId());
eventProducer.handleEvent(event);
-
// 报错的情况,将来统一处理.
return CommunityUtil.getJSONString(0, "发布成功!");
}
@RequestMapping(path = "/detail/getReply",method = RequestMethod.GET)
public String getReply(){
- return "/site/discuss-detail :: replyList";
+ return "site/discuss-detail :: replyList";
}
- @RequestMapping(path = "/detail/{discussPostId}",method = RequestMethod.GET)
+ @GetMapping ("/detail/{discussPostId}")
public String getDiscussPost(@PathVariable("discussPostId") int discussPostId, Model model, Page page){
//帖子
DiscussPost discussPost = discussPostService.findDiscussPostById(discussPostId);
@@ -198,13 +196,104 @@ public class DiscussPostController implements CommunityConstant {
}
}
commentMap.put("replys",replyVoList);
+ commentMap.put("replysNumber",replyVoList.size());
int replyCount = commentService.findCommentCount(ENTITY_TYPE_COMMENT, comment.getId());
commentMap.put("replyCount",replyCount);
commentVoList.add(commentMap);
}
}
model.addAttribute("comments", commentVoList);
- return "/site/discuss-detail";
+ return "site/discuss-detail";
+ }
+
+
+ /**
+ * 获取评论的回复的页面(局部)
+ * @param discussPostId
+ * @param model
+ * @param page
+ * @return
+ */
+ @GetMapping("/replay/{discussPostId}/{commentId}/{current}")
+ public String getMyDiscussPost(@PathVariable("discussPostId") int discussPostId, @PathVariable("commentId") int commentId, Model model, Page page,@PathVariable("current") int current){
+ //帖子
+ DiscussPost discussPost = discussPostService.findDiscussPostById(discussPostId);
+ model.addAttribute("post",discussPost);
+ //评论分页信息
+ page.setCurrent(current);
+ page.setLimit(5);
+ page.setPath("/discuss/detail/"+discussPostId);
+ page.setRows(discussPost.getCommentCount());
+ long likeCount=0;
+ long likeStatus=0;
+
+ List commentList = commentService.findCommentByEntity(
+ ENTITY_TYPE_POST,discussPost.getId(),page.getOffset(),page.getLimit());
+ //评论的VO(显示对象的)列表
+ List