Browse Source

0722 用户信息

Qing 9 months ago
parent
commit
65970e4fdd

+ 32 - 3
novel-demo/src/main/java/com/sf/controller/UserInfoController.java

@@ -1,12 +1,15 @@
 package com.sf.controller;
 
 import com.sf.dto.RestResp;
+import com.sf.dto.req.PageReqDto;
 import com.sf.dto.req.UserLoginReqDto;
 import com.sf.dto.req.UserRegisterReqDto;
-import com.sf.dto.resp.ImgVerifyCodeRespDto;
-import com.sf.dto.resp.UserLoginRespDto;
-import com.sf.dto.resp.UserRegisterRespDto;
+import com.sf.dto.resp.*;
+import com.sf.entity.UserInfo;
+import com.sf.service.IBookCommentService;
 import com.sf.service.IUserInfoService;
+import com.sf.util.UserHolder;
+import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.stereotype.Controller;
@@ -28,6 +31,9 @@ public class UserInfoController {
     @Autowired
     private IUserInfoService userInfoService;
 
+    @Autowired
+    private IBookCommentService bookCommentService;
+
     @GetMapping("/api/front/resource/img_verify_code")
     public RestResp<ImgVerifyCodeRespDto> getImgVerifyCode() throws IOException {
         ImgVerifyCodeRespDto imgVerifyCodeRespDto = userInfoService.getImgVerifyCode();
@@ -65,4 +71,27 @@ public class UserInfoController {
         return RestResp.ok(userLoginRespDto);
     }
 
+    // 查看用户信息
+    // http://127.0.0.1:8888/api/front/user
+    @GetMapping("/api/front/user")
+    public RestResp<UserInfoRespDto> getUserInfo() {
+        Long userId = UserHolder.getUserId();
+        UserInfo userInfo = userInfoService.getById(userId);
+        UserInfoRespDto userInfoRespDto = UserInfoRespDto.builder()
+                .userPhoto(userInfo.getUserPhoto())
+                .nickName(userInfo.getNickName())
+                .userSex((int) userInfo.getUserSex())
+                .build();
+        return RestResp.ok(userInfoRespDto);
+    }
+
+    // 查询我的评论
+    @Operation(summary = "查询会员评论列表接口")
+    @GetMapping("/api/front/user/comments")
+    public RestResp<PageRespDto<UserCommentRespDto>> listComments(PageReqDto pageReqDto) {
+        Long userId = UserHolder.getUserId();
+        PageRespDto<UserCommentRespDto> commentList = bookCommentService.getCommentList(userId, pageReqDto);
+        return RestResp.ok(commentList);
+    }
+
 }

+ 0 - 14
novel-demo/src/main/java/com/sf/dto/resp/PageRespDto.java

@@ -47,18 +47,4 @@ public class PageRespDto<T> {
         return new PageRespDto<>(pageNum, pageSize, total, list);
     }
 
-    /**
-     * 获取分页数
-     */
-    public long getPages() {
-        if (this.pageSize == 0L) {
-            return 0L;
-        } else {
-            long pages = this.total / this.pageSize;
-            if (this.total % this.pageSize != 0L) {
-                ++pages;
-            }
-            return pages;
-        }
-    }
 }

+ 27 - 0
novel-demo/src/main/java/com/sf/dto/resp/UserCommentRespDto.java

@@ -0,0 +1,27 @@
+package com.sf.dto.resp;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Builder;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@Builder
+public class UserCommentRespDto {
+
+    @Schema(description = "评论内容")
+    private String commentContent;
+
+    @Schema(description = "评论小说封面")
+    private String commentBookPic;
+
+    @Schema(description = "评论小说名字")
+    private String commentBook;
+
+    @Schema(description = "评论时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime commentTime;
+
+}

+ 17 - 0
novel-demo/src/main/java/com/sf/dto/resp/UserInfoRespDto.java

@@ -0,0 +1,17 @@
+package com.sf.dto.resp;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserInfoRespDto {
+
+    private String nickName;
+    private String userPhoto;
+    private Integer userSex;
+}

+ 4 - 0
novel-demo/src/main/java/com/sf/service/IBookCommentService.java

@@ -1,7 +1,10 @@
 package com.sf.service;
 
+import com.sf.dto.req.PageReqDto;
 import com.sf.dto.req.UserCommentReqDto;
 import com.sf.dto.resp.BookCommentRespDto;
+import com.sf.dto.resp.PageRespDto;
+import com.sf.dto.resp.UserCommentRespDto;
 import com.sf.entity.BookComment;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -20,4 +23,5 @@ public interface IBookCommentService extends IService<BookComment> {
 
     void saveComment(UserCommentReqDto userCommentReqDto);
 
+    PageRespDto<UserCommentRespDto> getCommentList(Long userId, PageReqDto pageReqDto);
 }

+ 42 - 3
novel-demo/src/main/java/com/sf/service/impl/BookCommentServiceImpl.java

@@ -1,15 +1,20 @@
 package com.sf.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sf.dto.req.PageReqDto;
 import com.sf.dto.req.UserCommentReqDto;
-import com.sf.dto.resp.BookCommentRespDto;
-import com.sf.dto.resp.CommentInfoRespDto;
+import com.sf.dto.resp.*;
 import com.sf.entity.BookComment;
+import com.sf.entity.BookInfo;
 import com.sf.entity.UserInfo;
 import com.sf.mapper.BookCommentMapper;
+import com.sf.mapper.BookInfoMapper;
 import com.sf.mapper.UserInfoMapper;
 import com.sf.service.IBookCommentService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -33,6 +38,8 @@ public class BookCommentServiceImpl extends ServiceImpl<BookCommentMapper, BookC
 
     @Autowired
     private UserInfoMapper userInfoMapper;
+    @Autowired
+    private BookInfoMapper bookInfoMapper;
 
     @Override
     public BookCommentRespDto commentNewestList(Long bookId) {
@@ -60,7 +67,7 @@ public class BookCommentServiceImpl extends ServiceImpl<BookCommentMapper, BookC
         }
 
         BookCommentRespDto bookCommentRespDto = BookCommentRespDto.builder()
-                .commentTotal((long)count)
+                .commentTotal((long) count)
                 .comments(commentInfoRespDtoList)
                 .build();
 
@@ -78,4 +85,36 @@ public class BookCommentServiceImpl extends ServiceImpl<BookCommentMapper, BookC
                 .build();
         bookCommentMapper.insert(bookComment);
     }
+
+    @Override
+    public PageRespDto<UserCommentRespDto> getCommentList(Long userId, PageReqDto pageReqDto) {
+        // 根据userId获取评论信息
+        LambdaQueryWrapper<BookComment> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(BookComment::getUserId, userId);
+        queryWrapper.orderByDesc(BookComment::getCreateTime);
+        // 传入分页的参数 当前页和每页的大小
+        IPage page = new Page(pageReqDto.getPageNum(), pageReqDto.getPageSize());
+        // 进行分页查询  select * from book_comment where userId = '' order by create_time limit 0,10
+        IPage selected = bookCommentMapper.selectPage(page, queryWrapper);
+        List<BookComment> bookComments = selected.getRecords();
+
+        // 将每一个查询到的book_comment 映射成最终要返回的dto
+        List<UserCommentRespDto> userCommentRespDtos = bookComments.stream().map(bookComment -> {
+            // 映射的逻辑是
+            // 先通过查询到的book_id 找到book信息
+            BookInfo bookInfo = bookInfoMapper.selectById(bookComment.getBookId());
+            // 将book_info中的名字和封皮放入对应参数
+            // 将book_comment中评论的内容和时间 放入对应参数
+            return UserCommentRespDto.builder()
+                    .commentBook(bookInfo.getBookName())
+                    .commentBookPic(bookInfo.getPicUrl())
+                    .commentContent(bookComment.getCommentContent())
+                    .commentTime(bookComment.getCreateTime())
+                    .build();
+        }).toList();
+        // 再将数据赋值给要返回的分页对象
+        PageRespDto<UserCommentRespDto> pageRespDto = PageRespDto.of(
+                pageReqDto.getPageNum(), pageReqDto.getPageSize(), page.getTotal(), userCommentRespDtos);
+        return pageRespDto;
+    }
 }