From ff7a86ff24deb844d523f965a58b5efa70cc4c4e Mon Sep 17 00:00:00 2001 From: Administrator Date: Fri, 11 Apr 2025 16:06:09 +0800 Subject: [PATCH] redis --- pom.xml | 6 ++ .../hlrj/duobao_demo/DuobaoDemoApplication.java | 2 + .../controller/RecommendationController.java | 91 +++++++++++++++++++++- .../duobao_demo/mapper/RecommendationMapper.java | 7 +- .../service/IRecommendationService.java | 20 +++++ .../org/hlrj/duobao_demo/service/RedisService.java | 57 ++++++++++++++ .../service/impl/RecommendationServiceImpl.java | 22 ++++++ .../org/hlrj/duobao_demo/tool/RedisConfig.java | 58 ++++++++++++++ src/main/resources/mapper/RecommendationMapper.xml | 32 ++++++++ 9 files changed, 290 insertions(+), 5 deletions(-) create mode 100644 src/main/java/org/hlrj/duobao_demo/service/RedisService.java create mode 100644 src/main/java/org/hlrj/duobao_demo/tool/RedisConfig.java diff --git a/pom.xml b/pom.xml index 424aa35..466e6b8 100644 --- a/pom.xml +++ b/pom.xml @@ -59,6 +59,12 @@ 2.9.2 + + + org.springframework.boot + spring-boot-starter-data-redis + + diff --git a/src/main/java/org/hlrj/duobao_demo/DuobaoDemoApplication.java b/src/main/java/org/hlrj/duobao_demo/DuobaoDemoApplication.java index 1739a1a..7402ec0 100644 --- a/src/main/java/org/hlrj/duobao_demo/DuobaoDemoApplication.java +++ b/src/main/java/org/hlrj/duobao_demo/DuobaoDemoApplication.java @@ -4,8 +4,10 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; @SpringBootApplication +@EnableCaching @MapperScan("org.hlrj.duobao_demo.mapper") public class DuobaoDemoApplication { diff --git a/src/main/java/org/hlrj/duobao_demo/controller/RecommendationController.java b/src/main/java/org/hlrj/duobao_demo/controller/RecommendationController.java index 97c3871..64c13ff 100644 --- a/src/main/java/org/hlrj/duobao_demo/controller/RecommendationController.java +++ b/src/main/java/org/hlrj/duobao_demo/controller/RecommendationController.java @@ -1,6 +1,7 @@ package org.hlrj.duobao_demo.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import net.bytebuddy.asm.Advice; import org.hlrj.duobao_demo.entity.Recommendation; @@ -9,9 +10,12 @@ import org.hlrj.duobao_demo.tool.Result; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.HashMap; import java.util.List; +import java.util.Optional; /** *

@@ -23,7 +27,7 @@ import java.util.List; */ @RestController @Slf4j//日志记录 -@RequestMapping("/recommendation") +@RequestMapping("/recommendation/api") public class RecommendationController { //记录日志 @@ -33,7 +37,12 @@ public class RecommendationController { private IRecommendationService recommendationService; ///api/brain/addUserPrivileges //@RequestMapping(value = "/api/selectRecommendation",method = RequestMethod.POST) - @PostMapping("/api/selectRecommendation") + + /** + * 查询操作 + * @return + */ + @PostMapping("/selectRecommendation") public Result selectRecommendation() { log.info("查询全部的推荐视频");//日志记录 @@ -42,11 +51,87 @@ public class RecommendationController { return Result.success(recommendationList); } - @PostMapping("/api/deleteRecommendation/{id}") + + /** + * 删除操作 + * @param id + * @return + */ + @PostMapping("/deleteRecommendation/{id}") public Result deleteRecommendation(@PathVariable Integer id) { log.info("根据id删除推荐:{}",id); recommendationService.delete(id); return Result.success(); } + + /** + * 新增操作 + * @param recommendation + * @return + */ + @PostMapping("/addRecommendation") + public Result addRecommendation(@RequestBody Recommendation recommendation) { + log.info("新增推荐内容:{}",recommendation); + //调用service + recommendationService.add(recommendation); + return Result.success(); + } + + /** + * 根据id查询数据 + * @param id + * @return + */ + @PostMapping("/selectRecommendationById/{id}") + public Result selectRecommendationById(@PathVariable Integer id) { + log.info("根据id进行查询:{}",id); + Recommendation recommendation = recommendationService.selectById(id); + return Result.success(recommendation); + } + + /** + * 更新 + * @param recommendation + * @return + */ + @PostMapping("/updateRecommendation") + public Result updateRecommendation(@RequestBody Recommendation recommendation) { + log.info("更新员工的信息:{}",recommendation); + recommendationService.updateRecommendation(recommendation); + return Result.success(); + } + + + + @PostMapping() + public Result likeRecommendation(@RequestParam Integer id) { + log.info("点赞操作,推荐视频ID:{}",id); + Recommendation recommendation = recommendationService.selectById(id); + return Result.success(recommendation); + + + //查询推荐视频 + /*try { + + Optional optional = recommendationService.selectById(id); + if (!optional.isPresent()) { + return ResponseEntity.notFound().build(); + } + //更新点赞数 + Recommendation recommendation = optional.get(); + QueryWrapper queryWrapper = new QueryWrapper(); + recommendation.setLikes(recommendation.getLikes() + 1); + recommendationService.update(queryWrapper); + //返回最新点赞数 + HashMap response = new HashMap<>(); + response.put("code",200); + response.put("msg","点赞成功"); + response.put("likes", recommendation.getLikes()); + return ResponseEntity.ok(response); + }catch (Exception e){ + log.error("点赞失败,推荐ID:{},错误信息:{}",id,e.getMessage()); + return ResponseEntity.internalServerError().body("服务器内部错误"); + }*/ + } } diff --git a/src/main/java/org/hlrj/duobao_demo/mapper/RecommendationMapper.java b/src/main/java/org/hlrj/duobao_demo/mapper/RecommendationMapper.java index 62e660b..b31a1d3 100644 --- a/src/main/java/org/hlrj/duobao_demo/mapper/RecommendationMapper.java +++ b/src/main/java/org/hlrj/duobao_demo/mapper/RecommendationMapper.java @@ -1,10 +1,11 @@ package org.hlrj.duobao_demo.mapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import org.hlrj.duobao_demo.entity.Recommendation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.mapstruct.Mapper; /** *

@@ -14,7 +15,9 @@ import org.mapstruct.Mapper; * @author liuyusong * @since 2025-04-09 */ - +@Mapper public interface RecommendationMapper extends BaseMapper { + + void updateRecommendation(Recommendation recommendation); } diff --git a/src/main/java/org/hlrj/duobao_demo/service/IRecommendationService.java b/src/main/java/org/hlrj/duobao_demo/service/IRecommendationService.java index 744e9ed..a79a254 100644 --- a/src/main/java/org/hlrj/duobao_demo/service/IRecommendationService.java +++ b/src/main/java/org/hlrj/duobao_demo/service/IRecommendationService.java @@ -4,6 +4,7 @@ import org.hlrj.duobao_demo.entity.Recommendation; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Optional; /** *

@@ -26,5 +27,24 @@ public interface IRecommendationService extends IService { */ public void delete(Integer id); + /** + * 增添 + * @param recommendation + */ + public void add(Recommendation recommendation); + + /** + * 根据id进行查询 + * @param id + * @return + */ + public Recommendation selectById(Integer id); + + /** + * 更新 + * @param recommendation + */ + public void updateRecommendation(Recommendation recommendation); + } diff --git a/src/main/java/org/hlrj/duobao_demo/service/RedisService.java b/src/main/java/org/hlrj/duobao_demo/service/RedisService.java new file mode 100644 index 0000000..85b39af --- /dev/null +++ b/src/main/java/org/hlrj/duobao_demo/service/RedisService.java @@ -0,0 +1,57 @@ +package org.hlrj.duobao_demo.service; + +/** + * @program: duobao_demo + * @ClassName RedisService + * @description: + * @author:liuyusong + * @create: 2025−04-11 15:55 + * @Version 1.0 + **/ + +public interface RedisService { + /** + * 点赞。状态为1 + * @param likedUserId + * @param likedPostId + */ + void saveLiked2Redis(String likedUserId, String likedPostId); + + /** + * 取消点赞。将状态改变为0 + * @param likedUserId + * @param likedPostId + */ + void unlikeFromRedis(String likedUserId, String likedPostId); + + /** + * 从Redis中删除一条点赞数据 + * @param likedUserId + * @param likedPostId + */ + void deleteLikedFromRedis(String likedUserId, String likedPostId); + + /** + * 该用户的点赞数加1 + * @param likedUserId + */ + void incrementLikedCount(String likedUserId); + + /** + * 该用户的点赞数减1 + * @param likedUserId + */ + void decrementLikedCount(String likedUserId); + + /** + * 获取Redis中存储的所有点赞数据 + * @return + */ + // List getLikedDataFromRedis(); + + /** + * 获取Redis中存储的所有点赞数量 + * @return + */ + // List getLikedCountFromRedis(); +} diff --git a/src/main/java/org/hlrj/duobao_demo/service/impl/RecommendationServiceImpl.java b/src/main/java/org/hlrj/duobao_demo/service/impl/RecommendationServiceImpl.java index b61b9ae..43fa4ab 100644 --- a/src/main/java/org/hlrj/duobao_demo/service/impl/RecommendationServiceImpl.java +++ b/src/main/java/org/hlrj/duobao_demo/service/impl/RecommendationServiceImpl.java @@ -8,8 +8,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; import java.util.Collections; import java.util.List; +import java.util.Optional; /** *

@@ -34,5 +36,25 @@ public class RecommendationServiceImpl extends ServiceImpl redisTemplate( + RedisConnectionFactory redisConnectionFactory) + throws UnknownHostException { + + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); + ObjectMapper om = new ObjectMapper(); + om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); + jackson2JsonRedisSerializer.setObjectMapper(om); + + RedisTemplate template = new RedisTemplate(); + template.setConnectionFactory(redisConnectionFactory); + template.setKeySerializer(jackson2JsonRedisSerializer); + template.setValueSerializer(jackson2JsonRedisSerializer); + template.setHashKeySerializer(jackson2JsonRedisSerializer); + template.setHashValueSerializer(jackson2JsonRedisSerializer); + template.afterPropertiesSet(); + return template; + } + + + @Bean + @ConditionalOnMissingBean(StringRedisTemplate.class) + public StringRedisTemplate stringRedisTemplate( + RedisConnectionFactory redisConnectionFactory) + throws UnknownHostException { + StringRedisTemplate template = new StringRedisTemplate(); + template.setConnectionFactory(redisConnectionFactory); + return template; + } +} diff --git a/src/main/resources/mapper/RecommendationMapper.xml b/src/main/resources/mapper/RecommendationMapper.xml index 402152b..5114bf0 100644 --- a/src/main/resources/mapper/RecommendationMapper.xml +++ b/src/main/resources/mapper/RecommendationMapper.xml @@ -14,5 +14,37 @@ + + update Recommendation + + + image_url=#{imageUrl}, + + + title=#{title}, + + + author=#{author}, + + + publish_time=#{publishTime}, + + + likes=#{likes}, + + + comments=#{comments}, + + + shares=#{shares}, + + + source=#{source} + + + + where id = #{id} + +