From 102c9c4a386674bff0df7cc314af8286e203f4b3 Mon Sep 17 00:00:00 2001 From: ovo Date: Fri, 20 Dec 2024 15:10:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=9B=BE=E4=B9=A6=E5=88=9D=E6=AD=A5):=20?= =?UTF-8?q?=E5=9B=BE=E4=B9=A6=E5=88=9D=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 图书初步 --- src/main/java/com/guwan/backend/Demo.java | 12 +++++++ .../backend/controller/CommonController.java | 27 ++++++++++++++ .../com/guwan/backend/entity/BookOfUser.java | 24 ++++++++++++- .../com/guwan/backend/enums/Evaluate.java | 35 +++++++++++++++++++ .../com/guwan/backend/enums/ReadStatus.java | 35 +++++++++++++++++++ .../mongodb/EveryReadDetailOfMongodb.java | 9 ++++- .../EveryReadDetailOfMongodbService.java | 8 +++++ .../EveryReadDetailOfMongodbServiceImpl.java | 34 ++++++++++++++++++ .../backend/service/impl/BookServiceImpl.java | 7 ++++ 9 files changed, 189 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/guwan/backend/Demo.java create mode 100644 src/main/java/com/guwan/backend/enums/Evaluate.java create mode 100644 src/main/java/com/guwan/backend/enums/ReadStatus.java create mode 100644 src/main/java/com/guwan/backend/mongodb/EveryReadDetailOfMongodbService.java create mode 100644 src/main/java/com/guwan/backend/mongodb/EveryReadDetailOfMongodbServiceImpl.java diff --git a/src/main/java/com/guwan/backend/Demo.java b/src/main/java/com/guwan/backend/Demo.java new file mode 100644 index 0000000..2f3ad16 --- /dev/null +++ b/src/main/java/com/guwan/backend/Demo.java @@ -0,0 +1,12 @@ +package com.guwan.backend; + +import com.guwan.backend.entity.BookOfUser; +import com.guwan.backend.enums.ReadStatus; + +public class Demo { + public static void main(String[] args) { + BookOfUser bookOfUser = new BookOfUser(); + bookOfUser.setReadStatus(ReadStatus.yes); + System.out.println("bookOfUser = " + bookOfUser); + } +} diff --git a/src/main/java/com/guwan/backend/controller/CommonController.java b/src/main/java/com/guwan/backend/controller/CommonController.java index 777a812..45bd7a8 100644 --- a/src/main/java/com/guwan/backend/controller/CommonController.java +++ b/src/main/java/com/guwan/backend/controller/CommonController.java @@ -2,6 +2,8 @@ package com.guwan.backend.controller; import com.guwan.backend.common.Result; import com.guwan.backend.entity.BookContent; +import com.guwan.backend.mongodb.EveryReadDetailOfMongodb; +import com.guwan.backend.mongodb.EveryReadDetailOfMongodbService; import com.guwan.backend.mongodb.User; import com.guwan.backend.mongodb.MongodbUserService; import com.guwan.backend.service.BookContentService; @@ -15,6 +17,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.ws.rs.POST; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -36,6 +39,8 @@ public class CommonController { private final MongodbUserService mongodbUserService; + private final EveryReadDetailOfMongodbService everyReadDetailOfMongodbService; + @PostMapping("/uploadFile") public Result uploadFile(String bucketName, MultipartFile file){ return Result.success(minioUtil.getUrl(minioUtil.getFileUrl @@ -223,5 +228,27 @@ public class CommonController { } + @PostMapping("/everyRead") + public Result everyRead(@RequestBody EveryReadDetailOfMongodb everyReadDetailOfMongodb){ + + + everyReadDetailOfMongodbService.save(everyReadDetailOfMongodb); + + + return Result.success(); + } + + @GetMapping("/getUserOneTotalTime") + public Result getUserOneTotalTime(@RequestParam Long userId){ + + + //return Result.success(); + + // everyReadDetailOfMongodbService.getUserOneTotalTime(userId); + + return Result.success(everyReadDetailOfMongodbService.getUserOneTotalTime(userId)); + } + + } diff --git a/src/main/java/com/guwan/backend/entity/BookOfUser.java b/src/main/java/com/guwan/backend/entity/BookOfUser.java index b349197..f60b9de 100644 --- a/src/main/java/com/guwan/backend/entity/BookOfUser.java +++ b/src/main/java/com/guwan/backend/entity/BookOfUser.java @@ -1,11 +1,33 @@ package com.guwan.backend.entity; +import com.guwan.backend.enums.Evaluate; +import com.guwan.backend.enums.ReadStatus; +import lombok.Data; + +@Data public class BookOfUser { private Long UserId; private Long bookId; + /** + * 对该书的直观评价(好看 一般 不好看) + */ + private Evaluate evaluate; - private String evaluate; + /** + * 阅读状态 + */ + private ReadStatus readStatus; + + /** + * 评语 + */ + private String comment; + + /** + * 累计阅读时间 + */ + private Long cumulativeReadingTime; } diff --git a/src/main/java/com/guwan/backend/enums/Evaluate.java b/src/main/java/com/guwan/backend/enums/Evaluate.java new file mode 100644 index 0000000..2797cb0 --- /dev/null +++ b/src/main/java/com/guwan/backend/enums/Evaluate.java @@ -0,0 +1,35 @@ +package com.guwan.backend.enums; + +public enum Evaluate { + yes("好看", 1), normal("一般", 2), no("不行", 3); + // 成员变量 + private String name; + private int index; + // 构造方法 + private Evaluate(String name, int index) { + this.name = name; + this.index = index; + } + // 普通方法 + public static String getName(int index) { + for (Evaluate c : Evaluate.values()) { + if (c.getIndex() == index) { + return c.name; + } + } + return null; + } + // get set 方法 + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public int getIndex() { + return index; + } + public void setIndex(int index) { + this.index = index; + } +} \ No newline at end of file diff --git a/src/main/java/com/guwan/backend/enums/ReadStatus.java b/src/main/java/com/guwan/backend/enums/ReadStatus.java new file mode 100644 index 0000000..0b0936a --- /dev/null +++ b/src/main/java/com/guwan/backend/enums/ReadStatus.java @@ -0,0 +1,35 @@ +package com.guwan.backend.enums; + +public enum ReadStatus { + yes("在读", 1), normal("未读", 2), no("想读", 3); + // 成员变量 + private String name; + private int index; + // 构造方法 + private ReadStatus(String name, int index) { + this.name = name; + this.index = index; + } + // 普通方法 + public static String getName(int index) { + for (ReadStatus c : ReadStatus.values()) { + if (c.getIndex() == index) { + return c.name; + } + } + return null; + } + // get set 方法 + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public int getIndex() { + return index; + } + public void setIndex(int index) { + this.index = index; + } +} \ No newline at end of file diff --git a/src/main/java/com/guwan/backend/mongodb/EveryReadDetailOfMongodb.java b/src/main/java/com/guwan/backend/mongodb/EveryReadDetailOfMongodb.java index d76de6c..c175ea3 100644 --- a/src/main/java/com/guwan/backend/mongodb/EveryReadDetailOfMongodb.java +++ b/src/main/java/com/guwan/backend/mongodb/EveryReadDetailOfMongodb.java @@ -1,10 +1,17 @@ package com.guwan.backend.mongodb; +import com.mongoplus.annotation.ID; +import lombok.Data; + import java.time.LocalDateTime; +@Data public class EveryReadDetailOfMongodb { - private Long UserId; + @ID //使用ID注解,标注此字段为MongoDB的_id,或者继承BaseModelID类 + private String id; + + private Long userId; private Long bookId; diff --git a/src/main/java/com/guwan/backend/mongodb/EveryReadDetailOfMongodbService.java b/src/main/java/com/guwan/backend/mongodb/EveryReadDetailOfMongodbService.java new file mode 100644 index 0000000..e966a4c --- /dev/null +++ b/src/main/java/com/guwan/backend/mongodb/EveryReadDetailOfMongodbService.java @@ -0,0 +1,8 @@ +package com.guwan.backend.mongodb; + +import com.mongoplus.service.IService; + +public interface EveryReadDetailOfMongodbService extends IService { + + Long getUserOneTotalTime(Long userId); +} \ No newline at end of file diff --git a/src/main/java/com/guwan/backend/mongodb/EveryReadDetailOfMongodbServiceImpl.java b/src/main/java/com/guwan/backend/mongodb/EveryReadDetailOfMongodbServiceImpl.java new file mode 100644 index 0000000..e5e8983 --- /dev/null +++ b/src/main/java/com/guwan/backend/mongodb/EveryReadDetailOfMongodbServiceImpl.java @@ -0,0 +1,34 @@ +package com.guwan.backend.mongodb; + +import com.mongoplus.conditions.query.LambdaQueryChainWrapper; +import com.mongoplus.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.Duration; +import java.time.LocalDateTime; +import java.util.List; + +@Slf4j +@Service +public class EveryReadDetailOfMongodbServiceImpl extends ServiceImpl implements EveryReadDetailOfMongodbService { + + @Override + public Long getUserOneTotalTime(Long userId) { + List list = this.list(new LambdaQueryChainWrapper<>(this.getBaseMapper(), EveryReadDetailOfMongodb.class) + .eq(EveryReadDetailOfMongodb::getUserId, userId)); + + log.debug("list: {}", list); + + Long total = 0L; + for (EveryReadDetailOfMongodb everyReadDetailOfMongodb : list) { + LocalDateTime startTime = everyReadDetailOfMongodb.getStartTime(); + LocalDateTime endTime = everyReadDetailOfMongodb.getEndTime(); + Duration duration = Duration.between(startTime, endTime); + total += duration.getSeconds(); + } + + return total; + + } +} \ No newline at end of file diff --git a/src/main/java/com/guwan/backend/service/impl/BookServiceImpl.java b/src/main/java/com/guwan/backend/service/impl/BookServiceImpl.java index 0ce70ac..56e76c9 100644 --- a/src/main/java/com/guwan/backend/service/impl/BookServiceImpl.java +++ b/src/main/java/com/guwan/backend/service/impl/BookServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.guwan.backend.entity.Book; import com.guwan.backend.mapper.BookMapper; import com.guwan.backend.service.BookService; +import com.mongoplus.conditions.query.LambdaQueryChainWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -21,6 +22,12 @@ public class BookServiceImpl implements BookService { @Override @Transactional public Book addBook(Book book) { + + + // new LambdaQueryWrapper<>() + + // new LambdaQueryChainWrapper<>() + bookMapper.insert(book); return book; }