diff --git a/muyu-auth/src/main/resources/bootstrap.yml b/muyu-auth/src/main/resources/bootstrap.yml index 22f2e31..30039a7 100644 --- a/muyu-auth/src/main/resources/bootstrap.yml +++ b/muyu-auth/src/main/resources/bootstrap.yml @@ -14,11 +14,11 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 115.159.211.196:8848 + server-addr: 115.159.81.159:8848 config: # 配置中心地址 - server-addr: 115.159.211.196:8848 - namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0 + server-addr: 115.159.81.159:8848 + namespace: f394dee0-fead-4010-8359-2955bacca31f # 配置文件格式 file-extension: yml # 共享配置 diff --git a/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/AtomicSequenceCache.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/AtomicSequenceCache.java new file mode 100644 index 0000000..77b9e3c --- /dev/null +++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/AtomicSequenceCache.java @@ -0,0 +1,39 @@ +package com.muyu.cache; + +import com.muyu.cache.docoration.DecorationKey; + +/** + * 原子序列缓存基准 AtomicSequenceCache + * + * @author DeKangLiu + * on 2024/4/2 + */ +public interface AtomicSequenceCache extends DecorationKey{ + + /** + * 获取存储的值 + * @param key 键 + * @return 值 + */ + 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/cache/HashCache.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/HashCache.java new file mode 100644 index 0000000..8e8b76c --- /dev/null +++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/HashCache.java @@ -0,0 +1,87 @@ +package com.muyu.cache; + +import com.muyu.cache.docoration.DecorationKey; + +import java.util.List; +import java.util.Map; + +/** + * HashCache + * + * @author DeKangLiu + * on 2024/4/1 + */ +public interface HashCache extends DecorationKey { + + /** + * 编码 + * @param hashKey ID + * @return 键 + */ + public String encodeHashKey(Hk hashKey); + + /** + * 解码 + * @param redisHashKey 数据库键 + * @return ID + */ + public Hk decodeHashKey(String redisHashKey); + + /** + * 通过Key获取所有的map + * @param key 数据库键 + * @return 所有集合map + */ + public Map get(K key); + + /** + * 通过键和hashKey获取数据库hashValue + * @param key 键 + * @param hashKey hash集合 + * @return hash值 + */ + public HV get(K key,Hk hashKey); + + /** + * 通过键和hashKey获取数据库hashValue + * @param key 键 + * @param hashKeyList hash集合 + * @return hash值 + */ + public List get(K key,Hk... hashKeyList); + + /** + * 获取hash值集合 + * @param key 键 + * @return hash集合 + */ + public List getToList(K key); + + /** + * 存储数据 + * @param key redis键 + * @param map hashMap集合 + */ + public void put(K key,Map map); + + /** + * 存储数据 + * @param key redis键 + * @param hashKey hash键 + * @param hashValue hash值 + */ + public void put(K key,Hk hashKey,HV hashValue); + + /** + * 通过redis键删除 + * @param key hash键 + */ + public void remove(K key); + + /** + * 通过redis键和hash键删除 + * @param key redis键 + * @param hashKey hash键 + */ + public void remove(K key,Hk hashKey); +} diff --git a/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/abs/AtomicSequenceCacheAbs.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/abs/AtomicSequenceCacheAbs.java new file mode 100644 index 0000000..57dfe0b --- /dev/null +++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/abs/AtomicSequenceCacheAbs.java @@ -0,0 +1,84 @@ +package com.muyu.cache.abs; + +import com.muyu.cache.AtomicSequenceCache; +import com.muyu.common.redis.service.RedisService; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * 原子序列缓存抽象类 AtomicSequenceCacheAbs + * + * @author DeKangLiu + * on 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)); + } + + /** + * 自增 + * @param key + */ + @Override + public Long increment(K key) { + return this.increment(key,1L); + } + + /** + * + 自减 + */ + @Override + public Long decrement(K key) { + return this.decrement(key,1L); + } + + /** + * 增加数值 + * @param key + * @param number + */ + @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); + } + + /** + * 编码 + * @param key ID + * @return 键 + */ + @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/cache/abs/HashCacheAbs.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/abs/HashCacheAbs.java new file mode 100644 index 0000000..6621be2 --- /dev/null +++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/abs/HashCacheAbs.java @@ -0,0 +1,135 @@ +package com.muyu.cache.abs; + +import com.muyu.cache.HashCache; +import com.muyu.common.redis.service.RedisService; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * HashCacheAbs + * + * @author DeKangLiu + * on 2024/4/1 + */ + +public abstract class HashCacheAbs implements HashCache{ + @Autowired + private RedisService redisService; + + /** + * 编码 + * @param key ID + * @return 键 + */ + @Override + public String encode(K key) { + return keyPre()+key; + } + + /** + * 编码 + * @param hashKey ID + * @return 键 + */ + @Override + public String encodeHashKey(HK hashKey) { + return hashKey.toString(); + } + + /** + * 通过key获取所有的map + * @param key 数据库键 + * @return 所有集合map + */ + @Override + public Map get(K key) { + Map cacheMap = redisService.getCacheMap(encode(key)); + if (cacheMap==null||cacheMap.isEmpty()){ + Map dataMap = getData(key); + if (dataMap!=null&&!dataMap.isEmpty()){ + cacheMap=encodeMap(dataMap); + }else { + cacheMap=encodeMap(defaultValue()); + } + redisService.setCacheMap(encode(key),cacheMap); + } + return decodeMap(cacheMap); + } + + @Override + public HV get(K key, HK hashKey) { + HV hashValue = redisService.getCacheMapValue(encode(key), encodeHashKey(hashKey)); + if (hashKey==null){ + HV dataValue = getData(key, hashKey); + hashValue=dataValue!=null?dataValue:defaultHashValue(); + put(key,hashKey,hashValue); + } + return hashValue; + } + + @Override + public List get(K key, HK... hashKeyList) { + List encodeHashKeyList = Arrays.stream(hashKeyList).map(this::encodeHashKey).toList(); + return redisService.getMultiCacheMapValue(encode(key),encodeHashKeyList); + } + + @Override + public List getToList(K key) { + Map hkhvMap = get(key); + return hkhvMap.values().stream().toList(); + } + + @Override + public void put(K key, Map map) { + redisService.setCacheMap(encode(key),encodeMap(map)); + } + + @Override + public void put(K key, HK hashKey, HV hashValue) { + redisService.setCacheMapValue(encode(key),encodeHashKey(hashKey),hashValue); + } + + @Override + public void remove(K key) { + redisService.deleteObject(encode(key)); + } + + @Override + public void remove(K key, HK hashKey) { + redisService.deleteCacheMapValue(encode(key),encodeHashKey(hashKey)); + } + + /** + * 原始数据转编码数据 + * @param dataMap 原始数据 + * @return 编码数据 + */ + private Map encodeMap(Map dataMap){ + HashMap encodeDataMap = new HashMap<>(); + dataMap.forEach((hashKey,HashValue)->encodeDataMap.put(encodeHashKey(hashKey),HashValue)); + return encodeDataMap; + } + + /** + * 原始数据转编码数据 + * @param encodeDataMap 原始数据 + * @return 编码数据 + */ + private Map decodeMap(Map encodeDataMap){ + HashMap dataMap = new HashMap<>(); + encodeDataMap.forEach((hashKey,hashValue)->dataMap.put(decodeHashKey(hashKey),hashValue)); + return dataMap; + } + + public abstract Map getData(K key); + + public abstract HV getData(K key,HK hashKey); + + public abstract Map defaultValue(); + + public abstract HV defaultHashValue(); +} diff --git a/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/docoration/DecorationKey.java b/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/docoration/DecorationKey.java new file mode 100644 index 0000000..917fd9d --- /dev/null +++ b/muyu-common/muyu-common-cache/src/main/java/com/muyu/cache/docoration/DecorationKey.java @@ -0,0 +1,30 @@ +package com.muyu.cache.docoration; + +/** + * DecorationKey + * + * @author DeKangLiu + * on 2024/4/1 + */ +public interface DecorationKey { + + /** + * key前缀 + * @return key前缀 + */ + public String keyPre(); + + /** + * 编码 + * @param key ID + * @return 键 + */ + public String encode(K key); + + /** + * 解码 + * @param redisKey 数据库键 + * @return ID + */ + public K decode(String redisKey); +} diff --git a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/ip/IpUtils.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/ip/IpUtils.java index cb4b030..c29028e 100644 --- a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/ip/IpUtils.java +++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/ip/IpUtils.java @@ -58,7 +58,7 @@ public class IpUtils { ip = request.getRemoteAddr(); } - return "0:0:0:0:0:0:0:1".equals(ip) ? "115.159.211.196" : getMultistageReverseProxyIp(ip); + return "0:0:0:0:0:0:0:1".equals(ip) ? "115.159.81.159" : getMultistageReverseProxyIp(ip); } /** @@ -70,7 +70,7 @@ public class IpUtils { */ public static boolean internalIp (String ip) { byte[] addr = textToNumericFormatV4(ip); - return internalIp(addr) || "115.159.211.196".equals(ip); + return internalIp(addr) || "115.159.81.159".equals(ip); } /** @@ -197,7 +197,7 @@ public class IpUtils { return InetAddress.getLocalHost().getHostAddress(); } catch (UnknownHostException e) { } - return "115.159.211.196"; + return "115.159.81.159"; } /** 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 db90c1e..27154dc 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 @@ -229,7 +229,7 @@ public class RedisService { * * @return Hash对象集合 */ - public List getMultiCacheMapValue (final String key, final Collection hKeys) { + public List getMultiCacheMapValue (final String key, final Collection hKeys) { return redisTemplate.opsForHash().multiGet(key, hKeys); } @@ -255,4 +255,24 @@ public class RedisService { public Collection keys (final String pattern) { return redisTemplate.keys(pattern); } + + /** + * 增加序列值 + * @param key key + * @param number 值 + * @return 操作后的值 + */ + public Long increment(final String key, Long number) { + return redisTemplate.opsForValue().increment(key,number); + } + + /** + * 减少序列值 + * @param key key + * @param number 值 + * @return 操作后的值 + */ + public Long decrement(final String key, Long number) { + return redisTemplate.opsForValue().decrement(key,number); + } } diff --git a/muyu-gateway/src/main/resources/bootstrap.yml b/muyu-gateway/src/main/resources/bootstrap.yml index 87ef15e..8f5a3a9 100644 --- a/muyu-gateway/src/main/resources/bootstrap.yml +++ b/muyu-gateway/src/main/resources/bootstrap.yml @@ -14,11 +14,11 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 115.159.211.196:8848 + server-addr: 115.159.81.159:8848 config: # 配置中心地址 - server-addr: 115.159.211.196:8848 - namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0 + server-addr: 115.159.81.159:8848 + namespace: f394dee0-fead-4010-8359-2955bacca31f # 配置文件格式 file-extension: yml # 共享配置 @@ -29,12 +29,12 @@ spring: eager: true transport: # 控制台地址 - dashboard: 115.159.211.196:8718 + dashboard: 115.159.81.159:8718 # nacos配置持久化 datasource: ds1: nacos: - server-addr: 115.159.211.196:8848 + server-addr: 115.159.81.159:8848 dataId: sentinel-muyu-gateway groupId: DEFAULT_GROUP data-type: json diff --git a/muyu-modules/muyu-file/src/main/resources/bootstrap.yml b/muyu-modules/muyu-file/src/main/resources/bootstrap.yml index 5448d0d..dd3a5a1 100644 --- a/muyu-modules/muyu-file/src/main/resources/bootstrap.yml +++ b/muyu-modules/muyu-file/src/main/resources/bootstrap.yml @@ -14,11 +14,11 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 115.159.211.196:8848 + server-addr: 115.159.81.159:8848 config: # 配置中心地址 - server-addr: 115.159.211.196:8848 - namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0 + server-addr: 115.159.81.159:8848 + namespace: f394dee0-fead-4010-8359-2955bacca31f # 配置文件格式 file-extension: yml # 共享配置 diff --git a/muyu-modules/muyu-gen/src/main/resources/bootstrap.yml b/muyu-modules/muyu-gen/src/main/resources/bootstrap.yml index d044f6b..e2e52f5 100644 --- a/muyu-modules/muyu-gen/src/main/resources/bootstrap.yml +++ b/muyu-modules/muyu-gen/src/main/resources/bootstrap.yml @@ -14,11 +14,11 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 115.159.211.196:8848 + server-addr: 115.159.81.159:8848 config: # 配置中心地址 - server-addr: 115.159.211.196:8848 - namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0 + server-addr: 115.159.81.159:8848 + namespace: f394dee0-fead-4010-8359-2955bacca31f # 配置文件格式 file-extension: yml # 共享配置 diff --git a/muyu-modules/muyu-job/src/main/resources/bootstrap.yml b/muyu-modules/muyu-job/src/main/resources/bootstrap.yml index 5f952a8..decf5ff 100644 --- a/muyu-modules/muyu-job/src/main/resources/bootstrap.yml +++ b/muyu-modules/muyu-job/src/main/resources/bootstrap.yml @@ -14,11 +14,11 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 115.159.211.196:8848 + server-addr: 115.159.81.159:8848 config: # 配置中心地址 - server-addr: 115.159.211.196:8848 - namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0 + server-addr: 115.159.81.159:8848 + namespace: f394dee0-fead-4010-8359-2955bacca31f # 配置文件格式 file-extension: yml # 共享配置 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 4ea91f4..3a76783 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 @@ -2,6 +2,7 @@ package com.muyu.product.cache; import com.muyu.cache.abs.CacheAbs; import com.muyu.common.core.text.Convert; +import com.muyu.product.cache.datasource.ProjectInfoData; import com.muyu.product.domain.ProjectInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; 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 new file mode 100644 index 0000000..24ab20d --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectSkuCache.java @@ -0,0 +1,59 @@ +package com.muyu.product.cache; + +import com.muyu.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; + +/** + * ProjectSkuCache + * + * @author DeKangLiu + * on 2024/4/1 + */ +@Component +public class ProjectSkuCache extends HashCacheAbs{ + + @Autowired + private ProjectSkuData projectSkuData; + + @Override + public String keyPre() { + return "project:sku:"; + } + + @Override + public Long decode(String redisKey) { + return Convert.toLong(redisKey.replace(keyPre(),"")); + } + @Override + public String decodeHashKey(String redisHashKey) { + return redisHashKey; + } + + @Override + public Map getData(Long key) { + return projectSkuData.getData(key); + } + + @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/ProjectSkuStockCache.java b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectSkuStockCache.java new file mode 100644 index 0000000..3d57ea1 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectSkuStockCache.java @@ -0,0 +1,10 @@ +package com.muyu.product.cache; + +/** + * ProjectSkuStockCache + * + * @author DeKangLiu + * on 2024/4/1 + */ +public class ProjectSkuStockCache { +} 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/datasource/ProjectInfoData.java similarity index 87% rename from muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/ProjectInfoData.java rename to muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/datasource/ProjectInfoData.java index 7249e7c..7b7cd9a 100644 --- 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/datasource/ProjectInfoData.java @@ -1,4 +1,4 @@ -package com.muyu.product.cache; +package com.muyu.product.cache.datasource; import com.muyu.product.domain.ProjectInfo; 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..ef90ff9 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/datasource/ProjectSkuData.java @@ -0,0 +1,18 @@ +package com.muyu.product.cache.datasource; + +import com.muyu.product.domain.ProjectSkuInfo; + +import java.util.Map; + +/** + * ProjectSkuData + * + * @author DeKangLiu + * on 2024/4/1 + */ +public interface ProjectSkuData { + + public Map getData(Long projectId); + + 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..b624a7f --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-cache/src/main/java/com/muyu/product/cache/datasource/ProjectSkuStockData.java @@ -0,0 +1,14 @@ +package com.muyu.product.cache.datasource; + + +import com.muyu.product.cache.key.SkuStockKey; + +/** + * ProjectSkuStockData + * + * @author DeKangLiu + * on 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..f9fcfdb --- /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; + +/** + * SkuStockKey + * + * @author DeKangLiu + * on 2024/4/2 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SkuStockKey { + /** + * 商品ID + */ + private Long projectId; + + /** + * sku + */ + private String sku; +} 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 ee7d35d..42932ae 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 @@ -58,4 +58,8 @@ private List attributeInfoList; * 属性组集合 */ private List attributeGroupList; + /** + * 商品规格 + */ + private List ruleAttrModelList; } 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/impl/ProjectInfoDataImpl.java similarity index 78% rename from muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/ProjectInfoDataImpl.java rename to muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/impl/ProjectInfoDataImpl.java index b5b496b..0a489d6 100644 --- 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/impl/ProjectInfoDataImpl.java @@ -1,5 +1,6 @@ -package com.muyu.product.cache; +package com.muyu.product.cache.impl; +import com.muyu.product.cache.datasource.ProjectInfoData; import com.muyu.product.domain.ProjectInfo; import com.muyu.product.service.ProjectInfoService; import org.springframework.beans.factory.annotation.Autowired; @@ -12,7 +13,7 @@ import org.springframework.stereotype.Service; * on 2024/3/27 */ @Service -public class ProjectInfoDataImpl implements ProjectInfoData{ +public class ProjectInfoDataImpl implements ProjectInfoData { @Autowired private ProjectInfoService projectInfoService; 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..a5e855f --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/impl/ProjectSkuDataImpl.java @@ -0,0 +1,37 @@ +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; +import java.util.stream.Collectors; + +/** + * ProjectSkuDataImpl + * + * @author DeKangLiu + * on 2024/4/1 + */ +@Service +public class ProjectSkuDataImpl implements ProjectSkuData{ + @Autowired + private ProjectSkuInfoService projectSkuInfoService; + @Override + public Map getData(Long projectId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProjectSkuInfo::getProjectId,projectId); + List projectSkuInfoList = projectSkuInfoService.list(queryWrapper); + + return projectSkuInfoList.stream().collect(Collectors.toMap(ProjectSkuInfo::getSku,projectSkuInfo -> projectSkuInfo)); + } + + @Override + public ProjectSkuInfo getData(Long projectId, String projectSku) { + return null; + } +} 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..7e1c87f --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/cache/impl/ProjectSkuStockDataImpl.java @@ -0,0 +1,30 @@ +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; + +/** + * sku库存实体类 ProjectSkuStockDataImpl + * + * @author DeKangLiu + * on 2024/4/2 + */ +@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/CategoryInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java index 7d37e98..11e6a24 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java @@ -116,20 +116,18 @@ public class CategoryInfoController extends BaseController { categoryInfoService.util(id,categoryInfoEditReq); return toAjax(categoryInfoService.updateById(CategoryInfo.editBuild(id,categoryInfoEditReq))); } - /** * 删除品类信息 */ @RequiresPermissions("product:category:remove") @Log(title = "品类信息", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") + @DeleteMapping("/{ids}") @ApiOperation("删除品类信息") @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4") public Result remove(@PathVariable List ids) { - categoryInfoService.removeBatchById(ids); return toAjax(categoryInfoService.removeBatchByIds(ids)); - } + } /** * 通过品类ID获取父级以上的属性、属性组、品牌集合 * @param categoryId 品类ID 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 c66b798..dee56e1 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 @@ -53,7 +53,8 @@ public class ProjectInfoController extends BaseController { private AsProductAttributeInfoService asProductAttributeInfoService; @Autowired private ProjectSkuInfoService projectSkuInfoService; - + @Autowired + private ProjectInfoCache projectInfoCache; /** * 查询商品信息列表 */ @@ -96,42 +97,42 @@ public class ProjectInfoController extends BaseController { @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) { return Result.success(projectInfoCache.get(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/CategoryInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java index 0b7f81b..f6ce34a 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java @@ -69,7 +69,6 @@ public interface CategoryInfoService extends IService { */ CategoryCommonElementResp getTemplateAttributeByCateGoryId (Long cateGoryId); - Boolean removeBatchById(List ids); void util(Long id, CategoryInfoEditReq categoryInfoEditReq); diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java index b19e49a..f94690c 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java @@ -352,7 +352,6 @@ public class CategoryInfoServiceImpl extends ServiceImpl templateAttributeIdList = asCategoryAttributeList.stream() .map(AsCategoryAttribute::getAttributeId) - .filter(templateAttributeId -> !attributeIdSet.contains(templateAttributeId)) .toList(); templateAttributeModelList = attributeInfoService.listByIds(templateAttributeIdList).stream() .map(AttributeInfo::buildTemplateModel) @@ -378,33 +377,7 @@ public class CategoryInfoServiceImpl extends ServiceImpl ids) { - //删除品类属性组中间表 - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(AsCategoryAttributeGroup::getAttributeGroupId, ids); - asCategoryAttributeGroupMapper.delete(lambdaQueryWrapper); - //删除品类属性中间表 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.in(AsCategoryAttribute::getAttributeId, ids); - asCategoryAttributeMapper.delete(queryWrapper); - //删除品类品牌中间 - LambdaQueryWrapper asCategoryBrandLambdaQueryWrapper = new LambdaQueryWrapper<>(); - asCategoryBrandLambdaQueryWrapper.in(AsCategoryBrand::getBrandId, ids); - asCategoryBrandMapper.delete(asCategoryBrandLambdaQueryWrapper); - return true; - } + @Override public void util(Long id, CategoryInfoEditReq categoryInfoEditReq) { @@ -413,7 +386,7 @@ public class CategoryInfoServiceImpl extends ServiceImpl list = asCategoryAttributeService.list(asCategoryAttribute); ArrayList longs = new ArrayList<>(); for (AsCategoryAttribute categoryAttribute : list) { - longs.add(categoryAttribute.getId()); + longs.add(categoryAttribute.getId()); } asCategoryAttributeService.removeBatchByIds(longs); List attributeGroupIdList = categoryInfoEditReq.getAttributeGroupIdList(); @@ -434,4 +407,3 @@ public class CategoryInfoServiceImpl extends ServiceImpl categoryInfoList = categoryInfoService.listByIds(new ArrayList<>() {{ add(projectInfo.getMianType()); add(projectInfo.getParentType()); add(projectInfo.getType()); }}); - //商品sku集合 + // 商品Sku集合 List projectSkuInfoList = this.projectSkuInfoService.list(new LambdaQueryWrapper<>() {{ eq(ProjectSkuInfo::getProjectId, id); }}); - //商品和属性集合 - List productAttributeInfoList = this.asProductAttributeInfoService.list(new LambdaQueryWrapper() {{ + + // 商品和属性集合 + List productAttributeInfoList = this.asProductAttributeInfoService.list(new LambdaQueryWrapper<>() {{ eq(AsProductAttributeInfo::getProductId, id); }}); - //商品规格 - List ruleAttrModelList = this.ruleAttrInfoService.list(new LambdaQueryWrapper() {{ + // 商品规格 + List ruleAttrModelList = ruleAttrInfoService.list(new LambdaQueryWrapper<>() {{ eq(RuleAttrInfo::getRuleId, projectInfo.getRuleId()); }}).stream() .map(RuleAttrAddModel::infoBuild).toList(); + + CategoryCommonElementResp templateAttribute = this.categoryInfoService.getTemplateAttributeByCateGoryId(projectInfo.getType()); List templateAttributeGroupList = templateAttribute.getTemplateAttributeGroupList(); - ArrayList templateAttributeList = new ArrayList<>() {{ + List templateAttributeList = new ArrayList<>(){{ addAll(templateAttribute.getTemplateAttributeList()); }}; - //属性组和商品属性的id - ArrayList notInAttributeIdList = new ArrayList<>(); + // 属性组和商品属性的ID + List notInAttributeIdList = new ArrayList<>(); List attributeGroupIdList = templateAttributeGroupList.stream() .flatMap(templateAttributeGroupModel -> templateAttributeGroupModel.getAttributeList().stream()) .map(TemplateAttributeModel::getId) @@ -251,12 +254,12 @@ private AsBrandProjectService asBrandProjectService; .map(TemplateAttributeModel::getId) .toList(); if (!attributeGroupIdList.isEmpty()){ - notInAttributeIdList.addAll(attributeGroupIdList); + notInAttributeIdList.addAll( attributeGroupIdList ); } if (!attributeIdList.isEmpty()){ - notInAttributeIdList.addAll(attributeIdList); + notInAttributeIdList.addAll( attributeIdList ); } - + // 添加上,商品的自有属性 List productAttributeList = this.asProductAttributeInfoService.list( new LambdaQueryWrapper<>() {{ eq(AsProductAttributeInfo::getProductId, projectInfo.getId()); @@ -265,27 +268,29 @@ private AsBrandProjectService asBrandProjectService; ); List projectAttributeList = new ArrayList<>(); - if (!projectAttributeList.isEmpty()){ + if (!productAttributeList.isEmpty()){ List attrIdList = productAttributeList.stream() .map(AsProductAttributeInfo::getAttributeId) .toList(); - projectAttributeList = attributeInfoService.list(new LambdaQueryWrapper<>(){{ - in(AttributeInfo::getId, attrIdList); - }}).stream() + projectAttributeList = attributeInfoService.list( + new LambdaQueryWrapper<>() {{ + in(AttributeInfo::getId, attrIdList); + }} + ).stream() .map(TemplateAttributeModel::attributeInfoBuild) .toList(); } - //把自由属性添加到商品属性的集合当中,进行合并 + // 把自有属性添加到商品属性的集合当中,进行合并 if (!projectAttributeList.isEmpty()){ templateAttributeList.addAll(projectAttributeList); } - return ProjectDetailResp.builder() + return ProjectDetailResp.builder() .projectInfo(projectInfo) .brandInfo(brandInfo) .categoryInfoList(categoryInfoList) .projectSkuInfoList(projectSkuInfoList) .productAttributeInfoList(productAttributeInfoList) - .ruleAttrAddModelList(ruleAttrModelList) + .ruleAttrModelList(ruleAttrModelList) .attributeInfoList(templateAttributeList) .attributeGroupList(templateAttributeGroupList) .build(); diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/bootstrap.yml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/bootstrap.yml index 539f6e5..a095e3a 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/bootstrap.yml +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/bootstrap.yml @@ -14,11 +14,11 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 115.159.211.196:8848 + server-addr: 115.159.81.159:8848 config: # 配置中心地址 - server-addr: 115.159.211.196:8848 - namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0 + server-addr: 115.159.81.159:8848 + namespace: f394dee0-fead-4010-8359-2955bacca31f # 配置文件格式 file-extension: yml # 共享配置 diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AttributeInfoMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AttributeInfoMapper.xml index 9d60cfe..78d6ff6 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AttributeInfoMapper.xml +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AttributeInfoMapper.xml @@ -10,12 +10,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - + + - select id, name, group_id, create_by, create_time, updata_by, updata_time, remark from attribute_info + select id, name, group_id, create_by, create_time, update_time, update_time, remark from attribute_info diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/pom.xml b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/pom.xml new file mode 100644 index 0000000..7da2476 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + + com.muyu + muyu-shop-cart + 3.6.3 + + + muyu-shop-cart-common + + + 17 + 17 + UTF-8 + + + + com.muyu + muyu-common-core + + + 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 new file mode 100644 index 0000000..348a40e --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/CartInfo.java @@ -0,0 +1,105 @@ +package com.muyu.shop.cart.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.muyu.common.core.annotation.Excel; +import com.muyu.shop.cart.domain.req.CartInfoQueryReq; +import com.muyu.shop.cart.domain.req.CartInfoSaveReq; +import com.muyu.shop.cart.domain.req.CartInfoEditReq; +import com.muyu.common.core.web.domain.BaseEntity; + +/** + * 购物车对象 cart_info + * + * @author muyu + * @date 2024-03-29 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@TableName("cart_info") +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "CartInfo", description = "购物车") +public class CartInfo extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 购物车id */ + @TableId(value = "id",type = IdType.AUTO) + @ApiModelProperty(name = "购物车id", value = "购物车id") + private Long id; + + /** 商品ID */ + @Excel(name = "商品ID") + @ApiModelProperty(name = "商品ID", value = "商品ID") + private Long projectId; + + /** SKU */ + @Excel(name = "SKU") + @ApiModelProperty(name = "SKU", value = "SKU") + private String projectSku; + + /** 用户ID */ + @Excel(name = "用户ID") + @ApiModelProperty(name = "用户ID", value = "用户ID") + private Long userId; + + /** 数量 */ + @Excel(name = "数量") + @ApiModelProperty(name = "数量", value = "数量") + private Long num; + + /** 是否选中 */ + @Excel(name = "是否选中") + @ApiModelProperty(name = "是否选中", value = "是否选中") + private String isSelected; + + /** + * 查询构造器 + */ + public static CartInfo queryBuild( CartInfoQueryReq cartInfoQueryReq){ + return CartInfo.builder() + .projectId(cartInfoQueryReq.getProjectId()) + .projectSku(cartInfoQueryReq.getProjectSku()) + .userId(cartInfoQueryReq.getUserId()) + .num(cartInfoQueryReq.getNum()) + .isSelected(cartInfoQueryReq.getIsSelected()) + .build(); + } + + /** + * 添加构造器 + */ + public static CartInfo saveBuild(CartInfoSaveReq cartInfoSaveReq){ + return CartInfo.builder() + .projectId(cartInfoSaveReq.getProjectId()) + .projectSku(cartInfoSaveReq.getProjectSku()) + .userId(cartInfoSaveReq.getUserId()) + .num(cartInfoSaveReq.getNum()) + .isSelected(cartInfoSaveReq.getIsSelected()) + .build(); + } + + /** + * 修改构造器 + */ + public static CartInfo editBuild(Long id, CartInfoEditReq cartInfoEditReq){ + return CartInfo.builder() + .id(id) + .projectId(cartInfoEditReq.getProjectId()) + .projectSku(cartInfoEditReq.getProjectSku()) + .userId(cartInfoEditReq.getUserId()) + .num(cartInfoEditReq.getNum()) + .isSelected(cartInfoEditReq.getIsSelected()) + .build(); + } + +} diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoEditReq.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoEditReq.java new file mode 100644 index 0000000..ef98d99 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoEditReq.java @@ -0,0 +1,46 @@ +package com.muyu.shop.cart.domain.req; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.muyu.common.core.web.domain.BaseEntity; + +/** + * 购物车对象 cart_info + * + * @author muyu + * @date 2024-03-29 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "CartInfoEditReq", description = "购物车") +public class CartInfoEditReq extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 商品ID */ + @ApiModelProperty(name = "商品ID", value = "商品ID") + private Long projectId; + + /** SKU */ + @ApiModelProperty(name = "SKU", value = "SKU") + private String projectSku; + + /** 用户ID */ + @ApiModelProperty(name = "用户ID", value = "用户ID") + private Long userId; + + /** 数量 */ + @ApiModelProperty(name = "数量", value = "数量") + private Long num; + + /** 是否选中 */ + @ApiModelProperty(name = "是否选中", value = "是否选中") + private String isSelected; + +} 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 new file mode 100644 index 0000000..7ea07c9 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoQueryReq.java @@ -0,0 +1,46 @@ +package com.muyu.shop.cart.domain.req; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.muyu.common.core.web.domain.BaseEntity; + +/** + * 购物车对象 cart_info + * + * @author muyu + * @date 2024-03-29 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "CartInfoQueryReq", description = "购物车") +public class CartInfoQueryReq extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 商品ID */ + @ApiModelProperty(name = "商品ID", value = "商品ID") + private Long projectId; + + /** SKU */ + @ApiModelProperty(name = "SKU", value = "SKU") + private String projectSku; + + /** 用户ID */ + @ApiModelProperty(name = "用户ID", value = "用户ID") + private Long userId; + + /** 数量 */ + @ApiModelProperty(name = "数量", value = "数量") + private Long num; + + /** 是否选中 */ + @ApiModelProperty(name = "是否选中", value = "是否选中") + private String isSelected; + +} diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoSaveReq.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoSaveReq.java new file mode 100644 index 0000000..41a00db --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-common/src/main/java/com/muyu/shop/cart/domain/req/CartInfoSaveReq.java @@ -0,0 +1,56 @@ +package com.muyu.shop.cart.domain.req; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; +import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.muyu.common.core.web.domain.BaseEntity; + +/** + * 购物车对象 cart_info + * + * @author muyu + * @date 2024-03-29 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "CartInfoSaveReq", description = "购物车") +public class CartInfoSaveReq extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 购物车id */ + + @ApiModelProperty(name = "购物车id", value = "购物车id") + private Long id; + + /** 商品ID */ + + @ApiModelProperty(name = "商品ID", value = "商品ID") + private Long projectId; + + /** SKU */ + + @ApiModelProperty(name = "SKU", value = "SKU") + private String projectSku; + + /** 用户ID */ + + @ApiModelProperty(name = "用户ID", value = "用户ID") + private Long userId; + + /** 数量 */ + + @ApiModelProperty(name = "数量", value = "数量") + private Long num; + + /** 是否选中 */ + + @ApiModelProperty(name = "是否选中", value = "是否选中") + private String isSelected; + +} diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-remote/pom.xml b/muyu-modules/muyu-shop-cart/muyu-shop-cart-remote/pom.xml new file mode 100644 index 0000000..4979e66 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-remote/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + com.muyu + muyu-shop-cart + 3.6.3 + + + muyu-shop-cart-remote + + + 17 + 17 + UTF-8 + + + + + com.muyu + muyu-shop-cart-common + ${muyu.version} + + + 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 new file mode 100644 index 0000000..4953a2b --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/pom.xml @@ -0,0 +1,114 @@ + + + 4.0.0 + + com.muyu + muyu-modules + 3.6.3 + ../../pom.xml + + + muyu-shop-cart-server + + + 17 + 17 + UTF-8 + + + + + com.muyu + muyu-shop-cart-common + ${muyu.version} + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + io.springfox + springfox-swagger-ui + ${swagger.fox.version} + + + + + com.mysql + mysql-connector-j + + + + + com.muyu + muyu-common-datasource + + + + + com.muyu + muyu-common-datascope + + + + + com.muyu + muyu-common-log + + + + + com.muyu + muyu-common-swagger + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + + diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/MuYuShopCartApplication.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/MuYuShopCartApplication.java new file mode 100644 index 0000000..faab24f --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/MuYuShopCartApplication.java @@ -0,0 +1,22 @@ +package com.muyu.shop.cart; + +import com.muyu.common.security.annotation.EnableCustomConfig; +import com.muyu.common.security.annotation.EnableMyFeignClients; +import com.muyu.common.swagger.annotation.EnableCustomSwagger2; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * 系统模块 + * + * @author muyu + */ +@EnableCustomConfig +@EnableCustomSwagger2 +@EnableMyFeignClients +@SpringBootApplication +public class MuYuShopCartApplication { + public static void main (String[] args) { + SpringApplication.run(MuYuShopCartApplication.class, args); + } +} 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 new file mode 100644 index 0000000..f7c6c78 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/controller/CartInfoController.java @@ -0,0 +1,111 @@ +package com.muyu.shop.cart.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import io.swagger.annotations.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.shop.cart.domain.CartInfo; +import com.muyu.shop.cart.domain.req.CartInfoQueryReq; +import com.muyu.shop.cart.domain.req.CartInfoSaveReq; +import com.muyu.shop.cart.domain.req.CartInfoEditReq; +import com.muyu.shop.cart.service.CartInfoService; +import com.muyu.common.core.web.page.TableDataInfo; + +/** + * 购物车Controller + * + * @author muyu + * @date 2024-03-29 + */ +@Api(tags = "购物车") +@RestController +@RequestMapping("/Info") +public class CartInfoController extends BaseController { + @Autowired + private CartInfoService cartInfoService; + + /** + * 查询购物车列表 + */ + @ApiOperation("获取购物车列表") + @RequiresPermissions("shopCart:Info:list") + @GetMapping("/list") + public Result> list(CartInfoQueryReq cartInfoQueryReq) { + startPage(); + List list = cartInfoService.list(CartInfo.queryBuild(cartInfoQueryReq)); + return getDataTable(list); + } + + /** + * 导出购物车列表 + */ + @ApiOperation("导出购物车列表") + @RequiresPermissions("shopCart:Info:export") + @Log(title = "购物车", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, CartInfo cartInfo) { + List list = cartInfoService.list(cartInfo); + ExcelUtil util = new ExcelUtil(CartInfo.class); + util.exportExcel(response, list, "购物车数据"); + } + + /** + * 获取购物车详细信息 + */ + @ApiOperation("获取购物车详细信息") + @RequiresPermissions("shopCart: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) { + return Result.success(cartInfoService.getById(id)); + } + + /** + * 新增购物车 + */ + @RequiresPermissions("shopCart:Info:add") + @Log(title = "购物车", businessType = BusinessType.INSERT) + @PostMapping + @ApiOperation("新增购物车") + public Result add(@RequestBody CartInfoSaveReq cartInfoSaveReq) { + return toAjax(cartInfoService.save(CartInfo.saveBuild(cartInfoSaveReq))); + } + + /** + * 修改购物车 + */ + @RequiresPermissions("shopCart:Info:edit") + @Log(title = "购物车", businessType = BusinessType.UPDATE) + @PutMapping("/{id}") + @ApiOperation("修改购物车") + public Result edit(@PathVariable Long id, @RequestBody CartInfoEditReq cartInfoEditReq) { + return toAjax(cartInfoService.updateById(CartInfo.editBuild(id,cartInfoEditReq))); + } + + /** + * 删除购物车 + */ + @RequiresPermissions("shopCart:Info:remove") + @Log(title = "购物车", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + @ApiOperation("删除购物车") + @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4") + public Result remove(@PathVariable List ids) { + return toAjax(cartInfoService.removeBatchByIds(ids)); + } +} diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/mapper/CartInfoMapper.java b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/mapper/CartInfoMapper.java new file mode 100644 index 0000000..d0f2ecc --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/mapper/CartInfoMapper.java @@ -0,0 +1,15 @@ +package com.muyu.shop.cart.mapper; + +import java.util.List; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.shop.cart.domain.CartInfo; + +/** + * 购物车Mapper接口 + * + * @author muyu + * @date 2024-03-29 + */ +public interface CartInfoMapper extends BaseMapper { + +} 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 new file mode 100644 index 0000000..d50d749 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/CartInfoService.java @@ -0,0 +1,22 @@ +package com.muyu.shop.cart.service; + +import java.util.List; +import com.muyu.shop.cart.domain.CartInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 购物车Service接口 + * + * @author muyu + * @date 2024-03-29 + */ +public interface CartInfoService extends IService { + /** + * 查询购物车列表 + * + * @param cartInfo 购物车 + * @return 购物车集合 + */ + public List list(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 new file mode 100644 index 0000000..61b276f --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/java/com/muyu/shop/cart/service/impl/CartInfoServiceImpl.java @@ -0,0 +1,61 @@ +package com.muyu.shop.cart.service.impl; + +import java.util.List; + +import com.muyu.common.core.utils.ObjUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.muyu.shop.cart.mapper.CartInfoMapper; +import com.muyu.shop.cart.domain.CartInfo; +import com.muyu.shop.cart.service.CartInfoService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; + +/** + * 购物车Service业务层处理 + * + * @author muyu + * @date 2024-03-29 + */ +@Slf4j +@Service +public class CartInfoServiceImpl extends ServiceImpl implements CartInfoService { + + /** + * 查询购物车列表 + * + * @param cartInfo 购物车 + * @return 购物车 + */ + @Override + public List list(CartInfo cartInfo) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + + if (ObjUtils.notNull(cartInfo.getProjectId())){ + queryWrapper.eq(CartInfo::getProjectId, cartInfo.getProjectId()); + } + + if (ObjUtils.notNull(cartInfo.getProjectSku())){ + queryWrapper.eq(CartInfo::getProjectSku, cartInfo.getProjectSku()); + } + + if (ObjUtils.notNull(cartInfo.getUserId())){ + queryWrapper.eq(CartInfo::getUserId, cartInfo.getUserId()); + } + + if (ObjUtils.notNull(cartInfo.getNum())){ + queryWrapper.eq(CartInfo::getNum, cartInfo.getNum()); + } + + if (ObjUtils.notNull(cartInfo.getIsSelected())){ + queryWrapper.eq(CartInfo::getIsSelected, cartInfo.getIsSelected()); + } + + + + + + return list(queryWrapper); + } +} diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/resources/banner.txt b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} 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 new file mode 100644 index 0000000..f238aee --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/resources/bootstrap.yml @@ -0,0 +1,29 @@ +# Tomcat +server: + port: 9506 + +# Spring +spring: + application: + # 应用名称 + name: muyu-shop-cart + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 115.159.81.159:8848 + config: + # 配置中心地址 + server-addr: 115.159.81.159:8848 + namespace: f394dee0-fead-4010-8359-2955bacca31f + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +logging: + level: + com.muyu.shop.cart.mapper: DEBUG diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/resources/logback.xml b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/resources/logback.xml new file mode 100644 index 0000000..aa340cd --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/resources/logback.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/resources/mapper/shopCart/CartInfoMapper.xml b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/resources/mapper/shopCart/CartInfoMapper.xml new file mode 100644 index 0000000..304219e --- /dev/null +++ b/muyu-modules/muyu-shop-cart/muyu-shop-cart-server/src/main/resources/mapper/shopCart/CartInfoMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + select id, project_id, project_sku, user_id, num, is_selected, remark, create_by, create_time, update_by, update_time from cart_info + + diff --git a/muyu-modules/muyu-shop-cart/pom.xml b/muyu-modules/muyu-shop-cart/pom.xml new file mode 100644 index 0000000..d944d40 --- /dev/null +++ b/muyu-modules/muyu-shop-cart/pom.xml @@ -0,0 +1,26 @@ + + + 4.0.0 + + com.muyu + muyu-modules + 3.6.3 + + + muyu-shop-cart + pom + + muyu-shop-cart-common + muyu-shop-cart-remote + muyu-shop-cart-server + + + + 17 + 17 + UTF-8 + + + diff --git a/muyu-modules/muyu-system/src/main/resources/bootstrap.yml b/muyu-modules/muyu-system/src/main/resources/bootstrap.yml index c13d10f..c4ca33b 100644 --- a/muyu-modules/muyu-system/src/main/resources/bootstrap.yml +++ b/muyu-modules/muyu-system/src/main/resources/bootstrap.yml @@ -14,11 +14,11 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 115.159.211.196:8848 + server-addr: 115.159.81.159:8848 config: # 配置中心地址 - server-addr: 115.159.211.196:8848 - namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0 + server-addr: 115.159.81.159:8848 + namespace: f394dee0-fead-4010-8359-2955bacca31f # 配置文件格式 file-extension: yml # 共享配置 diff --git a/muyu-modules/pom.xml b/muyu-modules/pom.xml index 760c5c2..24447f2 100644 --- a/muyu-modules/pom.xml +++ b/muyu-modules/pom.xml @@ -14,6 +14,7 @@ muyu-job muyu-file muyu-product + muyu-shop-cart muyu-modules diff --git a/muyu-visual/muyu-monitor/src/main/resources/bootstrap.yml b/muyu-visual/muyu-monitor/src/main/resources/bootstrap.yml index 9e9c683..425b080 100644 --- a/muyu-visual/muyu-monitor/src/main/resources/bootstrap.yml +++ b/muyu-visual/muyu-monitor/src/main/resources/bootstrap.yml @@ -14,11 +14,11 @@ spring: nacos: discovery: # 服务注册地址 - server-addr: 115.159.211.196:8848 + server-addr: 115.159.81.159:8848 config: # 配置中心地址 - server-addr: 115.159.211.196:8848 - namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0 + server-addr: 115.159.81.159:8848 + namespace: f394dee0-fead-4010-8359-2955bacca31f # 配置文件格式 file-extension: yml # 共享配置 diff --git a/pom.xml b/pom.xml index 0e81d24..8bc2f64 100644 --- a/pom.xml +++ b/pom.xml @@ -212,6 +212,23 @@ muyu-common-system ${muyu.version} + + com.muyu + muyu-product-cache + ${muyu.version} + + + + com.muyu + muyu-shop-cart-common + ${muyu.version} + + + + com.muyu + muyu-shop-cart-remote + ${muyu.version} + @@ -227,12 +244,6 @@ ${muyu.version} - - - com.muyu - muyu-product-cache - ${muyu.version} - @@ -252,6 +263,7 @@ org.springframework.cloud spring-cloud-starter-bootstrap + diff --git a/sql/product.sql b/sql/product.sql index cb7eecd..5e284b3 100644 --- a/sql/product.sql +++ b/sql/product.sql @@ -4,7 +4,7 @@ Source Server : 本地5.7 Source Server Type : MySQL Source Server Version : 50737 - Source Host : 115.159.211.196:3306 + Source Host : 115.159.81.159:3306 Source Schema : product Target Server Type : MySQL @@ -243,9 +243,9 @@ CREATE TABLE `brand_info` ( -- ---------------------------- -- Records of brand_info -- ---------------------------- -INSERT INTO `brand_info` VALUES (1, '小米', 'http://115.159.211.196:9300/statics/2024/02/27/1709021128851_20240227160548A001.png', 'Y', '小米', '小米', 'admin', '2024-02-27 16:10:12', 'admin', '2024-02-27 16:16:27'); -INSERT INTO `brand_info` VALUES (2, '华为', 'http://115.159.211.196:9300/statics/2024/03/05/仓鼠_20240305092606A001.png', 'Y', NULL, NULL, 'admin', '2024-03-05 09:26:09', NULL, NULL); -INSERT INTO `brand_info` VALUES (3, '苹果', 'http://115.159.211.196:9300/statics/2024/03/05/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240305092615A002.png', 'Y', NULL, NULL, 'admin', '2024-03-05 09:26:18', NULL, NULL); +INSERT INTO `brand_info` VALUES (1, '小米', 'http://115.159.81.159:9300/statics/2024/02/27/1709021128851_20240227160548A001.png', 'Y', '小米', '小米', 'admin', '2024-02-27 16:10:12', 'admin', '2024-02-27 16:16:27'); +INSERT INTO `brand_info` VALUES (2, '华为', 'http://115.159.81.159:9300/statics/2024/03/05/仓鼠_20240305092606A001.png', 'Y', NULL, NULL, 'admin', '2024-03-05 09:26:09', NULL, NULL); +INSERT INTO `brand_info` VALUES (3, '苹果', 'http://115.159.81.159:9300/statics/2024/03/05/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240305092615A002.png', 'Y', NULL, NULL, 'admin', '2024-03-05 09:26:18', NULL, NULL); -- ---------------------------- -- Table structure for category_info @@ -269,17 +269,17 @@ CREATE TABLE `category_info` ( -- ---------------------------- -- Records of category_info -- ---------------------------- -INSERT INTO `category_info` VALUES (1, '节点1', 'http://115.159.211.196:9300/statics/2024/02/28/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240228170131A002.png', 0, 'Y', '介绍', NULL, 'admin', '2024-02-28 17:09:11', NULL, NULL); -INSERT INTO `category_info` VALUES (2, '节点1-1', 'http://115.159.211.196:9300/statics/2024/02/28/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240228170926A003.png', 1, 'Y', '测试', NULL, 'admin', '2024-02-28 17:09:31', NULL, NULL); -INSERT INTO `category_info` VALUES (3, '节点1-1-1', 'http://115.159.211.196:9300/statics/2024/02/28/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240228170944A004.png', 2, 'Y', '测试', NULL, 'admin', '2024-02-28 17:09:48', NULL, NULL); -INSERT INTO `category_info` VALUES (4, '节点2', 'http://115.159.211.196:9300/statics/2024/02/28/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240228170956A005.png', 0, 'Y', '', NULL, 'admin', '2024-02-28 17:09:58', NULL, NULL); -INSERT INTO `category_info` VALUES (5, '节点2-1', 'http://115.159.211.196:9300/statics/2024/02/28/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240228171012A006.png', 4, 'Y', '测试', NULL, 'admin', '2024-02-28 17:10:14', NULL, NULL); -INSERT INTO `category_info` VALUES (6, '节点2-1-1', 'http://115.159.211.196:9300/statics/2024/02/28/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240228171031A007.png', 5, 'Y', '', NULL, 'admin', '2024-02-28 17:10:34', NULL, NULL); -INSERT INTO `category_info` VALUES (7, '节点1-1-2', 'http://115.159.211.196:9300/statics/2024/02/28/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240228171047A008.png', 2, 'Y', '测试', NULL, 'admin', '2024-02-28 17:10:50', NULL, NULL); -INSERT INTO `category_info` VALUES (13, '测试-1', 'http://115.159.211.196:9300/statics/2024/03/01/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240301114154A001.png', 0, 'Y', NULL, NULL, 'admin', '2024-03-01 11:42:03', NULL, NULL); -INSERT INTO `category_info` VALUES (14, '测试1-1', 'http://115.159.211.196:9300/statics/2024/03/01/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240301114209A002.png', 13, 'Y', NULL, NULL, 'admin', '2024-03-01 11:42:22', NULL, NULL); -INSERT INTO `category_info` VALUES (15, '测试1-2', 'http://115.159.211.196:9300/statics/2024/03/01/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240301114446A003.png', 13, 'Y', NULL, NULL, 'admin', '2024-03-01 11:44:56', NULL, NULL); -INSERT INTO `category_info` VALUES (16, '测试1-1-1', 'http://115.159.211.196:9300/statics/2024/03/06/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240306162814A001.png', 14, 'Y', NULL, NULL, 'admin', '2024-03-06 16:28:27', NULL, NULL); +INSERT INTO `category_info` VALUES (1, '节点1', 'http://115.159.81.159:9300/statics/2024/02/28/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240228170131A002.png', 0, 'Y', '介绍', NULL, 'admin', '2024-02-28 17:09:11', NULL, NULL); +INSERT INTO `category_info` VALUES (2, '节点1-1', 'http://115.159.81.159:9300/statics/2024/02/28/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240228170926A003.png', 1, 'Y', '测试', NULL, 'admin', '2024-02-28 17:09:31', NULL, NULL); +INSERT INTO `category_info` VALUES (3, '节点1-1-1', 'http://115.159.81.159:9300/statics/2024/02/28/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240228170944A004.png', 2, 'Y', '测试', NULL, 'admin', '2024-02-28 17:09:48', NULL, NULL); +INSERT INTO `category_info` VALUES (4, '节点2', 'http://115.159.81.159:9300/statics/2024/02/28/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240228170956A005.png', 0, 'Y', '', NULL, 'admin', '2024-02-28 17:09:58', NULL, NULL); +INSERT INTO `category_info` VALUES (5, '节点2-1', 'http://115.159.81.159:9300/statics/2024/02/28/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240228171012A006.png', 4, 'Y', '测试', NULL, 'admin', '2024-02-28 17:10:14', NULL, NULL); +INSERT INTO `category_info` VALUES (6, '节点2-1-1', 'http://115.159.81.159:9300/statics/2024/02/28/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240228171031A007.png', 5, 'Y', '', NULL, 'admin', '2024-02-28 17:10:34', NULL, NULL); +INSERT INTO `category_info` VALUES (7, '节点1-1-2', 'http://115.159.81.159:9300/statics/2024/02/28/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240228171047A008.png', 2, 'Y', '测试', NULL, 'admin', '2024-02-28 17:10:50', NULL, NULL); +INSERT INTO `category_info` VALUES (13, '测试-1', 'http://115.159.81.159:9300/statics/2024/03/01/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240301114154A001.png', 0, 'Y', NULL, NULL, 'admin', '2024-03-01 11:42:03', NULL, NULL); +INSERT INTO `category_info` VALUES (14, '测试1-1', 'http://115.159.81.159:9300/statics/2024/03/01/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240301114209A002.png', 13, 'Y', NULL, NULL, 'admin', '2024-03-01 11:42:22', NULL, NULL); +INSERT INTO `category_info` VALUES (15, '测试1-2', 'http://115.159.81.159:9300/statics/2024/03/01/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240301114446A003.png', 13, 'Y', NULL, NULL, 'admin', '2024-03-01 11:44:56', NULL, NULL); +INSERT INTO `category_info` VALUES (16, '测试1-1-1', 'http://115.159.81.159:9300/statics/2024/03/06/7GHOYz1SWffN43a77d257b422464c35bc1da44fc6742_20240306162814A001.png', 14, 'Y', NULL, NULL, 'admin', '2024-03-06 16:28:27', NULL, NULL); -- ---------------------------- -- Table structure for comment_info diff --git a/sql/ry_20230706.sql b/sql/ry_20230706.sql index e32c91a..b05568d 100644 --- a/sql/ry_20230706.sql +++ b/sql/ry_20230706.sql @@ -67,8 +67,8 @@ create table sys_user ( -- ---------------------------- -- 初始化-用户信息表数据 -- ---------------------------- -insert into sys_user values(1, 103, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '115.159.211.196', sysdate(), 'admin', sysdate(), '', null, '管理员'); -insert into sys_user values(2, 105, 'ry', '若依', '00', 'ry@qq.com', '15666666666', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '115.159.211.196', sysdate(), 'admin', sysdate(), '', null, '测试员'); +insert into sys_user values(1, 103, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '115.159.81.159', sysdate(), 'admin', sysdate(), '', null, '管理员'); +insert into sys_user values(2, 105, 'ry', '若依', '00', 'ry@qq.com', '15666666666', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '115.159.81.159', sysdate(), 'admin', sysdate(), '', null, '测试员'); -- ---------------------------- diff --git a/sql/ry_config_20220929.sql b/sql/ry_config_20220929.sql index 962e3b9..9eaa7fe 100644 --- a/sql/ry_config_20220929.sql +++ b/sql/ry_config_20220929.sql @@ -40,7 +40,7 @@ insert into config_info(id, data_id, group_id, content, md5, gmt_create, gmt_mod (5,'muyu-system-dev.yml','DEFAULT_GROUP','# spring配置\nspring:\n redis:\n host: localhost\n port: 6379\n password:\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: root\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.muyu.system\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By muyu\n licenseUrl: https://muyu.vip','48e0ed4a040c402bdc2444213a82c910','2020-11-20 00:00:00','2022-09-29 02:49:09','nacos','0:0:0:0:0:0:0:1','','','系统模块','null','null','yaml','',''), (6,'muyu-gen-dev.yml','DEFAULT_GROUP','# spring配置\nspring:\n redis:\n host: localhost\n port: 6379\n password:\n datasource:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: root\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.muyu.gen.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 代码生成接口文档\n license: Powered By muyu\n licenseUrl: https://muyu.vip\n\n# 代码生成\ngen:\n # 作者\n author: muyu\n # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool\n packageName: com.muyu.system\n # 自动去除表前缀,默认是false\n autoRemovePre: false\n # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)\n tablePrefix: sys_\n','eb592420b3fceae1402881887b8a6a0d','2020-11-20 00:00:00','2022-09-29 02:49:42','nacos','0:0:0:0:0:0:0:1','','','代码生成','null','null','yaml','',''), (7,'muyu-job-dev.yml','DEFAULT_GROUP','# spring配置\nspring:\n redis:\n host: localhost\n port: 6379\n password: \n datasource:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: root\n password: root\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.muyu.job.domain\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 定时任务接口文档\n license: Powered By muyu\n licenseUrl: https://muyu.vip\n','edcf0e3fe13fea07b4ec08b1088f30b3','2020-11-20 00:00:00','2022-09-29 02:50:50','nacos','0:0:0:0:0:0:0:1','','','定时任务','null','null','yaml','',''), -(8,'muyu-file-dev.yml','DEFAULT_GROUP','# 本地文件上传 \r\nfile:\r\n domain: http://115.159.211.196:9300\r\n path: D:/muyu/uploadPath\r\n prefix: /statics\r\n\r\n# FastDFS配置\r\nfdfs:\r\n domain: http://8.129.231.12\r\n soTimeout: 3000\r\n connectTimeout: 2000\r\n trackerList: 8.129.231.12:22122\r\n\r\n# Minio配置\r\nminio:\r\n url: http://8.129.231.12:9000\r\n accessKey: minioadmin\r\n secretKey: minioadmin\r\n bucketName: test','5382b93f3d8059d6068c0501fdd41195','2020-11-20 00:00:00','2020-12-21 21:01:59',NULL,'0:0:0:0:0:0:0:1','','','文件服务','null','null','yaml',NULL,''), +(8,'muyu-file-dev.yml','DEFAULT_GROUP','# 本地文件上传 \r\nfile:\r\n domain: http://115.159.81.159:9300\r\n path: D:/muyu/uploadPath\r\n prefix: /statics\r\n\r\n# FastDFS配置\r\nfdfs:\r\n domain: http://8.129.231.12\r\n soTimeout: 3000\r\n connectTimeout: 2000\r\n trackerList: 8.129.231.12:22122\r\n\r\n# Minio配置\r\nminio:\r\n url: http://8.129.231.12:9000\r\n accessKey: minioadmin\r\n secretKey: minioadmin\r\n bucketName: test','5382b93f3d8059d6068c0501fdd41195','2020-11-20 00:00:00','2020-12-21 21:01:59',NULL,'0:0:0:0:0:0:0:1','','','文件服务','null','null','yaml',NULL,''), (9,'sentinel-muyu-gateway','DEFAULT_GROUP','[\r\n {\r\n \"resource\": \"muyu-auth\",\r\n \"count\": 500,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n },\r\n {\r\n \"resource\": \"muyu-system\",\r\n \"count\": 1000,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n },\r\n {\r\n \"resource\": \"muyu-gen\",\r\n \"count\": 200,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n },\r\n {\r\n \"resource\": \"muyu-job\",\r\n \"count\": 300,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n }\r\n]','9f3a3069261598f74220bc47958ec252','2020-11-20 00:00:00','2020-11-20 00:00:00',NULL,'0:0:0:0:0:0:0:1','','','限流策略','null','null','json',NULL,'');