作家专区开发实现

This commit is contained in:
xxy
2020-05-13 19:45:57 +08:00
parent 4878f17de8
commit 401d23871d
225 changed files with 42138 additions and 48 deletions

View File

@ -0,0 +1,121 @@
package com.java2nb.novel.controller;
import com.github.pagehelper.PageInfo;
import com.java2nb.novel.core.bean.ResultBean;
import com.java2nb.novel.core.enums.ResponseStatus;
import com.java2nb.novel.core.utils.BeanUtil;
import com.java2nb.novel.entity.Author;
import com.java2nb.novel.entity.Book;
import com.java2nb.novel.service.AuthorService;
import com.java2nb.novel.service.BookService;
import com.java2nb.novel.service.FriendLinkService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author 11797
*/
@RequestMapping("author")
@RestController
@Slf4j
@RequiredArgsConstructor
public class AuthorController extends BaseController{
private final AuthorService authorService;
private final BookService bookService;
/**
* 校验笔名是否存在
* */
@PostMapping("checkPenName")
public ResultBean checkPenName(String penName){
return ResultBean.ok(authorService.checkPenName(penName));
}
/**
* 作家发布小说分页列表查询
* */
@PostMapping("listBookByPage")
public ResultBean listBookByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "10") int pageSize ,HttpServletRequest request){
return ResultBean.ok(new PageInfo<>(bookService.listBookPageByUserId(getUserDetails(request).getId(),page,pageSize)
));
}
/**
* 发布小说
* */
@PostMapping("addBook")
public ResultBean addBook(Book book,HttpServletRequest request){
//查询作家信息
Author author = authorService.queryAuthor(getUserDetails(request).getId());
//判断作者状态是否正常
if(author.getStatus()==1){
//封禁状态,不能发布小说
return ResultBean.fail(ResponseStatus.AUTHOR_STATUS_FORBIDDEN);
}
//发布小说
bookService.addBook(book,author.getId(),author.getPenName());
return ResultBean.ok();
}
/**
* 更新小说状态,上架或下架
* */
@PostMapping("updateBookStatus")
public ResultBean updateBookStatus(Long bookId,Byte status,HttpServletRequest request){
//查询作家信息
Author author = authorService.queryAuthor(getUserDetails(request).getId());
//判断作者状态是否正常
if(author.getStatus()==1){
//封禁状态,不能发布小说
return ResultBean.fail(ResponseStatus.AUTHOR_STATUS_FORBIDDEN);
}
//更新小说状态,上架或下架
bookService.updateBookStatus(bookId,status,author.getId());
return ResultBean.ok();
}
/**
* 发布章节内容
* */
@PostMapping("addBookContent")
public ResultBean addBookContent(Long bookId,String indexName,String content,HttpServletRequest request){
//查询作家信息
Author author = authorService.queryAuthor(getUserDetails(request).getId());
//判断作者状态是否正常
if(author.getStatus()==1){
//封禁状态,不能发布小说
return ResultBean.fail(ResponseStatus.AUTHOR_STATUS_FORBIDDEN);
}
//发布章节内容
bookService.addBookContent(bookId,indexName,content,author.getId());
return ResultBean.ok();
}
}

View File

@ -1,19 +1,23 @@
package com.java2nb.novel.controller;
import com.java2nb.novel.core.bean.ResultBean;
import com.java2nb.novel.core.bean.UserDetails;
import com.java2nb.novel.core.utils.ThreadLocalUtil;
import com.java2nb.novel.entity.Book;
import com.java2nb.novel.entity.BookContent;
import com.java2nb.novel.entity.BookIndex;
import com.java2nb.novel.entity.News;
import com.java2nb.novel.entity.*;
import com.java2nb.novel.service.AuthorService;
import com.java2nb.novel.service.BookService;
import com.java2nb.novel.service.NewsService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import java.net.URLEncoder;
import java.util.List;
/**
@ -22,12 +26,14 @@ import java.util.List;
@Slf4j
@RequiredArgsConstructor
@Controller
public class PageController{
public class PageController extends BaseController{
private final BookService bookService;
private final NewsService newsService;
private final AuthorService authorService;
@RequestMapping("{url}.html")
public String module(@PathVariable("url") String url) {
@ -35,7 +41,22 @@ public class PageController{
}
@RequestMapping("{module}/{url}.html")
public String module2(@PathVariable("module") String module, @PathVariable("url") String url) {
public String module2(@PathVariable("module") String module, @PathVariable("url") String url,HttpServletRequest request) {
if(request.getRequestURI().startsWith("/author")) {
//访问作者专区
UserDetails user = getUserDetails(request);
if (user == null) {
//未登录
return "redirect:/user/login.html?originUrl=" + URLEncoder.encode(request.getRequestURL().toString());
}
boolean isAuthor = authorService.isAuthor(user.getId());
if (!isAuthor) {
return "redirect:/author/register.html" ;
}
}
return module + "/" + url;
}
@ -141,4 +162,30 @@ public class PageController{
return "about/news_info";
}
/**
* 作者注册页面
* */
@RequestMapping("author/register.html")
public String authorRegister(Author author, HttpServletRequest request, Model model){
UserDetails user = getUserDetails(request);
if(user == null){
//未登录
return "redirect:/user/login.html?originUrl=/author/register.html";
}
if(StringUtils.isNotBlank(author.getInviteCode())) {
//提交作者注册信息
String errorInfo = authorService.register(user.getId(), author);
if(StringUtils.isBlank(errorInfo)){
//注册成功
return "redirect:/author/index.html";
}
model.addAttribute("LabErr",errorInfo);
model.addAttribute("author",author);
}
return "author/register";
}
}