diff --git a/maku-boot-system/src/main/java/net/maku/system/service/impl/SysUserDetailsServiceImpl.java b/maku-boot-system/src/main/java/net/maku/system/service/impl/SysUserDetailsServiceImpl.java index a8071ac..098aa8e 100644 --- a/maku-boot-system/src/main/java/net/maku/system/service/impl/SysUserDetailsServiceImpl.java +++ b/maku-boot-system/src/main/java/net/maku/system/service/impl/SysUserDetailsServiceImpl.java @@ -36,11 +36,11 @@ public class SysUserDetailsServiceImpl implements SysUserDetailsService { if (userDetail.getStatus() == UserStatusEnum.DISABLE.getValue()) { userDetail.setEnabled(false); } - +// 根据用户id获得身份 // 数据权限范围 List dataScopeList = getDataScope(userDetail); userDetail.setDataScopeList(dataScopeList); - +// // 用户权限列表 Set authoritySet = sysMenuService.getUserAuthority(userDetail); diff --git a/maku-server/src/main/java/net/maku/maku/controller/TBookCollectionController.java b/maku-server/src/main/java/net/maku/maku/controller/TBookCollectionController.java index 37b6f37..ec9f3cb 100644 --- a/maku-server/src/main/java/net/maku/maku/controller/TBookCollectionController.java +++ b/maku-server/src/main/java/net/maku/maku/controller/TBookCollectionController.java @@ -1,12 +1,19 @@ package net.maku.maku.controller; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; import lombok.AllArgsConstructor; +import net.maku.framework.common.cache.RedisCache; +import net.maku.framework.common.exception.ErrorCode; +import net.maku.framework.common.exception.ServerException; import net.maku.framework.common.utils.PageResult; import net.maku.framework.common.utils.Result; import net.maku.maku.convert.TBookCollectionConvert; +import net.maku.maku.dao.TBookCollectionDao; import net.maku.maku.entity.TBookCollectionEntity; +import net.maku.maku.entity.TUserEntity; import net.maku.maku.service.TBookCollectionService; import net.maku.maku.query.TBookCollectionQuery; import net.maku.maku.vo.TBookCollectionVO; @@ -15,6 +22,11 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import jakarta.validation.Valid; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Date; import java.util.List; /** @@ -29,17 +41,33 @@ import java.util.List; @AllArgsConstructor public class TBookCollectionController { private final TBookCollectionService tBookCollectionService; + private final TBookCollectionDao bookCollectionDao; + private final RedisCache redisCache; + @GetMapping("/mylist") + public List getBookCollectionByUserId(HttpServletRequest request) { + String token = request.getHeader("token"); + TUserEntity entity = (TUserEntity) redisCache.get(token); + if(ObjectUtils.isNull(entity)){ + throw new ServerException(ErrorCode.REFRESH_TOKEN_INVALID); + } + TUserEntity tUserEntity = (TUserEntity) redisCache.get(token); + Integer userId=tUserEntity.getId(); + LocalDateTime currentTime = LocalDateTime.now(); + ZoneId zoneId = ZoneId.systemDefault(); + ZonedDateTime zdt = currentTime.atZone(zoneId); + Date date = Date.from(zdt.toInstant()); + + return bookCollectionDao.selectBookCollectionByUserId(Long.valueOf(userId)); + } @GetMapping("page") @Operation(summary = "分页") @PreAuthorize("hasAuthority('maku:t_book_collection:page')") public Result> page(@ParameterObject @Valid TBookCollectionQuery query){ PageResult page = tBookCollectionService.page(query); - return Result.ok(page); } - @GetMapping("{id}") @Operation(summary = "信息") @PreAuthorize("hasAuthority('maku:t_book_collection:info')") @@ -75,4 +103,48 @@ public class TBookCollectionController { return Result.ok(); } + @PostMapping("/collection") + @Operation(summary = "收藏图书") + public Result setbookcollection(HttpServletRequest request, @RequestParam Integer bookId) { + String token = request.getHeader("token"); + TUserEntity entity = (TUserEntity) redisCache.get(token); + if (ObjectUtils.isNull(entity)) { + throw new ServerException(ErrorCode.REFRESH_TOKEN_INVALID); + } + + Integer userId = entity.getId(); // 直接使用已经获取的用户信息 + + // Check if the book has already been collected by the user + boolean isBookAlreadyCollected = tBookCollectionService.isBookAlreadyCollected(userId, bookId); + if (isBookAlreadyCollected) { + return Result.error("该书已经收藏过,不能重复收藏"); + } + + // If not already collected, proceed with saving the collection record + LocalDateTime currentTime = LocalDateTime.now(); + ZoneId zoneId = ZoneId.systemDefault(); + ZonedDateTime zdt = currentTime.atZone(zoneId); + Date date = Date.from(zdt.toInstant()); + + tBookCollectionService.save(userId, bookId, date); + + return Result.ok("收藏图书成功"); + } + + @GetMapping("/status") + @Operation(summary = "收藏状态") + public Result status(HttpServletRequest request,@RequestParam Integer bookId){ + String token = request.getHeader("token"); + TUserEntity user = (TUserEntity) redisCache.get(token); + if(ObjectUtils.isNull(user)){ + throw new ServerException(ErrorCode.REFRESH_TOKEN_INVALID); + } + Integer userId=user.getId(); + TBookCollectionEntity entity1 = tBookCollectionService.getByBookIdandUserId(bookId,userId); + if(entity1 !=null&&entity1.getStatus() !=null&&entity1.getStatus()==1){ + return Result.ok("已收藏"); + }else { + return Result.ok("未收藏"); + } + } } \ No newline at end of file diff --git a/maku-server/src/main/java/net/maku/maku/controller/TBookCommentController.java b/maku-server/src/main/java/net/maku/maku/controller/TBookCommentController.java index bce6cc3..19cb224 100644 --- a/maku-server/src/main/java/net/maku/maku/controller/TBookCommentController.java +++ b/maku-server/src/main/java/net/maku/maku/controller/TBookCommentController.java @@ -1,10 +1,13 @@ package net.maku.maku.controller; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; import lombok.AllArgsConstructor; import net.maku.framework.common.cache.RedisCache; +import net.maku.framework.common.exception.ErrorCode; +import net.maku.framework.common.exception.ServerException; import net.maku.framework.common.utils.PageResult; import net.maku.framework.common.utils.Result; import net.maku.maku.convert.TBookCommentConvert; @@ -44,10 +47,12 @@ public class TBookCommentController { public Result setbookcomment(HttpServletRequest request, @RequestParam Integer bookId,@RequestParam String comment) { // 首先验证token的有效性,然后从Redis中获取用户信息 String token = request.getHeader("token"); - if(token==null || token.isEmpty()){ - return Result.error("token is error"); + TUserEntity entity = (TUserEntity) redisCache.get(token); + if(ObjectUtils.isNull(entity)){ + throw new ServerException(ErrorCode.REFRESH_TOKEN_INVALID); } + TUserEntity tUserEntity = (TUserEntity) redisCache.get(token); Integer userId=tUserEntity.getId(); LocalDateTime currentTime = LocalDateTime.now(); @@ -107,4 +112,11 @@ public class TBookCommentController { return Result.ok(); } + @GetMapping("/list/{bookId}") + @Operation(summary = "查看评论列表") + public Result> list(@PathVariable Integer bookId){ + + return Result.ok(tBookCommentService.getByBookId(bookId)); + } + } \ No newline at end of file diff --git a/maku-server/src/main/java/net/maku/maku/controller/TBookController.java b/maku-server/src/main/java/net/maku/maku/controller/TBookController.java index 84156bc..96754a1 100644 --- a/maku-server/src/main/java/net/maku/maku/controller/TBookController.java +++ b/maku-server/src/main/java/net/maku/maku/controller/TBookController.java @@ -1,15 +1,19 @@ package net.maku.maku.controller; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; import lombok.AllArgsConstructor; import net.maku.framework.common.cache.RedisCache; +import net.maku.framework.common.exception.ErrorCode; +import net.maku.framework.common.exception.ServerException; import net.maku.framework.common.utils.PageResult; import net.maku.framework.common.utils.Result; import net.maku.maku.convert.TBookCollectionConvert; import net.maku.maku.convert.TBookConvert; +import net.maku.maku.entity.TBookCollectionEntity; import net.maku.maku.entity.TBookEntity; import net.maku.maku.entity.TUserEntity; import net.maku.maku.service.TBookCollectionService; @@ -67,25 +71,7 @@ public class TBookController { return Result.ok(entity); } - @PostMapping("/collection") - @Operation(summary = "收藏图书") - public Result setbookcollection(HttpServletRequest request, @RequestParam Integer bookId) { - // 首先验证token的有效性,然后从Redis中获取用户信息 - String token = request.getHeader("token"); - if(token==null || token.isEmpty()){ - return Result.error("token is error"); - } - TUserEntity tUserEntity = (TUserEntity) redisCache.get(token); - Integer userId=tUserEntity.getId(); - LocalDateTime currentTime = LocalDateTime.now(); - ZoneId zoneId = ZoneId.systemDefault(); - //DATE没有时区二localDateTime有时区,为了将 LocalDateTime 转换为 Date,你需要指定一个时区,因为 Date 是基于UTC的 - // 将LocalDateTime转换为ZonedDateTime,然后转换为Instant,最后转换为Date - ZonedDateTime zdt = currentTime.atZone(zoneId); - Date date = Date.from(zdt.toInstant()); - tBookCollectionService.save(userId,bookId,date); - return Result.ok("收藏图书成功"); - } + diff --git a/maku-server/src/main/java/net/maku/maku/controller/TShoppingTrolleyController.java b/maku-server/src/main/java/net/maku/maku/controller/TShoppingTrolleyController.java index 07cc1e1..65f0753 100644 --- a/maku-server/src/main/java/net/maku/maku/controller/TShoppingTrolleyController.java +++ b/maku-server/src/main/java/net/maku/maku/controller/TShoppingTrolleyController.java @@ -1,10 +1,13 @@ package net.maku.maku.controller; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; import lombok.AllArgsConstructor; import net.maku.framework.common.cache.RedisCache; +import net.maku.framework.common.exception.ErrorCode; +import net.maku.framework.common.exception.ServerException; import net.maku.framework.common.utils.PageResult; import net.maku.framework.common.utils.Result; import net.maku.maku.convert.TShoppingTrolleyConvert; @@ -42,10 +45,12 @@ public class TShoppingTrolleyController { public Result setshoppingtrolly(HttpServletRequest request, @RequestParam Integer bookId) { // 首先验证token的有效性,然后从Redis中获取用户信息 String token = request.getHeader("token"); - if(token==null || token.isEmpty()){ - return Result.error("token is error"); + TUserEntity entity = (TUserEntity) redisCache.get(token); + if(ObjectUtils.isNull(entity)){ + throw new ServerException(ErrorCode.REFRESH_TOKEN_INVALID); } + TUserEntity tUserEntity = (TUserEntity) redisCache.get(token); Integer userId=tUserEntity.getId(); LocalDateTime currentTime = LocalDateTime.now(); @@ -75,7 +80,6 @@ public class TShoppingTrolleyController { } @GetMapping("{id}") @Operation(summary = "信息") -// @PreAuthorize("hasAuthority('maku:t_shopping_trolley:info')") public Result get(@PathVariable("id") Long id){ TShoppingTrolleyEntity entity = tShoppingTrolleyService.getById(id); diff --git a/maku-server/src/main/java/net/maku/maku/dao/TBookCollectionDao.java b/maku-server/src/main/java/net/maku/maku/dao/TBookCollectionDao.java index bb838cb..a253d41 100644 --- a/maku-server/src/main/java/net/maku/maku/dao/TBookCollectionDao.java +++ b/maku-server/src/main/java/net/maku/maku/dao/TBookCollectionDao.java @@ -4,6 +4,8 @@ import net.maku.framework.mybatis.dao.BaseDao; import net.maku.maku.entity.TBookCollectionEntity; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * * @@ -12,5 +14,5 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface TBookCollectionDao extends BaseDao { - + List selectBookCollectionByUserId(Long id); } \ No newline at end of file diff --git a/maku-server/src/main/java/net/maku/maku/entity/TBookCollectionEntity.java b/maku-server/src/main/java/net/maku/maku/entity/TBookCollectionEntity.java index 73cbd4f..4ab2e3b 100644 --- a/maku-server/src/main/java/net/maku/maku/entity/TBookCollectionEntity.java +++ b/maku-server/src/main/java/net/maku/maku/entity/TBookCollectionEntity.java @@ -25,4 +25,6 @@ public class TBookCollectionEntity { private Date updateTime; + private Integer status; + } \ No newline at end of file diff --git a/maku-server/src/main/java/net/maku/maku/entity/TUserEntity.java b/maku-server/src/main/java/net/maku/maku/entity/TUserEntity.java index 3c16d6a..b890266 100644 --- a/maku-server/src/main/java/net/maku/maku/entity/TUserEntity.java +++ b/maku-server/src/main/java/net/maku/maku/entity/TUserEntity.java @@ -20,6 +20,7 @@ public class TUserEntity { private String username; + private String password; private String avatar; @@ -28,6 +29,10 @@ public class TUserEntity { private Integer status; + private String phone; + + private String email; + private Date createTime; private Date updateTime; diff --git a/maku-server/src/main/java/net/maku/maku/service/TBookCollectionService.java b/maku-server/src/main/java/net/maku/maku/service/TBookCollectionService.java index df9e121..aaa5b4a 100644 --- a/maku-server/src/main/java/net/maku/maku/service/TBookCollectionService.java +++ b/maku-server/src/main/java/net/maku/maku/service/TBookCollectionService.java @@ -26,4 +26,8 @@ public interface TBookCollectionService extends BaseService idList); void save(Integer userId, Integer bookId, Date currentTime); + + TBookCollectionEntity getByBookIdandUserId(Integer bookId, Integer userId); + + boolean isBookAlreadyCollected(Integer userId, Integer bookId); } \ No newline at end of file diff --git a/maku-server/src/main/java/net/maku/maku/service/TBookCommentService.java b/maku-server/src/main/java/net/maku/maku/service/TBookCommentService.java index a6ed9a6..c3262eb 100644 --- a/maku-server/src/main/java/net/maku/maku/service/TBookCommentService.java +++ b/maku-server/src/main/java/net/maku/maku/service/TBookCommentService.java @@ -26,4 +26,6 @@ public interface TBookCommentService extends BaseService { void delete(List idList); void save(Integer userId, Integer bookId, String comment, Date date); + + List getByBookId(Integer bookId); } \ No newline at end of file diff --git a/maku-server/src/main/java/net/maku/maku/service/impl/TBookCollectionServiceImpl.java b/maku-server/src/main/java/net/maku/maku/service/impl/TBookCollectionServiceImpl.java index 4dddfe9..79b7856 100644 --- a/maku-server/src/main/java/net/maku/maku/service/impl/TBookCollectionServiceImpl.java +++ b/maku-server/src/main/java/net/maku/maku/service/impl/TBookCollectionServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AllArgsConstructor; import net.maku.framework.common.utils.PageResult; +import net.maku.framework.common.utils.Result; import net.maku.framework.mybatis.service.impl.BaseServiceImpl; import net.maku.maku.convert.TBookCollectionConvert; import net.maku.maku.entity.TBookCollectionEntity; @@ -70,15 +71,23 @@ public class TBookCollectionServiceImpl extends BaseServiceImpl wrapper = Wrappers.lambdaQuery(); + wrapper.eq(TBookCollectionEntity::getBookId, bookId); + wrapper.eq(TBookCollectionEntity::getUserId, userId); -} \ No newline at end of file + return baseMapper.selectOne(wrapper); + } + @Override + public boolean isBookAlreadyCollected(Integer userId, Integer bookId) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(TBookCollectionEntity::getBookId, bookId); + wrapper.eq(TBookCollectionEntity::getUserId, userId); + return baseMapper.selectCount(wrapper) > 0; + } + } diff --git a/maku-server/src/main/java/net/maku/maku/service/impl/TBookCommentServiceImpl.java b/maku-server/src/main/java/net/maku/maku/service/impl/TBookCommentServiceImpl.java index d5dd02e..f10ed25 100644 --- a/maku-server/src/main/java/net/maku/maku/service/impl/TBookCommentServiceImpl.java +++ b/maku-server/src/main/java/net/maku/maku/service/impl/TBookCommentServiceImpl.java @@ -75,4 +75,11 @@ public class TBookCommentServiceImpl extends BaseServiceImpl getByBookId(Integer bookId) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(TBookCommentEntity::getBookId, bookId); + return baseMapper.selectList(wrapper); + } + } \ No newline at end of file diff --git a/maku-server/src/main/java/net/maku/maku/service/impl/TShoppingTrolleyServiceImpl.java b/maku-server/src/main/java/net/maku/maku/service/impl/TShoppingTrolleyServiceImpl.java index cdca5c2..48d085e 100644 --- a/maku-server/src/main/java/net/maku/maku/service/impl/TShoppingTrolleyServiceImpl.java +++ b/maku-server/src/main/java/net/maku/maku/service/impl/TShoppingTrolleyServiceImpl.java @@ -37,10 +37,10 @@ public class TShoppingTrolleyServiceImpl extends BaseServiceImpl(TShoppingTrolleyConvert.INSTANCE.convertList(page.getRecords()), page.getTotal()); } - private LambdaQueryWrapper getWrapper(TShoppingTrolleyQuery query){ + private LambdaQueryWrapper getWrapper(TShoppingTrolleyQuery query) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.eq(ObjectUtils.isNotNull(query.getUserId()), TShoppingTrolleyEntity::getUserId,query.getUserId()); - wrapper.eq(ObjectUtils.isNotNull(query.getBookId()),TShoppingTrolleyEntity::getBookId, query.getBookId()); + wrapper.eq(ObjectUtils.isNotNull(query.getUserId()), TShoppingTrolleyEntity::getUserId, query.getUserId()); + wrapper.eq(ObjectUtils.isNotNull(query.getBookId()), TShoppingTrolleyEntity::getBookId, query.getBookId()); return wrapper; } @@ -100,5 +100,9 @@ public class TShoppingTrolleyServiceImpl extends BaseServiceImpl + \ No newline at end of file diff --git a/maku-server/src/main/resources/mapper/maku/TUserDao.xml b/maku-server/src/main/resources/mapper/maku/TUserDao.xml index d480c57..8b35abc 100644 --- a/maku-server/src/main/resources/mapper/maku/TUserDao.xml +++ b/maku-server/src/main/resources/mapper/maku/TUserDao.xml @@ -14,4 +14,5 @@ + \ No newline at end of file