Files
Jiscuss/src/main/java/com/yaoyuan/jiscuss/controller/UserPostController.java
T

245 lines
7.6 KiB
Java

package com.yaoyuan.jiscuss.controller;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import com.yaoyuan.jiscuss.entity.*;
import com.yaoyuan.jiscuss.entity.custom.DiscussionCustom;
import com.yaoyuan.jiscuss.service.*;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
/**
* 主题帖子评论控制器
*/
@Controller
public class UserPostController extends BaseController {
private static Logger logger = LoggerFactory.getLogger(UserPostController.class);
@Autowired
private IDiscussionsService discussionsService;
@Autowired
private ITagsService tagsService;
@Autowired
private IDiscussionsTagsService iDiscussionsTagsService;
@Autowired
private IPostsService postsService;
@Autowired
private IUsersService usersService;
//首页查看主题列表(各种条件筛选,最热最新标签等)
//查看主题详情
@RequestMapping("/getdiscussionsbyid")
public String getDiscussionsById(HttpServletRequest request, ModelMap map, @RequestParam("id") Integer id) {
logger.info(">>> getDiscussionsById{}", id);
Discussion discussion = discussionsService.findOne(id);
// 获取此主题下的评论
List<Post> posts = postsService.findOneBy(id);
DiscussionCustom newdd = new DiscussionCustom();
BeanUtils.copyProperties(discussion, newdd);
if (null != newdd.getStartUserId()) {
User startUser = usersService.findOne(newdd.getStartUserId());
newdd.setAvatar(startUser.getAvatar());
newdd.setRealname(startUser.getRealname());
newdd.setUsername(startUser.getUsername());
}
if (null != newdd.getLastUserId()) {
User lastUser = usersService.findOne(newdd.getLastUserId());
newdd.setAvatarLast(lastUser.getAvatar());
newdd.setRealnameLast(lastUser.getRealname());
newdd.setUsernameLast(lastUser.getUsername());
}
List<Tag> tags = tagsService.findByDId(id);
List postsObj = postsService.findPostCustomById(id);
map.put("tags", tags);
map.put("discussions", newdd);
map.put("posts", postsObj);
UserInfo user = getUserInfo(request);
if (user != null) {
map.put("username", user.getUsername());
}
return "discussions";
}
//新建主题
@PostMapping(value = "/newDiscussions")
@ResponseBody
public String newDiscussions(@RequestBody DiscussionCustom discussion) {
logger.info(">>> newPost" + discussion);
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = servletRequestAttributes.getRequest();
UserInfo user = getUserInfo(request);
if (user != null) {
discussion.setStartUserId(user.getId());
discussion.setLastUserId(user.getId());
discussion.setCreateId(user.getId());
}
discussion.setCreateTime(new Date());
discussion.setStartTime(new Date());
discussion.setLastTime(new Date());
Discussion discussionOne = new Discussion();
BeanUtils.copyProperties(discussion, discussionOne);
Discussion saveDiscussion = discussionsService.insert(discussionOne);
if (null != discussion.getTag()) {
//执行组装标签
String[] strArray = discussion.getTag().split(",");
for(String str : strArray){
DiscussionTag dtag= new DiscussionTag();
dtag.setDiscussionId(saveDiscussion.getId());
dtag.setTagId(Integer.parseInt(str));
iDiscussionsTagsService.insert(dtag);
}
}
JSONObject resultobj = new JSONObject();
logger.info(">>>{}", saveDiscussion);
resultobj.put("msg", "添加成功");
resultobj.put("flag", true);
return resultobj.toString(); //
}
//编辑主题
//删除主题
//新建评论
@PostMapping(value = "/newPost")
@ResponseBody
public String newPosts(@RequestBody Post post) {
logger.info(">>> newpost" + post);
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = servletRequestAttributes.getRequest();
UserInfo user = getUserInfo(request);
if (user != null) {
post.setCreateId(user.getId());
}
post.setCreateTime(new Date());
if (null != post.getParentId()) {
Post temp = postsService.findOneByid(post.getParentId());
post.setUserId(temp.getCreateId());
}
Post savePost = postsService.insert(post);
JSONObject resultobj = new JSONObject();
logger.info(">>>{}", savePost);
resultobj.put("msg", "添加成功");
resultobj.put("flag", true);
return resultobj.toString(); //
}
//删除评论
//新建标签
@PostMapping(value = "/newtags")
@ResponseBody
public String newTags(@RequestBody Tag tag) {
logger.info(">>> newTags" + tag);
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = servletRequestAttributes.getRequest();
UserInfo user = getUserInfo(request);
if (user != null) {
tag.setCreateId(user.getId());
}
tag.setCreateTime(new Date());
Tag saveTag = tagsService.insert(tag);
JSONObject resultobj = new JSONObject();
logger.info(">>>{}", saveTag);
resultobj.put("msg", "添加成功");
resultobj.put("flag", true);
return resultobj.toString(); //
}
//排行榜等
/**
* 新建主题页
* @param request
* @param map
* @return
*/
@RequestMapping({"/newDiscussionsPage"})
public String newdiccuss( HttpServletRequest request, ModelMap map) {
//获取所有标签(以后尝试去缓存中取)
List<Tag> allTags = tagsService.getAllList();
map.put("allTags", allTags);
UserInfo user = getUserInfo(request);
if (user != null) {
map.put("username", user.getUsername());
map.put("data", "Jiscuss 用户:" + user.getUsername());
}
return "newdiccuss";
}
/**
* 新建标签页
* @param request
* @param map
* @return
*/
@RequestMapping({"/newTagPage"})
public String newtag( HttpServletRequest request, ModelMap map) {
//获取所有标签(以后尝试去缓存中取)
List<Tag> allTags = tagsService.getAllList();
map.put("allTags", allTags);
UserInfo user = getUserInfo(request);
if (user != null) {
map.put("username", user.getUsername());
map.put("data", "Jiscuss 用户:" + user.getUsername());
}
return "newtag";
}
}