diff --git a/muyu-common/muyu-common-cache/pom.xml b/muyu-common/muyu-common-cache/pom.xml
new file mode 100644
index 0000000..ea149f8
--- /dev/null
+++ b/muyu-common/muyu-common-cache/pom.xml
@@ -0,0 +1,31 @@
+
+
+ 4.0.0
+
+ com.muyu
+ muyu-common
+ 3.6.3
+
+
+ muyu-common-cache
+
+
+ muyu-common-cache缓存基准
+
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+ com.muyu
+ muyu-common-redis
+
+
+
diff --git a/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/Cache.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/Cache.java
new file mode 100644
index 0000000..d3da0ca
--- /dev/null
+++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/Cache.java
@@ -0,0 +1,62 @@
+package com.muyu.common.cache;
+
+/**
+ * @author DongZl
+ * @description: 缓存接口基类
+ * @Date 2024-3-26 下午 03:25
+ */
+public interface Cache {
+
+ /**
+ * key前缀
+ * @return key前缀
+ */
+ public String keyPre();
+
+
+ /**
+ * 编码
+ * @param key ID
+ * @return 键
+ */
+ public String encode(K key);
+
+ /**
+ * 解码
+ * @param redisKey 数据库键
+ * @return ID
+ */
+ public K decode(String redisKey);
+
+ /**
+ * 通过Key获取value值
+ * @param key 键
+ * @return 值
+ */
+ public V get(K key);
+
+ /**
+ * 缓存添加/修改
+ * @param key 键
+ * @param value 值
+ */
+ public void put(K key, V value);
+
+ /**
+ * 通过键删除
+ * @param key 键
+ */
+ public void remove(K key);
+
+ /**
+ * 刷新缓存时间
+ * @param key 键
+ */
+ public void refreshTime (K key);
+
+ /**
+ * 刷新缓存数据
+ * @param key 键
+ */
+ public void refreshData (K key);
+}
diff --git a/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/abs/CacheAbs.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/abs/CacheAbs.java
new file mode 100644
index 0000000..d2bf765
--- /dev/null
+++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/abs/CacheAbs.java
@@ -0,0 +1,96 @@
+package com.muyu.common.cache.abs;
+
+import com.muyu.common.cache.Cache;
+import com.muyu.common.redis.service.RedisService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author DongZl
+ * @description: 缓存抽象类
+ * @Date 2024-3-27 下午 03:10
+ */
+public abstract class CacheAbs implements Cache {
+
+ @Autowired
+ private RedisService redisService;
+
+ /**
+ * 编码
+ * @param key ID
+ * @return 键
+ */
+ @Override
+ public String encode (K key) {
+ return keyPre() + key;
+ }
+
+ /**
+ * 通过Key获取value值
+ * @param key 键
+ * @return 值
+ */
+ @Override
+ public V get (K key) {
+ V value = redisService.getCacheObject(encode(key));
+ if (value == null){
+ value = getData(key);
+ if (value == null){
+ value = defaultValue();
+ }
+ }
+ this.put(key, value);
+ return value;
+ }
+
+ /**
+ * 缓存添加/修改
+ * @param key 键
+ * @param value 值
+ */
+ @Override
+ public void put (K key, V value) {
+ this.redisService.setCacheObject(encode(key), value);
+ }
+
+ /**
+ * 通过键删除
+ * @param key 键
+ */
+ @Override
+ public void remove (K key) {
+ this.redisService.deleteObject(encode(key));
+ }
+
+ /**
+ * 刷新缓存
+ * @param key 键
+ */
+ @Override
+ public void refreshTime (K key) {
+ this.redisService.expire(encode(key), 60, TimeUnit.SECONDS);
+ }
+
+ /**
+ * 刷新缓存数据
+ *
+ * @param key 键
+ */
+ @Override
+ public void refreshData (K key) {
+ this.put(key, getData(key));
+ }
+
+ /**
+ * 从数据库获取数据
+ * @param key ID
+ * @return 缓存对象
+ */
+ public abstract V getData(K key);
+
+ /**
+ * 默认值
+ */
+ public abstract V defaultValue();
+}
diff --git a/muyu-common/pom.xml b/muyu-common/pom.xml
index 5b58e93..ca042b2 100644
--- a/muyu-common/pom.xml
+++ b/muyu-common/pom.xml
@@ -18,6 +18,7 @@
muyu-common-datascope
muyu-common-datasource
muyu-common-system
+ muyu-common-cache
muyu-common
diff --git a/muyu-modules/muyu-product/muyu-product-cache/pom.xml b/muyu-modules/muyu-product/muyu-product-cache/pom.xml
new file mode 100644
index 0000000..a0e70a3
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-cache/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+ com.muyu
+ muyu-product
+ 3.6.3
+
+
+ muyu-product-cache
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+
+ com.muyu
+ muyu-common-cache
+
+
+
+
+ com.muyu
+ muyu-product-common
+
+
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectInfoCache.java b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectInfoCache.java
new file mode 100644
index 0000000..176edad
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectInfoCache.java
@@ -0,0 +1,61 @@
+package com.muyu.product.cache;
+
+import com.muyu.common.cache.abs.CacheAbs;
+import com.muyu.common.core.text.Convert;
+import com.muyu.product.domain.ProjectInfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author DongZl
+ * @description: 商品缓存
+ * @Date 2024-3-27 下午 03:30
+ */
+@Component
+public class ProjectInfoCache extends CacheAbs {
+
+ @Autowired
+ private ProjectInfoData projectInfoData;
+ /**
+ * key前缀
+ *
+ * @return key前缀
+ */
+ @Override
+ public String keyPre () {
+ return "project:info:";
+ }
+
+ /**
+ * 解码
+ *
+ * @param redisKey 数据库键
+ *
+ * @return ID
+ */
+ @Override
+ public Long decode (String redisKey) {
+ return Convert.toLong(redisKey.replace(keyPre(),""), 0L);
+ }
+
+ /**
+ * 从数据库获取数据
+ *
+ * @param key ID
+ *
+ * @return 缓存对象
+ */
+ @Override
+ public ProjectInfo getData (Long key) {
+ return projectInfoData.getData(key);
+ }
+
+ /**
+ * 默认值
+ */
+ @Override
+ public ProjectInfo defaultValue () {
+ return new ProjectInfo();
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectInfoData.java b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectInfoData.java
new file mode 100644
index 0000000..00a8c57
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectInfoData.java
@@ -0,0 +1,18 @@
+package com.muyu.product.cache;
+
+import com.muyu.product.domain.ProjectInfo;
+
+/**
+ * @author DongZl
+ * @description: 缓存数据获取
+ * @Date 2024-3-27 下午 03:34
+ */
+public interface ProjectInfoData {
+
+ /**
+ * 从数据库获取数据
+ * @param key ID
+ * @return 缓存对象
+ */
+ public ProjectInfo getData (Long key);
+}
diff --git a/muyu-modules/muyu-product/muyu-product-server/pom.xml b/muyu-modules/muyu-product/muyu-product-server/pom.xml
index e242fdc..5d82eaf 100644
--- a/muyu-modules/muyu-product/muyu-product-server/pom.xml
+++ b/muyu-modules/muyu-product/muyu-product-server/pom.xml
@@ -18,6 +18,12 @@
+
+
+ com.muyu
+ muyu-product-cache
+
+
com.muyu
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/impl/ProjectInfoDataImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/impl/ProjectInfoDataImpl.java
new file mode 100644
index 0000000..a378803
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/impl/ProjectInfoDataImpl.java
@@ -0,0 +1,29 @@
+package com.muyu.product.cache.impl;
+
+import com.muyu.product.cache.ProjectInfoData;
+import com.muyu.product.domain.ProjectInfo;
+import com.muyu.product.service.ProjectInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author DongZl
+ * @description: 缓存数据获取
+ * @Date 2024-3-27 下午 03:37
+ */
+@Service
+public class ProjectInfoDataImpl implements ProjectInfoData {
+
+ @Autowired
+ private ProjectInfoService projectInfoService;
+
+ /**
+ * 从数据库获取数据
+ * @param key ID
+ * @return 缓存对象
+ */
+ @Override
+ public ProjectInfo getData (Long key) {
+ return projectInfoService.getById(key);
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java
index 9dfb2a2..f1e3d62 100644
--- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java
@@ -3,6 +3,7 @@ package com.muyu.product.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
+import com.muyu.product.cache.ProjectInfoCache;
import com.muyu.product.domain.resp.ProjectDetailResp;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +41,9 @@ public class ProjectInfoController extends BaseController {
@Autowired
private ProjectInfoService projectInfoService;
+ @Autowired
+ private ProjectInfoCache projectInfoCache;
+
/**
* 查询商品信息列表
*/
@@ -73,6 +77,17 @@ public class ProjectInfoController extends BaseController {
@GetMapping(value = "/{id}")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
public Result getInfo(@PathVariable("id") Long id) {
+ return Result.success(projectInfoCache.get(id));
+ }
+
+ /**
+ * 获取商品信息详细信息
+ */
+ @ApiOperation("获取商品信息详细信息")
+ @RequiresPermissions("product:info:query")
+ @GetMapping(value = "/cache/{id}")
+ @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
+ public Result getCacheInfo(@PathVariable("id") Long id) {
return Result.success(projectInfoService.getById(id));
}
diff --git a/muyu-modules/muyu-product/pom.xml b/muyu-modules/muyu-product/pom.xml
index 4294151..8841021 100644
--- a/muyu-modules/muyu-product/pom.xml
+++ b/muyu-modules/muyu-product/pom.xml
@@ -15,6 +15,7 @@
muyu-product-common
muyu-product-remote
muyu-product-server
+ muyu-product-cache
diff --git a/pom.xml b/pom.xml
index a45fa72..0e81d24 100644
--- a/pom.xml
+++ b/pom.xml
@@ -150,6 +150,13 @@
${muyu.version}
+
+
+ com.muyu
+ muyu-common-cache
+ ${muyu.version}
+
+
com.muyu
@@ -220,6 +227,13 @@
${muyu.version}
+
+
+ com.muyu
+ muyu-product-cache
+ ${muyu.version}
+
+