diff --git a/maku-framework/src/main/java/net/maku/framework/common/cache/RedisCache.java b/maku-framework/src/main/java/net/maku/framework/common/cache/RedisCache.java index e7770e4..0942c77 100644 --- a/maku-framework/src/main/java/net/maku/framework/common/cache/RedisCache.java +++ b/maku-framework/src/main/java/net/maku/framework/common/cache/RedisCache.java @@ -57,6 +57,18 @@ public class RedisCache { } return value; } + public T get(String key, Class clazz) { + Object value = redisTemplate.opsForValue().get(key); + if (value == null) { + return null; // or throw an exception, depending on your requirement + } + if (clazz.isInstance(value)) { + return clazz.cast(value); + } else { + throw new IllegalStateException("Cached value is not of expected type " + clazz); + } + } + public Object get(String key) { return get(key, NOT_EXPIRE); diff --git a/maku-framework/src/main/resources/auth.yml b/maku-framework/src/main/resources/auth.yml index d1f4a6e..0066943 100644 --- a/maku-framework/src/main/resources/auth.yml +++ b/maku-framework/src/main/resources/auth.yml @@ -16,4 +16,5 @@ auth: - /maku/t_book/list/search - /maku/t_book/{id} - /user/login + - /maku/t_shopping_trolley/aaa 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 95fc087..2585d57 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 @@ -2,11 +2,14 @@ package net.maku.maku.controller; 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.utils.PageResult; import net.maku.framework.common.utils.Result; import net.maku.maku.convert.TBookCommentConvert; import net.maku.maku.entity.TBookCommentEntity; +import net.maku.maku.entity.TUserEntity; import net.maku.maku.service.TBookCommentService; import net.maku.maku.query.TBookCommentQuery; import net.maku.maku.vo.TBookCommentVO; @@ -15,6 +18,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,6 +37,27 @@ import java.util.List; @AllArgsConstructor public class TBookCommentController { private final TBookCommentService tBookCommentService; + private final RedisCache redisCache; + @PostMapping("/comment") + public Result setshoppingtrolly(HttpServletRequest request, @RequestBody TBookCommentVO vo) { + // 首先验证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("加入购物车成功"); + + } @GetMapping("page") @Operation(summary = "分页") 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 874cbf7..9b88ad5 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 @@ -3,11 +3,16 @@ package net.maku.maku.controller; 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.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.TBookEntity; +import net.maku.maku.entity.TUserEntity; +import net.maku.maku.service.TBookCollectionService; import net.maku.maku.service.TBookService; import net.maku.maku.query.TBookQuery; import net.maku.maku.vo.TBookVO; @@ -16,6 +21,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; /** @@ -30,6 +40,8 @@ import java.util.List; @AllArgsConstructor public class TBookController { private final TBookService tBookService; + private final RedisCache redisCache; + private final TBookCollectionService tBookCollectionService; @GetMapping("/list") @Operation(summary = "列表") @@ -56,6 +68,28 @@ public class TBookController { return Result.ok(entity); } + @GetMapping("/collection") + 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("收藏图书成功"); + + } + @GetMapping("page") @@ -63,7 +97,6 @@ public class TBookController { @PreAuthorize("hasAuthority('maku:t_book:page')") public Result> page(@ParameterObject @Valid TBookQuery query){ PageResult page = tBookService.page(query); - return Result.ok(page); } 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 3c566cb..c43230d 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 @@ -2,11 +2,14 @@ package net.maku.maku.controller; 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.utils.PageResult; import net.maku.framework.common.utils.Result; import net.maku.maku.convert.TShoppingTrolleyConvert; import net.maku.maku.entity.TShoppingTrolleyEntity; +import net.maku.maku.entity.TUserEntity; import net.maku.maku.service.TShoppingTrolleyService; import net.maku.maku.query.TShoppingTrolleyQuery; import net.maku.maku.vo.TShoppingTrolleyVO; @@ -15,6 +18,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; /** @@ -28,7 +36,30 @@ import java.util.List; @Tag(name="") @AllArgsConstructor public class TShoppingTrolleyController { + private final RedisCache redisCache; private final TShoppingTrolleyService tShoppingTrolleyService; + @GetMapping("/aaa") + 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 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()); + tShoppingTrolleyService.save(userId,bookId,date); + return Result.ok("加入购物车成功"); + + } + @GetMapping("page") @Operation(summary = "分页") @@ -41,7 +72,7 @@ public class TShoppingTrolleyController { @GetMapping("{id}") @Operation(summary = "信息") - @PreAuthorize("hasAuthority('maku:t_shopping_trolley:info')") +// @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/entity/TBookCollectionEntity.java b/maku-server/src/main/java/net/maku/maku/entity/TBookCollectionEntity.java index f42d385..73cbd4f 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 @@ -1,7 +1,6 @@ package net.maku.maku.entity; import lombok.Data; -import lombok.EqualsAndHashCode; import com.baomidou.mybatisplus.annotation.*; import java.util.Date; 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 5c16ba1..4e6ef9a 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 @@ -6,6 +6,8 @@ import net.maku.maku.vo.TBookCollectionVO; import net.maku.maku.query.TBookCollectionQuery; import net.maku.maku.entity.TBookCollectionEntity; +import java.time.LocalDateTime; +import java.util.Date; import java.util.List; /** @@ -23,4 +25,6 @@ public interface TBookCollectionService extends BaseService idList); + + void save(Integer userId, Integer bookId, Date currentTime); } \ No newline at end of file diff --git a/maku-server/src/main/java/net/maku/maku/service/TShoppingTrolleyService.java b/maku-server/src/main/java/net/maku/maku/service/TShoppingTrolleyService.java index 743a48b..7323fa2 100644 --- a/maku-server/src/main/java/net/maku/maku/service/TShoppingTrolleyService.java +++ b/maku-server/src/main/java/net/maku/maku/service/TShoppingTrolleyService.java @@ -6,6 +6,7 @@ import net.maku.maku.vo.TShoppingTrolleyVO; import net.maku.maku.query.TShoppingTrolleyQuery; import net.maku.maku.entity.TShoppingTrolleyEntity; +import java.util.Date; import java.util.List; /** @@ -23,4 +24,6 @@ public interface TShoppingTrolleyService extends BaseService idList); + + void save(Integer userId, Integer bookId, Date date); } \ 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 7679fff..0d9d1b0 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 @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AllArgsConstructor; +import lombok.Data; import net.maku.framework.common.utils.PageResult; import net.maku.framework.mybatis.service.impl.BaseServiceImpl; import net.maku.maku.convert.TBookCollectionConvert; @@ -16,6 +17,8 @@ import net.maku.maku.service.TBookCollectionService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; +import java.util.Date; import java.util.List; /** @@ -62,4 +65,20 @@ public class TBookCollectionServiceImpl extends BaseServiceImpl