xdd 2 일 전
부모
커밋
b79b528743

+ 8 - 4
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -81,6 +81,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -247,6 +248,8 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
     @Autowired
     private CloudHostProper cloudHostProper;
 
+    private RedisTemplate<String,BigDecimal> redisTemplate;
+
 
     /**
      * 查询课堂视频
@@ -1151,7 +1154,8 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
 
         BigDecimal companyMoney = null;
         if(StringUtils.equals(ENABLE_RED_PACK_ACCOUNT,"1")) {
-            companyMoney = redisCache.getCacheObject(REDPACKET_COMPANY_MONEY);
+            companyMoney = redisTemplate.opsForValue().get(REDPACKET_COMPANY_MONEY);
+
             if(ObjectUtils.isNull(companyMoney)){
                 SysConfig sysConfig = sysConfigService.selectConfigByConfigKey("company.money");
                 if(ObjectUtils.isNull(sysConfig)){
@@ -1207,7 +1211,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
                 logger.info("[更新账户余额] 当前余额{} 更新后余额{}",companyMoney.toPlainString(),companyMoney.subtract(amount).toPlainString());
 
                 companyMoney = companyMoney.subtract(amount);
-                redisCache.setCacheObject(REDPACKET_COMPANY_MONEY,companyMoney);
+                redisTemplate.opsForValue().set(REDPACKET_COMPANY_MONEY,companyMoney);
             }
             return sendRedPacket;
         } else {
@@ -1332,7 +1336,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
 
                 BigDecimal companyMoney = null;
                 if(StringUtils.equals(ENABLE_RED_PACK_ACCOUNT,"1")) {
-                    companyMoney = redisCache.getCacheObject(REDPACKET_COMPANY_MONEY);
+                    companyMoney = redisTemplate.opsForValue().get(REDPACKET_COMPANY_MONEY);
                     if(ObjectUtils.isNull(companyMoney)){
                         SysConfig sysConfig = sysConfigService.selectConfigByConfigKey("company.money");
                         if(ObjectUtils.isNull(sysConfig)){
@@ -1386,7 +1390,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
                         logger.info("[更新账户余额] 当前余额{} 更新后余额{}",companyMoney.toPlainString(),companyMoney.subtract(amount).toPlainString());
 
                         companyMoney = companyMoney.subtract(amount);
-                        redisCache.setCacheObject(REDPACKET_COMPANY_MONEY,companyMoney);
+                        redisTemplate.opsForValue().set(REDPACKET_COMPANY_MONEY,companyMoney);
                     }
 
                     return sendRedPacket;

+ 18 - 0
fs-user-app/src/main/java/com/fs/framework/config/RedisConfig.java

@@ -19,6 +19,7 @@ import org.springframework.data.redis.serializer.GenericToStringSerializer;
 import org.springframework.data.redis.serializer.RedisSerializationContext;
 import org.springframework.data.redis.serializer.StringRedisSerializer;
 
+import java.math.BigDecimal;
 import java.time.Duration;
 
 /**
@@ -86,7 +87,24 @@ public class RedisConfig extends CachingConfigurerSupport
         template.afterPropertiesSet();
         return template;
     }
+    @Bean
+    public RedisTemplate<String, BigDecimal> redisTemplateForBigDecimal(RedisConnectionFactory connectionFactory) {
+        RedisTemplate<String, BigDecimal> template = new RedisTemplate<>();
+        template.setConnectionFactory(connectionFactory);
+
+        // 使用StringRedisSerializer来序列化和反序列化redis的key值
+        template.setKeySerializer(new StringRedisSerializer());
+
+        // 使用GenericToStringSerializer保证BigDecimal精度不丢失
+        template.setValueSerializer(new GenericToStringSerializer<>(BigDecimal.class));
 
+        // Hash的key也采用StringRedisSerializer的序列化方式
+        template.setHashKeySerializer(new StringRedisSerializer());
+        template.setHashValueSerializer(new GenericToStringSerializer<>(BigDecimal.class));
+
+        template.afterPropertiesSet();
+        return template;
+    }
     @Bean
     @SuppressWarnings(value = { "unchecked", "rawtypes" })
     public RedisTemplate<String, Object> redisTemplateForObject(RedisConnectionFactory connectionFactory) {