Parcourir la source

feat: 缓存配置

xdd il y a 1 semaine
Parent
commit
ed7bf53ab8

+ 0 - 6
fs-admin/src/main/java/com/fs/store/controller/FsStoreHealthOrderController.java

@@ -11,13 +11,7 @@ import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.StringUtils;
 import com.fs.common.utils.poi.ExcelUtil;
-import com.fs.company.service.ICompanyMoneyLogsService;
-import com.fs.erp.service.IErpOrderService;
 import com.fs.store.cache.IFsStoreProductCacheService;
-import com.fs.store.cache.IFsWarehouseCacheService;
-import com.fs.store.cache.impl.FsWarehouseCacheServiceImpl;
-import com.fs.store.domain.FsStoreProduct;
-import com.fs.store.domain.FsWarehouses;
 import com.fs.store.dto.StoreOrderProductDTO;
 import com.fs.store.param.FsStoreOrderParam;
 import com.fs.store.service.*;

+ 20 - 0
fs-service-system/src/main/java/com/fs/store/cache/IFsStoreProductAttrCacheService.java

@@ -0,0 +1,20 @@
+package com.fs.store.cache;
+
+import com.fs.store.domain.FsStoreProductAttr;
+
+/**
+ * 商品属性缓存服务接口
+ *
+ * @author fs
+ */
+public interface IFsStoreProductAttrCacheService {
+
+    /**
+     * 根据ID查询商品属性信息
+     *
+     * @param id 商品属性ID
+     * @return 商品属性信息
+     */
+    FsStoreProductAttr selectFsStoreProductAttrById(Long id);
+
+}

+ 19 - 0
fs-service-system/src/main/java/com/fs/store/cache/IFsUserAddressCacheService.java

@@ -0,0 +1,19 @@
+package com.fs.store.cache;
+
+import com.fs.store.domain.FsUserAddress;
+
+/**
+ * 用户地址缓存服务接口
+ *
+ * @author fs
+ */
+public interface IFsUserAddressCacheService {
+    /**
+     * 根据ID查询用户地址
+     *
+     * @param id 用户地址ID
+     * @return 用户地址信息
+     */
+    FsUserAddress selectFsUserAddressById(Long id);
+
+}

+ 7 - 4
fs-service-system/src/main/java/com/fs/store/cache/IFsUserCacheService.java

@@ -3,14 +3,17 @@ package com.fs.store.cache;
 import com.fs.store.domain.FsUser;
 
 /**
- * 用户查询缓存
+ * 用户缓存服务接口
+ *
+ * @author fs
  */
 public interface IFsUserCacheService {
+
     /**
-     * 查询用户
+     * 根据用户ID查询用户信息
      *
      * @param userId 用户ID
-     * @return 用户
+     * @return 用户信息
      */
-    public FsUser selectFsUserById(Long userId);
+    FsUser selectFsUserById(Long userId);
 }

+ 0 - 7
fs-service-system/src/main/java/com/fs/store/cache/IFsWarehouseCacheService.java

@@ -1,7 +0,0 @@
-package com.fs.store.cache;
-
-import com.fs.store.domain.FsWarehouses;
-
-public interface IFsWarehouseCacheService {
-    FsWarehouses selectFsWarehousesById(Long id);
-}

+ 17 - 0
fs-service-system/src/main/java/com/fs/store/cache/IFsWarehousesCacheService.java

@@ -0,0 +1,17 @@
+package com.fs.store.cache;
+
+import com.fs.store.domain.FsWarehouses;
+
+/**
+ * 仓库信息缓存服务接口
+ */
+public interface IFsWarehousesCacheService {
+
+    /**
+     * 根据ID查询仓库信息
+     *
+     * @param id 仓库ID
+     * @return 仓库信息
+     */
+    FsWarehouses selectFsWarehousesById(Long id);
+}

+ 55 - 0
fs-service-system/src/main/java/com/fs/store/cache/impl/FsStoreProductAttrCacheServiceImpl.java

@@ -0,0 +1,55 @@
+package com.fs.store.cache.impl;
+
+import com.fs.store.cache.IFsStoreProductAttrCacheService;
+import com.fs.store.domain.FsStoreProductAttr;
+import com.fs.store.service.IFsStoreProductAttrService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 商品属性信息缓存服务实现
+ *
+ * @author fs
+ */
+@Service
+@Slf4j
+@RequiredArgsConstructor
+public class FsStoreProductAttrCacheServiceImpl implements IFsStoreProductAttrCacheService {
+
+    private final RedisTemplate<String, Object> redisTemplate;
+    private final IFsStoreProductAttrService productAttrService;
+
+    /**
+     * 缓存前缀
+     */
+    private static final String CACHE_PREFIX = "fs:store:product:attr:";
+
+
+    @Override
+    public FsStoreProductAttr selectFsStoreProductAttrById(Long id) {
+        if (id == null) {
+            throw new IllegalArgumentException("商品属性id不能为空!");
+        }
+
+        // 尝试从缓存获取
+        try {
+            String redisKey = CACHE_PREFIX + id;
+            FsStoreProductAttr productAttr = (FsStoreProductAttr) redisTemplate.opsForValue().get(redisKey);
+            if (productAttr != null) {
+                log.debug("缓存命中商品属性信息, id: {}", id);
+                return productAttr;
+            }
+        } catch (Exception e) {
+            log.error("获取商品属性缓存异常, id: {}, 异常信息: {}", id, e.getMessage(), e);
+        }
+
+        log.debug("缓存未命中商品属性信息, id: {}, 从数据库查询", id);
+        FsStoreProductAttr productAttr = productAttrService.selectFsStoreProductAttrById(id);
+        return productAttr;
+    }
+
+}

+ 47 - 0
fs-service-system/src/main/java/com/fs/store/cache/impl/FsUserAddressCacheServiceImpl.java

@@ -0,0 +1,47 @@
+package com.fs.store.cache.impl;
+
+import com.fs.store.cache.IFsUserAddressCacheService;
+import com.fs.store.domain.FsUserAddress;
+import com.fs.store.service.IFsUserAddressService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+/**
+ * 用户地址缓存服务实现
+ *
+ * @author fs
+ */
+@Service
+@Slf4j
+@RequiredArgsConstructor
+public class FsUserAddressCacheServiceImpl implements IFsUserAddressCacheService {
+    private final RedisTemplate<String, Object> redisTemplate;
+    private final IFsUserAddressService fsUserAddressService;
+
+    @Override
+    public FsUserAddress selectFsUserAddressById(Long id) {
+        if (id == null) {
+            throw new IllegalArgumentException("用户地址id不能为空!");
+        }
+
+        // 尝试从缓存获取
+        try {
+            String redisKey = String.format("fs:user:address:%d", id);
+            FsUserAddress userAddress = (FsUserAddress) redisTemplate.opsForValue().get(redisKey);
+            if (userAddress != null) {
+                log.debug("缓存命中用户地址信息, id: {}", id);
+                return userAddress;
+            }
+        } catch (Exception e) {
+            log.error("获取用户地址缓存异常, id: {}, 异常信息: {}", id, e.getMessage(), e);
+        }
+
+        log.debug("缓存未命中用户地址信息, id: {}, 从数据库查询", id);
+        FsUserAddress userAddress = fsUserAddressService.selectFsUserAddressById(id);
+
+        return userAddress;
+    }
+
+}

+ 47 - 0
fs-service-system/src/main/java/com/fs/store/cache/impl/FsUserCacheServiceImpl.java

@@ -0,0 +1,47 @@
+package com.fs.store.cache.impl;
+
+import com.fs.store.cache.IFsUserCacheService;
+import com.fs.store.domain.FsUser;
+import com.fs.store.service.IFsUserService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+/**
+ * 用户缓存服务实现类
+ *
+ * @author fs
+ */
+@Service
+@Slf4j
+@RequiredArgsConstructor
+public class FsUserCacheServiceImpl implements IFsUserCacheService {
+
+    private final RedisTemplate<String, Object> redisTemplate;
+    private final IFsUserService fsUserService;
+
+    @Override
+    public FsUser selectFsUserById(Long userId) {
+        if (userId == null) {
+            throw new IllegalArgumentException("用户ID不能为空!");
+        }
+
+        // 尝试从缓存获取
+        try {
+            String redisKey = String.format("fs:user:%d", userId);
+            FsUser user = (FsUser) redisTemplate.opsForValue().get(redisKey);
+            if (user != null) {
+                log.debug("缓存命中用户信息, userId: {}", userId);
+                return user;
+            }
+        } catch (Exception e) {
+            log.error("获取用户缓存异常, userId: {}, 异常信息: {}", userId, e.getMessage(), e);
+        }
+
+        log.debug("缓存未命中用户信息, userId: {}, 从数据库查询", userId);
+        FsUser user = fsUserService.selectFsUserById(userId);
+
+        return user;
+    }
+}

+ 0 - 36
fs-service-system/src/main/java/com/fs/store/cache/impl/FsWarehouseCacheServiceImpl.java

@@ -1,36 +0,0 @@
-package com.fs.store.cache.impl;
-
-import com.fs.store.cache.IFsStoreProductCacheService;
-import com.fs.store.cache.IFsWarehouseCacheService;
-import com.fs.store.domain.FsStoreProduct;
-import com.fs.store.domain.FsWarehouses;
-import com.fs.store.service.IFsWarehousesService;
-import com.github.benmanes.caffeine.cache.Cache;
-import com.github.benmanes.caffeine.cache.Caffeine;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.concurrent.TimeUnit;
-
-@Service
-@Slf4j
-@RequiredArgsConstructor
-public class FsWarehouseCacheServiceImpl implements IFsWarehouseCacheService {
-    private final IFsWarehousesService fsWarehousesService;
-    /**
-     * 使用Caffeine本地缓存
-     * maximumSize: 最大缓存条数
-     * expireAfterWrite: 写入后多久过期(分钟)
-     */
-    private static final Cache<Long, FsWarehouses> CACHE = Caffeine.newBuilder()
-            .maximumSize(1000)
-            .expireAfterWrite(1, TimeUnit.MINUTES)
-            .build();
-
-
-    @Override
-    public FsWarehouses selectFsWarehousesById(Long id) {
-        return CACHE.get(id, e -> fsWarehousesService.selectFsWarehousesById(id));
-    }
-}

+ 45 - 0
fs-service-system/src/main/java/com/fs/store/cache/impl/FsWarehousesCacheServiceImpl.java

@@ -0,0 +1,45 @@
+package com.fs.store.cache.impl;
+
+import com.fs.store.cache.IFsWarehousesCacheService;
+import com.fs.store.domain.FsWarehouses;
+import com.fs.store.service.IFsWarehousesService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+/**
+ * 仓库信息缓存服务实现类
+ */
+@Service
+@Slf4j
+@RequiredArgsConstructor
+public class FsWarehousesCacheServiceImpl implements IFsWarehousesCacheService {
+
+    private final RedisTemplate<String, Object> redisTemplate;
+    private final IFsWarehousesService fsWarehousesService;
+
+    @Override
+    public FsWarehouses selectFsWarehousesById(Long id) {
+        if (id == null) {
+            throw new IllegalArgumentException("仓库ID不能为空!");
+        }
+
+        // 尝试从缓存获取
+        try {
+            String redisKey = String.format("fs:warehouses:%d", id);
+            FsWarehouses warehouses = (FsWarehouses) redisTemplate.opsForValue().get(redisKey);
+            if (warehouses != null) {
+                log.debug("缓存命中仓库信息, id: {}", id);
+                return warehouses;
+            }
+        } catch (Exception e) {
+            log.error("获取仓库缓存异常, id: {}, 异常信息: {}", id, e.getMessage(), e);
+        }
+
+        log.debug("缓存未命中仓库信息, id: {}, 从数据库查询", id);
+        FsWarehouses warehouses = fsWarehousesService.selectFsWarehousesById(id);
+
+        return warehouses;
+    }
+}

+ 2 - 3
fs-service-system/src/main/java/com/fs/store/cache/impl/IFsStoreProductCacheServiceImpl.java

@@ -2,11 +2,10 @@ package com.fs.store.cache.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.fs.store.cache.IFsStoreProductCacheService;
-import com.fs.store.cache.IFsWarehouseCacheService;
+import com.fs.store.cache.IFsWarehousesCacheService;
 import com.fs.store.domain.FsStoreProduct;
 import com.fs.store.domain.FsWarehouses;
 import com.fs.store.service.IFsStoreProductService;
-import com.fs.system.cache.impl.SysDictDataCacheServiceImpl;
 import com.github.benmanes.caffeine.cache.Cache;
 import com.github.benmanes.caffeine.cache.Caffeine;
 import lombok.RequiredArgsConstructor;
@@ -20,7 +19,7 @@ import java.util.concurrent.TimeUnit;
 @RequiredArgsConstructor
 public class IFsStoreProductCacheServiceImpl implements IFsStoreProductCacheService {
     private final IFsStoreProductService fsStoreProductService;
-    private final IFsWarehouseCacheService fsWarehouseCacheService;
+    private final IFsWarehousesCacheService fsWarehouseCacheService;
     /**
      * 使用Caffeine本地缓存
      * maximumSize: 最大缓存条数

+ 0 - 28
fs-service-system/src/main/java/com/fs/store/cache/impl/IFsUserCacheServiceImpl.java

@@ -1,28 +0,0 @@
-package com.fs.store.cache.impl;
-
-import com.fs.store.cache.IFsUserCacheService;
-import com.fs.store.domain.FsUser;
-import com.fs.store.service.IFsUserService;
-import com.github.benmanes.caffeine.cache.Cache;
-import com.github.benmanes.caffeine.cache.Caffeine;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.util.concurrent.TimeUnit;
-
-@RequiredArgsConstructor
-@Service
-@Slf4j
-public class IFsUserCacheServiceImpl implements IFsUserCacheService {
-    private final IFsUserService fsUserService;
-    private static final Cache<Long, FsUser> USER_CACHE = Caffeine.newBuilder()
-            .maximumSize(1000)
-            .expireAfterWrite(3, TimeUnit.MINUTES)
-            .build();
-
-    @Override
-    public FsUser selectFsUserById(Long userId) {
-        return USER_CACHE.get(userId,e->fsUserService.selectFsUserById(userId));
-    }
-}

+ 4 - 300
fs-service-system/src/main/java/com/fs/store/domain/FsUser.java

@@ -6,6 +6,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fs.common.annotation.Excel;
 import com.fs.common.core.domain.BaseEntity;
 import com.vdurmont.emoji.EmojiParser;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 import org.apache.commons.lang3.StringUtils;
 
 /**
@@ -14,6 +16,8 @@ import org.apache.commons.lang3.StringUtils;
  * @author fs
  * @date 2022-03-15
  */
+@EqualsAndHashCode(callSuper = true)
+@Data
 public class FsUser extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
@@ -124,151 +128,6 @@ public class FsUser extends BaseEntity
 
     private String userCode;
 
-    public String getUserCode() {
-        return userCode;
-    }
-
-    public void setUserCode(String userCode) {
-        this.userCode = userCode;
-    }
-
-    public String getMaOpenId() {
-        return maOpenId;
-    }
-
-    public void setMaOpenId(String maOpenId) {
-        this.maOpenId = maOpenId;
-    }
-
-    public String getMpOpenId() {
-        return mpOpenId;
-    }
-
-    public void setMpOpenId(String mpOpenId) {
-        this.mpOpenId = mpOpenId;
-    }
-
-    public String getUnionId() {
-        return unionId;
-    }
-
-    public void setUnionId(String unionId) {
-        this.unionId = unionId;
-    }
-
-    public Date getRegisterDate() {
-        return registerDate;
-    }
-
-    public void setRegisterDate(Date registerDate) {
-        this.registerDate = registerDate;
-    }
-
-    public String getRegisterCode() {
-        return registerCode;
-    }
-
-    public void setRegisterCode(String registerCode) {
-        this.registerCode = registerCode;
-    }
-
-    public String getSource() {
-        return source;
-    }
-
-    public void setSource(String source) {
-        this.source = source;
-    }
-
-    public Long getCompanyId() {
-        return companyId;
-    }
-
-    public void setCompanyId(Long companyId) {
-        this.companyId = companyId;
-    }
-
-    public Long getCompanyUserId() {
-        return companyUserId;
-    }
-
-    public void setCompanyUserId(Long companyUserId) {
-        this.companyUserId = companyUserId;
-    }
-
-    public Integer getIsWeixinAuth() {
-        return isWeixinAuth;
-    }
-
-    public void setIsWeixinAuth(Integer isWeixinAuth) {
-        this.isWeixinAuth = isWeixinAuth;
-    }
-
-    public void setUserId(Long userId)
-    {
-        this.userId = userId;
-    }
-
-    public Long getUserId()
-    {
-        return userId;
-    }
-    public void setUsername(String username)
-    {
-        this.username = username;
-    }
-
-    public String getUsername()
-    {
-        return username;
-    }
-    public void setPassword(String password)
-    {
-        this.password = password;
-    }
-
-    public String getPassword()
-    {
-        return password;
-    }
-    public void setRealName(String realName)
-    {
-        this.realName = realName;
-    }
-
-    public String getRealName()
-    {
-        return realName;
-    }
-    public void setBirthday(Long birthday)
-    {
-        this.birthday = birthday;
-    }
-
-    public Long getBirthday()
-    {
-        return birthday;
-    }
-    public void setIdCard(String idCard)
-    {
-        this.idCard = idCard;
-    }
-
-    public String getIdCard()
-    {
-        return idCard;
-    }
-
-    @Override
-    public String getRemark() {
-        return remark;
-    }
-
-    @Override
-    public void setRemark(String remark) {
-        this.remark = remark;
-    }
-
     public void setNickname(String nickname)
     {
         if(StringUtils.isNotEmpty(nickname)){
@@ -288,160 +147,5 @@ public class FsUser extends BaseEntity
             return nickname;
         }
     }
-    public void setAvatar(String avatar)
-    {
-        this.avatar = avatar;
-    }
-
-    public String getAvatar()
-    {
-        return avatar;
-    }
-    public void setPhone(String phone)
-    {
-        this.phone = phone;
-    }
-
-    public String getPhone()
-    {
-        return phone;
-    }
-    public void setLastIp(String lastIp)
-    {
-        this.lastIp = lastIp;
-    }
-
-    public String getLastIp()
-    {
-        return lastIp;
-    }
-    public void setNowMoney(BigDecimal nowMoney)
-    {
-        this.nowMoney = nowMoney;
-    }
-
-    public BigDecimal getNowMoney()
-    {
-        return nowMoney;
-    }
-    public void setBrokeragePrice(BigDecimal brokeragePrice)
-    {
-        this.brokeragePrice = brokeragePrice;
-    }
-
-    public BigDecimal getBrokeragePrice()
-    {
-        return brokeragePrice;
-    }
-    public void setIntegral(BigDecimal integral)
-    {
-        this.integral = integral;
-    }
-
-    public BigDecimal getIntegral()
-    {
-        return integral;
-    }
-    public void setSignNum(Long signNum)
-    {
-        this.signNum = signNum;
-    }
-
-    public Long getSignNum()
-    {
-        return signNum;
-    }
-    public void setStatus(Integer status)
-    {
-        this.status = status;
-    }
-
-    public Integer getStatus()
-    {
-        return status;
-    }
-    public void setLevel(Integer level)
-    {
-        this.level = level;
-    }
-
-    public Integer getLevel()
-    {
-        return level;
-    }
-    public void setSpreadUserId(Long spreadUserId)
-    {
-        this.spreadUserId = spreadUserId;
-    }
-
-    public Long getSpreadUserId()
-    {
-        return spreadUserId;
-    }
-    public void setSpreadTime(Date spreadTime)
-    {
-        this.spreadTime = spreadTime;
-    }
-
-    public Date getSpreadTime()
-    {
-        return spreadTime;
-    }
-    public void setUserType(String userType)
-    {
-        this.userType = userType;
-    }
-
-    public String getUserType()
-    {
-        return userType;
-    }
-    public void setIsPromoter(Integer isPromoter)
-    {
-        this.isPromoter = isPromoter;
-    }
-
-    public Integer getIsPromoter()
-    {
-        return isPromoter;
-    }
-    public void setPayCount(Long payCount)
-    {
-        this.payCount = payCount;
-    }
-
-    public Long getPayCount()
-    {
-        return payCount;
-    }
-    public void setSpreadCount(Long spreadCount)
-    {
-        this.spreadCount = spreadCount;
-    }
-
-    public Long getSpreadCount()
-    {
-        return spreadCount;
-    }
-    public void setAddres(String addres)
-    {
-        this.addres = addres;
-    }
-
-    public String getAddres()
-    {
-        return addres;
-    }
-
-    public void setIsDel(Integer isDel)
-    {
-        this.isDel = isDel;
-    }
-
-    public Integer getIsDel()
-    {
-        return isDel;
-    }
-
 
 }

+ 0 - 3
fs-service-system/src/main/java/com/fs/store/service/impl/FsCouponScheduleServiceImpl.java

@@ -8,9 +8,7 @@ import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.fs.common.core.domain.R;
 import com.fs.common.utils.DateUtils;
-import com.fs.store.cache.IFsUserCacheService;
 import com.fs.store.cache.impl.IFsStoreOrderCacheServiceImpl;
-import com.fs.store.cache.impl.IFsUserCacheServiceImpl;
 import com.fs.store.domain.*;
 import com.fs.store.dto.TemplateMessageSendRequestDTO;
 import com.fs.store.enums.IcgProcessStatusEnum;
@@ -78,7 +76,6 @@ public class FsCouponScheduleServiceImpl implements IFsCouponScheduleService
 //    private final String WX_MINI_APP_NOTIFY_TEMPLATE_ID = "5ZSzz2nPmJo9EuenZa78mQPScoOMc84LnEfEpV0-i04";
     private final String WX_MINI_APP_NOTIFY_TEMPLATE_ID = "K0RUbGggwYz7V4yjtJjFVXtthnx4hOJgHvr7RNOyRSE";
     private final IFsStoreOrderCacheServiceImpl fsStoreOrderCacheService;
-    private final IFsUserCacheServiceImpl IFsUserCacheService;
 
     /**
      * 查询定时发放优惠券队列