From bcff5f76db685c0173afaff98198ae8e2d81053f Mon Sep 17 00:00:00 2001 From: xiongxiaoyang Date: Fri, 29 May 2020 08:24:23 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=BE=AE=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E5=AE=8C=E6=88=90=EF=BC=8C=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E5=BE=AE=E6=9C=8D=E5=8A=A1=E5=BC=80=E5=8F=91=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +- assert/QQ20200529-082052.png | Bin 0 -> 146693 bytes .../com/java2nb/novel/book/api/BookApi.java | 8 + .../novel/book/controller/api/BookApi.java | 9 + .../book/service/impl/BookServiceImpl.java | 4 +- .../novel/user/vo/BookReadHistoryVO.java | 30 ++ .../java2nb/novel/user/vo/BookShelfVO.java | 30 ++ novel-user/user-service/pom.xml | 4 + .../novel/user/controller/UserController.java | 226 ++++++++++++++- .../novel/user/feign/BookFeignClient.java | 15 + .../novel/user/service/UserService.java | 116 +++++++- .../user/service/impl/UserServiceImpl.java | 266 +++++++++++++++++- 12 files changed, 702 insertions(+), 16 deletions(-) create mode 100644 assert/QQ20200529-082052.png create mode 100644 novel-user/user-api/src/main/java/com/java2nb/novel/user/vo/BookReadHistoryVO.java create mode 100644 novel-user/user-api/src/main/java/com/java2nb/novel/user/vo/BookShelfVO.java create mode 100644 novel-user/user-service/src/main/java/com/java2nb/novel/user/feign/BookFeignClient.java diff --git a/README.md b/README.md index 7292355..ac5e876 100644 --- a/README.md +++ b/README.md @@ -89,12 +89,18 @@ novel-cloud ![QQ20200520-215756](./assert/QQ20200528-200023.png) + + ![QQ20200520-215756](./assert/QQ20200528-221348.png) + + + ![QQ20200520-215756](./assert/QQ20200529-082052.png) + 5. 门户网站 - + ![QQ20200520-215756](./assert/pc_index.png) - + #### 项目文档 diff --git a/assert/QQ20200529-082052.png b/assert/QQ20200529-082052.png new file mode 100644 index 0000000000000000000000000000000000000000..3e8d4d8347784e4b37aac3d116cc2fac96274c17 GIT binary patch literal 146693 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 hYnp listRank(@RequestParam("type") Byte type, @RequestParam("limit") Integer limit); + /** + * 根据小说ID查询书籍 + * @param id 小说ID + * @return 书籍对象 + * */ + @GetMapping("api/book/queryBookById") + Book queryBookById(@RequestParam("id") Long id); + } diff --git a/novel-book/book-service/src/main/java/com/java2nb/novel/book/controller/api/BookApi.java b/novel-book/book-service/src/main/java/com/java2nb/novel/book/controller/api/BookApi.java index 4665bc7..1fdf2b8 100644 --- a/novel-book/book-service/src/main/java/com/java2nb/novel/book/controller/api/BookApi.java +++ b/novel-book/book-service/src/main/java/com/java2nb/novel/book/controller/api/BookApi.java @@ -60,4 +60,13 @@ public class BookApi { } + /** + * 根据小说ID查询书籍 + * @param id 小说ID + * @return 书籍对象 + * */ + @GetMapping("queryBookById") + Book queryBookById(@RequestParam("id") Long id){ + return bookService.queryBookDetail(id); + } } diff --git a/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/impl/BookServiceImpl.java b/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/impl/BookServiceImpl.java index d4428a3..aa904a3 100644 --- a/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/impl/BookServiceImpl.java +++ b/novel-book/book-service/src/main/java/com/java2nb/novel/book/service/impl/BookServiceImpl.java @@ -60,7 +60,9 @@ public class BookServiceImpl implements BookService { @Override public List queryBookByIds(List ids) { - return bookMapper.selectMany(select(BookDynamicSqlSupport.id,BookDynamicSqlSupport.bookName,BookDynamicSqlSupport.authorName, + return bookMapper.selectMany(select(BookDynamicSqlSupport.id,BookDynamicSqlSupport.catId,BookDynamicSqlSupport.catName, + BookDynamicSqlSupport.bookName,BookDynamicSqlSupport.authorName, + BookDynamicSqlSupport.lastIndexId,BookDynamicSqlSupport.lastIndexName,BookDynamicSqlSupport.lastIndexUpdateTime, BookDynamicSqlSupport.picUrl,BookDynamicSqlSupport.bookDesc,BookDynamicSqlSupport.score) .from(book) .where(BookDynamicSqlSupport.id,isIn(ids)) diff --git a/novel-user/user-api/src/main/java/com/java2nb/novel/user/vo/BookReadHistoryVO.java b/novel-user/user-api/src/main/java/com/java2nb/novel/user/vo/BookReadHistoryVO.java new file mode 100644 index 0000000..b7623ef --- /dev/null +++ b/novel-user/user-api/src/main/java/com/java2nb/novel/user/vo/BookReadHistoryVO.java @@ -0,0 +1,30 @@ +package com.java2nb.novel.user.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.java2nb.novel.user.entity.UserReadHistory; +import lombok.Data; + +import java.util.Date; + +/** + * @author 11797 + */ +@Data +public class BookReadHistoryVO extends UserReadHistory { + + private Integer catId; + private String catName; + private Long lastIndexId; + + private String lastIndexName; + private String bookName; + + @JsonFormat(timezone = "GMT+8", pattern = "MM/dd HH:mm:ss") + private Date lastIndexUpdateTime; + + + @Override + public String toString() { + return super.toString(); + } +} diff --git a/novel-user/user-api/src/main/java/com/java2nb/novel/user/vo/BookShelfVO.java b/novel-user/user-api/src/main/java/com/java2nb/novel/user/vo/BookShelfVO.java new file mode 100644 index 0000000..ae3e7d8 --- /dev/null +++ b/novel-user/user-api/src/main/java/com/java2nb/novel/user/vo/BookShelfVO.java @@ -0,0 +1,30 @@ +package com.java2nb.novel.user.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.java2nb.novel.user.entity.UserBookshelf; +import lombok.Data; + +import java.util.Date; + +/** + * @author 11797 + */ +@Data +public class BookShelfVO extends UserBookshelf { + + private Integer catId; + private String catName; + private Long lastIndexId; + + private String lastIndexName; + private String bookName; + + @JsonFormat(timezone = "GMT+8", pattern = "MM/dd HH:mm:ss") + private Date lastIndexUpdateTime; + + + @Override + public String toString() { + return super.toString(); + } +} diff --git a/novel-user/user-service/pom.xml b/novel-user/user-service/pom.xml index c8376b9..d18a538 100644 --- a/novel-user/user-service/pom.xml +++ b/novel-user/user-service/pom.xml @@ -17,6 +17,10 @@ com.java2nb.novel user-api + + com.java2nb.novel + book-api + org.springframework.cloud diff --git a/novel-user/user-service/src/main/java/com/java2nb/novel/user/controller/UserController.java b/novel-user/user-service/src/main/java/com/java2nb/novel/user/controller/UserController.java index f3cdccc..1391e88 100644 --- a/novel-user/user-service/src/main/java/com/java2nb/novel/user/controller/UserController.java +++ b/novel-user/user-service/src/main/java/com/java2nb/novel/user/controller/UserController.java @@ -1,21 +1,27 @@ package com.java2nb.novel.user.controller; import com.java2nb.novel.common.base.BaseController; +import com.java2nb.novel.common.bean.PageBean; import com.java2nb.novel.common.bean.ResultBean; import com.java2nb.novel.common.bean.UserDetails; +import com.java2nb.novel.common.cache.CacheService; import com.java2nb.novel.common.enums.ResponseStatus; +import com.java2nb.novel.common.utils.RandomValidateCodeUtil; +import com.java2nb.novel.user.entity.User; +import com.java2nb.novel.user.entity.UserFeedback; import com.java2nb.novel.user.form.UserForm; import com.java2nb.novel.user.service.UserService; +import com.java2nb.novel.user.vo.BookReadHistoryVO; +import com.java2nb.novel.user.vo.BookShelfVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import springfox.documentation.swagger2.annotations.EnableSwagger2; +import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.HashMap; import java.util.Map; @@ -31,6 +37,7 @@ import java.util.Map; public class UserController extends BaseController { + private final CacheService cacheService; private final UserService userService; @@ -38,8 +45,8 @@ public class UserController extends BaseController { * 登陆 */ @ApiOperation("用户登陆接口") - @PostMapping("login") - public ResultBean login(@Valid UserForm user, BindingResult result) { + @GetMapping("login") + public ResultBean> login(@Valid UserForm user, BindingResult result) { //判断参数是否合法 if (result.hasErrors()) { log.info(result.getAllErrors().toString()); @@ -57,8 +64,215 @@ public class UserController extends BaseController { } + /** + * 注册 + */ + @ApiOperation("用户注册接口") + @PostMapping("register") + public ResultBean> register(@Valid UserForm user, @RequestParam(value = "velCode", defaultValue = "") String velCode, BindingResult result) { + + //判断参数是否合法 + if (result.hasErrors()) { + log.info(result.getAllErrors().toString()); + return ResultBean.fail(ResponseStatus.PARAM_ERROR); + } + + //判断验证码是否正确 + if (!velCode.equals(cacheService.get(RandomValidateCodeUtil.RANDOM_CODE_KEY))) { + return ResultBean.fail(ResponseStatus.VEL_CODE_ERROR); + } + + //注册 + UserDetails userDetails = userService.register(user); + Map data = new HashMap<>(1); + data.put("token", jwtTokenUtil.generateToken(userDetails)); + + return ResultBean.ok(data); + } + + /** + * 刷新token + */ + @ApiOperation("token刷新接口") + @PostMapping("refreshToken") + public ResultBean> refreshToken(HttpServletRequest request) { + String token = getToken(request); + if (jwtTokenUtil.canRefresh(token)) { + token = jwtTokenUtil.refreshToken(token); + Map data = new HashMap<>(2); + data.put("token", token); + UserDetails userDetail = jwtTokenUtil.getUserDetailsFromToken(token); + data.put("username", userDetail.getUsername()); + data.put("nickName", userDetail.getNickName()); + return ResultBean.ok(data); + + } else { + return ResultBean.fail(ResponseStatus.NO_LOGIN); + } + + } + + /** + * 查询小说是否已加入书架 + */ + @ApiOperation("小说加入书架状态查询接口") + @GetMapping("queryIsInShelf") + public ResultBean queryIsInShelf(Long bookId, HttpServletRequest request) { + UserDetails userDetails = getUserDetails(request); + if (userDetails == null) { + return ResultBean.fail(ResponseStatus.NO_LOGIN); + } + return ResultBean.ok(userService.queryIsInShelf(userDetails.getId(), bookId)); + } + + /** + * 加入书架 + * */ + @ApiOperation("小说加入书架接口") + @PostMapping("addToBookShelf") + public ResultBean addToBookShelf(Long bookId,Long preContentId, HttpServletRequest request) { + UserDetails userDetails = getUserDetails(request); + if (userDetails == null) { + return ResultBean.fail(ResponseStatus.NO_LOGIN); + } + userService.addToBookShelf(userDetails.getId(),bookId,preContentId); + return ResultBean.ok(); + } + + /** + * 移出书架 + * */ + @ApiOperation("小说移出书架接口") + @DeleteMapping("removeFromBookShelf") + public ResultBean removeFromBookShelf(Long bookId, HttpServletRequest request) { + UserDetails userDetails = getUserDetails(request); + if (userDetails == null) { + return ResultBean.fail(ResponseStatus.NO_LOGIN); + } + userService.removeFromBookShelf(userDetails.getId(),bookId); + return ResultBean.ok(); + } + + /** + * 分页查询书架 + * */ + @ApiOperation("书架列表分页查询接口") + @GetMapping("listBookShelfByPage") + public ResultBean> listBookShelfByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "10") int pageSize, HttpServletRequest request) { + UserDetails userDetails = getUserDetails(request); + if (userDetails == null) { + return ResultBean.fail(ResponseStatus.NO_LOGIN); + } + return ResultBean.ok(new PageBean<>(userService.listBookShelfByPage(userDetails.getId(),page,pageSize))); + } + + /** + * 分页查询阅读记录 + * */ + @ApiOperation("阅读记录分页查询接口") + @GetMapping("listReadHistoryByPage") + public ResultBean> listReadHistoryByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "10") int pageSize, HttpServletRequest request) { + UserDetails userDetails = getUserDetails(request); + if (userDetails == null) { + return ResultBean.fail(ResponseStatus.NO_LOGIN); + } + return ResultBean.ok(new PageBean<>(userService.listReadHistoryByPage(userDetails.getId(),page,pageSize))); + } + + /** + * 添加阅读记录 + * */ + @ApiOperation("阅读记录添加接口") + @PostMapping("addReadHistory") + public ResultBean addReadHistory(Long bookId,Long preContentId, HttpServletRequest request) { + UserDetails userDetails = getUserDetails(request); + if (userDetails == null) { + return ResultBean.fail(ResponseStatus.NO_LOGIN); + } + userService.addReadHistory(userDetails.getId(),bookId,preContentId); + return ResultBean.ok(); + } + + /** + * 添加反馈 + * */ + @ApiOperation("反馈添加接口") + @PostMapping("addFeedBack") + public ResultBean addFeedBack(String content, HttpServletRequest request) { + UserDetails userDetails = getUserDetails(request); + if (userDetails == null) { + return ResultBean.fail(ResponseStatus.NO_LOGIN); + } + userService.addFeedBack(userDetails.getId(),content); + return ResultBean.ok(); + } + + /** + * 分页查询我的反馈列表 + * */ + @ApiOperation("反馈列表分页查询接口") + @GetMapping("listUserFeedBackByPage") + public ResultBean> listUserFeedBackByPage(@RequestParam(value = "curr", defaultValue = "1") int page, @RequestParam(value = "limit", defaultValue = "5") int pageSize, HttpServletRequest request){ + UserDetails userDetails = getUserDetails(request); + if (userDetails == null) { + return ResultBean.fail(ResponseStatus.NO_LOGIN); + } + return ResultBean.ok(new PageBean<>(userService.listUserFeedBackByPage(userDetails.getId(),page,pageSize))); + } + + + /** + * 查询个人信息 + * */ + @ApiOperation("人信息查询接口") + @GetMapping("userInfo") + public ResultBean userInfo(HttpServletRequest request) { + UserDetails userDetails = getUserDetails(request); + if (userDetails == null) { + return ResultBean.fail(ResponseStatus.NO_LOGIN); + } + return ResultBean.ok(userService.userInfo(userDetails.getId())); + } + + + /** + * 更新个人信息 + * */ + @ApiOperation("人信息更新接口") + @PostMapping("updateUserInfo") + public ResultBean updateUserInfo(User user, HttpServletRequest request) { + UserDetails userDetails = getUserDetails(request); + if (userDetails == null) { + return ResultBean.fail(ResponseStatus.NO_LOGIN); + } + userService.updateUserInfo(userDetails.getId(),user); + if(user.getNickName() != null){ + userDetails.setNickName(user.getNickName()); + Map data = new HashMap<>(1); + data.put("token", jwtTokenUtil.generateToken(userDetails)); + return ResultBean.ok(data); + } + return ResultBean.ok(); + } + + /** + * 更新密码 + * */ + @ApiOperation("更新密码接口") + @PostMapping("updatePassword") + public ResultBean updatePassword(String oldPassword,String newPassword1,String newPassword2,HttpServletRequest request) { + UserDetails userDetails = getUserDetails(request); + if (userDetails == null) { + return ResultBean.fail(ResponseStatus.NO_LOGIN); + } + if(!(StringUtils.isNotBlank(newPassword1) && newPassword1.equals(newPassword2))){ + ResultBean.fail(ResponseStatus.TWO_PASSWORD_DIFF); + } + userService.updatePassword(userDetails.getId(),oldPassword,newPassword1); + return ResultBean.ok(); + } diff --git a/novel-user/user-service/src/main/java/com/java2nb/novel/user/feign/BookFeignClient.java b/novel-user/user-service/src/main/java/com/java2nb/novel/user/feign/BookFeignClient.java new file mode 100644 index 0000000..daabb2a --- /dev/null +++ b/novel-user/user-service/src/main/java/com/java2nb/novel/user/feign/BookFeignClient.java @@ -0,0 +1,15 @@ +package com.java2nb.novel.user.feign; + +import com.java2nb.novel.book.api.BookApi; +import org.springframework.cloud.openfeign.FeignClient; + +/** + * 小说服务Feign客户端 + * @author xiongxiaoyang + * @version 1.0 + * @since 2020/5/28 + */ +@FeignClient("book-service") +public interface BookFeignClient extends BookApi { + +} diff --git a/novel-user/user-service/src/main/java/com/java2nb/novel/user/service/UserService.java b/novel-user/user-service/src/main/java/com/java2nb/novel/user/service/UserService.java index d9fa2c8..7e6b772 100644 --- a/novel-user/user-service/src/main/java/com/java2nb/novel/user/service/UserService.java +++ b/novel-user/user-service/src/main/java/com/java2nb/novel/user/service/UserService.java @@ -1,9 +1,13 @@ package com.java2nb.novel.user.service; +import com.java2nb.novel.book.entity.BookComment; import com.java2nb.novel.common.bean.UserDetails; import com.java2nb.novel.user.entity.User; +import com.java2nb.novel.user.entity.UserFeedback; import com.java2nb.novel.user.form.UserForm; +import com.java2nb.novel.user.vo.BookReadHistoryVO; +import com.java2nb.novel.user.vo.BookShelfVO; import java.util.List; @@ -17,24 +21,130 @@ public interface UserService { /** * 根据用户名密码查询记录 + * * @param username 用户名 * @param password 密码 * @return 用户对象,不存在返回null - * */ + */ User queryByUsernameAndPassword(String username, String password); /** * 用户登陆 + * * @param form 用户登陆提交信息类 * @return jwt载体信息类 - * */ + */ UserDetails login(UserForm form); /** * 根据用户名ID集合查询用户集合信息 + * * @param ids 用户ID集合 * @return 用户集合对象 - * */ + */ List queryById(List ids); + + /** + * 用户注册 + * + * @param form 用户注册提交信息类 + * @return jwt载体信息类 + */ + UserDetails register(UserForm form); + + /** + * 查询小说是否已加入书架 + * + * @param userId 用户ID + * @param bookId 小说ID + * @return true:已加入书架,未加入书架 + */ + Boolean queryIsInShelf(Long userId, Long bookId); + + /** + * 加入书架 + * + * @param userId 用户ID + * @param bookId 小说ID + * @param preContentId 阅读的内容ID + */ + void addToBookShelf(Long userId, Long bookId, Long preContentId); + + /** + * 移出书架 + * + * @param userId 用户ID + * @param bookId 小说ID + */ + void removeFromBookShelf(Long userId, Long bookId); + + /** + * 查询书架 + * + * @param userId 用户ID + * @param page + * @param pageSize + * @return 书架集合 + */ + List listBookShelfByPage(Long userId, int page, int pageSize); + + /** + * 分页查询阅读记录 + * + * @param userId 用户id + * @param page 页码 + * @param pageSize 分页大小 + * @return + */ + List listReadHistoryByPage(Long userId, int page, int pageSize); + + /** + * 添加阅读记录 + * + * @param userId 用户id + * @param bookId 书籍id + * @param preContentId 阅读的目录id + */ + void addReadHistory(Long userId, Long bookId, Long preContentId); + + + + /** + * 添加反馈 + * @param userId 用户id + * @param content 反馈内容 + * */ + void addFeedBack(Long userId, String content); + + /** + * 分页查询我的反馈列表 + * @param userId 用户ID + * @param page 页码 + * @param pageSize 分页大小 + * @return 反馈集合 + * */ + List listUserFeedBackByPage(Long userId, int page, int pageSize); + + /** + * 查询个人信息 + * @param userId 用户id + * @return 用户信息 + * */ + User userInfo(Long userId); + + /** + * 更新个人信息 + * @param userId 用户id + * @param user 需要更新的信息 + * */ + void updateUserInfo(Long userId, User user); + + /** + * 更新密码 + * @param userId 用户id + * @param oldPassword 旧密码 + * @param newPassword 新密码 + * */ + void updatePassword(Long userId, String oldPassword, String newPassword); } diff --git a/novel-user/user-service/src/main/java/com/java2nb/novel/user/service/impl/UserServiceImpl.java b/novel-user/user-service/src/main/java/com/java2nb/novel/user/service/impl/UserServiceImpl.java index 1a5eb8c..56cd1ee 100644 --- a/novel-user/user-service/src/main/java/com/java2nb/novel/user/service/impl/UserServiceImpl.java +++ b/novel-user/user-service/src/main/java/com/java2nb/novel/user/service/impl/UserServiceImpl.java @@ -1,24 +1,43 @@ package com.java2nb.novel.user.service.impl; +import com.github.pagehelper.PageHelper; +import com.java2nb.novel.book.entity.Book; import com.java2nb.novel.common.bean.UserDetails; import com.java2nb.novel.common.enums.ResponseStatus; import com.java2nb.novel.common.exception.BusinessException; +import com.java2nb.novel.common.utils.IdWorker; import com.java2nb.novel.common.utils.MD5Util; import com.java2nb.novel.user.entity.User; +import com.java2nb.novel.user.entity.UserBookshelf; +import com.java2nb.novel.user.entity.UserFeedback; +import com.java2nb.novel.user.entity.UserReadHistory; +import com.java2nb.novel.user.feign.BookFeignClient; import com.java2nb.novel.user.form.UserForm; -import com.java2nb.novel.user.mapper.UserDynamicSqlSupport; -import com.java2nb.novel.user.mapper.UserMapper; +import com.java2nb.novel.user.mapper.*; import com.java2nb.novel.user.service.UserService; +import com.java2nb.novel.user.vo.BookReadHistoryVO; +import com.java2nb.novel.user.vo.BookShelfVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.Charsets; +import org.mybatis.dynamic.sql.delete.render.DeleteStatementProvider; import org.mybatis.dynamic.sql.render.RenderingStrategies; +import org.mybatis.dynamic.sql.select.render.SelectStatementProvider; +import org.mybatis.dynamic.sql.update.render.UpdateStatementProvider; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; -import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo; -import static org.mybatis.dynamic.sql.SqlBuilder.isIn; +import static com.java2nb.novel.user.mapper.UserBookshelfDynamicSqlSupport.userBookshelf; +import static com.java2nb.novel.user.mapper.UserReadHistoryDynamicSqlSupport.userReadHistory; +import static org.mybatis.dynamic.sql.SqlBuilder.*; import static org.mybatis.dynamic.sql.select.SelectDSL.select; /** @@ -34,6 +53,14 @@ public class UserServiceImpl implements UserService { private final UserMapper userMapper; + private final UserBookshelfMapper userBookshelfMapper; + + private final UserReadHistoryMapper userReadHistoryMapper; + + private final UserFeedbackMapper userFeedbackMapper; + + private final BookFeignClient bookFeignClient; + @Override public User queryByUsernameAndPassword(String username, String password) { @@ -73,4 +100,235 @@ public class UserServiceImpl implements UserService { .where(UserDynamicSqlSupport.id,isIn(ids)).build() .render(RenderingStrategies.MYBATIS3)); } + + @Override + public UserDetails register(UserForm form) { + //查询用户名是否已注册 + SelectStatementProvider selectStatement = select(count(UserDynamicSqlSupport.id)) + .from(UserDynamicSqlSupport.user) + .where(UserDynamicSqlSupport.username, isEqualTo(form.getUsername())) + .build() + .render(RenderingStrategies.MYBATIS3); + long count = userMapper.count(selectStatement); + if (count > 0) { + //用户名已注册 + throw new BusinessException(ResponseStatus.USERNAME_EXIST); + } + User entity = new User(); + BeanUtils.copyProperties(form,entity); + //数据库生成注册记录 + Long id = new IdWorker().nextId(); + entity.setId(id); + entity.setNickName(entity.getUsername()); + Date currentDate = new Date(); + entity.setCreateTime(currentDate); + entity.setUpdateTime(currentDate); + entity.setPassword(MD5Util.MD5Encode(entity.getPassword(), Charsets.UTF_8.name())); + userMapper.insertSelective(entity); + //生成UserDetail对象并返回 + UserDetails userDetails = new UserDetails(); + userDetails.setId(id); + userDetails.setUsername(entity.getUsername()); + userDetails.setNickName(entity.getNickName()); + return userDetails; + } + + @Override + public Boolean queryIsInShelf(Long userId, Long bookId) { + SelectStatementProvider selectStatement = select(count(UserBookshelfDynamicSqlSupport.id)) + .from(userBookshelf) + .where(UserBookshelfDynamicSqlSupport.userId, isEqualTo(userId)) + .and(UserBookshelfDynamicSqlSupport.bookId, isEqualTo(bookId)) + .build() + .render(RenderingStrategies.MYBATIS3); + + return userBookshelfMapper.count(selectStatement) > 0; + } + + @Override + public void addToBookShelf(Long userId, Long bookId, Long preContentId) { + if (!queryIsInShelf(userId, bookId)) { + UserBookshelf shelf = new UserBookshelf(); + shelf.setUserId(userId); + shelf.setBookId(bookId); + shelf.setPreContentId(preContentId); + shelf.setCreateTime(new Date()); + userBookshelfMapper.insert(shelf); + } + } + + @Override + public void removeFromBookShelf(Long userId, Long bookId) { + DeleteStatementProvider deleteStatement = deleteFrom(userBookshelf) + .where(UserBookshelfDynamicSqlSupport.userId, isEqualTo(userId)) + .and(UserBookshelfDynamicSqlSupport.bookId, isEqualTo(bookId)) + .build() + .render(RenderingStrategies.MYBATIS3); + userBookshelfMapper.delete(deleteStatement); + } + + @Override + public List listBookShelfByPage(Long userId, int page, int pageSize) { + PageHelper.startPage(page, pageSize); + List userBookshelves = userBookshelfMapper.selectMany( + select(UserBookshelfDynamicSqlSupport.bookId,UserBookshelfDynamicSqlSupport.preContentId) + .from(userBookshelf) + .where(UserBookshelfDynamicSqlSupport.userId,isEqualTo(userId)) + .orderBy(UserBookshelfDynamicSqlSupport.createTime.descending()) + .build() + .render(RenderingStrategies.MYBATIS3)); + + List books = bookFeignClient.queryBookByIds(userBookshelves.stream().map(UserBookshelf::getBookId).collect(Collectors.toList())); + Map booksById = books.stream().collect(Collectors.toMap(Book::getId, Function.identity(),(key1, key2) -> key2)); + + List resultList = new ArrayList<>(booksById.size()); + for(UserBookshelf bookshelf : userBookshelves){ + BookShelfVO bookShelfVO = new BookShelfVO(); + BeanUtils.copyProperties(bookshelf,bookShelfVO); + Book book = booksById.get(bookshelf.getBookId()); + if(book != null){ + BeanUtils.copyProperties(book,bookShelfVO); + resultList.add(bookShelfVO); + } + + } + + + return resultList; + } + + @Override + public List listReadHistoryByPage(Long userId, int page, int pageSize) { + PageHelper.startPage(page, pageSize); + List userReadHistories = userReadHistoryMapper.selectMany( + select(UserReadHistoryDynamicSqlSupport.bookId,UserReadHistoryDynamicSqlSupport.preContentId) + .from(userReadHistory) + .where(UserReadHistoryDynamicSqlSupport.userId,isEqualTo(userId)) + .orderBy(UserReadHistoryDynamicSqlSupport.createTime.descending()) + .build() + .render(RenderingStrategies.MYBATIS3)); + + List books = bookFeignClient.queryBookByIds(userReadHistories.stream().map(UserReadHistory::getBookId).collect(Collectors.toList())); + + Map booksById = books.stream().collect(Collectors.toMap(Book::getId, Function.identity(),(key1, key2) -> key2)); + + List resultList = new ArrayList<>(booksById.size()); + for(UserReadHistory readHistory : userReadHistories){ + BookReadHistoryVO readHistoryVO = new BookReadHistoryVO(); + BeanUtils.copyProperties(readHistory,readHistoryVO); + Book book = booksById.get(readHistory.getBookId()); + if(book != null){ + BeanUtils.copyProperties(book,readHistoryVO); + resultList.add(readHistoryVO); + } + + } + + + return resultList; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void addReadHistory(Long userId, Long bookId, Long preContentId) { + + Date currentDate = new Date(); + //删除该书以前的历史记录 + DeleteStatementProvider deleteStatement = deleteFrom(userReadHistory) + .where(UserReadHistoryDynamicSqlSupport.bookId, isEqualTo(bookId)) + .and(UserReadHistoryDynamicSqlSupport.userId, isEqualTo(userId)) + .build() + .render(RenderingStrategies.MYBATIS3); + userReadHistoryMapper.delete(deleteStatement); + + //插入该书新的历史记录 + UserReadHistory userReadHistory = new UserReadHistory(); + userReadHistory.setBookId(bookId); + userReadHistory.setUserId(userId); + userReadHistory.setPreContentId(preContentId); + userReadHistory.setCreateTime(currentDate); + userReadHistory.setUpdateTime(currentDate); + userReadHistoryMapper.insertSelective(userReadHistory); + + + //更新书架的阅读历史 + UpdateStatementProvider updateStatement = update(userBookshelf) + .set(UserBookshelfDynamicSqlSupport.preContentId) + .equalTo(preContentId) + .set(UserBookshelfDynamicSqlSupport.updateTime) + .equalTo(currentDate) + .where(UserBookshelfDynamicSqlSupport.userId, isEqualTo(userId)) + .and(UserBookshelfDynamicSqlSupport.bookId, isEqualTo(bookId)) + .build() + .render(RenderingStrategies.MYBATIS3); + + userBookshelfMapper.update(updateStatement); + + + } + + @Override + public void addFeedBack(Long userId, String content) { + UserFeedback feedback = new UserFeedback(); + feedback.setUserId(userId); + feedback.setContent(content); + feedback.setCreateTime(new Date()); + userFeedbackMapper.insertSelective(feedback); + } + + + @Override + public List listUserFeedBackByPage(Long userId, int page, int pageSize) { + PageHelper.startPage(page, pageSize); + return userFeedbackMapper.selectMany(select(UserFeedbackDynamicSqlSupport.content, UserFeedbackDynamicSqlSupport.createTime) + .from(UserFeedbackDynamicSqlSupport.userFeedback) + .where(UserFeedbackDynamicSqlSupport.userId, isEqualTo(userId)) + .orderBy(UserFeedbackDynamicSqlSupport.id.descending()) + .build() + .render(RenderingStrategies.MYBATIS3)); + } + @Override + public User userInfo(Long userId) { + SelectStatementProvider selectStatement = select(UserDynamicSqlSupport.username, UserDynamicSqlSupport.nickName, + UserDynamicSqlSupport.userPhoto,UserDynamicSqlSupport.userSex,UserDynamicSqlSupport.accountBalance) + .from(UserDynamicSqlSupport.user) + .where(UserDynamicSqlSupport.id, isEqualTo(userId)) + .limit(1) + .build() + .render(RenderingStrategies.MYBATIS3); + return userMapper.selectMany(selectStatement).get(0); + } + + @Override + public void updateUserInfo(Long userId, User user) { + User updateUser = new User(); + updateUser.setId(userId); + updateUser.setNickName(user.getNickName()); + updateUser.setUserSex(user.getUserSex()); + updateUser.setUpdateTime(new Date()); + userMapper.updateByPrimaryKeySelective(updateUser); + + } + + @Override + public void updatePassword(Long userId, String oldPassword, String newPassword) { + SelectStatementProvider selectStatement = select(UserDynamicSqlSupport.password) + .from(UserDynamicSqlSupport.user) + .where(UserDynamicSqlSupport.id,isEqualTo(userId)) + .build() + .render(RenderingStrategies.MYBATIS3); + if(!userMapper.selectMany(selectStatement).get(0).getPassword().equals(MD5Util.MD5Encode(oldPassword, Charsets.UTF_8.name()))){ + throw new BusinessException(ResponseStatus.OLD_PASSWORD_ERROR); + } + UpdateStatementProvider updateStatement = update(UserDynamicSqlSupport.user) + .set(UserDynamicSqlSupport.password) + .equalTo(MD5Util.MD5Encode(newPassword, Charsets.UTF_8.name())) + .where(UserDynamicSqlSupport.id,isEqualTo(userId)) + .build() + .render(RenderingStrategies.MYBATIS3); + userMapper.update(updateStatement); + + } + + }