diff --git a/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/AtomicSequenceCache.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/AtomicSequenceCache.java new file mode 100644 index 0000000..246bc5f --- /dev/null +++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/AtomicSequenceCache.java @@ -0,0 +1,38 @@ +package com.muyu.common.cache; + +import com.muyu.common.cache.decoration.DecorationKey; +import org.springframework.stereotype.Component; + +/** + * 原子序列缓存基准 + * @author YunFei.Du + * @date 9:38 2024/4/2 + */ +public interface AtomicSequenceCache extends DecorationKey { + + /** + * 获取存储的值 + */ + public Long get(K key); + + /** + * 自增 + */ + public Long increment(K key); + + /** + * 自减 + */ + public Long decrement(K key); + + /** + * 增加数值 + */ + public Long increment(K key,Long number); + + + /** + * 减少数值 + */ + public Long decrement(K key,Long number); +} 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 index 9d96206..d2ad409 100644 --- 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 @@ -3,8 +3,8 @@ package com.muyu.common.cache; import com.muyu.common.cache.decoration.DecorationKey; /** - * @author DongZl - * @description: 缓存接口基类 + * dyf + * 缓存接口基类 * @Date 2024-3-26 下午 03:25 */ public interface Cache extends DecorationKey { diff --git a/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/HashCache.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/HashCache.java index dff5fec..e680b2c 100644 --- a/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/HashCache.java +++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/HashCache.java @@ -7,8 +7,8 @@ import java.util.Map; import java.util.function.Function; /** - * @author DongZl - * @description: Hash缓存基准 + * dyf + * Hash缓存基准 * @Date 2024-3-29 下午 03:16 */ public interface HashCache extends DecorationKey { diff --git a/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/abs/AtomicSequenceCacheAbs.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/abs/AtomicSequenceCacheAbs.java new file mode 100644 index 0000000..845da26 --- /dev/null +++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/abs/AtomicSequenceCacheAbs.java @@ -0,0 +1,67 @@ +package com.muyu.common.cache.abs; + +import com.muyu.common.cache.AtomicSequenceCache; +import com.muyu.common.redis.service.RedisService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * 原子序列缓存抽象类 + * @author YunFei.Du + * @date 15:29 2024/4/2 + */ +public abstract class AtomicSequenceCacheAbs implements AtomicSequenceCache { + + + @Autowired + private RedisService redisService; + + + /** + * 获取存储的值 + * @param key 键 + * @return 值 + */ + @Override + public Long get(K key) { + return this.redisService.getCacheObject ( encode ( key ) ); + } + + @Override + public Long increment(K key) { + return this.increment ( key,1L ); + } + + @Override + public Long decrement(K key) { + return this.decrement ( key,1L ); + } + + @Override + public Long increment(K key, Long number) { + Long numberValue = redisService.getCacheObject ( encode ( key ) ); + if (numberValue==null){ + Long data=getData ( key ); + data= data== null ? 0L :data; + redisService.setCacheObject ( encode ( key ),data ); + } + return redisService.increment(encode ( key ),number); + } + + @Override + public Long decrement(K key, Long number) { + Long numberValue = redisService.getCacheObject ( encode ( key ) ); + if (numberValue== null){ + Long data=getData ( key ); + data= data== null ? 0L :data; + redisService.setCacheObject ( encode ( key ),data ); + } + return redisService.decrement(encode ( key ),number); + } + + @Override + public String encode(K key) { + return keyPre ()+key; + } + + public abstract Long getData(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 index 36dc444..157c0ff 100644 --- 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 @@ -7,8 +7,8 @@ import org.springframework.beans.factory.annotation.Autowired; import java.util.concurrent.TimeUnit; /** - * @author DongZl - * @description: 缓存抽象类 + * dyf + * 缓存抽象类 * @Date 2024-3-27 下午 03:10 */ public abstract class CacheAbs implements Cache { diff --git a/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/abs/HashCacheAbs.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/abs/HashCacheAbs.java index df74152..77b1c4a 100644 --- a/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/abs/HashCacheAbs.java +++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/abs/HashCacheAbs.java @@ -8,8 +8,8 @@ import java.util.*; import java.util.function.Function; /** - * @author DongZl - * @description: hash缓存抽象类 + * dyf + * hash缓存抽象类 * @Date 2024-3-29 下午 07:40 */ public abstract class HashCacheAbs implements HashCache { @@ -41,13 +41,25 @@ public abstract class HashCacheAbs implements HashCache { } /** - * 通过Key获取所有的map - * @param key 数据库键 - * @return 所有集合Map + * 通过给定的键从Redis获取所有关联的值,并将其组织成一个Map返回。 + * @param key 用于在Redis中检索数据的键。 + * @return 一个Map,其中包含与给定键相关联的所有值,键类型为HK,值类型为HV。 */ @Override public Map get (K key) { - return decodeMap(redisService.getCacheMap(encode(key))); +// // 从Redis获取通过键编码后的缓存Map + Map< String, HV > cacheMap = redisService.getCacheMap ( encode ( key ) ); + if (cacheMap==null || cacheMap.isEmpty ( )){ + Map< HK, HV > dataMap = getData ( key ); + if (dataMap!=null && !dataMap.isEmpty ()){ + cacheMap=encodeMap ( dataMap ); + }else { + cacheMap=encodeMap ( defaultValue () ); + } + redisService.setCacheMap ( encode ( key ),cacheMap ); + } + return decodeMap ( cacheMap ); + } /** @@ -60,7 +72,13 @@ public abstract class HashCacheAbs implements HashCache { */ @Override public HV get (K key, HK hashKey) { - return redisService.getCacheMapValue(encode(key), encodeHashKey(hashKey)); + HV hashValue = redisService.getCacheMapValue ( encode ( key ), encodeHashKey ( hashKey ) ); + if (hashValue==null){ + HV dataValue = getData ( key, hashKey ); + hashValue= dataValue!=null ? dataValue:defaultHashValue(); + put ( key,hashKey,hashValue ); + } + return hashValue; } /** @@ -73,6 +91,7 @@ public abstract class HashCacheAbs implements HashCache { */ @Override public List get (K key, HK... hashKeyList) { +// (this::encodeHashKey) ===>引用了当前类(即 this 指代的对象)中的 encodeHashKey 方法 List encodeHashKeyList = Arrays.stream(hashKeyList).map(this::encodeHashKey).toList(); return redisService.getMultiCacheMapValue(encode(key), encodeHashKeyList); } @@ -110,7 +129,9 @@ public abstract class HashCacheAbs implements HashCache { */ @Override public void put (K key, List dataList, Function hashKey) { - + Map dataMap = new HashMap<>(); + dataList.forEach((data) -> dataMap.put(hashKey.apply(data), data)); + redisService.setCacheMap(encode(key), encodeMap(dataMap)); } /** @@ -122,7 +143,7 @@ public abstract class HashCacheAbs implements HashCache { */ @Override public void put (K key, HK hashKey, HV hashValue) { - + redisService.setCacheMapValue ( encode ( key ),encodeHashKey ( hashKey ),hashValue ); } /** @@ -132,7 +153,7 @@ public abstract class HashCacheAbs implements HashCache { */ @Override public void remove (K key) { - + redisService.deleteObject ( encode ( key ) ); } /** @@ -143,7 +164,7 @@ public abstract class HashCacheAbs implements HashCache { */ @Override public void remove (K key, HK hashKey) { - + redisService.deleteCacheMapValue ( encode ( key ),encodeHashKey ( hashKey ) ); } /** @@ -158,13 +179,53 @@ public abstract class HashCacheAbs implements HashCache { } /** - * 编码数据转原始数据 - * @param encodeDataMap 编码数据 - * @return 原始数据 + * 将编码后的数据映射转换为原始数据映射。 + * @param encodeDataMap 编码后的数据映射,其中键为字符串类型,值为泛型HV。 + * @return 原始数据映射,其中键为泛型HK,值为泛型HV。 */ private Map decodeMap(Map encodeDataMap){ + + // 初始化一个空的HashMap,用于存放解码后的键值对 Map dataMap = new HashMap<>(); + // 遍历编码后的数据映射,对每个键进行解码,并将解码后的键值对添加到dataMap中 encodeDataMap.forEach((hashKey, hashValue) -> dataMap.put(decodeHashKey(hashKey), hashValue)); return dataMap; } +// getData + + /** + * 根据键获取数据。 + * + * @param key 主键,用于查找数据。 + * @return 返回一个映射,其中包含与主键相关联的所有数据。 + */ + public abstract Map getData(K key); + /** + * 根据主键和哈希键获取数据。 + * + * @param key 主键,用于定位数据。 + * @param hashKey 哈希键,用于进一步筛选数据。 + * @return 返回与指定主键和哈希键相关联的数据项。 + */ + public abstract HV getData(K key,HK hashKey); + + /** + * 获取默认的映射数据。 + * 此方法提供一个默认的、预先定义好的键值对集合(Map)。 + * + * @return 一个抽象定义的、类型为的映射,包含了默认的键值对数据。 + */ + public abstract Map defaultValue(); + + /** + * 获取默认的哈希值数据。 + * 此方法提供一个默认的、预先定义好的哈希值(HV)。 + * + * @return 一个抽象定义的、类型为HV的默认哈希值数据。 + */ + public abstract HV defaultHashValue(); + + public boolean hasKey(K key, HK hashKey){ + return redisService.hasKey ( encode ( key ),encodeHashKey ( hashKey ) ); + } } diff --git a/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/decoration/DecorationKey.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/decoration/DecorationKey.java index 284b09a..bc82d07 100644 --- a/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/decoration/DecorationKey.java +++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/common/cache/decoration/DecorationKey.java @@ -1,8 +1,8 @@ package com.muyu.common.cache.decoration; /** - * @author DongZl - * @description: 装饰Key + * dyf + * 装饰Key * @Date 2024-3-29 下午 03:19 */ public interface DecorationKey { diff --git a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/ObjUtils.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/ObjUtils.java index 35f459c..133f6a4 100644 --- a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/ObjUtils.java +++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/ObjUtils.java @@ -5,8 +5,8 @@ import org.apache.commons.lang3.ObjectUtils; import java.math.BigDecimal; /** - * @author DongZl - * @description: 对象工具类 + * dyf + * 对象工具类 * @Date 2023-10-9 下午 04:56 */ public class ObjUtils { diff --git a/muyu-common/muyu-common-redis/src/main/java/com/muyu/common/redis/service/RedisService.java b/muyu-common/muyu-common-redis/src/main/java/com/muyu/common/redis/service/RedisService.java index 9446559..c5c0923 100644 --- a/muyu-common/muyu-common-redis/src/main/java/com/muyu/common/redis/service/RedisService.java +++ b/muyu-common/muyu-common-redis/src/main/java/com/muyu/common/redis/service/RedisService.java @@ -11,16 +11,28 @@ import java.util.*; import java.util.concurrent.TimeUnit; /** - * spring redis 工具类 - * - * @author muyu - **/ + * spring redis 工具类 + * @author YunFei.Du + * @date 10:08 2024/4/2 + */ @SuppressWarnings(value = {"unchecked", "rawtypes"}) @Component public class RedisService { @Autowired public RedisTemplate redisTemplate; + + /** + * 判断redis 中 的hashKey 是否存在 + * @param key + * @param hashKey + * @return + */ + public Boolean hasKey(final String key,final String hashKey){ + return this.redisTemplate.opsForHash ().hasKey ( key,hashKey ); + } + + /** * 缓存基本的对象,Integer、String、实体类等 * @@ -233,6 +245,7 @@ public class RedisService { return redisTemplate.opsForHash().multiGet(key, hKeys); } + /** * 删除Hash中的某条数据 * @@ -255,4 +268,14 @@ public class RedisService { public Collection keys (final String pattern) { return redisTemplate.keys(pattern); } + + + public Long increment(String encode, Long number) { + return redisTemplate.opsForValue ().increment ( encode,number ); + } + + public Long decrement(String encode, Long number) { + return redisTemplate.opsForValue ().decrement ( encode,number ); + } + } diff --git a/muyu-gateway/src/main/java/com/muyu/gateway/model/resp/CaptchaCodeResp.java b/muyu-gateway/src/main/java/com/muyu/gateway/model/resp/CaptchaCodeResp.java index bd12aad..2fd4834 100644 --- a/muyu-gateway/src/main/java/com/muyu/gateway/model/resp/CaptchaCodeResp.java +++ b/muyu-gateway/src/main/java/com/muyu/gateway/model/resp/CaptchaCodeResp.java @@ -6,8 +6,8 @@ import lombok.Data; import lombok.NoArgsConstructor; /** - * @author DongZl - * @description: 验证码 + * dyf + * 验证码 * @Date 2023-11-12 下午 03:36 */ @Data 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 index 2870364..06ef0d1 100644 --- 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 @@ -14,13 +14,13 @@ import java.util.List; import java.util.function.Function; /** - * @author DongZl - * @description: 商品缓存 + * 商品缓存 * @Date 2024-3-27 下午 03:30 */ @Component public class ProjectInfoCache extends CacheAbs { + public static void main (String[] args) { Long projectId = 10L; HashCache hashCache = null; @@ -33,12 +33,12 @@ public class ProjectInfoCache extends CacheAbs { hashCache.get(projectId, longArr); } + @Autowired private ProjectInfoData projectInfoData; /** * key前缀 - * * @return key前缀 */ @Override @@ -57,7 +57,6 @@ public class ProjectInfoCache extends CacheAbs { public Long decode (String redisKey) { return Convert.toLong(redisKey.replace(keyPre(),""), 0L); } - /** * 从数据库获取数据 * @@ -65,6 +64,7 @@ public class ProjectInfoCache extends CacheAbs { * * @return 缓存对象 */ + @Override public ProjectInfo getData (Long key) { return projectInfoData.getData(key); @@ -72,6 +72,10 @@ public class ProjectInfoCache extends CacheAbs { + public ProjectInfo defaultValue (Long key) { + return projectInfoData.getData(key); + } + /** * 默认值 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..e864722 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,70 @@ 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基本信息 + * 商品sku缓存 * @Date 2024-3-29 下午 03:06 */ -public class ProjectSkuCache { + +@Component +public class ProjectSkuCache extends HashCacheAbs { + + + @Autowired + private ProjectSkuData projectSkuData; + @Override + public String keyPre() { + return "project:sku:"; + } + + /** + * 从Redis键中解码并转换为Long类型数值。 + * + * @param redisKey 存储在Redis中的键,键名前缀将被移除以便解码。 + * @return 解码后的Long数值,如果解码失败或redisKey为空,则返回0L作为默认值。 + */ + @Override + public Long decode(String redisKey) { + // 使用Convert工具类将处理过的Redis键转换为Long类型数值,原始键通过调用keyPre()方法移除了前缀 + // 若转换过程中出现异常或无法转换时,返回默认值0L + return Convert.toLong ( redisKey.replace ( keyPre (),"" ),0L ); + + } + + + @Override + public String decodeHashKey(String redisHashKey) { + return Convert.toStr ( redisHashKey, "" ); + } + + @Override + public Map< String, ProjectSkuInfo > getData(Long key) { + return projectSkuData.getData ( key ); + } + + @Override + public ProjectSkuInfo getData(Long key, String hashKey) { + return projectSkuData.getData ( key,hashKey ); + } + + @Override + public Map< String, ProjectSkuInfo > 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/ProjectSkuStockCache.java b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectSkuStockCache.java index 3e92a40..1bb6553 100644 --- a/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectSkuStockCache.java +++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectSkuStockCache.java @@ -1,9 +1,62 @@ package com.muyu.product.cache; +import com.github.pagehelper.PageHelper; +import com.muyu.common.cache.abs.AtomicSequenceCacheAbs; +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.cache.datasource.ProjectSkuStockData; +import com.muyu.product.cache.key.SkuStockKey; +import com.muyu.product.domain.ProjectSkuInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Map; + /** - * @author DongZl - * @description: 商品SKU库存缓存 + * dyf + * 商品SKU库存缓存 * @Date 2024-3-29 下午 03:06 */ -public class ProjectSkuStockCache { +@Component +public class ProjectSkuStockCache extends AtomicSequenceCacheAbs< SkuStockKey > { + + + @Autowired + private ProjectSkuStockData projectSkuStockData; + + @Override + public String keyPre() { + return "project:sku:stock"; + } + /** + * 编码 + * @param skuStockKey ID + * @return 键 + */ + @Override + public String encode(SkuStockKey skuStockKey) { + return keyPre ()+skuStockKey.getProjectId ()+":"+skuStockKey.getSku (); + } + + /** + * 解码 + * @param redisKey 数据库键 + * @return ID + */ + @Override + public SkuStockKey decode(String redisKey) { + String[] split = redisKey.replace ( keyPre ( ), "" ).split ( ":" ); + return SkuStockKey.builder () + .projectId ( Convert.toLong ( split[0] ) ) + .sku ( split[1] ) + .build (); + } + + + @Override + public Long getData(SkuStockKey key) { + return projectSkuStockData.getData ( key ); + } } diff --git a/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/datasource/ProjectInfoData.java b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/datasource/ProjectInfoData.java index 49fdd84..3d636cc 100644 --- a/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/datasource/ProjectInfoData.java +++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/datasource/ProjectInfoData.java @@ -3,8 +3,7 @@ package com.muyu.product.cache.datasource; import com.muyu.product.domain.ProjectInfo; /** - * @author DongZl - * @description: 缓存数据获取 + * 缓存数据获取 * @Date 2024-3-27 下午 03:34 */ public interface ProjectInfoData { @@ -16,5 +15,4 @@ public interface ProjectInfoData { */ public ProjectInfo getData (Long key); - } 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..52fe8de --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/datasource/ProjectSkuData.java @@ -0,0 +1,30 @@ +package com.muyu.product.cache.datasource; + +import com.muyu.product.domain.ProjectSkuInfo; + +import java.util.Map; + +/** + * 商品SKU数据库读取 + * @author YunFei.Du + * @date 14:14 2024/4/1 + */ +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-cache/src/main/java/com/muyu/product/cache/datasource/ProjectSkuStockData.java b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/datasource/ProjectSkuStockData.java new file mode 100644 index 0000000..2053eea --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/datasource/ProjectSkuStockData.java @@ -0,0 +1,16 @@ +package com.muyu.product.cache.datasource; + + +import com.muyu.product.cache.key.SkuStockKey; +import org.springframework.stereotype.Service; + +/** + * SKU库存 + * @author YunFei.Du + * @date 16:07 2024/4/2 + */ +public interface ProjectSkuStockData { + + public Long getData (SkuStockKey key); + +} diff --git a/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/key/SkuStockKey.java b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/key/SkuStockKey.java new file mode 100644 index 0000000..8c88ab5 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/key/SkuStockKey.java @@ -0,0 +1,28 @@ +package com.muyu.product.cache.key; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @ClassName SkuStockKey + * @Description 描述 + * @Author YunFei.Du + * @Date 2024/4/2 16:08 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class SkuStockKey { + /** + * 商品id + */ + private Long projectId; + + /** + * sku + */ + private String sku; +} diff --git a/muyu-modules/muyu-product/muyu-product-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/muyu-modules/muyu-product/muyu-product-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..b18f09e --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,3 @@ +com.muyu.product.cache.ProjectInfoCache +com.muyu.product.cache.ProjectSkuCache +com.muyu.product.cache.ProjectSkuStockCache diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/base/CategoryBase.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/base/CategoryBase.java index ae3b33c..30b171a 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/base/CategoryBase.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/base/CategoryBase.java @@ -1,8 +1,8 @@ package com.muyu.product.domain.base; /** - * @author DongZl - * @description: attribute基础方法 + * dyf + * attribute基础方法 * @Date 2024-3-1 下午 02:28 */ public interface CategoryBase { diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/AttrValueModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/AttrValueModel.java index 303f010..2478d9b 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/AttrValueModel.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/AttrValueModel.java @@ -6,8 +6,8 @@ import lombok.Data; import lombok.NoArgsConstructor; /** - * @author DongZl - * @description: 商品属性 + * dyf + * 商品属性 * @Date 2024-3-22 上午 10:53 */ diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/AttributeGroupSaveModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/AttributeGroupSaveModel.java index eecfb3f..c32e458 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/AttributeGroupSaveModel.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/AttributeGroupSaveModel.java @@ -14,8 +14,8 @@ import java.util.List; /** - * @author DongZl - * @description: 属性组添加模型 + * dyf + * 属性组添加模型 * @Date 2024-2-28 下午 03:16 */ @Data diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProductSkuModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProductSkuModel.java index a9f2d88..1a94d8d 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProductSkuModel.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProductSkuModel.java @@ -10,8 +10,8 @@ import lombok.NoArgsConstructor; import java.math.BigDecimal; /** - * @author DongZl - * @description: 商品Sku + * dyf + * 商品Sku * @Date 2024-3-22 上午 10:54 */ @Data diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectAddModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectAddModel.java index 33bc029..6dcda02 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectAddModel.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProjectAddModel.java @@ -6,8 +6,8 @@ import lombok.*; import lombok.experimental.SuperBuilder; /** - * @author DongZl - * @description: 商品添加模型 + * dyf + * 商品添加模型 * @Date 2024-3-22 上午 10:50 */ @Data diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java index e293352..dee0d25 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java @@ -14,8 +14,8 @@ import java.util.List; /** - * @author DongZl - * @description: 规格属性,添加模型 + * dyf + * 规格属性,添加模型 * @Date 2024-3-4 下午 02:28 */ @Data diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleInfoAddModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleInfoAddModel.java index d2742b3..f594184 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleInfoAddModel.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleInfoAddModel.java @@ -12,8 +12,8 @@ import lombok.experimental.SuperBuilder; import java.util.List; /** - * @author DongZl - * @description: 规格保存模型 + * dyf + * 规格保存模型 * @Date 2024-3-4 下午 02:33 */ @Data diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeGroupModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeGroupModel.java index 3258cc8..2db52ae 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeGroupModel.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeGroupModel.java @@ -14,8 +14,8 @@ import java.util.function.Function; import java.util.function.Supplier; /** - * @author DongZl - * @description: 共有属性组 + * dyf + * 共有属性组 * @Date 2024-3-6 下午 02:29 */ @Data diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeModel.java index ebd44da..db47c41 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeModel.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeModel.java @@ -9,8 +9,8 @@ import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; /** - * @author DongZl - * @description: 共有属性 + * dyf + * 共有属性 * @Date 2024-3-6 下午 02:30 */ @Data diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/AttributeGroupPageResp.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/AttributeGroupPageResp.java index 7936caf..1553b42 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/AttributeGroupPageResp.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/AttributeGroupPageResp.java @@ -13,8 +13,8 @@ import java.util.List; import java.util.function.Function; /** - * @author DongZl - * @description: 属性组列表对象 + * dyf + * 属性组列表对象 * @Date 2024-2-28 下午 04:15 */ @Data diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryCommonElementResp.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryCommonElementResp.java index b69efda..e3a23b7 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryCommonElementResp.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryCommonElementResp.java @@ -9,8 +9,8 @@ import lombok.experimental.SuperBuilder; import java.util.List; /** - * @author DongZl - * @description: 商品类别公共元素 + * dyf + * 商品类别公共元素 * @Date 2024-3-6 下午 02:25 */ @Data diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryParentCommonElementResp.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryParentCommonElementResp.java index ba5576a..226ce63 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryParentCommonElementResp.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryParentCommonElementResp.java @@ -11,8 +11,8 @@ import lombok.NoArgsConstructor; import java.util.List; /** - * @author DongZl - * @description: 类别父通用元素 + * dyf + * 类别父通用元素 * @Date 2024-3-1 上午 11:02 */ @Data diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/ProjectDetailResp.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/ProjectDetailResp.java index 045ba09..504c6a8 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/ProjectDetailResp.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/ProjectDetailResp.java @@ -12,8 +12,8 @@ import lombok.NoArgsConstructor; import java.util.List; /** - * @author DongZl - * @description: 商品详情信息 + * dyf + * 商品详情信息 * @Date 2024-3-25 上午 10:46 */ @Data diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java index 8596383..6ee7106 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java @@ -13,8 +13,8 @@ import java.util.List; import java.util.function.Function; /** - * @author DongZl - * @description: 规格返回结果集 + * dyf + * 规格返回结果集 * @Date 2024-3-4 下午 04:08 */ @Data diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/MuYuProductApplication.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/MuYuProductApplication.java index 84b6d80..dfa6e2f 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/MuYuProductApplication.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/MuYuProductApplication.java @@ -6,9 +6,11 @@ import com.muyu.common.swagger.annotation.EnableCustomSwagger2; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import java.util.ArrayList; + /** - * @author DongZl - * @description: 商品启动类 + * dyf + * 商品启动类 * @Date 2024-2-26 下午 04:07 */ @EnableCustomConfig @@ -17,6 +19,10 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MuYuProductApplication { public static void main (String[] args) { + + + ArrayList< Long > objects = new ArrayList<> ( ); + objects.add ( 1L ); SpringApplication.run(MuYuProductApplication.class, args); } 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 index 339a092..ac98518 100644 --- 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 @@ -7,8 +7,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** - * @author DongZl - * @description: 商品缓存数据获取 + * 商品实现类 * @Date 2024-3-27 下午 03:37 */ @Service @@ -26,4 +25,6 @@ public class ProjectInfoDataImpl implements ProjectInfoData { 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/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..1ea2585 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/impl/ProjectSkuDataImpl.java @@ -0,0 +1,51 @@ +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.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 商品SKU实现类 + * @author YunFei.Du + * @date 14:20 2024/4/1 + */ +@Service +public class ProjectSkuDataImpl implements ProjectSkuData { + + @Autowired + private ProjectSkuInfoService projectSkuInfoService; + + @Override + public Map< String, ProjectSkuInfo > getData(Long projectId) { + + LambdaQueryWrapper< ProjectSkuInfo > queryWrapper = new LambdaQueryWrapper< ProjectSkuInfo > ( ) + .eq ( ProjectSkuInfo::getProjectId, projectId ); + + List< ProjectSkuInfo > projectSkuInfoList = projectSkuInfoService.list ( queryWrapper ); + + Map< String, ProjectSkuInfo > map = new HashMap<> ( ); + projectSkuInfoList.stream ().map ( + projectSkuInfo -> { + map.put ( projectSkuInfo.getSku (),projectSkuInfo ); + return projectSkuInfo; + } + ).collect( Collectors.toList()); + return map; + } + + @Override + public ProjectSkuInfo getData(Long projectId, String projectSku) { + LambdaQueryWrapper< ProjectSkuInfo > queryWrapper = new LambdaQueryWrapper< ProjectSkuInfo > ( ) + .eq ( ProjectSkuInfo::getProjectId, projectId ) + .eq ( ProjectSkuInfo::getSku, projectSku ); + return projectSkuInfoService.getOne ( queryWrapper ); + } +} diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/impl/ProjectSkuStockDataImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/impl/ProjectSkuStockDataImpl.java new file mode 100644 index 0000000..932efc9 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/impl/ProjectSkuStockDataImpl.java @@ -0,0 +1,31 @@ +package com.muyu.product.cache.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.muyu.product.cache.datasource.ProjectSkuStockData; +import com.muyu.product.cache.key.SkuStockKey; +import com.muyu.product.domain.ProjectSkuInfo; +import com.muyu.product.service.ProjectSkuInfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @author DongZl + * @description: sku库存实现类 + * @Date 2024-4-2 上午 10:53 + */ +@Service +public class ProjectSkuStockDataImpl implements ProjectSkuStockData { + + @Autowired + private ProjectSkuInfoService projectSkuInfoService; + + @Override + public Long getData (SkuStockKey key) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProjectSkuInfo::getProjectId, key.getProjectId()); + queryWrapper.eq(ProjectSkuInfo::getSku, key.getSku()); + ProjectSkuInfo projectSkuInfo = projectSkuInfoService.getOne(queryWrapper); + return projectSkuInfo.getStock(); + } + +} 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 f6f0339..8e941d3 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 @@ -55,7 +55,6 @@ public class ProjectInfoController extends BaseController { List list = projectInfoService.list(ProjectInfo.queryBuild(projectInfoQueryReq)); return getDataTable(list); } - /** * 导出商品信息列表 */ diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-cache/pom.xml b/muyu-modules/muyu-shop-cart/muyu-shop-cart-cache/pom.xml new file mode 100644 index 0000000..163a031 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-cache/pom.xml @@ -0,0 +1,30 @@ + + + 4.0.0 + + com.muyu + muyu-shop-cart + 3.6.3 + + + muyu-shop-cart-cache + + + + + + com.muyu + muyu-shop-cart-common + + + + + com.muyu + muyu-common-cache + + + + + diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-cache/src/main/java/com/muyu/shop/cart/cache/CartCache.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-cache/src/main/java/com/muyu/shop/cart/cache/CartCache.java new file mode 100644 index 0000000..8255f54 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-cache/src/main/java/com/muyu/shop/cart/cache/CartCache.java @@ -0,0 +1,107 @@ +package com.muyu.shop.cart.cache; + +import com.muyu.common.cache.abs.HashCacheAbs; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.exception.ServiceException; +import com.muyu.common.core.text.Convert; +import com.muyu.shop.cart.cache.key.CartHashKey; +import com.muyu.shop.cart.cache.sourcedata.CartData; +import com.muyu.shop.cart.domain.CartInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * @author DongZl + * @description: 购物车缓存 + * @Date 2024-4-2 上午 11:23 + */ +@Component +public class CartCache extends HashCacheAbs { + + @Autowired + private CartData cartData; + + /** + * key前缀 + * @return key前缀 + */ + @Override + public String keyPre () { + return "cart:info:"; + } + + /** + * 解码 + * @param redisKey 数据库键 + * @return ID + */ + @Override + public Long decode (String redisKey) { + return Convert.toLong(redisKey.replace(keyPre(), "")); + } + + /** + * 编码 + * + * @param hashKey ID + * + * @return 键 + */ + @Override + public String encodeHashKey (CartHashKey hashKey) { + return hashKey.getProjectId()+":"+hashKey.getProjectSku(); + } + + /** + * 解码 + * @param redisHashKey 数据库键 + * @return ID + */ + @Override + public CartHashKey decodeHashKey (String redisHashKey) { + String[] split = redisHashKey.split(":"); + return CartHashKey.builder() + .projectId(Convert.toLong(split[0])) + .projectSku(split[1]) + .build(); + } + + /** + * 通过键获取所有的hash数据 + * @param key 键 + * @return + */ + @Override + public Map getData (Long key) { + return cartData.getData(key); + } + + /** + * 通过缓存键和hash键获取hash值 + * + * @param key 缓存键 + * @param hashKey hash键 + * + * @return hash值 + */ + @Override + public CartInfo getData (Long key, CartHashKey hashKey) { + return cartData.getData(key, hashKey); + } + + /** + * 默认值 + */ + @Override + public Map defaultValue () { + throw new ServiceException("购物车无数据", Result.SUCCESS); + } + + @Override + public CartInfo defaultHashValue () { + throw new ServiceException("购物车无数据", Result.SUCCESS); + } + +} diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-cache/src/main/java/com/muyu/shop/cart/cache/key/CartHashKey.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-cache/src/main/java/com/muyu/shop/cart/cache/key/CartHashKey.java new file mode 100644 index 0000000..69fcdf5 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-cache/src/main/java/com/muyu/shop/cart/cache/key/CartHashKey.java @@ -0,0 +1,28 @@ +package com.muyu.shop.cart.cache.key; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author DongZl + * @description: 购物车HashKey + * @Date 2024-4-2 上午 11:25 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CartHashKey { + + /** + * 商品ID + */ + private Long projectId; + + /** + * 商品SKU + */ + private String projectSku; +} diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-cache/src/main/java/com/muyu/shop/cart/cache/sourcedata/CartData.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-cache/src/main/java/com/muyu/shop/cart/cache/sourcedata/CartData.java new file mode 100644 index 0000000..0679529 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-cache/src/main/java/com/muyu/shop/cart/cache/sourcedata/CartData.java @@ -0,0 +1,31 @@ +package com.muyu.shop.cart.cache.sourcedata; + +import com.muyu.shop.cart.cache.key.CartHashKey; +import com.muyu.shop.cart.domain.CartInfo; + +import java.util.Map; + +/** + * @author DongZl + * @description: 购物车源数据获取 + * @Date 2024-4-2 上午 11:49 + */ +public interface CartData { + + /** + * 通过键获取所有的hash数据 + * @param key 键 + * @return + */ + public Map getData (Long key); + + /** + * 通过缓存键和hash键获取hash值 + * + * @param key 缓存键 + * @param hashKey hash键 + * + * @return hash值 + */ + public CartInfo getData (Long key, CartHashKey hashKey); +} diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/CartInfo.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/CartInfo.java index c5f4c13..aee86dd 100644 --- a/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/CartInfo.java +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/CartInfo.java @@ -15,6 +15,8 @@ import com.muyu.shop.cart.domain.req.CartInfoSaveReq; import com.muyu.shop.cart.domain.req.CartInfoEditReq; import com.muyu.common.core.web.domain.BaseEntity; +import java.util.function.Supplier; + /** * 购物车对象 cart_info * diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoQueryReq.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoQueryReq.java index efa58f0..9015a96 100644 --- a/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoQueryReq.java +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoQueryReq.java @@ -23,6 +23,7 @@ public class CartInfoQueryReq extends BaseEntity { private static final long serialVersionUID = 1L; + /** 商品 */ @ApiModelProperty(name = "商品", value = "商品") private Long projectId; diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/pom.xml b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/pom.xml index 540f5a5..12fb8f8 100644 --- a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/pom.xml +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/pom.xml @@ -87,6 +87,26 @@ ${muyu.version} + + + com.muyu + muyu-shop-cart-cache + ${muyu.version} + + + + com.muyu + muyu-product-cache + + + + com.muyu + muyu-product-server + 3.6.3 + + + + diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/cache/impl/CartInfoDataImpl.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/cache/impl/CartInfoDataImpl.java new file mode 100644 index 0000000..3c9b378 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/cache/impl/CartInfoDataImpl.java @@ -0,0 +1,10 @@ +package com.muyu.shop.cart.cache.impl; + +/** + * @ClassName CartInfoDataImpl + * @Description 描述 + * @Author YunFei.Du + * @Date 2024/3/31 10:35 + */ +public interface CartInfoDataImpl { +} diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/cache/impl/ProjectInfoDataImpl.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/cache/impl/ProjectInfoDataImpl.java new file mode 100644 index 0000000..2a0dd05 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/cache/impl/ProjectInfoDataImpl.java @@ -0,0 +1,26 @@ +package com.muyu.shop.cart.cache.impl; + +import com.muyu.product.cache.datasource.ProjectInfoData; +import com.muyu.product.domain.ProjectInfo; + +import org.springframework.stereotype.Service; + +/** + * 商品实现类 + * @Date 2024-3-27 下午 03:37 + */ +@Service +public class ProjectInfoDataImpl implements ProjectInfoData { + + + + /** + * 从数据库获取数据 + * @param key ID + * @return 缓存对象 + */ + @Override + public ProjectInfo getData (Long key) { + return new ProjectInfo (); + } +} diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/cache/impl/ProjectSkuDataImpl.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/cache/impl/ProjectSkuDataImpl.java new file mode 100644 index 0000000..6a0d847 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/cache/impl/ProjectSkuDataImpl.java @@ -0,0 +1,34 @@ +package com.muyu.shop.cart.cache.impl; + + +import com.muyu.product.cache.datasource.ProjectSkuData; +import com.muyu.product.domain.ProjectSkuInfo; + +import org.springframework.stereotype.Service; + + +import java.util.HashMap; +import java.util.Map; + + +/** + * 商品SKU实现类 + * @author YunFei.Du + * @date 14:20 2024/4/1 + */ +@Service +public class ProjectSkuDataImpl implements ProjectSkuData { + + + + @Override + public Map< String, ProjectSkuInfo > getData(Long projectId) { + + return new HashMap<> (); + } + + @Override + public ProjectSkuInfo getData(Long projectId, String projectSku) { + return new ProjectSkuInfo (); + } +} diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/cache/impl/ProjectSkuStockDataImpl.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/cache/impl/ProjectSkuStockDataImpl.java new file mode 100644 index 0000000..1e4b4af --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/cache/impl/ProjectSkuStockDataImpl.java @@ -0,0 +1,23 @@ +package com.muyu.shop.cart.cache.impl; + +import com.muyu.product.cache.datasource.ProjectSkuStockData; +import com.muyu.product.cache.key.SkuStockKey; + +import org.springframework.stereotype.Service; + +/** + * @author DongZl + * @description: sku库存实现类 + * @Date 2024-4-2 上午 10:53 + */ +@Service +public class ProjectSkuStockDataImpl implements ProjectSkuStockData { + + + + @Override + public Long getData (SkuStockKey key) { + return null; + } + +} diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/controller/CartInfoController.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/controller/CartInfoController.java index baaa949..e1f7974 100644 --- a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/controller/CartInfoController.java +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/controller/CartInfoController.java @@ -51,6 +51,7 @@ public class CartInfoController extends BaseController { return getDataTable(list); } + /** * 导出购物车列表 */ @@ -60,7 +61,7 @@ public class CartInfoController extends BaseController { @PostMapping("/export") public void export(HttpServletResponse response, CartInfo cartInfo) { List list = cartInfoService.list(cartInfo); - ExcelUtil util = new ExcelUtil(CartInfo.class); + ExcelUtil util = new ExcelUtil<>(CartInfo.class); util.exportExcel(response, list, "购物车数据"); } @@ -83,7 +84,7 @@ public class CartInfoController extends BaseController { @PostMapping @ApiOperation("新增购物车") public Result add(@RequestBody CartInfoSaveReq cartInfoSaveReq) { - return toAjax(cartInfoService.save(CartInfo.saveBuild(cartInfoSaveReq))); + return toAjax(cartInfoService.add(CartInfo.saveBuild (cartInfoSaveReq))); } /** diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/CartInfoService.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/CartInfoService.java index 381566b..db703f6 100644 --- a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/CartInfoService.java +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/CartInfoService.java @@ -3,6 +3,7 @@ package com.muyu.shop.cart.service; import java.util.List; import com.muyu.shop.cart.domain.CartInfo; import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.shop.cart.domain.req.CartInfoSaveReq; /** * 购物车Service接口 @@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.extension.service.IService; * @date 2024-03-29 */ public interface CartInfoService extends IService { + + /** * 查询购物车列表 * @@ -19,4 +22,14 @@ public interface CartInfoService extends IService { */ public List list(CartInfo cartInfo); + + boolean insertCartInfo (CartInfoSaveReq cartInfoSaveReq); + + + /** + * 添加购物车 + * @param cartInfo + * @return 是否添加成功 + */ + boolean add(CartInfo cartInfo); } diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/impl/CartInfoServiceImpl.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/impl/CartInfoServiceImpl.java index f3d4e99..aaa92c4 100644 --- a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/impl/CartInfoServiceImpl.java +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/impl/CartInfoServiceImpl.java @@ -1,9 +1,23 @@ package com.muyu.shop.cart.service.impl; +import java.util.Date; import java.util.List; +import java.util.function.Supplier; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.muyu.common.core.constant.UserConstants; +import com.muyu.common.core.exception.ServiceException; +import com.muyu.common.core.text.Convert; import com.muyu.common.core.utils.ObjUtils; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.product.cache.ProjectSkuStockCache; +import com.muyu.product.cache.key.SkuStockKey; +import com.muyu.shop.cart.cache.CartCache; +import com.muyu.shop.cart.cache.key.CartHashKey; +import com.muyu.shop.cart.domain.req.CartInfoSaveReq; import lombok.extern.slf4j.Slf4j; +import org.apache.catalina.security.SecurityUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.muyu.shop.cart.mapper.CartInfoMapper; import com.muyu.shop.cart.domain.CartInfo; @@ -21,6 +35,59 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @Service public class CartInfoServiceImpl extends ServiceImpl implements CartInfoService { + @Autowired + private CartCache cartCache; + + @Autowired + private ProjectSkuStockCache projectSkuStockCache; + + @Override + public boolean add(CartInfo cartInfo) { + Long userId=SecurityUtils.getUserId (); + CartHashKey cartHashKey = CartHashKey.builder ( ) + .projectId ( cartInfo.getProjectId ( ) ) + .projectSku ( cartInfo.getProjectSku ( ) ) + .build ( ); + + + + SkuStockKey skuStockKey = SkuStockKey.builder ( ) + .projectId ( cartInfo.getProjectId () ) + .sku ( cartInfo.getProjectSku () ) + .build (); +// Long skuStock = projectSkuStockCache.get ( skuStockKey ); + Long skuStock = Convert.toLong ( projectSkuStockCache.get ( skuStockKey ) ,-1L); + + + + if (cartCache.hasKey(userId,cartHashKey)){ + CartInfo cartInfoCache = cartCache.get ( userId, cartHashKey ); + cartInfoCache.setNum ( cartInfoCache.getNum ()+cartInfo.getNum () ); + + if (skuStock>cartInfoCache.getNum ()){ + throw new ServiceException ( "库存不足" ); + } + + LambdaUpdateWrapper< CartInfo > updateWrapper = new LambdaUpdateWrapper<> ( ); + updateWrapper.set ( CartInfo::getNum,cartInfoCache.getNum () ); + updateWrapper.eq ( CartInfo::getId,cartInfoCache.getId () ); + this.update ( updateWrapper ); + this.cartCache.put ( userId,cartHashKey,cartInfoCache ); + }else { + if (skuStock>cartInfo.getNum ()){ + throw new ServiceException ( "库存不足" ); + } + + cartInfo.setUserId ( userId ); + cartInfo.setIsSelected ( "Y" ); + cartInfo.setCreateBy ( SecurityUtils.getUsername () ); + cartInfo.setCreateTime ( new Date () ); + this.save ( cartInfo ); + this.cartCache.put ( userId,cartHashKey,cartInfo ); + } + return true; + } + /** * 查询购物车列表 * @@ -53,9 +120,27 @@ public class CartInfoServiceImpl extends ServiceImpl } - - - return list(queryWrapper); } + + @Override + public boolean insertCartInfo(CartInfoSaveReq cartInfoSaveReq) { + cartInfoSaveReq.setUserId ( SecurityUtils.getUserId () ); + + LambdaQueryWrapper< CartInfo > queryWrapper = new LambdaQueryWrapper<> ( ) {{ + eq ( CartInfo::getProjectSku, cartInfoSaveReq.getProjectSku ( ) ); + }}; + + CartInfo one = this.getOne ( queryWrapper ); + + if (one==null){ + this.save ( CartInfo.saveBuild(cartInfoSaveReq) ); + } + LambdaUpdateWrapper< CartInfo > updateWrapper = new LambdaUpdateWrapper< CartInfo > ( ) + .eq ( CartInfo::getProjectSku, cartInfoSaveReq.getProjectSku ( ) ) + .setSql ( "num = num +" + cartInfoSaveReq.getNum ( ) ); + boolean update = this.update ( updateWrapper ); + + return update; + } } diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/sourcedata/CartDataImpl.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/sourcedata/CartDataImpl.java new file mode 100644 index 0000000..c7164f6 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/sourcedata/CartDataImpl.java @@ -0,0 +1,70 @@ +package com.muyu.shop.cart.service.sourcedata; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.muyu.shop.cart.cache.key.CartHashKey; +import com.muyu.shop.cart.cache.sourcedata.CartData; +import com.muyu.shop.cart.domain.CartInfo; +import com.muyu.shop.cart.service.CartInfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 缓存实现 + * @author YunFei.Du + * @date 14:43 2024/4/2 + */ +@Service +public class CartDataImpl implements CartData { + @Autowired + private CartInfoService cartInfoService; + /** + * 通过键获取所有的hash数据 + * + * @param key 键 + * + * @return + */ + @Override + public Map< CartHashKey, CartInfo > getData (Long key) { + + + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(CartInfo::getUserId, key); + List cartInfoList = cartInfoService.list(queryWrapper); + +// Map map=new HashMap<> ( ); +// if (cartInfoList!=null&&cartInfoList.size ()>0){ +// for (CartInfo cartInfo : cartInfoList) { +// map.put ( new CartHashKey ( cartInfo.getProjectId (),cartInfo.getProjectSku () ),cartInfo ); +// } +// } +// return map; + + return cartInfoList.stream () + .collect( Collectors.toMap ( cartInfo ->CartHashKey.builder ( ).projectId ( cartInfo.getProjectId () ).projectSku ( cartInfo.getProjectSku () ).build (), cartInfo -> cartInfo )); + + } + + /** + * 通过缓存键和hash键获取hash值 + * + * @param key 缓存键 + * @param hashKey hash键 + * + * @return hash值 + */ + @Override + public CartInfo getData (Long key, CartHashKey hashKey) { + CartInfo cartInfo = cartInfoService.getOne(new LambdaQueryWrapper() + .eq(CartInfo::getUserId, key) + .eq(CartInfo::getProjectId, hashKey.getProjectId()) + .eq(CartInfo::getProjectSku, hashKey.getProjectSku())); + return cartInfo; + + } +} diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/resources/bootstrap.yml b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/resources/bootstrap.yml index 85d06e9..8aae424 100644 --- a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/resources/bootstrap.yml +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/resources/bootstrap.yml @@ -4,6 +4,8 @@ server: # Spring spring: + main: + allow-circular-references: true application: # 应用名称 name: muyu-shop-cart diff --git a/muyu-modules/muyu-shop-cart/pom.xml b/muyu-modules/muyu-shop-cart/pom.xml index d944d40..a3d4074 100644 --- a/muyu-modules/muyu-shop-cart/pom.xml +++ b/muyu-modules/muyu-shop-cart/pom.xml @@ -15,6 +15,7 @@ muyu-shop-cart-common muyu-shop-cart-remote muyu-shop-cart-server + muyu-shop-cart-cache diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/AuthRoleResp.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/AuthRoleResp.java index 69294b6..697f2bc 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/AuthRoleResp.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/AuthRoleResp.java @@ -11,8 +11,8 @@ import lombok.experimental.SuperBuilder; import java.util.List; /** - * @author DongZl - * @description: 授权角色返回结果集 + * dyf + * 授权角色返回结果集 * @Date 2023-6-19 下午 02:50 */ @Data diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/DeptTreeResp.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/DeptTreeResp.java index cd72807..81f4bbf 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/DeptTreeResp.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/DeptTreeResp.java @@ -10,8 +10,8 @@ import lombok.experimental.SuperBuilder; import java.util.List; /** - * @author DongZl - * @description: 部门树返回结果集 + * dyf + * 部门树返回结果集 * @Date 2023-6-19 下午 02:52 */ @Data diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/ProfileResp.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/ProfileResp.java index 21d9808..a0e7a57 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/ProfileResp.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/ProfileResp.java @@ -7,8 +7,8 @@ import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; /** - * @author DongZl - * @description: 个人信息模型对象 + * dyf + * 个人信息模型对象 * @Date 2023-6-19 下午 02:05 */ @Data diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/RoleMenuTreeResp.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/RoleMenuTreeResp.java index 696763e..90f8c81 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/RoleMenuTreeResp.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/RoleMenuTreeResp.java @@ -9,8 +9,8 @@ import lombok.experimental.SuperBuilder; import java.util.List; /** - * @author DongZl - * @description: 角色返回菜单树 + * dyf + * 角色返回菜单树 * @Date 2023-6-19 下午 02:40 */ @Data diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/UserDetailInfoResp.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/UserDetailInfoResp.java index 4c61832..8dbc728 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/UserDetailInfoResp.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/UserDetailInfoResp.java @@ -10,8 +10,8 @@ import lombok.experimental.SuperBuilder; import java.util.List; /** - * @author DongZl - * @description: 用户详细信息 + * dyf + * 用户详细信息 * @Date 2023-6-19 下午 02:45 */ @Data diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/UserInfoResp.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/UserInfoResp.java index d15a760..71677c0 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/UserInfoResp.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/domain/resp/UserInfoResp.java @@ -9,8 +9,8 @@ import lombok.experimental.SuperBuilder; import java.util.Set; /** - * @author DongZl - * @description: 用户信息结果集 + * dyf + * 用户信息结果集 * @Date 2023-6-19 下午 02:42 */ @Data diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysConfigMapper.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysConfigMapper.java index ced239a..dcfce36 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysConfigMapper.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/mapper/SysConfigMapper.java @@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.muyu.system.domain.SysConfig; /** - * @author DongZl - * @description: 配置mybatis配置 + * dyf + * 配置mybatis配置 * @Date 2023-11-13 上午 10:05 */ public interface SysConfigMapper extends BaseMapper { diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysConfigService.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysConfigService.java index f23d67e..d107878 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysConfigService.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/SysConfigService.java @@ -6,8 +6,8 @@ import com.muyu.system.domain.SysConfig; import java.util.List; /** - * @author DongZl - * @description: 配置plus业务层 + * dyf + * 配置plus业务层 * @Date 2023-11-13 上午 10:06 */ public interface SysConfigService extends IService { diff --git a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysConfigServiceImpl.java b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysConfigServiceImpl.java index bc07cc8..451b0c9 100644 --- a/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysConfigServiceImpl.java +++ b/muyu-modules/muyu-system/src/main/java/com/muyu/system/service/impl/SysConfigServiceImpl.java @@ -18,8 +18,8 @@ import java.util.List; import java.util.Objects; /** - * @author DongZl - * @description: 配置plus业务实现层 + * dyf + * 配置plus业务实现层 * @Date 2023-11-13 上午 10:06 */ @Service