模态框跟换为layx,代码优化,新建帖子时可新建标签

This commit is contained in:
yaoyuan2.chu
2020-11-09 23:25:33 +08:00
parent d343255e09
commit 3663f44989
34 changed files with 1274 additions and 555 deletions
@@ -1,32 +0,0 @@
package com.yaoyuan.jiscuss.controller;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {
/**
* 登录页面跳转
*
* @return
*/
@GetMapping("loginpage")
public String loginpage() {
return "login";
}
@RequestMapping("/world")
public String world(Map<String, Object> model) {
model.put("data", "2019");
// request.setAttribute("name", "xxxxxxxxx");
model.put("msg", "xxxxxxx2222xx");
return "world";
}
}
@@ -0,0 +1,68 @@
package com.yaoyuan.jiscuss.controller;
import com.yaoyuan.jiscuss.entity.Discussion;
import com.yaoyuan.jiscuss.entity.Tag;
import com.yaoyuan.jiscuss.entity.User;
import com.yaoyuan.jiscuss.entity.UserInfo;
import com.yaoyuan.jiscuss.entity.custom.DiscussionCustom;
import com.yaoyuan.jiscuss.entity.custom.TagCustom;
import com.yaoyuan.jiscuss.service.IDiscussionsService;
import com.yaoyuan.jiscuss.service.ITagsService;
import com.yaoyuan.jiscuss.service.IUsersService;
import com.yaoyuan.jiscuss.util.DelTagsUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
/**
* @author yaoyuan2.chu
* @Title:
* @Package com.yaoyuan.jiscuss.controller
* @Description:
* @date
*/
@Controller
public class UserPageController {
private static Logger logger = LoggerFactory.getLogger(UserPageController.class);
@Autowired
private IUsersService usersService;
@Autowired
private IDiscussionsService discussionsService;
@Autowired
private ITagsService tagsService;
/**
* 用户页面
* @return
*/
@RequestMapping("/user")
public String user( @RequestParam(defaultValue = "discussion") String type, ModelMap map) {
if (type.equals("discussion")) {
map.put("discussion", "active");
}
if (type.equals("change")) {
map.put("change", "active");
}
if (type.equals("like")) {
map.put("like", "active");
}
return "user";
}
}
@@ -6,7 +6,6 @@ import javax.servlet.http.HttpServletRequest;
import com.yaoyuan.jiscuss.entity.*;
import com.yaoyuan.jiscuss.entity.custom.DiscussionCustom;
import com.yaoyuan.jiscuss.entity.custom.PostCustom;
import com.yaoyuan.jiscuss.service.*;
import org.json.JSONObject;
import org.slf4j.Logger;
@@ -93,7 +92,7 @@ public class UserPostController extends BaseController {
//新建主题
@PostMapping(value = "/newdiscussions")
@PostMapping(value = "/newDiscussions")
@ResponseBody
public String newDiscussions(@RequestBody DiscussionCustom discussion) {
logger.info(">>> newPost" + discussion);
@@ -143,7 +142,7 @@ public class UserPostController extends BaseController {
//删除主题
//新建评论
@PostMapping(value = "/newpost")
@PostMapping(value = "/newPost")
@ResponseBody
public String newPosts(@RequestBody Post post) {
logger.info(">>> newpost" + post);
@@ -199,4 +198,47 @@ public class UserPostController extends BaseController {
}
//排行榜等
/**
* 新建主题页
* @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";
}
}
@@ -5,6 +5,7 @@ import com.yaoyuan.jiscuss.entity.Tag;
import com.yaoyuan.jiscuss.entity.UserInfo;
import com.yaoyuan.jiscuss.entity.User;
import com.yaoyuan.jiscuss.entity.custom.DiscussionCustom;
import com.yaoyuan.jiscuss.entity.custom.TagCustom;
import com.yaoyuan.jiscuss.service.IDiscussionsService;
import com.yaoyuan.jiscuss.service.ITagsService;
import com.yaoyuan.jiscuss.service.IUsersService;
@@ -16,16 +17,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
/**
* 用户页面系统控制器
* 首页页面系统控制器
*/
@Controller
public class UserSystemController extends BaseController {
@@ -41,28 +39,98 @@ public class UserSystemController extends BaseController {
@Autowired
private ITagsService tagsService;
//首页
/**
* 首页index
* @param tag
* @param type
* @param pageNum
* @param request
* @param map
* @return
*/
@RequestMapping({"/", "/main", "/index"})
public String home(@RequestParam(defaultValue = "all") String tag, @RequestParam(defaultValue = "all") String type, @RequestParam(defaultValue = "1") Integer
pageNum, HttpServletRequest request, ModelMap map) {
logger.info(">>> index");
logger.info(">>> tag:" + tag);
logger.info(">>> pageNum:" + pageNum);
List<User> userall = usersService.getAllList();
logger.info(">>> 第一遍的全部用户:" + userall);
List<User> useral2 = usersService.getAllList();
logger.info(">>> 第二遍的全部用户:" + useral2);
int pageSiz = 10;
int pageNumNew = pageNum - 1;
Discussion discussion = new Discussion();
//分页获取主题帖子
Page<Discussion> allDiscussionsPage = discussionsService.queryAllDiscussionsList(discussion, pageNumNew, pageSiz);
//分页获取主题帖子-默认
Page<Discussion> allDiscussionsPage = discussionsService.queryAllDiscussionsList(discussion, pageNumNew, pageSiz, tag, type);
List<Discussion> allDiscussions = allDiscussionsPage.getContent();
List<DiscussionCustom> newAllD = new ArrayList<>();
setTagAndUserList(newAllD,allDiscussions);
logger.info("全部主题==>{}", allDiscussions);
Long total = allDiscussionsPage.getTotalElements();
//获取主题帖子的分页数据
List<String> pageNumList = getPageNumList(allDiscussionsPage.getTotalPages());
//获取所有标签(以后尝试去缓存中取)
List<Tag> allTags = tagsService.getAllList();
logger.info("全部标签==>{}", allTags);
map.put("data", "Jiscuss 用户");
map.put("allDiscussions", newAllD);
map.put("allUser", usersService.getAllList());
map.put("pageDiscussions", pageNumList);
map.put("allTags", allTags);
map.put("tag", tag);
map.put("type", type);
if (type.equals("all")) {
map.put("typeAll", "active");
}
if (type.equals("hot")) {
map.put("typeHot", "active");
}
if (type.equals("new")) {
map.put("typeNew", "active");
}
map.put("pageSize", pageSiz);
map.put("pageTotal", total);
map.put("pageNum", pageNum);
map.put("pageTotalPages", allDiscussionsPage.getTotalPages());
UserInfo user = getUserInfo(request);
if (user != null) {
map.put("username", user.getUsername());
map.put("data", "Jiscuss 用户:" + user.getUsername());
}
return "index";
}
/**
* 组装DiscussionCustom
* @param newAllD
* @param allDiscussions
*/
private void setTagAndUserList(List<DiscussionCustom> newAllD, List<Discussion> allDiscussions) {
List<Integer> discussionIdLsit = new ArrayList<>();
for (Discussion dd : allDiscussions) {
discussionIdLsit.add(dd.getId());
}
List<TagCustom> TagCustomList = tagsService.findByDiscussionIdlistId(discussionIdLsit);
Map<Integer, List<TagCustom>> tagMap = new HashMap<>();
for (TagCustom tc : TagCustomList) {
List<TagCustom> tagCustomListTemp = new ArrayList<>();
if(tagMap.containsKey(tc.getDiscussionId())){
tagCustomListTemp = tagMap.get(tc.getDiscussionId());
tagCustomListTemp.add(tc);
tagMap.put(tc.getDiscussionId(),tagCustomListTemp);
}else{
tagCustomListTemp.add(tc);
tagMap.put(tc.getDiscussionId(),tagCustomListTemp);
}
}
for (Discussion dd : allDiscussions) {
DiscussionCustom newdd = new DiscussionCustom();
BeanUtils.copyProperties(dd, newdd);
@@ -86,42 +154,17 @@ public class UserSystemController extends BaseController {
newdd.setRealnameLast(lastUser.getRealname());
newdd.setUsernameLast(lastUser.getUsername());
}
//组装tag
newdd.setTagList(tagMap.get(dd.getId()));
newAllD.add(newdd);
}
logger.info("全部主题==>{}", allDiscussions);
Long total = allDiscussionsPage.getTotalElements();
//获取主题帖子的分页数据
List<String> pageNumList = getPageNumList(allDiscussionsPage.getTotalPages());
//获取所有标签(以后尝试去缓存中取)
List<Tag> allTags = tagsService.getAllList();
logger.info("全部标签==>{}", allTags);
System.out.println(userall.toString());
map.put("data", "Jiscuss 用户");
map.put("allDiscussions", newAllD);
map.put("pageDiscussions", pageNumList);
map.put("allTags", allTags);
map.put("tag", tag);
map.put("type", type);
map.put("pageSize", pageSiz);
map.put("pageTotal", total);
map.put("pageNum", pageNum);
map.put("pageTotalPages", allDiscussionsPage.getTotalPages());
UserInfo user = getUserInfo(request);
if (user != null) {
map.put("username", user.getUsername());
map.put("data", "Jiscuss 用户:" + user.getUsername());
}
return "index";
}
/**
* 分页信息
* @param size
* @return
*/
private List<String> getPageNumList(int size) {
List<String> pageNumList = new ArrayList<String>();
for (int i = 0; i < size; i++) {
@@ -130,14 +173,14 @@ public class UserSystemController extends BaseController {
return pageNumList;
}
//登录页
@GetMapping("/test")
public String test() {
return "test";
}
//登录页
/**
* 登录页
* @param error
* @param logout
* @param map
* @return
*/
@GetMapping("/login")
public String login(@RequestParam(value = "error", required = false) String error,
@RequestParam(value = "logout", required = false) String logout, ModelMap map) {
@@ -154,7 +197,44 @@ public class UserSystemController extends BaseController {
}
//注册
/**
* 注册提交
* @param username
* @param email
* @param password
* @param map
* @return
*/
@PostMapping("/registerDo")
public String registerDo(@RequestParam String username, @RequestParam String email,
@RequestParam String password, ModelMap map) {
//验证用户名是否存在
if (null != usersService.getByUsername(username)) {
map.put("msg", "用户已存在,请重试!");
return "register";
} else {
User user = new User();
user.setEmail(email);
user.setPassword(password);
user.setUsername(username);
user.setRealname(username);
user.setJoinTime(new Date());
User userInsert = usersService.insert(user);
map.put("msg", "注册成功,请登陆!");
return "login";
}
}
/**
* 注册页面
* @return
*/
@RequestMapping("/register")
public String register() {
return "register";
}
//获取设置信息
@@ -2,10 +2,7 @@ package com.yaoyuan.jiscuss.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.*;
import lombok.Data;
@Data
@@ -13,8 +10,11 @@ import lombok.Data;
@Table(name="discussiontag")
public class DiscussionTag implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name="discussion_id")
private Integer discussionId;
@@ -0,0 +1,62 @@
package com.yaoyuan.jiscuss.entity;
import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
* @author yaoyuan2.chu
* @Title:
* @Package com.yaoyuan.jiscuss.entity
* @Description:
* @date 2020/10/21 12:00
*/
@Data
@Entity
@Table(name="likecollect")
public class LikeCollect implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name="discussion_id")
private Integer discussionId;
@Column(name="discussion_name")
private String discussionName;
@Column(name="tag_id")
private Integer tagId;
@Column(name="post_id")
private Integer postId;
@Column(name="post_content")
private String postContent;
@Column(name="user_id")
private Integer userId;
@Column(name="user_name")
private String userName;
@Column(name="type")
private String type;
@Column(name="like_type")
private String likeType;
@Column(name="collect_type")
private String collectType;
@Column(name="create_id")
private Integer createId;
@Column(name="create_time")
private Date createTime;
}
@@ -36,7 +36,7 @@ public class DiscussionCustom extends Discussion {
private String tag;
private List<Tag> tagList;
private List<TagCustom> tagList;
}
@@ -0,0 +1,48 @@
package com.yaoyuan.jiscuss.entity.custom;
import com.yaoyuan.jiscuss.entity.Post;
import com.yaoyuan.jiscuss.entity.Tag;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
/**
* @author yaoyuan2.chu
* @Title:
* @Package com.yaoyuan.jiscuss.entity.custom
* @Description:
* @date 2020/10/21 10:05
*/
@Data
@Setter
@Getter
public class TagCustom {
@Column(name="name")
private String name;
@Column(name="description")
private String description;
@Column(name="color")
private String color;
@Column(name="icon")
private String icon;
@Column(name="discussion_id")
private Integer discussionId;
public TagCustom(String name, String color, String icon, String description, Integer discussionId) {
this.name = name;
this.color = color;
this.icon = icon;
this.description = description;
this.discussionId = discussionId;
}
}
@@ -1,11 +1,24 @@
package com.yaoyuan.jiscuss.repository;
import com.yaoyuan.jiscuss.entity.Discussion;
import com.yaoyuan.jiscuss.entity.User;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface DiscussionsRepository extends JpaRepository<Discussion,Integer> {
@Query(value = "SELECT * from discussion where id in (\n" +
"SELECT discussion_id from discussiontag where tag_id = ?1 ) ", nativeQuery = true)
Page<Discussion> findByQuery(String tagId, Pageable pageable);
}
@@ -1,6 +1,7 @@
package com.yaoyuan.jiscuss.repository;
import com.yaoyuan.jiscuss.entity.Tag;
import com.yaoyuan.jiscuss.entity.custom.TagCustom;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
@@ -13,4 +14,13 @@ public interface TagsRepository extends JpaRepository<Tag,Integer> {
@Query(value = "FROM Tag a, DiscussionTag b WHERE a.id = b.tagId and b.discussionId = :dId")
List<Tag> findByDId(@Param("dId")Integer dId);
@Query("select new com.yaoyuan.jiscuss.entity.custom.TagCustom(" +
"u.name,u.color,u.icon,u.description, d.discussionId" +
") " +
"from Tag u, DiscussionTag d " +
"where u.id=d.tagId and d.discussionId in (:discussionIdlist)")
List<TagCustom> findByDiscussionIdlistId(@Param(value = "discussionIdlist") List<Integer> discussionIdlist);
}
@@ -14,6 +14,5 @@ public interface IDiscussionsService {
Discussion findOne(Integer id);
Page<Discussion> queryAllDiscussionsList(Discussion discussion, int pageNum, int pageSize);
Page<Discussion> queryAllDiscussionsList(Discussion discussion, int pageNumNew, int pageSiz, String tag, String type);
}
@@ -3,6 +3,7 @@ package com.yaoyuan.jiscuss.service;
import java.util.List;
import com.yaoyuan.jiscuss.entity.Tag;
import com.yaoyuan.jiscuss.entity.custom.TagCustom;
public interface ITagsService {
@@ -11,4 +12,6 @@ public interface ITagsService {
Tag insert(Tag tag);
List<Tag> findByDId(Integer id);
List<TagCustom> findByDiscussionIdlistId(List<Integer> discussionIdLsit);
}
@@ -37,13 +37,25 @@ public class DiscussionsServiceImpl implements IDiscussionsService {
}
@Override
public Page<Discussion> queryAllDiscussionsList(Discussion discussion, int pageNum, int pageSize) {
public Page<Discussion> queryAllDiscussionsList(Discussion discussion, int pageNum, int pageSize,String tag,String type) {
Sort sort = new Sort(Sort.Direction.DESC, "id");
if(type.equals("hot")){
sort = new Sort(Sort.Direction.DESC, "likeCount");
}else if(type.equals("new")){
sort = new Sort(Sort.Direction.DESC, "startTime");
}
@SuppressWarnings("deprecation")
Pageable pageable = new PageRequest(pageNum, pageSize, sort);
//将匹配对象封装成Example对象
Example<Discussion> example = Example.of(discussion);
if(null!=tag && !"all".equals(tag)){
Page<Discussion> pageList= discussionsRepository.findByQuery(tag, pageable);
return pageList;
}else{
Page<Discussion> pageList= discussionsRepository.findAll(example, pageable);
return pageList;
}
return discussionsRepository.findAll(example, pageable);
}
}
@@ -4,6 +4,7 @@ import java.util.List;
import javax.transaction.Transactional;
import com.yaoyuan.jiscuss.entity.custom.TagCustom;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -31,6 +32,11 @@ public class TagsServiceImpl implements ITagsService {
public List<Tag> findByDId(Integer id) {
return tagsRepository.findByDId(id);
}
@Override
public List<TagCustom> findByDiscussionIdlistId(List<Integer> discussionIdLsit) {
return tagsRepository.findByDiscussionIdlistId(discussionIdLsit);
}
}