diff --git a/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectSkuCache.java b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectSkuCache.java index c268357..266fbeb 100644 --- a/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectSkuCache.java +++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectSkuCache.java @@ -1,9 +1,88 @@ package com.muyu.product.cache; +import com.muyu.common.cache.abs.HashCacheAbs; +import com.muyu.common.core.text.Convert; +import com.muyu.product.cache.datasource.ProjectSkuData; +import com.muyu.product.domain.ProjectSkuInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + /** * @author DongZl * @description: 商品sku基本信息 * @Date 2024-3-29 下午 03:06 */ -public class ProjectSkuCache { +@Component +public class ProjectSkuCache extends HashCacheAbs { + + @Autowired + private ProjectSkuData projectSkuData; + + + /** + * key前缀 + * @return key前缀 + */ + @Override + public String keyPre () { + return "project:sku:"; + } + + /** + * 解码 + * @param redisKey 数据库键 + * @return ID + */ + @Override + public Long decode (String redisKey) { + return Convert.toLong(redisKey.replace(keyPre(), "")); + } + + /** + * 解码 + * @param redisHashKey 数据库键 + * @return ID + */ + @Override + public String decodeHashKey (String redisHashKey) { + return redisHashKey; + } + + /** + * 通过键获取所有的hash数据 + * @param key 键 + * @return + */ + @Override + public Map getData (Long key) { + return projectSkuData.getData(key); + } + + /** + * 通过缓存键和hash键获取hash值 + * @param key 缓存键 + * @param hashKey hash键 + * + * @return hash值 + */ + @Override + public ProjectSkuInfo getData (Long key, String hashKey) { + return projectSkuData.getData(key, hashKey); + } + + /** + * 默认值 + */ + @Override + public Map defaultValue () { + return new HashMap<>(); + } + + @Override + public ProjectSkuInfo defaultHashValue () { + return new ProjectSkuInfo(); + } } diff --git a/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/datasource/ProjectSkuData.java b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/datasource/ProjectSkuData.java new file mode 100644 index 0000000..c52f74d --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/datasource/ProjectSkuData.java @@ -0,0 +1,29 @@ +package com.muyu.product.cache.datasource; + +import com.muyu.product.domain.ProjectSkuInfo; + +import java.util.Map; + +/** + * @author DongZl + * @description: 商品SKU数据库读取 + * @Date 2024-4-1 上午 11:35 + */ +public interface ProjectSkuData { + + /** + * 通过键获取所有的hash数据 + * @param projectId 商品ID + * @return + */ + public Map getData (Long projectId) ; + + /** + * 通过缓存键和hash键获取hash值 + * @param projectId 商品ID + * @param projectSku 商品SKU + * + * @return hash值 + */ + public ProjectSkuInfo getData (Long projectId, String projectSku); +} diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/impl/ProjectSkuDataImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/impl/ProjectSkuDataImpl.java new file mode 100644 index 0000000..2fc862c --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/impl/ProjectSkuDataImpl.java @@ -0,0 +1,47 @@ +package com.muyu.product.cache.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.muyu.product.cache.datasource.ProjectSkuData; +import com.muyu.product.domain.ProjectSkuInfo; +import com.muyu.product.service.ProjectSkuInfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * @author DongZl + * @description: 商品SKU实现类 + * @Date 2024-4-1 上午 11:38 + */ +@Service +public class ProjectSkuDataImpl implements ProjectSkuData { + + @Autowired + private ProjectSkuInfoService projectSkuInfoService; + + /** + * 通过键获取所有的hash数据 + * @param projectId 商品ID + * @return + */ + @Override + public Map getData (Long projectId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProjectSkuInfo::getProjectId, projectId); + List projectSkuInfoList = projectSkuInfoService.list(queryWrapper); + return null; + } + + /** + * 通过缓存键和hash键获取hash值 + * @param projectId 商品ID + * @param projectSku 商品SKU + * @return hash值 + */ + @Override + public ProjectSkuInfo getData (Long projectId, String projectSku) { + return null; + } +}