Administrator 1 month ago
parent
commit
ff7a86ff24
  1. 6
      pom.xml
  2. 2
      src/main/java/org/hlrj/duobao_demo/DuobaoDemoApplication.java
  3. 91
      src/main/java/org/hlrj/duobao_demo/controller/RecommendationController.java
  4. 7
      src/main/java/org/hlrj/duobao_demo/mapper/RecommendationMapper.java
  5. 20
      src/main/java/org/hlrj/duobao_demo/service/IRecommendationService.java
  6. 57
      src/main/java/org/hlrj/duobao_demo/service/RedisService.java
  7. 22
      src/main/java/org/hlrj/duobao_demo/service/impl/RecommendationServiceImpl.java
  8. 58
      src/main/java/org/hlrj/duobao_demo/tool/RedisConfig.java
  9. 32
      src/main/resources/mapper/RecommendationMapper.xml

6
pom.xml

@ -59,6 +59,12 @@
<version>2.9.2</version>
</dependency>
<!--redis相关依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>

2
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 {

91
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;
/**
* <p>
@ -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<Recommendation> optional = recommendationService.selectById(id);
if (!optional.isPresent()) {
return ResponseEntity.notFound().build();
}
//更新点赞数
Recommendation recommendation = optional.get();
QueryWrapper<Recommendation> queryWrapper = new QueryWrapper<Recommendation>();
recommendation.setLikes(recommendation.getLikes() + 1);
recommendationService.update(queryWrapper);
//返回最新点赞数
HashMap<String, Object> 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("服务器内部错误");
}*/
}
}

7
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;
/**
* <p>
@ -14,7 +15,9 @@ import org.mapstruct.Mapper;
* @author liuyusong
* @since 2025-04-09
*/
@Mapper
public interface RecommendationMapper extends BaseMapper<Recommendation> {
void updateRecommendation(Recommendation recommendation);
}

20
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;
/**
* <p>
@ -26,5 +27,24 @@ public interface IRecommendationService extends IService<Recommendation> {
*/
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);
}

57
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: 202504-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<UserLike> getLikedDataFromRedis();
/**
* 获取Redis中存储的所有点赞数量
* @return
*/
// List<LikedCountDTO> getLikedCountFromRedis();
}

22
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;
/**
* <p>
@ -34,5 +36,25 @@ public class RecommendationServiceImpl extends ServiceImpl<RecommendationMapper,
recommendationMapper.deleteById(id);
}
@Override
public void add(Recommendation recommendation) {
recommendation.setPublishTime(LocalDateTime.now());
recommendationMapper.insert(recommendation);
}
@Override
public Recommendation selectById(Integer id) {
return recommendationMapper.selectById(id);
}
@Override
public void updateRecommendation(Recommendation recommendation) {
recommendationMapper.updateRecommendation(recommendation);
}
}

58
src/main/java/org/hlrj/duobao_demo/tool/RedisConfig.java

@ -0,0 +1,58 @@
package org.hlrj.duobao_demo.tool;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import java.net.UnknownHostException;
/**
* @program: duobao_demo
* @ClassName RedisConfig
* @description:
* @author:liuyusong
* @create: 202504-11 15:46
* @Version 1.0
**/
@Configuration
public class RedisConfig {
@Bean
@ConditionalOnMissingBean(name = "redisTemplate")
public RedisTemplate<String, Object> redisTemplate(
RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
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;
}
}

32
src/main/resources/mapper/RecommendationMapper.xml

@ -14,5 +14,37 @@
<result column="shares" property="shares" />
<result column="source" property="source" />
</resultMap>
<update id="updateRecommendation" parameterType="org.hlrj.duobao_demo.entity.Recommendation">
update Recommendation
<set>
<if test="imageUrl !=null and imageUrl!=''">
image_url=#{imageUrl},
</if>
<if test="title !=null and title!=''">
title=#{title},
</if>
<if test="author !=null and author!=''">
author=#{author},
</if>
<if test="publishTime !=null and publishTime!=''">
publish_time=#{publishTime},
</if>
<if test="likes !=null">
likes=#{likes},
</if>
<if test="comments !=null and comments!=''">
comments=#{comments},
</if>
<if test="shares !=null">
shares=#{shares},
</if>
<if test="source !=null">
source=#{source}
</if>
</set>
where id = #{id}
</update>
</mapper>
Loading…
Cancel
Save