代码INIT
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
package com.quinn.controller;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.quinn.pojo.Blog;
|
||||
import com.quinn.pojo.BlogCategory;
|
||||
import com.quinn.service.BlogCategoryService;
|
||||
import com.quinn.service.BlogService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 遇见狂神说
|
||||
* @since 2020-06-29
|
||||
*/
|
||||
@Controller
|
||||
public class BlogCategoryController {
|
||||
|
||||
@Autowired
|
||||
BlogCategoryService blogCategoryService;
|
||||
@Autowired
|
||||
BlogService blogService;
|
||||
|
||||
@GetMapping("/blog/category/{bid}/{page}/{limit}")
|
||||
public String blogPage(
|
||||
@PathVariable int bid,
|
||||
@PathVariable int page,
|
||||
@PathVariable int limit,
|
||||
Model model){
|
||||
|
||||
if (page < 1){
|
||||
page = 1;
|
||||
}
|
||||
|
||||
// 查询这个分类下的所有问题,获取查询的数据信息
|
||||
Page<Blog> pageParam = new Page<>(page, limit);
|
||||
blogService.page(pageParam,new QueryWrapper<Blog>()
|
||||
.eq("category_id",bid).orderByDesc("gmt_create"));
|
||||
|
||||
List<Blog> records = pageParam.getRecords();
|
||||
|
||||
model.addAttribute("blogList",records);
|
||||
model.addAttribute("pageParam",pageParam);
|
||||
|
||||
// 查询这个分类信息
|
||||
BlogCategory category = blogCategoryService.getById(bid);
|
||||
model.addAttribute("thisCategoryName",category.getCategory());
|
||||
|
||||
// 全部分类信息
|
||||
List<BlogCategory> categoryList = blogCategoryService.list(null);
|
||||
model.addAttribute("categoryList",categoryList);
|
||||
|
||||
return "blog/list";
|
||||
}
|
||||
}
|
||||
|
||||
197
src/main/java/com/quinn/controller/BlogController.java
Normal file
197
src/main/java/com/quinn/controller/BlogController.java
Normal file
@@ -0,0 +1,197 @@
|
||||
package com.quinn.controller;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.quinn.pojo.Blog;
|
||||
import com.quinn.pojo.BlogCategory;
|
||||
import com.quinn.pojo.Comment;
|
||||
import com.quinn.service.BlogCategoryService;
|
||||
import com.quinn.service.BlogService;
|
||||
import com.quinn.service.CommentService;
|
||||
import com.quinn.utils.QuinnUtils;
|
||||
import com.quinn.vo.QuestionWriteForm;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 遇见狂神说
|
||||
* @since 2020-06-29
|
||||
*/
|
||||
@Controller
|
||||
public class BlogController {
|
||||
|
||||
@Autowired
|
||||
BlogCategoryService blogCategoryService;
|
||||
@Autowired
|
||||
BlogService blogService;
|
||||
@Autowired
|
||||
CommentService commentService;
|
||||
|
||||
// 列表展示
|
||||
@GetMapping("/blog")
|
||||
public String blogList(Model model){
|
||||
|
||||
Page<Blog> pageParam = new Page<>(1, 10);
|
||||
blogService.page(pageParam,new QueryWrapper<Blog>().orderByDesc("gmt_create"));
|
||||
// 结果
|
||||
List<Blog> blogList = pageParam.getRecords();
|
||||
model.addAttribute("blogList",blogList);
|
||||
model.addAttribute("pageParam",pageParam);
|
||||
|
||||
// 分类信息
|
||||
List<BlogCategory> categoryList = blogCategoryService.list(null);
|
||||
model.addAttribute("categoryList",categoryList);
|
||||
|
||||
return "blog/list";
|
||||
}
|
||||
|
||||
@GetMapping("/blog/{page}/{limit}")
|
||||
public String blogListPage(
|
||||
@PathVariable int page,
|
||||
@PathVariable int limit,
|
||||
Model model){
|
||||
|
||||
if (page < 1){
|
||||
page = 1;
|
||||
}
|
||||
Page<Blog> pageParam = new Page<>(page, limit);
|
||||
blogService.page(pageParam,new QueryWrapper<Blog>().orderByDesc("gmt_create"));
|
||||
|
||||
// 结果
|
||||
List<Blog> blogList = pageParam.getRecords();
|
||||
model.addAttribute("blogList",blogList);
|
||||
model.addAttribute("pageParam",pageParam);
|
||||
|
||||
// 分类信息
|
||||
List<BlogCategory> categoryList = blogCategoryService.list(null);
|
||||
model.addAttribute("categoryList",categoryList);
|
||||
|
||||
return "blog/list";
|
||||
}
|
||||
|
||||
// 写文章
|
||||
@GetMapping("/blog/write")
|
||||
public String toWrite(Model model){
|
||||
List<BlogCategory> categoryList = blogCategoryService.list(null);
|
||||
model.addAttribute("categoryList",categoryList);
|
||||
return "blog/write";
|
||||
}
|
||||
|
||||
@PostMapping("/blog/write")
|
||||
public synchronized String write(QuestionWriteForm questionWriteForm){
|
||||
// 构建问题对象
|
||||
Blog blog = new Blog();
|
||||
|
||||
blog.setBid(QuinnUtils.getUuid());
|
||||
blog.setTitle(questionWriteForm.getTitle());
|
||||
blog.setContent(questionWriteForm.getContent());
|
||||
blog.setSort(0);
|
||||
blog.setViews(0);
|
||||
|
||||
blog.setAuthorId(questionWriteForm.getAuthorId());
|
||||
blog.setAuthorName(questionWriteForm.getAuthorName());
|
||||
blog.setAuthorAvatar(questionWriteForm.getAuthorAvatar());
|
||||
|
||||
BlogCategory category = blogCategoryService.getById(questionWriteForm.getCategoryId());
|
||||
blog.setCategoryId(questionWriteForm.getCategoryId());
|
||||
blog.setCategoryName(category.getCategory());
|
||||
blog.setGmtCreate(QuinnUtils.getTime());
|
||||
blog.setGmtUpdate(QuinnUtils.getTime());
|
||||
// 存储对象
|
||||
blogService.save(blog);
|
||||
|
||||
// 重定向到列表页面
|
||||
return "redirect:/blog";
|
||||
}
|
||||
|
||||
// 阅读文章
|
||||
@GetMapping("/blog/read/{bid}")
|
||||
public String read(@PathVariable("bid") String bid,Model model){
|
||||
Blog blog = blogService.getOne(new QueryWrapper<Blog>().eq("bid", bid));
|
||||
// todo: redis缓存. 防止阅读重复
|
||||
blog.setViews(blog.getViews()+1);
|
||||
blogService.updateById(blog);
|
||||
model.addAttribute("blog",blog);
|
||||
// todo: 查询评论
|
||||
List<Comment> commentList = commentService.list(new QueryWrapper<Comment>().eq("topic_id", bid).orderByDesc("gmt_create"));
|
||||
model.addAttribute("commentList",commentList);
|
||||
return "blog/read";
|
||||
}
|
||||
|
||||
// 编辑问题
|
||||
@GetMapping("/blog/editor/{uid}/{bid}")
|
||||
public synchronized String toEditor(@PathVariable("uid") String uid,
|
||||
@PathVariable("bid") String bid,Model model){
|
||||
|
||||
Blog blog = blogService.getOne(new QueryWrapper<Blog>().eq("bid", bid));
|
||||
|
||||
if (!blog.getAuthorId().equals(uid)){
|
||||
QuinnUtils.print("禁止非法编辑");
|
||||
return "redirect:/blog";
|
||||
}
|
||||
|
||||
model.addAttribute("blog",blog);
|
||||
|
||||
List<BlogCategory> categoryList = blogCategoryService.list(null);
|
||||
model.addAttribute("categoryList",categoryList);
|
||||
|
||||
return "blog/editor";
|
||||
}
|
||||
|
||||
@PostMapping("/blog/editor")
|
||||
public String editor(Blog blog){
|
||||
Blog queryBlog = blogService.getOne(new QueryWrapper<Blog>().eq("bid", blog.getBid()));
|
||||
|
||||
queryBlog.setTitle(blog.getTitle());
|
||||
queryBlog.setCategoryId(blog.getCategoryId());
|
||||
queryBlog.setContent(blog.getContent());
|
||||
queryBlog.setGmtUpdate(QuinnUtils.getTime());
|
||||
|
||||
blogService.updateById(queryBlog);
|
||||
|
||||
return "redirect:/blog/read/"+blog.getBid();
|
||||
}
|
||||
|
||||
// 删除问题
|
||||
@GetMapping("/blog/delete/{uid}/{bid}")
|
||||
public String delete(@PathVariable("uid") String uid,
|
||||
@PathVariable("bid") String bid){
|
||||
|
||||
Blog blog = blogService.getOne(new QueryWrapper<Blog>().eq("bid", bid));
|
||||
|
||||
if (!blog.getAuthorId().equals(uid)){
|
||||
QuinnUtils.print("禁止非法删除");
|
||||
return "redirect:/blog";
|
||||
}
|
||||
|
||||
blogService.removeById(blog);
|
||||
// 重定向到列表页面
|
||||
return "redirect:/blog";
|
||||
}
|
||||
|
||||
// 评论
|
||||
@PostMapping("/blog/comment/{bid}")
|
||||
public String comment(@PathVariable("bid") String bid, Comment comment){
|
||||
// 存储评论
|
||||
comment.setCommentId(QuinnUtils.getUuid());
|
||||
comment.setTopicCategory(1);
|
||||
comment.setGmtCreate(QuinnUtils.getTime());
|
||||
commentService.save(comment);
|
||||
// 重定向到列表页面
|
||||
return "redirect:/blog/read/"+bid;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
34
src/main/java/com/quinn/controller/CommentController.java
Normal file
34
src/main/java/com/quinn/controller/CommentController.java
Normal file
@@ -0,0 +1,34 @@
|
||||
package com.quinn.controller;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.quinn.pojo.Comment;
|
||||
import com.quinn.service.CommentService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 遇见狂神说
|
||||
* @since 2020-06-30
|
||||
*/
|
||||
@Controller
|
||||
public class CommentController {
|
||||
|
||||
@Autowired
|
||||
CommentService commentService;
|
||||
|
||||
// 删除评论
|
||||
@GetMapping("/user/comment/delete/{uid}/{cid}")
|
||||
public String deleteComment(@PathVariable String uid,@PathVariable String cid){
|
||||
commentService.remove(new QueryWrapper<Comment>().eq("comment_id", cid));
|
||||
return "redirect:/user/comment/"+uid+"/1/10";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
35
src/main/java/com/quinn/controller/DownloadController.java
Normal file
35
src/main/java/com/quinn/controller/DownloadController.java
Normal file
@@ -0,0 +1,35 @@
|
||||
package com.quinn.controller;
|
||||
|
||||
|
||||
import com.quinn.mapper.DownloadMapper;
|
||||
import com.quinn.pojo.Download;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 遇见狂神说
|
||||
* @since 2020-07-08
|
||||
*/
|
||||
@Controller
|
||||
public class DownloadController {
|
||||
|
||||
@Autowired
|
||||
DownloadMapper downloadMapper;
|
||||
|
||||
@GetMapping({"/download"})
|
||||
public String download(Model model){
|
||||
List<Download> downloadList = downloadMapper.selectList(null);
|
||||
model.addAttribute("downloadList",downloadList);
|
||||
return "page/download";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
100
src/main/java/com/quinn/controller/LoginController.java
Normal file
100
src/main/java/com/quinn/controller/LoginController.java
Normal file
@@ -0,0 +1,100 @@
|
||||
package com.quinn.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.quinn.pojo.Invite;
|
||||
import com.quinn.pojo.User;
|
||||
import com.quinn.pojo.UserInfo;
|
||||
import com.quinn.service.InviteService;
|
||||
import com.quinn.service.UserInfoService;
|
||||
import com.quinn.service.UserService;
|
||||
import com.quinn.utils.QuinnUtils;
|
||||
import com.quinn.vo.RegisterForm;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
|
||||
@Controller
|
||||
public class LoginController {
|
||||
|
||||
@Autowired
|
||||
InviteService inviteService;
|
||||
@Autowired
|
||||
UserService userService;
|
||||
@Autowired
|
||||
UserInfoService userInfoService;
|
||||
|
||||
@GetMapping({"/","/index"})
|
||||
public String index(){
|
||||
return "index";
|
||||
}
|
||||
|
||||
@GetMapping("/toLogin")
|
||||
public String toLogin(){
|
||||
return "login";
|
||||
}
|
||||
|
||||
@GetMapping("/register")
|
||||
public String toRegister(){
|
||||
return "register";
|
||||
}
|
||||
|
||||
// 注册业务
|
||||
@PostMapping("/register")
|
||||
public String register(RegisterForm registerForm,Model model){
|
||||
QuinnUtils.print("注册表单信息:"+registerForm.toString());
|
||||
// 表单密码重复判断
|
||||
if (!registerForm.getPassword().equals(registerForm.getRepassword())){
|
||||
model.addAttribute("registerMsg","密码输入有误");
|
||||
return "register";
|
||||
}
|
||||
// 用户名已存在
|
||||
User hasUser = userService.getOne(new QueryWrapper<User>().eq("username", registerForm.getUsername()));
|
||||
if (hasUser!=null){
|
||||
model.addAttribute("registerMsg","用户名已存在");
|
||||
return "register";
|
||||
}
|
||||
|
||||
// 验证邀请码
|
||||
Invite invite = inviteService.getOne(new QueryWrapper<Invite>().eq("code", registerForm.getCode()));
|
||||
if (invite==null){
|
||||
model.addAttribute("registerMsg","邀请码不存在");
|
||||
return "register";
|
||||
}else {
|
||||
// 邀请码存在,判断邀请码是否有效
|
||||
if (invite.getStatus()==1){
|
||||
model.addAttribute("registerMsg","邀请码已被使用");
|
||||
return "register";
|
||||
}else {
|
||||
// 构建用户对象
|
||||
User user = new User();
|
||||
user.setUid(QuinnUtils.getUuid()); // 用户唯一id
|
||||
user.setRoleId(2);
|
||||
user.setUsername(registerForm.getUsername());
|
||||
// 密码加密
|
||||
String bCryptPassword = new BCryptPasswordEncoder().encode(registerForm.getPassword());
|
||||
user.setPassword(bCryptPassword);
|
||||
user.setGmtCreate(QuinnUtils.getTime());
|
||||
user.setLoginDate(QuinnUtils.getTime());
|
||||
// 保存对象!
|
||||
userService.save(user);
|
||||
QuinnUtils.print("新用户注册成功:"+user);
|
||||
|
||||
// 激活邀请码
|
||||
invite.setActiveTime(QuinnUtils.getTime());
|
||||
invite.setStatus(1);
|
||||
invite.setUid(user.getUid());
|
||||
inviteService.updateById(invite);
|
||||
|
||||
// todo: 用户信息
|
||||
userInfoService.save(new UserInfo().setUid(user.getUid()));
|
||||
|
||||
// 注册成功,重定向到登录页面
|
||||
return "redirect:/toLogin";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package com.quinn.controller;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.quinn.pojo.Question;
|
||||
import com.quinn.pojo.QuestionCategory;
|
||||
import com.quinn.service.QuestionCategoryService;
|
||||
import com.quinn.service.QuestionService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 遇见狂神说
|
||||
* @since 2020-06-28
|
||||
*/
|
||||
@Controller
|
||||
public class QuestionCategoryController {
|
||||
|
||||
@Autowired
|
||||
QuestionCategoryService questionCategoryService;
|
||||
@Autowired
|
||||
QuestionService questionService;
|
||||
|
||||
@GetMapping("/question/category/{cid}/{page}/{limit}")
|
||||
public String questionPage(
|
||||
@PathVariable int cid,
|
||||
@PathVariable int page,
|
||||
@PathVariable int limit,
|
||||
Model model){
|
||||
|
||||
if (page < 1){
|
||||
page = 1;
|
||||
}
|
||||
|
||||
// 查询这个分类下的所有问题,获取查询的数据信息
|
||||
Page<Question> pageParam = new Page<>(page, limit);
|
||||
questionService.page(pageParam,new QueryWrapper<Question>()
|
||||
.eq("category_id",cid).orderByDesc("gmt_create"));
|
||||
List<Question> records = pageParam.getRecords();
|
||||
model.addAttribute("questionList",records);
|
||||
model.addAttribute("pageParam",pageParam);
|
||||
|
||||
// 查询这个分类信息
|
||||
QuestionCategory category = questionCategoryService.getById(cid);
|
||||
model.addAttribute("thisCategoryName",category.getCategory());
|
||||
|
||||
// 全部分类信息
|
||||
List<QuestionCategory> categoryList = questionCategoryService.list(null);
|
||||
model.addAttribute("categoryList",categoryList);
|
||||
|
||||
return "question/list";
|
||||
}
|
||||
}
|
||||
|
||||
254
src/main/java/com/quinn/controller/QuestionController.java
Normal file
254
src/main/java/com/quinn/controller/QuestionController.java
Normal file
@@ -0,0 +1,254 @@
|
||||
package com.quinn.controller;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.quinn.pojo.Comment;
|
||||
import com.quinn.pojo.Question;
|
||||
import com.quinn.pojo.QuestionCategory;
|
||||
import com.quinn.service.CommentService;
|
||||
import com.quinn.service.QuestionCategoryService;
|
||||
import com.quinn.service.QuestionService;
|
||||
import com.quinn.utils.QuinnUtils;
|
||||
import com.quinn.vo.QuestionWriteForm;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 遇见狂神说
|
||||
* @since 2020-06-28
|
||||
*/
|
||||
@Controller
|
||||
public class QuestionController {
|
||||
|
||||
@Autowired
|
||||
QuestionCategoryService questionCategoryService;
|
||||
@Autowired
|
||||
QuestionService questionService;
|
||||
@Autowired
|
||||
CommentService commentService;
|
||||
|
||||
|
||||
// 问题列表展示
|
||||
@GetMapping("/question")
|
||||
public String questionList(Model model){
|
||||
Page<Question> pageParam = new Page<>(1, 10);
|
||||
questionService.page(pageParam,new QueryWrapper<Question>().orderByDesc("gmt_create"));
|
||||
// 结果
|
||||
List<Question> questionList = pageParam.getRecords();
|
||||
model.addAttribute("questionList",questionList);
|
||||
model.addAttribute("pageParam",pageParam);
|
||||
|
||||
// 分类信息
|
||||
List<QuestionCategory> categoryList = questionCategoryService.list(null);
|
||||
model.addAttribute("categoryList",categoryList);
|
||||
|
||||
return "question/list";
|
||||
}
|
||||
|
||||
@GetMapping("/question/{page}/{limit}")
|
||||
public String questionListPage(
|
||||
@PathVariable int page,
|
||||
@PathVariable int limit,
|
||||
Model model){
|
||||
|
||||
if (page < 1){
|
||||
page = 1;
|
||||
}
|
||||
Page<Question> pageParam = new Page<>(page, limit);
|
||||
questionService.page(pageParam,new QueryWrapper<Question>().orderByDesc("gmt_create"));
|
||||
|
||||
// 结果
|
||||
List<Question> questionList = pageParam.getRecords();
|
||||
model.addAttribute("questionList",questionList);
|
||||
model.addAttribute("pageParam",pageParam);
|
||||
|
||||
// 分类信息
|
||||
List<QuestionCategory> categoryList = questionCategoryService.list(null);
|
||||
model.addAttribute("categoryList",categoryList);
|
||||
|
||||
return "question/list";
|
||||
}
|
||||
|
||||
// 发布问题
|
||||
@GetMapping("/question/write")
|
||||
public String toWrite(Model model){
|
||||
List<QuestionCategory> categoryList = questionCategoryService.list(null);
|
||||
model.addAttribute("categoryList",categoryList);
|
||||
return "question/write";
|
||||
}
|
||||
|
||||
@PostMapping("/question/write")
|
||||
public synchronized String write(QuestionWriteForm questionWriteForm){
|
||||
// 构建问题对象
|
||||
Question question = new Question();
|
||||
|
||||
question.setQid(QuinnUtils.getUuid());
|
||||
question.setTitle(questionWriteForm.getTitle());
|
||||
question.setContent(questionWriteForm.getContent());
|
||||
question.setStatus(0);
|
||||
question.setSort(0);
|
||||
question.setViews(0);
|
||||
|
||||
question.setAuthorId(questionWriteForm.getAuthorId());
|
||||
question.setAuthorName(questionWriteForm.getAuthorName());
|
||||
question.setAuthorAvatar(questionWriteForm.getAuthorAvatar());
|
||||
|
||||
QuestionCategory category = questionCategoryService.getById(questionWriteForm.getCategoryId());
|
||||
question.setCategoryId(questionWriteForm.getCategoryId());
|
||||
question.setCategoryName(category.getCategory());
|
||||
question.setGmtCreate(QuinnUtils.getTime());
|
||||
question.setGmtUpdate(QuinnUtils.getTime());
|
||||
// 存储对象
|
||||
questionService.save(question);
|
||||
|
||||
// 重定向到列表页面
|
||||
return "redirect:/question";
|
||||
}
|
||||
|
||||
// 阅读问题
|
||||
@GetMapping("/question/read/{qid}")
|
||||
public String read(@PathVariable("qid") String qid,Model model){
|
||||
Question question = questionService.getOne(new QueryWrapper<Question>().eq("qid", qid));
|
||||
// todo: redis缓存. 防止阅读重复
|
||||
question.setViews(question.getViews()+1);
|
||||
questionService.updateById(question);
|
||||
model.addAttribute("question",question);
|
||||
// todo: 查询评论.
|
||||
List<Comment> commentList = commentService.list(new QueryWrapper<Comment>().eq("topic_id", qid).orderByDesc("gmt_create"));
|
||||
model.addAttribute("commentList",commentList);
|
||||
return "question/read";
|
||||
}
|
||||
|
||||
// 评论
|
||||
@PostMapping("/question/comment/{qid}")
|
||||
public String comment(@PathVariable("qid") String qid, Comment comment){
|
||||
// 存储评论
|
||||
comment.setCommentId(QuinnUtils.getUuid());
|
||||
comment.setTopicCategory(2);
|
||||
comment.setGmtCreate(QuinnUtils.getTime());
|
||||
commentService.save(comment);
|
||||
// 状态改为已解决
|
||||
Question question = questionService.getOne(new QueryWrapper<Question>().eq("qid", qid));
|
||||
question.setStatus(1);
|
||||
questionService.updateById(question);
|
||||
// 重定向到列表页面
|
||||
return "redirect:/question/read/"+qid;
|
||||
}
|
||||
|
||||
// 编辑问题
|
||||
@GetMapping("/question/editor/{uid}/{qid}")
|
||||
public synchronized String toEditor(@PathVariable("uid") String uid,
|
||||
@PathVariable("qid") String qid,Model model){
|
||||
|
||||
Question question = questionService.getOne(new QueryWrapper<Question>().eq("qid", qid));
|
||||
if (!question.getAuthorId().equals(uid)){
|
||||
QuinnUtils.print("禁止非法编辑");
|
||||
return "redirect:/question";
|
||||
}
|
||||
|
||||
model.addAttribute("question",question);
|
||||
|
||||
List<QuestionCategory> categoryList = questionCategoryService.list(null);
|
||||
model.addAttribute("categoryList",categoryList);
|
||||
|
||||
return "question/editor";
|
||||
}
|
||||
|
||||
@PostMapping("/question/editor")
|
||||
public String editor(Question question){
|
||||
Question queryQuestion = questionService.getOne(new QueryWrapper<Question>().eq("qid", question.getQid()));
|
||||
|
||||
queryQuestion.setTitle(question.getTitle());
|
||||
queryQuestion.setCategoryId(question.getCategoryId());
|
||||
queryQuestion.setContent(question.getContent());
|
||||
queryQuestion.setGmtUpdate(QuinnUtils.getTime());
|
||||
|
||||
questionService.updateById(queryQuestion);
|
||||
|
||||
return "redirect:/question/read/"+question.getQid();
|
||||
}
|
||||
|
||||
// 删除问题
|
||||
@GetMapping("/question/delete/{uid}/{qid}")
|
||||
public String delete(@PathVariable("uid") String uid,
|
||||
@PathVariable("qid") String qid){
|
||||
|
||||
Question question = questionService.getOne(new QueryWrapper<Question>().eq("qid", qid));
|
||||
if (!question.getAuthorId().equals(uid)){
|
||||
QuinnUtils.print("禁止非法删除");
|
||||
return "redirect:/question";
|
||||
}
|
||||
questionService.removeById(question);
|
||||
|
||||
// 重定向到列表页面
|
||||
return "redirect:/question";
|
||||
}
|
||||
|
||||
|
||||
// md 文件上传
|
||||
@ApiOperation(value = "md文件上传问题")
|
||||
@RequestMapping("/question/write/file/upload")
|
||||
@ResponseBody
|
||||
public JSONObject fileUpload(@RequestParam(value = "editormd-image-file", required = true) MultipartFile file, HttpServletRequest request) throws IOException {
|
||||
|
||||
//获得SpringBoot当前项目的路径:System.getProperty("user.dir")
|
||||
String path = System.getProperty("user.dir")+"/upload/";
|
||||
|
||||
//按照月份进行分类:
|
||||
Calendar instance = Calendar.getInstance();
|
||||
String month = (instance.get(Calendar.MONTH) + 1)+"月";
|
||||
path = path+month;
|
||||
|
||||
File realPath = new File(path);
|
||||
if (!realPath.exists()){
|
||||
realPath.mkdir();
|
||||
}
|
||||
|
||||
//上传文件地址
|
||||
QuinnUtils.print("上传文件保存地址:"+realPath);
|
||||
|
||||
//解决文件名字问题:我们使用uuid;
|
||||
String filename = "ks-"+ UUID.randomUUID().toString().replaceAll("-", "");
|
||||
String originalFilename = file.getOriginalFilename();
|
||||
// QuinnUtils.print(originalFilename);
|
||||
assert originalFilename != null;
|
||||
int i = originalFilename.lastIndexOf(".");
|
||||
String suffix = originalFilename.substring(i + 1);
|
||||
|
||||
String outFilename = filename + "."+suffix;
|
||||
QuinnUtils.print("文件名:" + outFilename);
|
||||
|
||||
//通过CommonsMultipartFile的方法直接写文件(注意这个时候)
|
||||
file.transferTo(new File(realPath +"/"+ outFilename));
|
||||
|
||||
//给editormd进行回调
|
||||
JSONObject res = new JSONObject();
|
||||
res.put("url","/upload/"+month+"/"+ outFilename);
|
||||
res.put("success", 1);
|
||||
res.put("message", "upload success!");
|
||||
QuinnUtils.print(res.toJSONString());
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
53
src/main/java/com/quinn/controller/SayController.java
Normal file
53
src/main/java/com/quinn/controller/SayController.java
Normal file
@@ -0,0 +1,53 @@
|
||||
package com.quinn.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.quinn.pojo.Say;
|
||||
import com.quinn.service.SayService;
|
||||
import com.quinn.utils.QuinnUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Controller
|
||||
public class SayController {
|
||||
|
||||
@Autowired
|
||||
SayService sayService;
|
||||
|
||||
@GetMapping("/say")
|
||||
public String userIndexBlog(Model model){
|
||||
Page<Say> pageParam = new Page<>(1, 50);
|
||||
sayService.page(pageParam,new QueryWrapper<Say>().orderByDesc("gmt_create"));
|
||||
// 结果
|
||||
List<Say> sayList = pageParam.getRecords();
|
||||
model.addAttribute("sayList",sayList);
|
||||
model.addAttribute("pageParam",pageParam);
|
||||
|
||||
return "page/say";
|
||||
}
|
||||
|
||||
@PostMapping("/say/{role}")
|
||||
public String saveSay(@PathVariable("role") int role, Say say){
|
||||
// 防止请求提交
|
||||
if (role!=1){
|
||||
return "redirect:/say";
|
||||
}
|
||||
|
||||
say.setId(QuinnUtils.getUuid());
|
||||
say.setGmtCreate(QuinnUtils.getTime());
|
||||
// 结果
|
||||
sayService.save(say);
|
||||
return "redirect:/say";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
177
src/main/java/com/quinn/controller/UserController.java
Normal file
177
src/main/java/com/quinn/controller/UserController.java
Normal file
@@ -0,0 +1,177 @@
|
||||
package com.quinn.controller;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.quinn.pojo.Blog;
|
||||
import com.quinn.pojo.Comment;
|
||||
import com.quinn.pojo.Question;
|
||||
import com.quinn.pojo.UserInfo;
|
||||
import com.quinn.service.BlogService;
|
||||
import com.quinn.service.CommentService;
|
||||
import com.quinn.service.QuestionService;
|
||||
import com.quinn.service.UserInfoService;
|
||||
import com.quinn.utils.QuinnUtils;
|
||||
import com.quinn.vo.LayerPhoto;
|
||||
import com.quinn.vo.LayerPhotoData;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 遇见狂神说
|
||||
* @since 2020-06-28
|
||||
*/
|
||||
@Controller
|
||||
public class UserController {
|
||||
|
||||
@Autowired
|
||||
UserInfoService userInfoService;
|
||||
@Autowired
|
||||
BlogService blogService;
|
||||
@Autowired
|
||||
QuestionService questionService;
|
||||
@Autowired
|
||||
CommentService commentService;
|
||||
|
||||
@GetMapping("/user/{uid}")
|
||||
public String userIndex(@PathVariable String uid, Model model){
|
||||
// 用户信息回填
|
||||
userInfoCallBack(uid,model);
|
||||
// 用户的博客列表
|
||||
Page<Blog> pageParam = new Page<>(1, 10);
|
||||
blogService.page(pageParam,new QueryWrapper<Blog>().eq("author_id", uid)
|
||||
.orderByDesc("gmt_create"));
|
||||
// 结果
|
||||
List<Blog> blogList = pageParam.getRecords();
|
||||
model.addAttribute("blogList",blogList);
|
||||
model.addAttribute("pageParam",pageParam);
|
||||
|
||||
return "user/index";
|
||||
}
|
||||
|
||||
@GetMapping("/user/blog/{uid}/{page}/{limit}")
|
||||
public String userIndexBlog(@PathVariable String uid,
|
||||
@PathVariable int page,
|
||||
@PathVariable int limit,
|
||||
Model model){
|
||||
// 用户信息回填
|
||||
userInfoCallBack(uid,model);
|
||||
// 用户的博客列表
|
||||
if (page < 1){
|
||||
page = 1;
|
||||
}
|
||||
Page<Blog> pageParam = new Page<>(page, limit);
|
||||
blogService.page(pageParam,new QueryWrapper<Blog>().eq("author_id", uid)
|
||||
.orderByDesc("gmt_create"));
|
||||
|
||||
// 结果
|
||||
List<Blog> blogList = pageParam.getRecords();
|
||||
model.addAttribute("blogList",blogList);
|
||||
model.addAttribute("pageParam",pageParam);
|
||||
|
||||
return "user/index";
|
||||
}
|
||||
|
||||
@GetMapping("/user/question/{uid}/{page}/{limit}")
|
||||
public String userIndexQuestion(@PathVariable String uid,
|
||||
@PathVariable int page,
|
||||
@PathVariable int limit,
|
||||
Model model){
|
||||
// 用户信息回填
|
||||
userInfoCallBack(uid,model);
|
||||
|
||||
//
|
||||
if (page < 1){
|
||||
page = 1;
|
||||
}
|
||||
Page<Question> pageParam = new Page<>(page, limit);
|
||||
questionService.page(pageParam,new QueryWrapper<Question>().eq("author_id", uid)
|
||||
.orderByDesc("gmt_create"));
|
||||
|
||||
// 结果
|
||||
List<Question> blogList = pageParam.getRecords();
|
||||
model.addAttribute("questionList",blogList);
|
||||
model.addAttribute("pageParam",pageParam);
|
||||
|
||||
return "user/user-question";
|
||||
}
|
||||
|
||||
@GetMapping("/user/comment/{uid}/{page}/{limit}")
|
||||
public String userIndexComment(@PathVariable String uid,
|
||||
@PathVariable int page,
|
||||
@PathVariable int limit,
|
||||
Model model){
|
||||
// 用户信息回填
|
||||
userInfoCallBack(uid,model);
|
||||
//
|
||||
if (page < 1){
|
||||
page = 1;
|
||||
}
|
||||
Page<Comment> pageParam = new Page<>(page, limit);
|
||||
commentService.page(pageParam,new QueryWrapper<Comment>().eq("user_id", uid)
|
||||
.orderByDesc("gmt_create"));
|
||||
|
||||
// 结果
|
||||
List<Comment> commentList = pageParam.getRecords();
|
||||
model.addAttribute("commentList",commentList);
|
||||
model.addAttribute("pageParam",pageParam);
|
||||
|
||||
return "user/user-comment";
|
||||
}
|
||||
|
||||
// 用户信息回填
|
||||
private void userInfoCallBack(String uid,Model model){
|
||||
UserInfo userInfo = userInfoService.getById(uid);
|
||||
model.addAttribute("userInfo",userInfo);
|
||||
if (userInfo.getHobby()!=null && !userInfo.getHobby().equals("")){
|
||||
String[] hobbys = userInfo.getHobby().split(",");
|
||||
model.addAttribute("infoHobbys",hobbys);
|
||||
}
|
||||
// 获取用户的问题,博客,回复数
|
||||
int blogCount = blogService.count(new QueryWrapper<Blog>().eq("author_id", uid));
|
||||
int questionCount = questionService.count(new QueryWrapper<Question>().eq("author_id", uid));
|
||||
int commentCount = commentService.count(new QueryWrapper<Comment>().eq("user_id", uid));
|
||||
model.addAttribute("blogCount",blogCount);
|
||||
model.addAttribute("questionCount",questionCount);
|
||||
model.addAttribute("commentCount",commentCount);
|
||||
|
||||
}
|
||||
|
||||
// 捐赠layer弹窗二维码
|
||||
@GetMapping("/user/donate/{uid}")
|
||||
@ResponseBody
|
||||
public String userLayerDonate(@PathVariable String uid){
|
||||
// todo: 数据库设计
|
||||
ArrayList<LayerPhotoData> layerPhotos = new ArrayList<>();
|
||||
|
||||
layerPhotos.add(new LayerPhotoData().setAlt("支付宝").setPid(1).setSrc("/images/donate/alipay.png").setThumb(""));
|
||||
layerPhotos.add(new LayerPhotoData().setAlt("微信").setPid(2).setSrc("/images/donate/wechat.jpg").setThumb(""));
|
||||
|
||||
LayerPhoto donate = new LayerPhoto().setTitle("赞赏").setId(666).setStart(1);
|
||||
donate.setData(layerPhotos);
|
||||
|
||||
String donateJsonString = JSONObject.toJSONString(donate);
|
||||
QuinnUtils.print(donateJsonString);
|
||||
return donateJsonString;
|
||||
}
|
||||
|
||||
// 更新头像
|
||||
@GetMapping("/user/update-avatar/{uid}")
|
||||
public String toUpdateAvatar(@PathVariable String uid,Model model){
|
||||
// 用户信息回填
|
||||
userInfoCallBack(uid,model);
|
||||
return "user/update-avatar";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
72
src/main/java/com/quinn/controller/UserInfoController.java
Normal file
72
src/main/java/com/quinn/controller/UserInfoController.java
Normal file
@@ -0,0 +1,72 @@
|
||||
package com.quinn.controller;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.quinn.pojo.Blog;
|
||||
import com.quinn.pojo.Comment;
|
||||
import com.quinn.pojo.Question;
|
||||
import com.quinn.pojo.UserInfo;
|
||||
import com.quinn.service.BlogService;
|
||||
import com.quinn.service.CommentService;
|
||||
import com.quinn.service.QuestionService;
|
||||
import com.quinn.service.UserInfoService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author 遇见狂神说
|
||||
* @since 2020-06-29
|
||||
*/
|
||||
@Controller
|
||||
public class UserInfoController {
|
||||
|
||||
@Autowired
|
||||
UserInfoService userInfoService;
|
||||
@Autowired
|
||||
BlogService blogService;
|
||||
@Autowired
|
||||
QuestionService questionService;
|
||||
@Autowired
|
||||
CommentService commentService;
|
||||
|
||||
// 更新用户资料
|
||||
@GetMapping("/userinfo/setting/{uid}")
|
||||
public String userSetting(@PathVariable String uid, Model model){
|
||||
// 用户信息回填
|
||||
userInfoCallBack(uid,model);
|
||||
// todo: 可扩展
|
||||
return "user/settings";
|
||||
}
|
||||
@PostMapping("/userinfo/update/{uid}")
|
||||
public String userInfo(@PathVariable String uid,UserInfo userInfo){
|
||||
// 获取用户信息;
|
||||
userInfoService.updateById(userInfo);
|
||||
return "redirect:/user/"+uid;
|
||||
}
|
||||
|
||||
// 用户信息回填
|
||||
private void userInfoCallBack(String uid,Model model){
|
||||
UserInfo userInfo = userInfoService.getById(uid);
|
||||
model.addAttribute("userInfo",userInfo);
|
||||
if (userInfo.getHobby()!=null && !userInfo.getHobby().equals("")){
|
||||
String[] hobbys = userInfo.getHobby().split(",");
|
||||
model.addAttribute("infoHobbys",hobbys);
|
||||
}
|
||||
// 获取用户的问题,博客,回复数
|
||||
int blogCount = blogService.count(new QueryWrapper<Blog>().eq("author_id", uid));
|
||||
int questionCount = questionService.count(new QueryWrapper<Question>().eq("author_id", uid));
|
||||
int commentCount = commentService.count(new QueryWrapper<Comment>().eq("user_id", uid));
|
||||
model.addAttribute("blogCount",blogCount);
|
||||
model.addAttribute("questionCount",questionCount);
|
||||
model.addAttribute("commentCount",commentCount);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user