diff --git a/muyu-common/muyu-common-cache/pom.xml b/muyu-common/muyu-common-cache/pom.xml
new file mode 100644
index 0000000..021b1f9
--- /dev/null
+++ b/muyu-common/muyu-common-cache/pom.xml
@@ -0,0 +1,27 @@
+
+
+ 4.0.0
+
+ com.muyu
+ muyu-common
+ 3.6.3
+
+
+ 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/cache/CaChe.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/CaChe.java
new file mode 100644
index 0000000..55fa658
--- /dev/null
+++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/CaChe.java
@@ -0,0 +1,61 @@
+package com.muyu.cache;
+
+/**
+ * 缓存接口基类 CaChe
+ *
+ * @author LeYang
+ * on 2024/3/27
+ */
+public interface CaChe {
+ /**
+ * key前缀
+ * @return key前缀
+ */
+ public String keyPre();
+
+ /**
+ * 编码
+ * @param key
+ * @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 refreshDate(K key);
+}
diff --git a/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/abs/CacheAbs.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/abs/CacheAbs.java
new file mode 100644
index 0000000..8f30909
--- /dev/null
+++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/abs/CacheAbs.java
@@ -0,0 +1,97 @@
+package com.muyu.cache.abs;
+
+import com.muyu.cache.CaChe;
+import com.muyu.common.redis.service.RedisService;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 缓存抽象类 CacheAbs
+ *
+ * @author LeYang
+ * on 2024/3/27
+ */
+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 refreshDate(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..30250af
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-cache/pom.xml
@@ -0,0 +1,32 @@
+
+
+ 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..4ea91f4
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectInfoCache.java
@@ -0,0 +1,53 @@
+package com.muyu.product.cache;
+
+import com.muyu.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;
+
+/**
+ * 商品缓存 ProjectInfoCache
+ *
+ * @author LeYang
+ * on 2024/3/27
+ */
+@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..7249e7c
--- /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;
+
+/**
+ * 缓存数据获取 ProjectInfoData
+ *
+ * @author LeYang
+ * on 2024/3/27
+ */
+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..362c1b5 100644
--- a/muyu-modules/muyu-product/muyu-product-server/pom.xml
+++ b/muyu-modules/muyu-product/muyu-product-server/pom.xml
@@ -18,6 +18,11 @@
+
+
+ com.muyu
+ muyu-product-cache
+
com.muyu
@@ -84,6 +89,18 @@
com.muyu
muyu-common-swagger
+
+ com.muyu
+ muyu-product-cache
+ 3.6.3
+ compile
+
+
+ com.muyu
+ muyu-product-cache
+ 3.6.3
+ compile
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/ProjectInfoDataImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/ProjectInfoDataImpl.java
new file mode 100644
index 0000000..b5b496b
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/ProjectInfoDataImpl.java
@@ -0,0 +1,28 @@
+package com.muyu.product.cache;
+
+import com.muyu.product.domain.ProjectInfo;
+import com.muyu.product.service.ProjectInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 缓存数据获取 ProjectInfoDataImpl
+ *
+ * @author LeYang
+ * on 2024/3/27
+ */
+@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 77936dd..c66b798 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
@@ -4,6 +4,7 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.muyu.product.cache.ProjectInfoCache;
import com.muyu.product.domain.AsProductAttributeInfo;
import com.muyu.product.domain.ProjectSkuInfo;
import com.muyu.product.domain.model.CategoryInfoSaveModel;
@@ -87,31 +88,50 @@ public class ProjectInfoController extends BaseController {
public Result getDetailInfo(@PathVariable("id") Long id) {
return Result.success(projectInfoService.getDetailInfo(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));
+ }
+ @Autowired
+ private ProjectInfoCache projectInfoCache;
@ApiOperation("获取商品信息详细信息")
@RequiresPermissions("product:info:query")
@GetMapping(value = "/{id}")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
- public Result getInfo(@PathVariable("id") Long id) {
-
- LambdaQueryWrapper asProductAttributeInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
- asProductAttributeInfoLambdaQueryWrapper.eq(AsProductAttributeInfo::getProductId, id);
- List list = asProductAttributeInfoService.list(asProductAttributeInfoLambdaQueryWrapper);
-
- ProjectInfo projectInfo = projectInfoService.getById(id);
- LambdaQueryWrapper projectSkuInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
- projectSkuInfoLambdaQueryWrapper.eq(ProjectSkuInfo::getProjectId,id);
- List projectSkuInfos = projectSkuInfoService.list(projectSkuInfoLambdaQueryWrapper);
- ProjectAddModel projectAddModel = ProjectAddModel.queryBuild(projectInfo,
- list, projectSkuInfos
- );
- projectAddModel.setId(id);
- return Result.success(projectAddModel);
+ public Result getInfo(@PathVariable("id") Long id) {
+ return Result.success(projectInfoCache.get(id));
}
+// /**
+// * 获取商品信息详细信息
+// */
+// @ApiOperation("获取商品信息详细信息")
+// @RequiresPermissions("product:info:query")
+// @GetMapping(value = "/{id}")
+// @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
+// public Result getInfo(@PathVariable("id") Long id) {
+//
+// LambdaQueryWrapper asProductAttributeInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
+// asProductAttributeInfoLambdaQueryWrapper.eq(AsProductAttributeInfo::getProductId, id);
+// List list = asProductAttributeInfoService.list(asProductAttributeInfoLambdaQueryWrapper);
+//
+// ProjectInfo projectInfo = projectInfoService.getById(id);
+// LambdaQueryWrapper projectSkuInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
+// projectSkuInfoLambdaQueryWrapper.eq(ProjectSkuInfo::getProjectId,id);
+// List projectSkuInfos = projectSkuInfoService.list(projectSkuInfoLambdaQueryWrapper);
+// ProjectAddModel projectAddModel = ProjectAddModel.queryBuild(projectInfo,
+// list, projectSkuInfos
+// );
+// projectAddModel.setId(id);
+// return Result.success(projectAddModel);
+// }
+
/**
* 新增商品信息
*/
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java
index 0db4a2d..8022198 100644
--- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java
@@ -32,4 +32,6 @@ public interface ProjectInfoService extends IService {
boolean del(List ids);
ProjectDetailResp getDetailInfo(Long 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}
+
+