From dec50ab0a0bc0f0992633353327a6591ff0c72b7 Mon Sep 17 00:00:00 2001
From: xiongxiaoyang <773861846@qq.com>
Date: Mon, 27 Jun 2022 11:17:49 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E9=9B=86=E6=88=90=20springdoc-openapi?=
=?UTF-8?q?=20=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=20API=20=E6=96=87?=
=?UTF-8?q?=E6=A1=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 19 ++++++++++
.../xxyopen/novel/NovelApplication.java | 10 ++++-
.../controller/author/AuthorController.java | 20 ++++++++--
.../controller/front/BookController.java | 37 ++++++++++++++-----
.../controller/front/HomeController.java | 5 +++
.../controller/front/NewsController.java | 8 +++-
.../controller/front/ResourceController.java | 8 +++-
.../controller/front/SearchController.java | 7 +++-
.../controller/front/UserController.java | 25 +++++++++++--
.../novel/core/common/req/PageReqDto.java | 4 ++
.../novel/core/common/resp/RestResp.java | 4 ++
.../novel/dto/req/AuthorRegisterReqDto.java | 20 ++++++----
.../xxyopen/novel/dto/req/BookAddReqDto.java | 8 ++++
.../novel/dto/req/BookSearchReqDto.java | 10 +++++
.../novel/dto/req/ChapterAddReqDto.java | 5 +++
.../novel/dto/req/UserCommentReqDto.java | 3 ++
.../novel/dto/req/UserInfoUptReqDto.java | 4 ++
.../novel/dto/req/UserLoginReqDto.java | 3 ++
.../novel/dto/req/UserRegisterReqDto.java | 5 +++
.../novel/dto/resp/BookCategoryRespDto.java | 3 ++
.../dto/resp/BookChapterAboutRespDto.java | 3 ++
.../novel/dto/resp/BookChapterRespDto.java | 8 ++++
.../novel/dto/resp/BookCommentRespDto.java | 9 +++++
.../dto/resp/BookContentAboutRespDto.java | 4 ++
.../novel/dto/resp/BookInfoRespDto.java | 17 +++++++++
.../novel/dto/resp/BookRankRespDto.java | 11 ++++++
.../novel/dto/resp/HomeBookRespDto.java | 7 ++++
.../novel/dto/resp/HomeFriendLinkRespDto.java | 3 ++
.../novel/dto/resp/ImgVerifyCodeRespDto.java | 3 ++
.../novel/dto/resp/NewsInfoRespDto.java | 8 ++++
.../novel/dto/resp/UserInfoRespDto.java | 4 ++
.../novel/dto/resp/UserLoginRespDto.java | 4 ++
.../novel/dto/resp/UserRegisterRespDto.java | 3 ++
33 files changed, 264 insertions(+), 28 deletions(-)
diff --git a/pom.xml b/pom.xml
index 9b69ada..73fbb17 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,6 +24,7 @@
5.1.1
3.17.4
+
org.springframework.boot
@@ -174,6 +175,13 @@
spring-boot-starter-aop
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ 2.0.0-M4-SNAPSHOT
+
+
mysql
mysql-connector-java
@@ -240,6 +248,17 @@
false
+
+ sonatype-nexus-snapshots-2
+ Sonatype Nexus Snapshots 2
+ https://s01.oss.sonatype.org/content/repositories/snapshots/
+
+ true
+
+
+ false
+
+
diff --git a/src/main/java/io/github/xxyopen/novel/NovelApplication.java b/src/main/java/io/github/xxyopen/novel/NovelApplication.java
index c0e7072..cf31ddd 100644
--- a/src/main/java/io/github/xxyopen/novel/NovelApplication.java
+++ b/src/main/java/io/github/xxyopen/novel/NovelApplication.java
@@ -1,5 +1,12 @@
package io.github.xxyopen.novel;
+import io.github.xxyopen.novel.core.constant.SystemConfigConsts;
+import io.swagger.v3.oas.annotations.OpenAPIDefinition;
+import io.swagger.v3.oas.annotations.enums.SecuritySchemeIn;
+import io.swagger.v3.oas.annotations.enums.SecuritySchemeType;
+import io.swagger.v3.oas.annotations.info.Info;
+import io.swagger.v3.oas.annotations.info.License;
+import io.swagger.v3.oas.annotations.security.SecurityScheme;
import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.CommandLineRunner;
@@ -13,10 +20,11 @@ import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
-import org.springframework.security.web.util.matcher.AnyRequestMatcher;
import java.util.Map;
+@OpenAPIDefinition(info = @Info(title = "novel 项目接口文档", version = "v3.2.0", license = @License(name = "Apache 2.0", url = "https://www.apache.org/licenses/LICENSE-2.0")))
+@SecurityScheme(type = SecuritySchemeType.APIKEY, in = SecuritySchemeIn.HEADER, name = SystemConfigConsts.HTTP_AUTH_HEADER_NAME, description = "登录 token")
@SpringBootApplication
@MapperScan("io.github.xxyopen.novel.dao.mapper")
@EnableCaching
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 935da7c..f681a30 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
@@ -5,6 +5,7 @@ import io.github.xxyopen.novel.core.common.req.PageReqDto;
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.ApiRouterConsts;
+import io.github.xxyopen.novel.core.constant.SystemConfigConsts;
import io.github.xxyopen.novel.dto.req.AuthorRegisterReqDto;
import io.github.xxyopen.novel.dto.req.BookAddReqDto;
import io.github.xxyopen.novel.dto.req.ChapterAddReqDto;
@@ -12,8 +13,13 @@ import io.github.xxyopen.novel.dto.resp.BookChapterRespDto;
import io.github.xxyopen.novel.dto.resp.BookInfoRespDto;
import io.github.xxyopen.novel.service.AuthorService;
import io.github.xxyopen.novel.service.BookService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
+import org.springdoc.core.annotations.ParameterObject;
import org.springframework.web.bind.annotation.*;
/**
@@ -22,6 +28,8 @@ import org.springframework.web.bind.annotation.*;
* @author xiongxiaoyang
* @date 2022/5/23
*/
+@Tag(name = "author", description = "作家后台-作者模块")
+@SecurityRequirement(name = SystemConfigConsts.HTTP_AUTH_HEADER_NAME)
@RestController
@RequestMapping(ApiRouterConsts.API_AUTHOR_URL_PREFIX)
@RequiredArgsConstructor
@@ -34,6 +42,7 @@ public class AuthorController {
/**
* 作家注册接口
*/
+ @Operation(description = "作家注册接口")
@PostMapping("register")
public RestResp register(@Valid @RequestBody AuthorRegisterReqDto dto) {
dto.setUserId(UserHolder.getUserId());
@@ -43,6 +52,7 @@ public class AuthorController {
/**
* 查询作家状态接口
*/
+ @Operation(description = "作家状态查询接口")
@GetMapping("status")
public RestResp getStatus() {
return authorService.getStatus(UserHolder.getUserId());
@@ -51,6 +61,7 @@ public class AuthorController {
/**
* 小说发布接口
*/
+ @Operation(description = "小说发布接口")
@PostMapping("book")
public RestResp publishBook(@Valid @RequestBody BookAddReqDto dto) {
return bookService.saveBook(dto);
@@ -59,16 +70,18 @@ public class AuthorController {
/**
* 小说发布列表查询接口
*/
+ @Operation(description = "小说发布列表查询接口")
@GetMapping("books")
- public RestResp> listBooks(PageReqDto dto) {
+ public RestResp> listBooks(@ParameterObject PageReqDto dto) {
return bookService.listAuthorBooks(dto);
}
/**
* 小说章节发布接口
*/
+ @Operation(description = "小说章节发布接口")
@PostMapping("book/chapter/{bookId}")
- public RestResp publishBookChapter(@PathVariable("bookId") Long bookId, @Valid @RequestBody ChapterAddReqDto dto) {
+ public RestResp publishBookChapter(@Parameter(description = "小说ID") @PathVariable("bookId") Long bookId, @Valid @RequestBody ChapterAddReqDto dto) {
dto.setBookId(bookId);
return bookService.saveBookChapter(dto);
}
@@ -76,8 +89,9 @@ public class AuthorController {
/**
* 小说章节发布列表查询接口
*/
+ @Operation(description = "小说章节发布列表查询接口")
@GetMapping("book/chapters/{bookId}")
- public RestResp> listBookChapters(@PathVariable("bookId") Long bookId, PageReqDto dto) {
+ public RestResp> listBookChapters(@Parameter(description = "小说ID") @PathVariable("bookId") Long bookId, PageReqDto dto) {
return bookService.listBookChapters(bookId, dto);
}
diff --git a/src/main/java/io/github/xxyopen/novel/controller/front/BookController.java b/src/main/java/io/github/xxyopen/novel/controller/front/BookController.java
index b39322d..06bbd46 100644
--- a/src/main/java/io/github/xxyopen/novel/controller/front/BookController.java
+++ b/src/main/java/io/github/xxyopen/novel/controller/front/BookController.java
@@ -4,6 +4,9 @@ import io.github.xxyopen.novel.core.common.resp.RestResp;
import io.github.xxyopen.novel.core.constant.ApiRouterConsts;
import io.github.xxyopen.novel.dto.resp.*;
import io.github.xxyopen.novel.service.BookService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@@ -16,6 +19,7 @@ import java.util.List;
* @author xiongxiaoyang
* @date 2022/5/14
*/
+@Tag(name = "book", description = "前台门户-小说模块")
@RestController
@RequestMapping(ApiRouterConsts.API_FRONT_BOOK_URL_PREFIX)
@RequiredArgsConstructor
@@ -26,78 +30,88 @@ public class BookController {
/**
* 小说分类列表查询接口
*/
+ @Operation(description = "小说分类列表查询接口")
@GetMapping("category/list")
- public RestResp> listCategory(Integer workDirection) {
+ public RestResp> listCategory(@Parameter(description = "作品方向",required = true) Integer workDirection) {
return bookService.listCategory(workDirection);
}
/**
* 小说信息查询接口
*/
+ @Operation(description = "小说信息查询接口")
@GetMapping("{id}")
- public RestResp getBookById(@PathVariable("id") Long bookId) {
+ public RestResp getBookById(@Parameter(description = "小说 ID") @PathVariable("id") Long bookId) {
return bookService.getBookById(bookId);
}
/**
* 增加小说点击量接口
*/
+ @Operation(description = "增加小说点击量接口")
@PostMapping("visit")
- public RestResp addVisitCount(Long bookId) {
+ public RestResp addVisitCount(@Parameter(description = "小说ID") Long bookId) {
return bookService.addVisitCount(bookId);
}
/**
* 小说最新章节相关信息查询接口
*/
+ @Operation(description = "小说最新章节相关信息查询接口")
@GetMapping("last_chapter/about")
- public RestResp getLastChapterAbout(Long bookId) {
+ public RestResp getLastChapterAbout(@Parameter(description = "小说ID") Long bookId) {
return bookService.getLastChapterAbout(bookId);
}
/**
* 小说推荐列表查询接口
*/
+ @Operation(description = "小说推荐列表查询接口")
@GetMapping("rec_list")
- public RestResp> listRecBooks(Long bookId) throws NoSuchAlgorithmException {
+ public RestResp> listRecBooks(@Parameter(description = "小说ID") Long bookId) throws NoSuchAlgorithmException {
return bookService.listRecBooks(bookId);
}
/**
* 小说章节列表查询接口
*/
+ @Operation(description = "小说章节列表查询接口")
@GetMapping("chapter/list")
- public RestResp> listChapters(Long bookId) {
+ public RestResp> listChapters(@Parameter(description = "小说ID") Long bookId) {
return bookService.listChapters(bookId);
}
/**
* 小说内容相关信息查询接口
*/
+ @Operation(description = "小说内容相关信息查询接口")
@GetMapping("content/{chapterId}")
- public RestResp getBookContentAbout(@PathVariable("chapterId") Long chapterId) {
+ public RestResp getBookContentAbout(@Parameter(description = "章节ID") @PathVariable("chapterId") Long chapterId) {
return bookService.getBookContentAbout(chapterId);
}
/**
* 获取上一章节ID接口
*/
+ @Operation(description = "获取上一章节ID接口")
@GetMapping("pre_chapter_id/{chapterId}")
- public RestResp getPreChapterId(@PathVariable("chapterId") Long chapterId) {
+ public RestResp getPreChapterId(@Parameter(description = "章节ID") @PathVariable("chapterId") Long chapterId) {
return bookService.getPreChapterId(chapterId);
}
/**
* 获取下一章节ID接口
*/
+ @Operation(description = "获取下一章节ID接口")
@GetMapping("next_chapter_id/{chapterId}")
- public RestResp getNextChapterId(@PathVariable("chapterId") Long chapterId) {
+ public RestResp getNextChapterId(@Parameter(description = "章节ID") @PathVariable("chapterId") Long chapterId) {
return bookService.getNextChapterId(chapterId);
}
/**
* 小说点击榜查询接口
*/
+ @Operation(description = "小说点击榜查询接口")
@GetMapping("visit_rank")
public RestResp> listVisitRankBooks() {
return bookService.listVisitRankBooks();
@@ -106,6 +120,7 @@ public class BookController {
/**
* 小说新书榜查询接口
*/
+ @Operation(description = "小说新书榜查询接口")
@GetMapping("newest_rank")
public RestResp> listNewestRankBooks() {
return bookService.listNewestRankBooks();
@@ -114,6 +129,7 @@ public class BookController {
/**
* 小说更新榜查询接口
*/
+ @Operation(description = "小说更新榜查询接口")
@GetMapping("update_rank")
public RestResp> listUpdateRankBooks() {
return bookService.listUpdateRankBooks();
@@ -122,8 +138,9 @@ public class BookController {
/**
* 小说最新评论查询接口
*/
+ @Operation(description = "小说最新评论查询接口")
@GetMapping("comment/newest_list")
- public RestResp listNewestComments(Long bookId) {
+ public RestResp listNewestComments(@Parameter(description = "小说ID") Long bookId) {
return bookService.listNewestComments(bookId);
}
diff --git a/src/main/java/io/github/xxyopen/novel/controller/front/HomeController.java b/src/main/java/io/github/xxyopen/novel/controller/front/HomeController.java
index 9dddca2..94f14f3 100644
--- a/src/main/java/io/github/xxyopen/novel/controller/front/HomeController.java
+++ b/src/main/java/io/github/xxyopen/novel/controller/front/HomeController.java
@@ -5,6 +5,8 @@ import io.github.xxyopen.novel.core.common.resp.RestResp;
import io.github.xxyopen.novel.dto.resp.HomeBookRespDto;
import io.github.xxyopen.novel.dto.resp.HomeFriendLinkRespDto;
import io.github.xxyopen.novel.service.HomeService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -18,6 +20,7 @@ import java.util.List;
* @author xiongxiaoyang
* @date 2022/5/12
*/
+@Tag(name = "home", description = "前台门户-首页模块")
@RestController
@RequestMapping(ApiRouterConsts.API_FRONT_HOME_URL_PREFIX)
@RequiredArgsConstructor
@@ -28,6 +31,7 @@ public class HomeController {
/**
* 首页小说推荐查询接口
*/
+ @Operation(description = "首页小说推荐查询接口")
@GetMapping("books")
public RestResp> listHomeBooks() {
return homeService.listHomeBooks();
@@ -36,6 +40,7 @@ public class HomeController {
/**
* 首页友情链接列表查询接口
*/
+ @Operation(description = "首页友情链接列表查询接口")
@GetMapping("friend_Link/list")
public RestResp> listHomeFriendLinks() {
return homeService.listHomeFriendLinks();
diff --git a/src/main/java/io/github/xxyopen/novel/controller/front/NewsController.java b/src/main/java/io/github/xxyopen/novel/controller/front/NewsController.java
index db7bac3..eb4eaf0 100644
--- a/src/main/java/io/github/xxyopen/novel/controller/front/NewsController.java
+++ b/src/main/java/io/github/xxyopen/novel/controller/front/NewsController.java
@@ -4,6 +4,9 @@ import io.github.xxyopen.novel.core.constant.ApiRouterConsts;
import io.github.xxyopen.novel.core.common.resp.RestResp;
import io.github.xxyopen.novel.dto.resp.NewsInfoRespDto;
import io.github.xxyopen.novel.service.NewsService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -18,6 +21,7 @@ import java.util.List;
* @author xiongxiaoyang
* @date 2022/5/12
*/
+@Tag(name = "news", description = "前台门户-新闻模块")
@RestController
@RequestMapping(ApiRouterConsts.API_FRONT_NEWS_URL_PREFIX)
@RequiredArgsConstructor
@@ -28,6 +32,7 @@ public class NewsController {
/**
* 最新新闻列表查询接口
*/
+ @Operation(description = "最新新闻列表查询接口")
@GetMapping("latest_list")
public RestResp> listLatestNews() {
return newsService.listLatestNews();
@@ -36,8 +41,9 @@ public class NewsController {
/**
* 新闻信息查询接口
*/
+ @Operation(description = "新闻信息查询接口")
@GetMapping("{id}")
- public RestResp getNews(@PathVariable Long id) {
+ public RestResp getNews(@Parameter(description = "新闻ID") @PathVariable Long id) {
return newsService.getNews(id);
}
}
diff --git a/src/main/java/io/github/xxyopen/novel/controller/front/ResourceController.java b/src/main/java/io/github/xxyopen/novel/controller/front/ResourceController.java
index edec679..b58654d 100644
--- a/src/main/java/io/github/xxyopen/novel/controller/front/ResourceController.java
+++ b/src/main/java/io/github/xxyopen/novel/controller/front/ResourceController.java
@@ -4,6 +4,9 @@ import io.github.xxyopen.novel.core.common.resp.RestResp;
import io.github.xxyopen.novel.core.constant.ApiRouterConsts;
import io.github.xxyopen.novel.dto.resp.ImgVerifyCodeRespDto;
import io.github.xxyopen.novel.service.ResourceService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -16,6 +19,7 @@ import java.io.IOException;
* @author xiongxiaoyang
* @date 2022/5/17
*/
+@Tag(name = "resource", description = "前台门户-资源模块")
@RestController
@RequestMapping(ApiRouterConsts.API_FRONT_RESOURCE_URL_PREFIX)
@RequiredArgsConstructor
@@ -26,6 +30,7 @@ public class ResourceController {
/**
* 获取图片验证码接口
*/
+ @Operation(description = "获取图片验证码接口")
@GetMapping("img_verify_code")
public RestResp getImgVerifyCode() throws IOException {
return resourceService.getImgVerifyCode();
@@ -34,8 +39,9 @@ public class ResourceController {
/**
* 图片上传接口
* */
+ @Operation(description = "图片上传接口")
@PostMapping("/image")
- RestResp uploadImage(@RequestParam("file") MultipartFile file) {
+ RestResp uploadImage(@Parameter(description = "上传文件") @RequestParam("file") MultipartFile file) {
return resourceService.uploadImage(file);
}
diff --git a/src/main/java/io/github/xxyopen/novel/controller/front/SearchController.java b/src/main/java/io/github/xxyopen/novel/controller/front/SearchController.java
index 3d5ad4e..e8a17a7 100644
--- a/src/main/java/io/github/xxyopen/novel/controller/front/SearchController.java
+++ b/src/main/java/io/github/xxyopen/novel/controller/front/SearchController.java
@@ -6,7 +6,10 @@ import io.github.xxyopen.novel.core.constant.ApiRouterConsts;
import io.github.xxyopen.novel.dto.req.BookSearchReqDto;
import io.github.xxyopen.novel.dto.resp.BookInfoRespDto;
import io.github.xxyopen.novel.service.SearchService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
+import org.springdoc.core.annotations.ParameterObject;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -17,6 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
* @author xiongxiaoyang
* @date 2022/5/27
*/
+@Tag(name = "search", description = "前台门户-搜索模块")
@RestController
@RequestMapping(ApiRouterConsts.API_FRONT_SEARCH_URL_PREFIX)
@RequiredArgsConstructor
@@ -27,8 +31,9 @@ public class SearchController {
/**
* 小说搜索接口
*/
+ @Operation(description = "小说搜索接口")
@GetMapping("books")
- public RestResp> searchBooks(BookSearchReqDto condition) {
+ public RestResp> searchBooks(@ParameterObject BookSearchReqDto condition) {
return searchService.searchBooks(condition);
}
diff --git a/src/main/java/io/github/xxyopen/novel/controller/front/UserController.java b/src/main/java/io/github/xxyopen/novel/controller/front/UserController.java
index 39f597a..f5936ab 100644
--- a/src/main/java/io/github/xxyopen/novel/controller/front/UserController.java
+++ b/src/main/java/io/github/xxyopen/novel/controller/front/UserController.java
@@ -3,6 +3,7 @@ package io.github.xxyopen.novel.controller.front;
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.core.constant.SystemConfigConsts;
import io.github.xxyopen.novel.dto.req.UserCommentReqDto;
import io.github.xxyopen.novel.dto.req.UserInfoUptReqDto;
import io.github.xxyopen.novel.dto.req.UserLoginReqDto;
@@ -12,6 +13,10 @@ import io.github.xxyopen.novel.dto.resp.UserLoginRespDto;
import io.github.xxyopen.novel.dto.resp.UserRegisterRespDto;
import io.github.xxyopen.novel.service.BookService;
import io.github.xxyopen.novel.service.UserService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
@@ -22,6 +27,8 @@ import org.springframework.web.bind.annotation.*;
* @author xiongxiaoyang
* @date 2022/5/17
*/
+@Tag(name = "user", description = "前台门户-会员模块")
+@SecurityRequirement(name = SystemConfigConsts.HTTP_AUTH_HEADER_NAME)
@RestController
@RequestMapping(ApiRouterConsts.API_FRONT_USER_URL_PREFIX)
@RequiredArgsConstructor
@@ -34,6 +41,7 @@ public class UserController {
/**
* 用户注册接口
*/
+ @Operation(description = "用户注册接口")
@PostMapping("register")
public RestResp register(@Valid @RequestBody UserRegisterReqDto dto) {
return userService.register(dto);
@@ -42,6 +50,7 @@ public class UserController {
/**
* 用户登录接口
*/
+ @Operation(description = "用户登录接口")
@PostMapping("login")
public RestResp login(@Valid @RequestBody UserLoginReqDto dto) {
return userService.login(dto);
@@ -50,6 +59,7 @@ public class UserController {
/**
* 用户信息查询接口
*/
+ @Operation(description = "用户信息查询接口")
@GetMapping
public RestResp getUserInfo() {
return userService.getUserInfo(UserHolder.getUserId());
@@ -58,6 +68,7 @@ public class UserController {
/**
* 用户信息修改接口
*/
+ @Operation(description = "用户信息修改接口")
@PutMapping
public RestResp updateUserInfo(@Valid @RequestBody UserInfoUptReqDto dto) {
dto.setUserId(UserHolder.getUserId());
@@ -67,6 +78,7 @@ public class UserController {
/**
* 用户反馈提交接口
*/
+ @Operation(description = "用户反馈提交接口")
@PostMapping("feedback")
public RestResp submitFeedback(@RequestBody String content) {
return userService.saveFeedback(UserHolder.getUserId(), content);
@@ -75,14 +87,16 @@ public class UserController {
/**
* 用户反馈删除接口
*/
+ @Operation(description = "用户反馈删除接口")
@DeleteMapping("feedback/{id}")
- public RestResp deleteFeedback(@PathVariable Long id) {
+ public RestResp deleteFeedback(@Parameter(description = "反馈ID") @PathVariable Long id) {
return userService.deleteFeedback(UserHolder.getUserId(), id);
}
/**
* 发表评论接口
*/
+ @Operation(description = "发表评论接口")
@PostMapping("comment")
public RestResp comment(@Valid @RequestBody UserCommentReqDto dto) {
dto.setUserId(UserHolder.getUserId());
@@ -92,16 +106,18 @@ public class UserController {
/**
* 修改评论接口
*/
+ @Operation(description = "修改评论接口")
@PutMapping("comment/{id}")
- public RestResp updateComment(@PathVariable Long id, String content) {
+ public RestResp updateComment(@Parameter(description = "评论ID") @PathVariable Long id, String content) {
return bookService.updateComment(UserHolder.getUserId(), id, content);
}
/**
* 删除评论接口
*/
+ @Operation(description = "删除评论接口")
@DeleteMapping("comment/{id}")
- public RestResp deleteComment(@PathVariable Long id) {
+ public RestResp deleteComment(@Parameter(description = "评论ID") @PathVariable Long id) {
return bookService.deleteComment(UserHolder.getUserId(), id);
}
@@ -110,8 +126,9 @@ public class UserController {
* 0-不在书架
* 1-已在书架
*/
+ @Operation(description = "查询书架状态接口")
@GetMapping("bookshelf_status")
- public RestResp getBookshelfStatus(@RequestBody String bookId) {
+ public RestResp getBookshelfStatus(@Parameter(description = "小说ID") String bookId) {
return userService.getBookshelfStatus(UserHolder.getUserId(), bookId);
}
diff --git a/src/main/java/io/github/xxyopen/novel/core/common/req/PageReqDto.java b/src/main/java/io/github/xxyopen/novel/core/common/req/PageReqDto.java
index 3d67116..b881301 100644
--- a/src/main/java/io/github/xxyopen/novel/core/common/req/PageReqDto.java
+++ b/src/main/java/io/github/xxyopen/novel/core/common/req/PageReqDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.core.common.req;
+import io.swagger.v3.oas.annotations.Parameter;
import lombok.Data;
/**
@@ -14,17 +15,20 @@ public class PageReqDto {
/**
* 请求页码,默认第 1 页
* */
+ @Parameter(description = "请求页码,默认第 1 页")
private int pageNum = 1;
/**
* 每页大小,默认每页 10 条
* */
+ @Parameter(description = "每页大小,默认每页 10 条")
private int pageSize = 10;
/**
* 是否查询所有,默认不查所有
* 为 true 时,pageNum 和 pageSize 无效
* */
+ @Parameter(hidden = true)
private boolean fetchAll = false;
}
diff --git a/src/main/java/io/github/xxyopen/novel/core/common/resp/RestResp.java b/src/main/java/io/github/xxyopen/novel/core/common/resp/RestResp.java
index f07af5e..3a6ee8e 100644
--- a/src/main/java/io/github/xxyopen/novel/core/common/resp/RestResp.java
+++ b/src/main/java/io/github/xxyopen/novel/core/common/resp/RestResp.java
@@ -1,6 +1,7 @@
package io.github.xxyopen.novel.core.common.resp;
import io.github.xxyopen.novel.core.common.constant.ErrorCodeEnum;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import java.util.Objects;
@@ -17,16 +18,19 @@ public class RestResp {
/**
* 响应码
*/
+ @Schema(description = "错误码,00000-没有错误")
private String code;
/**
* 响应消息
*/
+ @Schema(description = "响应消息")
private String message;
/**
* 响应数据
*/
+ @Schema(description = "响应数据")
private T data;
private RestResp() {
diff --git a/src/main/java/io/github/xxyopen/novel/dto/req/AuthorRegisterReqDto.java b/src/main/java/io/github/xxyopen/novel/dto/req/AuthorRegisterReqDto.java
index 2517b11..8fbea2b 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/req/AuthorRegisterReqDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/req/AuthorRegisterReqDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.req;
+import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.*;
import lombok.Data;
@@ -17,33 +18,38 @@ public class AuthorRegisterReqDto {
/**
* 笔名
*/
- @NotBlank(message="笔名不能为空!")
+ @Schema(description = "笔名", required = true)
+ @NotBlank(message = "笔名不能为空!")
private String penName;
/**
* 手机号码
*/
- @NotBlank(message="手机号不能为空!")
- @Pattern(regexp="^1[3|4|5|6|7|8|9][0-9]{9}$",message="手机号格式不正确!")
+ @Schema(description = "手机号码", required = true)
+ @NotBlank(message = "手机号不能为空!")
+ @Pattern(regexp = "^1[3|4|5|6|7|8|9][0-9]{9}$", message = "手机号格式不正确!")
private String telPhone;
/**
* QQ或微信账号
*/
- @NotBlank(message="QQ或微信账号不能为空!")
+ @Schema(description = "QQ或微信账号", required = true)
+ @NotBlank(message = "QQ或微信账号不能为空!")
private String chatAccount;
/**
* 电子邮箱
*/
- @NotBlank(message="电子邮箱不能为空!")
- @Email(message="邮箱格式不正确!")
+ @Schema(description = "电子邮箱", required = true)
+ @NotBlank(message = "电子邮箱不能为空!")
+ @Email(message = "邮箱格式不正确!")
private String email;
/**
* 作品方向;0-男频 1-女频
*/
- @NotNull(message="作品方向不能为空!")
+ @Schema(description = "作品方向;0-男频 1-女频", required = true)
+ @NotNull(message = "作品方向不能为空!")
@Min(0)
@Max(1)
private Integer workDirection;
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
index f4ae0fa..f89f9ec 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/req/BookAddReqDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/req/BookAddReqDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.req;
+import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@@ -16,42 +17,49 @@ public class BookAddReqDto {
/**
* 作品方向;0-男频 1-女频
*/
+ @Schema(description = "作品方向;0-男频 1-女频", required = true)
@NotNull
private Integer workDirection;
/**
* 类别ID
*/
+ @Schema(description = "类别ID", required = true)
@NotNull
private Long categoryId;
/**
* 类别名
*/
+ @Schema(description = "类别名", required = true)
@NotBlank
private String categoryName;
/**
* 小说封面地址
*/
+ @Schema(description = "小说封面地址", required = true)
@NotBlank
private String picUrl;
/**
* 小说名
*/
+ @Schema(description = "小说名", required = true)
@NotBlank
private String bookName;
/**
* 书籍描述
*/
+ @Schema(description = "书籍描述", required = true)
@NotBlank
private String bookDesc;
/**
* 是否收费;1-收费 0-免费
*/
+ @Schema(description = "是否收费;1-收费 0-免费", required = true)
@NotNull
private Integer isVip;
}
diff --git a/src/main/java/io/github/xxyopen/novel/dto/req/BookSearchReqDto.java b/src/main/java/io/github/xxyopen/novel/dto/req/BookSearchReqDto.java
index 0c34248..015427c 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/req/BookSearchReqDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/req/BookSearchReqDto.java
@@ -2,6 +2,7 @@ package io.github.xxyopen.novel.dto.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.github.xxyopen.novel.core.common.req.PageReqDto;
+import io.swagger.v3.oas.annotations.Parameter;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@@ -19,36 +20,43 @@ public class BookSearchReqDto extends PageReqDto {
/**
* 搜索关键字
*/
+ @Parameter(description = "搜索关键字")
private String keyword;
/**
* 作品方向
*/
+ @Parameter(description = "作品方向")
private Integer workDirection;
/**
* 分类ID
*/
+ @Parameter(description = "分类ID")
private Integer categoryId;
/**
* 是否收费,1:收费,0:免费
*/
+ @Parameter(description = "是否收费,1:收费,0:免费")
private Integer isVip;
/**
* 小说更新状态,0:连载中,1:已完结
*/
+ @Parameter(description = "小说更新状态,0:连载中,1:已完结")
private Integer bookStatus;
/**
* 字数最小值
*/
+ @Parameter(description = "字数最小值")
private Integer wordCountMin;
/**
* 字数最大值
*/
+ @Parameter(description = "字数最大值")
private Integer wordCountMax;
/**
@@ -57,6 +65,7 @@ public class BookSearchReqDto extends PageReqDto {
* 如果使用Post请求,@RequestBody接收请求体参数,默认解析日期格式为yyyy-MM-dd HH:mm:ss ,
* 如果需要接收其他格式的参数,则可以使用@JsonFormat注解
* */
+ @Parameter(description = "最小更新时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date updateTimeMin;
@@ -64,5 +73,6 @@ public class BookSearchReqDto extends PageReqDto {
/**
* 排序字段
*/
+ @Parameter(description = "排序字段")
private String sort;
}
diff --git a/src/main/java/io/github/xxyopen/novel/dto/req/ChapterAddReqDto.java b/src/main/java/io/github/xxyopen/novel/dto/req/ChapterAddReqDto.java
index 6505ace..cc07f5c 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/req/ChapterAddReqDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/req/ChapterAddReqDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.req;
+import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@@ -17,17 +18,20 @@ public class ChapterAddReqDto {
/**
* 小说ID
*/
+ @Schema(description = "小说ID", required = true)
private Long bookId;
/**
* 章节名
*/
@NotBlank
+ @Schema(description = "章节名", required = true)
private String chapterName;
/**
* 章节内容
*/
+ @Schema(description = "章节内容", required = true)
@NotBlank
@Length(min = 50)
private String chapterContent;
@@ -35,6 +39,7 @@ public class ChapterAddReqDto {
/**
* 是否收费;1-收费 0-免费
*/
+ @Schema(description = "是否收费;1-收费 0-免费", required = true)
@NotNull
private Integer isVip;
diff --git a/src/main/java/io/github/xxyopen/novel/dto/req/UserCommentReqDto.java b/src/main/java/io/github/xxyopen/novel/dto/req/UserCommentReqDto.java
index bf9ef3b..1ebdd2e 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/req/UserCommentReqDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/req/UserCommentReqDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.req;
+import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@@ -15,9 +16,11 @@ public class UserCommentReqDto {
private Long userId;
+ @Schema(description = "小说ID", required = true)
@NotNull(message="小说ID不能为空!")
private Long bookId;
+ @Schema(description = "评论内容", required = true)
@NotBlank(message="评论不能为空!")
@Length(min = 10,max = 512)
private String commentContent;
diff --git a/src/main/java/io/github/xxyopen/novel/dto/req/UserInfoUptReqDto.java b/src/main/java/io/github/xxyopen/novel/dto/req/UserInfoUptReqDto.java
index 2366a71..ac0020c 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/req/UserInfoUptReqDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/req/UserInfoUptReqDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.req;
+import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.Pattern;
@@ -16,12 +17,15 @@ public class UserInfoUptReqDto {
private Long userId;
+ @Schema(description = "昵称")
@Length(min = 2,max = 10)
private String nickName;
+ @Schema(description = "头像地址")
@Pattern(regexp="^/[^\s]{10,}\\.(png|PNG|jpg|JPG|jpeg|JPEG|gif|GIF|bpm|BPM)$")
private String userPhoto;
+ @Schema(description = "性别")
@Min(value = 0)
@Max(value = 1)
private Integer userSex;
diff --git a/src/main/java/io/github/xxyopen/novel/dto/req/UserLoginReqDto.java b/src/main/java/io/github/xxyopen/novel/dto/req/UserLoginReqDto.java
index 1c88be3..ab92e1d 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/req/UserLoginReqDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/req/UserLoginReqDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.req;
+import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
@@ -13,10 +14,12 @@ import lombok.Data;
@Data
public class UserLoginReqDto {
+ @Schema(description = "手机号", required = true)
@NotBlank(message="手机号不能为空!")
@Pattern(regexp="^1[3|4|5|6|7|8|9][0-9]{9}$",message="手机号格式不正确!")
private String username;
+ @Schema(description = "密码", required = true)
@NotBlank(message="密码不能为空!")
private String password;
diff --git a/src/main/java/io/github/xxyopen/novel/dto/req/UserRegisterReqDto.java b/src/main/java/io/github/xxyopen/novel/dto/req/UserRegisterReqDto.java
index d2793ba..0fa7e15 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/req/UserRegisterReqDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/req/UserRegisterReqDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.req;
+import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
@@ -14,13 +15,16 @@ import org.hibernate.validator.constraints.Length;
@Data
public class UserRegisterReqDto {
+ @Schema(description = "手机号", required = true)
@NotBlank(message="手机号不能为空!")
@Pattern(regexp="^1[3|4|5|6|7|8|9][0-9]{9}$",message="手机号格式不正确!")
private String username;
+ @Schema(description = "密码", required = true)
@NotBlank(message="密码不能为空!")
private String password;
+ @Schema(description = "验证码", required = true)
@NotBlank(message="验证码不能为空!")
@Pattern(regexp="^\\d{4}$",message="验证码格式不正确!")
private String velCode;
@@ -28,6 +32,7 @@ public class UserRegisterReqDto {
/**
* 请求会话标识,用来标识图形验证码属于哪个会话
* */
+ @Schema(description = "sessionId", required = true)
@NotBlank
@Length(min = 32,max = 32)
private String sessionId;
diff --git a/src/main/java/io/github/xxyopen/novel/dto/resp/BookCategoryRespDto.java b/src/main/java/io/github/xxyopen/novel/dto/resp/BookCategoryRespDto.java
index 410a4b9..e9e9a49 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/resp/BookCategoryRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/resp/BookCategoryRespDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.resp;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
@@ -16,11 +17,13 @@ public class BookCategoryRespDto {
/**
* 类别ID
*/
+ @Schema(description = "类别ID")
private Long id;
/**
* 类别名
*/
+ @Schema(description = "类别名")
private String name;
}
diff --git a/src/main/java/io/github/xxyopen/novel/dto/resp/BookChapterAboutRespDto.java b/src/main/java/io/github/xxyopen/novel/dto/resp/BookChapterAboutRespDto.java
index 50b87c8..bef9170 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/resp/BookChapterAboutRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/resp/BookChapterAboutRespDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.resp;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
@@ -18,11 +19,13 @@ public class BookChapterAboutRespDto {
/**
* 章节总数
*/
+ @Schema(description = "章节总数")
private Long chapterTotal;
/**
* 内容概要(30字)
*/
+ @Schema(description = " 内容概要(30字)")
private String contentSummary;
}
diff --git a/src/main/java/io/github/xxyopen/novel/dto/resp/BookChapterRespDto.java b/src/main/java/io/github/xxyopen/novel/dto/resp/BookChapterRespDto.java
index b648831..665a129 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/resp/BookChapterRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/resp/BookChapterRespDto.java
@@ -1,6 +1,7 @@
package io.github.xxyopen.novel.dto.resp;
import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
@@ -24,37 +25,44 @@ public class BookChapterRespDto implements Serializable {
/**
* 章节ID
* */
+ @Schema(description = "章节ID")
private Long id;
/**
* 小说ID
*/
+ @Schema(description = "小说ID")
private Long bookId;
/**
* 章节号
*/
+ @Schema(description = "章节号")
private Integer chapterNum;
/**
* 章节名
*/
+ @Schema(description = "章节名")
private String chapterName;
/**
* 章节字数
*/
+ @Schema(description = "章节字数")
private Integer chapterWordCount;
/**
* 章节更新时间
*/
+ @Schema(description = "章节更新时间")
@JsonFormat(pattern = "yyyy/MM/dd HH:dd")
private LocalDateTime chapterUpdateTime;
/**
* 是否收费;1-收费 0-免费
*/
+ @Schema(description = "是否收费;1-收费 0-免费")
private Integer isVip;
}
diff --git a/src/main/java/io/github/xxyopen/novel/dto/resp/BookCommentRespDto.java b/src/main/java/io/github/xxyopen/novel/dto/resp/BookCommentRespDto.java
index a632fdc..f32ce3f 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/resp/BookCommentRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/resp/BookCommentRespDto.java
@@ -3,6 +3,7 @@ package io.github.xxyopen.novel.dto.resp;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.github.xxyopen.novel.core.json.serializer.UsernameSerializer;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
@@ -18,25 +19,33 @@ import java.util.List;
@Builder
public class BookCommentRespDto {
+ @Schema(description = "评论总数")
private Long commentTotal;
+ @Schema(description = "评论列表")
private List comments;
@Data
@Builder
public static class CommentInfo {
+ @Schema(description = "评论ID")
private Long id;
+ @Schema(description = "评论内容")
private String commentContent;
+ @Schema(description = "评论用户")
@JsonSerialize(using = UsernameSerializer.class)
private String commentUser;
+ @Schema(description = "评论用户ID")
private Long commentUserId;
+ @Schema(description = "评论用户头像")
private String commentUserPhoto;
+ @Schema(description = "评论时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime commentTime;
diff --git a/src/main/java/io/github/xxyopen/novel/dto/resp/BookContentAboutRespDto.java b/src/main/java/io/github/xxyopen/novel/dto/resp/BookContentAboutRespDto.java
index bb8c01c..96477f3 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/resp/BookContentAboutRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/resp/BookContentAboutRespDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.resp;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
@@ -16,16 +17,19 @@ public class BookContentAboutRespDto {
/**
* 小说信息
*/
+ @Schema(description = "小说信息")
private BookInfoRespDto bookInfo;
/**
* 章节信息
*/
+ @Schema(description = "章节信息")
private BookChapterRespDto chapterInfo;
/**
* 章节内容
*/
+ @Schema(description = "章节内容")
private String bookContent;
}
diff --git a/src/main/java/io/github/xxyopen/novel/dto/resp/BookInfoRespDto.java b/src/main/java/io/github/xxyopen/novel/dto/resp/BookInfoRespDto.java
index 011939f..6483bb1 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/resp/BookInfoRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/resp/BookInfoRespDto.java
@@ -1,6 +1,7 @@
package io.github.xxyopen.novel.dto.resp;
import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
@@ -20,81 +21,97 @@ public class BookInfoRespDto {
/**
* ID
*/
+ @Schema(description = "小说ID")
private Long id;
/**
* 类别ID
*/
+ @Schema(description = "类别ID")
private Long categoryId;
/**
* 类别名
*/
+ @Schema(description = "类别名")
private String categoryName;
/**
* 小说封面地址
*/
+ @Schema(description = "小说封面地址")
private String picUrl;
/**
* 小说名
*/
+ @Schema(description = "小说名")
private String bookName;
/**
* 作家id
*/
+ @Schema(description = "作家id")
private Long authorId;
/**
* 作家名
*/
+ @Schema(description = "作家名")
private String authorName;
/**
* 书籍描述
*/
+ @Schema(description = "书籍描述")
private String bookDesc;
/**
* 书籍状态;0-连载中 1-已完结
*/
+ @Schema(description = "书籍状态;0-连载中 1-已完结")
private Integer bookStatus;
/**
* 点击量
*/
+ @Schema(description = "点击量")
private Long visitCount;
/**
* 总字数
*/
+ @Schema(description = "总字数")
private Integer wordCount;
/**
* 评论数
*/
+ @Schema(description = "评论数")
private Integer commentCount;
/**
* 首章节ID
*/
+ @Schema(description = "首章节ID")
private Long firstChapterId;
/**
* 最新章节ID
*/
+ @Schema(description = "最新章节ID")
private Long lastChapterId;
/**
* 最新章节名
*/
+ @Schema(description = "最新章节名")
private String lastChapterName;
/**
* 最新章节更新时间
*/
+ @Schema(description = "最新章节更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime updateTime;
diff --git a/src/main/java/io/github/xxyopen/novel/dto/resp/BookRankRespDto.java b/src/main/java/io/github/xxyopen/novel/dto/resp/BookRankRespDto.java
index 27c5f3d..475b903 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/resp/BookRankRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/resp/BookRankRespDto.java
@@ -1,6 +1,7 @@
package io.github.xxyopen.novel.dto.resp;
import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
@@ -22,51 +23,61 @@ public class BookRankRespDto implements Serializable {
/**
* ID
*/
+ @Schema(description = "小说ID")
private Long id;
/**
* 类别ID
*/
+ @Schema(description = "类别ID")
private Long categoryId;
/**
* 类别名
*/
+ @Schema(description = "类别名")
private String categoryName;
/**
* 小说封面地址
*/
+ @Schema(description = "小说封面地址")
private String picUrl;
/**
* 小说名
*/
+ @Schema(description = "小说名")
private String bookName;
/**
* 作家名
*/
+ @Schema(description = "作家名")
private String authorName;
/**
* 书籍描述
*/
+ @Schema(description = "书籍描述")
private String bookDesc;
/**
* 总字数
*/
+ @Schema(description = "总字数")
private Integer wordCount;
/**
* 最新章节名
*/
+ @Schema(description = "最新章节名")
private String lastChapterName;
/**
* 最新章节更新时间
*/
+ @Schema(description = "最新章节更新时间")
@JsonFormat(pattern = "MM/dd HH:mm")
private LocalDateTime lastChapterUpdateTime;
diff --git a/src/main/java/io/github/xxyopen/novel/dto/resp/HomeBookRespDto.java b/src/main/java/io/github/xxyopen/novel/dto/resp/HomeBookRespDto.java
index 8a98e0b..1808e0d 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/resp/HomeBookRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/resp/HomeBookRespDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.resp;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
@@ -14,31 +15,37 @@ public class HomeBookRespDto {
/**
* 类型;0-轮播图 1-顶部栏 2-本周强推 3-热门推荐 4-精品推荐
*/
+ @Schema(description = "类型;0-轮播图 1-顶部栏 2-本周强推 3-热门推荐 4-精品推荐")
private Integer type;
/**
* 推荐小说ID
*/
+ @Schema(description = "小说ID")
private Long bookId;
/**
* 小说封面地址
*/
+ @Schema(description = "小说封面地址")
private String picUrl;
/**
* 小说名
*/
+ @Schema(description = "小说名")
private String bookName;
/**
* 作家名
*/
+ @Schema(description = "作家名")
private String authorName;
/**
* 书籍描述
*/
+ @Schema(description = "书籍描述")
private String bookDesc;
}
diff --git a/src/main/java/io/github/xxyopen/novel/dto/resp/HomeFriendLinkRespDto.java b/src/main/java/io/github/xxyopen/novel/dto/resp/HomeFriendLinkRespDto.java
index 8478b71..7143ddf 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/resp/HomeFriendLinkRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/resp/HomeFriendLinkRespDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.resp;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
@@ -20,10 +21,12 @@ public class HomeFriendLinkRespDto implements Serializable {
/**
* 链接名
*/
+ @Schema(description = "链接名")
private String linkName;
/**
* 链接url
*/
+ @Schema(description = "链接url")
private String linkUrl;
}
diff --git a/src/main/java/io/github/xxyopen/novel/dto/resp/ImgVerifyCodeRespDto.java b/src/main/java/io/github/xxyopen/novel/dto/resp/ImgVerifyCodeRespDto.java
index 635bd2a..0c477b6 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/resp/ImgVerifyCodeRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/resp/ImgVerifyCodeRespDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.resp;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
@@ -15,11 +16,13 @@ public class ImgVerifyCodeRespDto {
/**
* 当前会话ID,用于标识改图形验证码属于哪个会话
* */
+ @Schema(description = "sessionId")
private String sessionId;
/**
* Base64 编码的验证码图片
* */
+ @Schema(description = "Base64 编码的验证码图片")
private String img;
}
diff --git a/src/main/java/io/github/xxyopen/novel/dto/resp/NewsInfoRespDto.java b/src/main/java/io/github/xxyopen/novel/dto/resp/NewsInfoRespDto.java
index 91d2e54..635b30c 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/resp/NewsInfoRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/resp/NewsInfoRespDto.java
@@ -1,6 +1,7 @@
package io.github.xxyopen.novel.dto.resp;
import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
@@ -19,37 +20,44 @@ public class NewsInfoRespDto {
/**
* ID
*/
+ @Schema(description = "新闻ID")
private Long id;
/**
* 类别ID
*/
+ @Schema(description = "类别ID")
private Long categoryId;
/**
* 类别名
*/
+ @Schema(description = "类别名")
private String categoryName;
/**
* 新闻来源
*/
+ @Schema(description = "新闻来源")
private String sourceName;
/**
* 新闻标题
*/
+ @Schema(description = "新闻标题")
private String title;
/**
* 更新时间
*/
+ @Schema(description = "更新时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime updateTime;
/**
* 新闻内容
* */
+ @Schema(description = "新闻内容")
private String content;
diff --git a/src/main/java/io/github/xxyopen/novel/dto/resp/UserInfoRespDto.java b/src/main/java/io/github/xxyopen/novel/dto/resp/UserInfoRespDto.java
index c6f5213..753a65a 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/resp/UserInfoRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/resp/UserInfoRespDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.resp;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
@@ -16,15 +17,18 @@ public class UserInfoRespDto {
/**
* 昵称
* */
+ @Schema(description = "昵称")
private String nickName;
/**
* 用户头像
* */
+ @Schema(description = "用户头像")
private String userPhoto;
/**
* 用户性别
* */
+ @Schema(description = "用户性别")
private Integer userSex;
}
diff --git a/src/main/java/io/github/xxyopen/novel/dto/resp/UserLoginRespDto.java b/src/main/java/io/github/xxyopen/novel/dto/resp/UserLoginRespDto.java
index ad05e24..c0d6066 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/resp/UserLoginRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/resp/UserLoginRespDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.resp;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
@@ -12,9 +13,12 @@ import lombok.Data;
@Builder
public class UserLoginRespDto {
+ @Schema(description = "用户ID")
private Long uid;
+ @Schema(description = "用户昵称")
private String nickName;
+ @Schema(description = "用户token")
private String token;
}
diff --git a/src/main/java/io/github/xxyopen/novel/dto/resp/UserRegisterRespDto.java b/src/main/java/io/github/xxyopen/novel/dto/resp/UserRegisterRespDto.java
index e6cb65c..8edf125 100644
--- a/src/main/java/io/github/xxyopen/novel/dto/resp/UserRegisterRespDto.java
+++ b/src/main/java/io/github/xxyopen/novel/dto/resp/UserRegisterRespDto.java
@@ -1,5 +1,6 @@
package io.github.xxyopen.novel.dto.resp;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;
@@ -12,7 +13,9 @@ import lombok.Data;
@Builder
public class UserRegisterRespDto {
+ @Schema(description = "用户ID")
private Long uid;
+ @Schema(description = "用户token")
private String token;
}