From 45fdb58ab3c38689358bf4434f1255ddf4a3a3df Mon Sep 17 00:00:00 2001 From: xiongxiaoyang <773861846@qq.com> Date: Mon, 23 May 2022 12:40:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=B0=8F=E8=AF=B4?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/author/AuthorController.java | 12 ++++ .../xxyopen/novel/dto/AuthorInfoDto.java | 2 + .../xxyopen/novel/dto/req/BookAddReqDto.java | 57 +++++++++++++++++++ .../novel/manager/AuthorInfoCacheManager.java | 1 + .../xxyopen/novel/service/BookService.java | 8 +++ .../novel/service/impl/BookServiceImpl.java | 33 +++++++++-- 6 files changed, 109 insertions(+), 4 deletions(-) create mode 100644 src/main/java/io/github/xxyopen/novel/dto/req/BookAddReqDto.java diff --git a/src/main/java/io/github/xxyopen/novel/controller/author/AuthorController.java b/src/main/java/io/github/xxyopen/novel/controller/author/AuthorController.java index d3a806c..ca5ef90 100644 --- a/src/main/java/io/github/xxyopen/novel/controller/author/AuthorController.java +++ b/src/main/java/io/github/xxyopen/novel/controller/author/AuthorController.java @@ -4,7 +4,9 @@ import io.github.xxyopen.novel.core.auth.UserHolder; import io.github.xxyopen.novel.core.common.resp.RestResp; import io.github.xxyopen.novel.core.constant.ApiRouterConsts; import io.github.xxyopen.novel.dto.req.AuthorRegisterReqDto; +import io.github.xxyopen.novel.dto.req.BookAddReqDto; import io.github.xxyopen.novel.service.AuthorService; +import io.github.xxyopen.novel.service.BookService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; @@ -24,6 +26,8 @@ public class AuthorController { private final AuthorService authorService; + private final BookService bookService; + /** * 作家注册接口 */ @@ -33,4 +37,12 @@ public class AuthorController { return authorService.register(dto); } + /** + * 小说发布接口 + */ + @PostMapping("book") + public RestResp publishBook(@Valid @RequestBody BookAddReqDto dto) { + return bookService.saveBook(dto); + } + } diff --git a/src/main/java/io/github/xxyopen/novel/dto/AuthorInfoDto.java b/src/main/java/io/github/xxyopen/novel/dto/AuthorInfoDto.java index 724ee64..d589b0e 100644 --- a/src/main/java/io/github/xxyopen/novel/dto/AuthorInfoDto.java +++ b/src/main/java/io/github/xxyopen/novel/dto/AuthorInfoDto.java @@ -21,6 +21,8 @@ public class AuthorInfoDto implements Serializable { private Long id; + private String penName; + private Integer status; } diff --git a/src/main/java/io/github/xxyopen/novel/dto/req/BookAddReqDto.java b/src/main/java/io/github/xxyopen/novel/dto/req/BookAddReqDto.java new file mode 100644 index 0000000..f4ae0fa --- /dev/null +++ b/src/main/java/io/github/xxyopen/novel/dto/req/BookAddReqDto.java @@ -0,0 +1,57 @@ +package io.github.xxyopen.novel.dto.req; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * 小说发布 请求DTO + * + * @author xiongxiaoyang + * @date 2022/5/23 + */ +@Data +public class BookAddReqDto { + + /** + * 作品方向;0-男频 1-女频 + */ + @NotNull + private Integer workDirection; + + /** + * 类别ID + */ + @NotNull + private Long categoryId; + + /** + * 类别名 + */ + @NotBlank + private String categoryName; + + /** + * 小说封面地址 + */ + @NotBlank + private String picUrl; + + /** + * 小说名 + */ + @NotBlank + private String bookName; + + /** + * 书籍描述 + */ + @NotBlank + private String bookDesc; + + /** + * 是否收费;1-收费 0-免费 + */ + @NotNull + private Integer isVip; +} diff --git a/src/main/java/io/github/xxyopen/novel/manager/AuthorInfoCacheManager.java b/src/main/java/io/github/xxyopen/novel/manager/AuthorInfoCacheManager.java index 871503f..cf099a0 100644 --- a/src/main/java/io/github/xxyopen/novel/manager/AuthorInfoCacheManager.java +++ b/src/main/java/io/github/xxyopen/novel/manager/AuthorInfoCacheManager.java @@ -41,6 +41,7 @@ public class AuthorInfoCacheManager { } return AuthorInfoDto.builder() .id(authorInfo.getId()) + .penName(authorInfo.getPenName()) .status(authorInfo.getStatus()).build(); } diff --git a/src/main/java/io/github/xxyopen/novel/service/BookService.java b/src/main/java/io/github/xxyopen/novel/service/BookService.java index a4d4841..c236603 100644 --- a/src/main/java/io/github/xxyopen/novel/service/BookService.java +++ b/src/main/java/io/github/xxyopen/novel/service/BookService.java @@ -2,6 +2,7 @@ package io.github.xxyopen.novel.service; import io.github.xxyopen.novel.core.common.resp.PageRespDto; import io.github.xxyopen.novel.core.common.resp.RestResp; +import io.github.xxyopen.novel.dto.req.BookAddReqDto; import io.github.xxyopen.novel.dto.req.BookSearchReqDto; import io.github.xxyopen.novel.dto.req.UserCommentReqDto; import io.github.xxyopen.novel.dto.resp.*; @@ -150,4 +151,11 @@ public interface BookService { * @return void * */ RestResp updateComment(Long userId, Long id, String content); + + /** + * 小说发布 + * @param dto 小说信息 + * @return void + * */ + RestResp saveBook(BookAddReqDto dto); } diff --git a/src/main/java/io/github/xxyopen/novel/service/impl/BookServiceImpl.java b/src/main/java/io/github/xxyopen/novel/service/impl/BookServiceImpl.java index c67dd78..d82035f 100644 --- a/src/main/java/io/github/xxyopen/novel/service/impl/BookServiceImpl.java +++ b/src/main/java/io/github/xxyopen/novel/service/impl/BookServiceImpl.java @@ -2,17 +2,17 @@ package io.github.xxyopen.novel.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.github.xxyopen.novel.core.auth.UserHolder; import io.github.xxyopen.novel.core.common.constant.ErrorCodeEnum; import io.github.xxyopen.novel.core.common.resp.PageRespDto; import io.github.xxyopen.novel.core.common.resp.RestResp; import io.github.xxyopen.novel.core.constant.DatabaseConsts; -import io.github.xxyopen.novel.dao.entity.BookChapter; -import io.github.xxyopen.novel.dao.entity.BookComment; -import io.github.xxyopen.novel.dao.entity.BookInfo; -import io.github.xxyopen.novel.dao.entity.UserInfo; +import io.github.xxyopen.novel.dao.entity.*; import io.github.xxyopen.novel.dao.mapper.BookChapterMapper; import io.github.xxyopen.novel.dao.mapper.BookCommentMapper; import io.github.xxyopen.novel.dao.mapper.BookInfoMapper; +import io.github.xxyopen.novel.dto.AuthorInfoDto; +import io.github.xxyopen.novel.dto.req.BookAddReqDto; import io.github.xxyopen.novel.dto.req.BookSearchReqDto; import io.github.xxyopen.novel.dto.req.UserCommentReqDto; import io.github.xxyopen.novel.dto.resp.*; @@ -50,6 +50,8 @@ public class BookServiceImpl implements BookService { private final BookContentCacheManager bookContentCacheManager; + private final AuthorInfoCacheManager authorInfoCacheManager; + private final BookInfoMapper bookInfoMapper; private final BookChapterMapper bookChapterMapper; @@ -281,6 +283,29 @@ public class BookServiceImpl implements BookService { return RestResp.ok(); } + @Override + public RestResp saveBook(BookAddReqDto dto) { + BookInfo bookInfo = new BookInfo(); + // 设置作家信息 + AuthorInfoDto author = authorInfoCacheManager.getAuthor(UserHolder.getUserId()); + bookInfo.setAuthorId(author.getId()); + bookInfo.setAuthorName(author.getPenName()); + // 设置其他信息 + bookInfo.setWorkDirection(dto.getWorkDirection()); + bookInfo.setCategoryId(dto.getCategoryId()); + bookInfo.setCategoryName(dto.getCategoryName()); + bookInfo.setBookName(dto.getBookName()); + bookInfo.setPicUrl(dto.getPicUrl()); + bookInfo.setBookDesc(dto.getBookDesc()); + bookInfo.setIsVip(dto.getIsVip()); + bookInfo.setScore(0); + bookInfo.setCreateTime(LocalDateTime.now()); + bookInfo.setUpdateTime(LocalDateTime.now()); + // 保存小说信息 + bookInfoMapper.insert(bookInfo); + return RestResp.ok(); + } + @Override public RestResp getBookContentAbout(Long chapterId) { // 查询章节信息