Compare commits
10 Commits
74b67dae1c
...
d05ceebba0
Author | SHA1 | Date |
---|---|---|
|
d05ceebba0 | |
|
7b38972c73 | |
|
4e8922da81 | |
|
adfce2bc5c | |
|
48b64bbc0d | |
|
09a2da4f04 | |
|
cd0304954a | |
|
931b0d3646 | |
|
61b0b14749 | |
|
dc1e669dc5 |
|
@ -14,10 +14,10 @@ spring:
|
||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
# 服务注册地址
|
# 服务注册地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
config:
|
config:
|
||||||
# 配置中心地址
|
# 配置中心地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
# 配置文件格式
|
# 配置文件格式
|
||||||
file-extension: yml
|
file-extension: yml
|
||||||
# 共享配置
|
# 共享配置
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-common</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>muyu-common-cache</artifactId>
|
||||||
|
|
||||||
|
<description>
|
||||||
|
muyu-common-cache缓存基准
|
||||||
|
</description>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>17</maven.compiler.source>
|
||||||
|
<maven.compiler.target>17</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!-- common 缓存 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-common-redis</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
|
@ -0,0 +1,62 @@
|
||||||
|
package com.muyu.common.cache;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DongZl
|
||||||
|
* @description: 缓存接口基类
|
||||||
|
* @Date 2024-3-26 下午 03:25
|
||||||
|
*/
|
||||||
|
public interface Cache <K, V> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* key前缀
|
||||||
|
* @return key前缀
|
||||||
|
*/
|
||||||
|
public String keyPre();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编码
|
||||||
|
* @param key ID
|
||||||
|
* @return 键
|
||||||
|
*/
|
||||||
|
public String encode(K key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解码
|
||||||
|
* @param redisKey 数据库键
|
||||||
|
* @return ID
|
||||||
|
*/
|
||||||
|
public K decode(String redisKey);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过Key获取value值
|
||||||
|
* @param key 键
|
||||||
|
* @return 值
|
||||||
|
*/
|
||||||
|
public V get(K key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 缓存添加/修改
|
||||||
|
* @param key 键
|
||||||
|
* @param value 值
|
||||||
|
*/
|
||||||
|
public void put(K key, V value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过键删除
|
||||||
|
* @param key 键
|
||||||
|
*/
|
||||||
|
public void remove(K key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新缓存时间
|
||||||
|
* @param key 键
|
||||||
|
*/
|
||||||
|
public void refreshTime (K key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新缓存数据
|
||||||
|
* @param key 键
|
||||||
|
*/
|
||||||
|
public void refreshData (K key);
|
||||||
|
}
|
|
@ -0,0 +1,97 @@
|
||||||
|
package com.muyu.common.cache.abs;
|
||||||
|
|
||||||
|
import com.muyu.common.cache.Cache;
|
||||||
|
import com.muyu.common.redis.service.RedisService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DongZl
|
||||||
|
* @description: 缓存抽象类
|
||||||
|
* @Date 2024-3-27 下午 03:10
|
||||||
|
*/
|
||||||
|
public abstract class CacheAbs<K, V> implements Cache<K, V> {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RedisService redisService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编码
|
||||||
|
* @param key ID
|
||||||
|
* @return 键
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String encode (K key) {
|
||||||
|
return keyPre() + key;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过Key获取value值
|
||||||
|
* @param key 键
|
||||||
|
* @return 值
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public V get (K key) {
|
||||||
|
V value = redisService.getCacheObject(encode(key));
|
||||||
|
if (value == null){
|
||||||
|
value = getData(key);
|
||||||
|
if (value == null){
|
||||||
|
value = defaultValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.put(key, value);
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 缓存添加/修改
|
||||||
|
* @param key 键
|
||||||
|
* @param value 值
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void put (K key, V value) {
|
||||||
|
this.redisService.setCacheObject(encode(key), value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过键删除
|
||||||
|
* @param key 键
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void remove (K key) {
|
||||||
|
this.redisService.deleteObject(encode(key));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新缓存
|
||||||
|
* @param key 键
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void refreshTime (K key) {
|
||||||
|
this.redisService.expire(encode(key), 60, TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新缓存数据
|
||||||
|
*
|
||||||
|
* @param key 键
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void refreshData (K key) {
|
||||||
|
this.put(key, getData(key));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从数据库获取数据
|
||||||
|
* @param key ID
|
||||||
|
* @return 缓存对象
|
||||||
|
*/
|
||||||
|
public abstract V getData(K key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认值
|
||||||
|
*/
|
||||||
|
public abstract V defaultValue();
|
||||||
|
}
|
|
@ -18,6 +18,7 @@
|
||||||
<module>muyu-common-datascope</module>
|
<module>muyu-common-datascope</module>
|
||||||
<module>muyu-common-datasource</module>
|
<module>muyu-common-datasource</module>
|
||||||
<module>muyu-common-system</module>
|
<module>muyu-common-system</module>
|
||||||
|
<module>muyu-common-cache</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<artifactId>muyu-common</artifactId>
|
<artifactId>muyu-common</artifactId>
|
||||||
|
|
|
@ -14,10 +14,10 @@ spring:
|
||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
# 服务注册地址
|
# 服务注册地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
config:
|
config:
|
||||||
# 配置中心地址
|
# 配置中心地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
# 配置文件格式
|
# 配置文件格式
|
||||||
file-extension: yml
|
file-extension: yml
|
||||||
# 共享配置
|
# 共享配置
|
||||||
|
@ -33,7 +33,7 @@ spring:
|
||||||
datasource:
|
datasource:
|
||||||
ds1:
|
ds1:
|
||||||
nacos:
|
nacos:
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
dataId: sentinel-muyu-gateway
|
dataId: sentinel-muyu-gateway
|
||||||
groupId: DEFAULT_GROUP
|
groupId: DEFAULT_GROUP
|
||||||
data-type: json
|
data-type: json
|
||||||
|
|
|
@ -14,10 +14,10 @@ spring:
|
||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
# 服务注册地址
|
# 服务注册地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
config:
|
config:
|
||||||
# 配置中心地址
|
# 配置中心地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
# 配置文件格式
|
# 配置文件格式
|
||||||
file-extension: yml
|
file-extension: yml
|
||||||
# 共享配置
|
# 共享配置
|
||||||
|
|
|
@ -14,10 +14,10 @@ spring:
|
||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
# 服务注册地址
|
# 服务注册地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
config:
|
config:
|
||||||
# 配置中心地址
|
# 配置中心地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
# 配置文件格式
|
# 配置文件格式
|
||||||
file-extension: yml
|
file-extension: yml
|
||||||
# 共享配置
|
# 共享配置
|
||||||
|
|
|
@ -14,10 +14,10 @@ spring:
|
||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
# 服务注册地址
|
# 服务注册地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
config:
|
config:
|
||||||
# 配置中心地址
|
# 配置中心地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
# 配置文件格式
|
# 配置文件格式
|
||||||
file-extension: yml
|
file-extension: yml
|
||||||
# 共享配置
|
# 共享配置
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-product</artifactId>
|
||||||
|
<version>3.6.3</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>muyu-product-cache</artifactId>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>17</maven.compiler.source>
|
||||||
|
<maven.compiler.target>17</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<!-- 缓存基准模块 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-common-cache</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 商品模块 common 依赖 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-product-common</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,64 @@
|
||||||
|
package com.muyu.product.cache;
|
||||||
|
|
||||||
|
import com.muyu.common.cache.abs.CacheAbs;
|
||||||
|
import com.muyu.common.core.text.Convert;
|
||||||
|
import com.muyu.product.domain.ProjectInfo;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DongZl
|
||||||
|
* @description: 商品缓存
|
||||||
|
* @Date 2024-3-27 下午 03:30
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class ProjectInfoCache extends CacheAbs<Long, ProjectInfo> {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ProjectInfoData projectInfoData;
|
||||||
|
/**
|
||||||
|
* key前缀
|
||||||
|
*
|
||||||
|
* @return key前缀
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String keyPre () {
|
||||||
|
return "project:info:";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解码
|
||||||
|
*
|
||||||
|
* @param redisKey 数据库键
|
||||||
|
*
|
||||||
|
* @return ID
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Long decode (String redisKey) {
|
||||||
|
return Convert.toLong(redisKey.replace(keyPre(),""), 0L);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从数据库获取数据
|
||||||
|
*
|
||||||
|
* @param key ID
|
||||||
|
*
|
||||||
|
* @return 缓存对象
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ProjectInfo getData (Long key) {
|
||||||
|
return projectInfoData.getData(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认值
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ProjectInfo defaultValue () {
|
||||||
|
return new ProjectInfo();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.muyu.product.cache;
|
||||||
|
|
||||||
|
import com.muyu.product.domain.ProjectInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DongZl
|
||||||
|
* @description: 缓存数据获取
|
||||||
|
* @Date 2024-3-27 下午 03:34
|
||||||
|
*/
|
||||||
|
public interface ProjectInfoData {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从数据库获取数据
|
||||||
|
* @param key ID
|
||||||
|
* @return 缓存对象
|
||||||
|
*/
|
||||||
|
public ProjectInfo getData (Long key);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -1,10 +1,13 @@
|
||||||
package com.muyu.product.domain;
|
package com.muyu.product.domain;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.muyu.product.domain.model.AttrValueModel;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
@ -51,4 +54,11 @@ public class AsProductAttributeInfo extends BaseEntity {
|
||||||
@ApiModelProperty(name = "属性值", value = "属性值", required = true)
|
@ApiModelProperty(name = "属性值", value = "属性值", required = true)
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
|
public static AsProductAttributeInfo attrValueModelBuild(AttrValueModel attrValueModel, Supplier<Long> projectId){
|
||||||
|
return AsProductAttributeInfo.builder()
|
||||||
|
.productId(projectId.get())
|
||||||
|
.attributeId(attrValueModel.getId())
|
||||||
|
.value(attrValueModel.getValue())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.muyu.product.domain;
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.muyu.product.domain.model.ProjectAddModel;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
@ -15,6 +16,9 @@ import com.muyu.product.domain.req.ProjectInfoSaveReq;
|
||||||
import com.muyu.product.domain.req.ProjectInfoEditReq;
|
import com.muyu.product.domain.req.ProjectInfoEditReq;
|
||||||
import com.muyu.common.core.web.domain.BaseEntity;
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品信息对象 project_info
|
* 商品信息对象 project_info
|
||||||
*
|
*
|
||||||
|
@ -50,17 +54,17 @@ public class ProjectInfo extends BaseEntity {
|
||||||
/** 主类型 */
|
/** 主类型 */
|
||||||
@Excel(name = "主类型")
|
@Excel(name = "主类型")
|
||||||
@ApiModelProperty(name = "主类型", value = "主类型")
|
@ApiModelProperty(name = "主类型", value = "主类型")
|
||||||
private String mianType;
|
private Long mianType;
|
||||||
|
|
||||||
/** 父类型 */
|
/** 父类型 */
|
||||||
@Excel(name = "父类型")
|
@Excel(name = "父类型")
|
||||||
@ApiModelProperty(name = "父类型", value = "父类型")
|
@ApiModelProperty(name = "父类型", value = "父类型")
|
||||||
private String parentType;
|
private Long parentType;
|
||||||
|
|
||||||
/** 商品类型 */
|
/** 商品类型 */
|
||||||
@Excel(name = "商品类型")
|
@Excel(name = "商品类型")
|
||||||
@ApiModelProperty(name = "商品类型", value = "商品类型")
|
@ApiModelProperty(name = "商品类型", value = "商品类型")
|
||||||
private String type;
|
private Long type;
|
||||||
|
|
||||||
/** 商品图片 */
|
/** 商品图片 */
|
||||||
@Excel(name = "商品图片")
|
@Excel(name = "商品图片")
|
||||||
|
@ -108,18 +112,20 @@ public class ProjectInfo extends BaseEntity {
|
||||||
/**
|
/**
|
||||||
* 添加构造器
|
* 添加构造器
|
||||||
*/
|
*/
|
||||||
public static ProjectInfo saveBuild(ProjectInfoSaveReq projectInfoSaveReq){
|
public static ProjectInfo saveModelBuild(ProjectAddModel projectAddModel, Supplier<String> createBy){
|
||||||
return ProjectInfo.builder()
|
return ProjectInfo.builder()
|
||||||
.name(projectInfoSaveReq.getName())
|
.name(projectAddModel.getName())
|
||||||
.introduction(projectInfoSaveReq.getIntroduction())
|
.introduction(projectAddModel.getIntroduction())
|
||||||
.mianType(projectInfoSaveReq.getMianType())
|
.mianType(projectAddModel.getMianType())
|
||||||
.parentType(projectInfoSaveReq.getParentType())
|
.parentType(projectAddModel.getParentType())
|
||||||
.type(projectInfoSaveReq.getType())
|
.type(projectAddModel.getType())
|
||||||
.image(projectInfoSaveReq.getImage())
|
.image(projectAddModel.getImage())
|
||||||
.carouselImages(projectInfoSaveReq.getCarouselImages())
|
.carouselImages(projectAddModel.getCarouselImages())
|
||||||
.status(projectInfoSaveReq.getStatus())
|
.status(projectAddModel.getStatus())
|
||||||
.ruleId(projectInfoSaveReq.getRuleId())
|
.ruleId(projectAddModel.getRuleId())
|
||||||
.brandId(projectInfoSaveReq.getBrandId())
|
.brandId(projectAddModel.getBrandId())
|
||||||
|
.createBy(createBy.get())
|
||||||
|
.createTime(new Date())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
package com.muyu.product.domain;
|
package com.muyu.product.domain;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.muyu.product.domain.model.ProductSkuModel;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
@ -103,4 +106,14 @@ public class ProjectSkuInfo extends BaseEntity {
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ProjectSkuInfo productSkuModelBuild(ProductSkuModel productSkuModel, Supplier<Long> projectId){
|
||||||
|
return ProjectSkuInfo.builder()
|
||||||
|
.projectId(projectId.get())
|
||||||
|
.sku(productSkuModel.getSku())
|
||||||
|
.image(productSkuModel.getImage())
|
||||||
|
.stock(productSkuModel.getStock())
|
||||||
|
.price(productSkuModel.getPrice())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
package com.muyu.product.domain.model;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DongZl
|
||||||
|
* @description: 商品属性
|
||||||
|
* @Date 2024-3-22 上午 10:53
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class AttrValueModel {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ID
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 值
|
||||||
|
*/
|
||||||
|
private String value;
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
package com.muyu.product.domain.model;
|
||||||
|
|
||||||
|
import com.muyu.common.core.annotation.Excel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DongZl
|
||||||
|
* @description: 商品Sku
|
||||||
|
* @Date 2024-3-22 上午 10:54
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ProductSkuModel {
|
||||||
|
|
||||||
|
/** sku */
|
||||||
|
@ApiModelProperty(name = "sku", value = "sku", required = true)
|
||||||
|
private String sku;
|
||||||
|
|
||||||
|
/** 商品库存 */
|
||||||
|
@ApiModelProperty(name = "商品库存", value = "商品库存", required = true)
|
||||||
|
private Long stock;
|
||||||
|
|
||||||
|
/** 商品价格 */
|
||||||
|
@ApiModelProperty(name = "商品价格", value = "商品价格", required = true)
|
||||||
|
private BigDecimal price;
|
||||||
|
|
||||||
|
/** 规格图片 */
|
||||||
|
@ApiModelProperty(name = "规格图片", value = "规格图片", required = true)
|
||||||
|
private String image;
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
package com.muyu.product.domain.model;
|
||||||
|
|
||||||
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.*;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DongZl
|
||||||
|
* @description: 商品添加模型
|
||||||
|
* @Date 2024-3-22 上午 10:50
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@SuperBuilder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class ProjectAddModel extends BaseEntity {
|
||||||
|
|
||||||
|
/** 商品名称 */
|
||||||
|
@ApiModelProperty(name = "商品名称", value = "商品名称")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/** 商品描述 */
|
||||||
|
@ApiModelProperty(name = "商品描述", value = "商品描述")
|
||||||
|
private String introduction;
|
||||||
|
|
||||||
|
/** 主类型 */
|
||||||
|
@ApiModelProperty(name = "主类型", value = "主类型")
|
||||||
|
private Long mianType;
|
||||||
|
|
||||||
|
/** 父类型 */
|
||||||
|
@ApiModelProperty(name = "父类型", value = "父类型")
|
||||||
|
private Long parentType;
|
||||||
|
|
||||||
|
/** 商品类型 */
|
||||||
|
@ApiModelProperty(name = "商品类型", value = "商品类型")
|
||||||
|
private Long type;
|
||||||
|
|
||||||
|
/** 商品图片 */
|
||||||
|
@ApiModelProperty(name = "商品图片", value = "商品图片")
|
||||||
|
private String image;
|
||||||
|
|
||||||
|
/** 商品轮播图 */
|
||||||
|
@ApiModelProperty(name = "商品轮播图", value = "商品轮播图")
|
||||||
|
private String carouselImages;
|
||||||
|
|
||||||
|
/** 商品状态 */
|
||||||
|
@ApiModelProperty(name = "商品状态", value = "商品状态")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
/** 规格 */
|
||||||
|
@ApiModelProperty(name = "规格", value = "规格")
|
||||||
|
private Long ruleId;
|
||||||
|
|
||||||
|
/** 品牌 */
|
||||||
|
@ApiModelProperty(name = "品牌", value = "品牌")
|
||||||
|
private Long brandId;
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
package com.muyu.product.domain.model;
|
package com.muyu.product.domain.model;
|
||||||
|
|
||||||
import com.muyu.common.core.web.domain.BaseEntity;
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
import com.muyu.product.domain.AttributeInfo;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
@ -33,4 +34,12 @@ public class TemplateAttributeModel extends BaseEntity {
|
||||||
* 编码
|
* 编码
|
||||||
*/
|
*/
|
||||||
private String code;
|
private String code;
|
||||||
|
|
||||||
|
public static TemplateAttributeModel attributeInfoBuild(AttributeInfo attributeInfo){
|
||||||
|
return TemplateAttributeModel.builder()
|
||||||
|
.id(attributeInfo.getId())
|
||||||
|
.name(attributeInfo.getName())
|
||||||
|
.code(attributeInfo.getCode())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,15 +33,15 @@ public class ProjectInfoEditReq extends BaseEntity {
|
||||||
|
|
||||||
/** 主类型 */
|
/** 主类型 */
|
||||||
@ApiModelProperty(name = "主类型", value = "主类型")
|
@ApiModelProperty(name = "主类型", value = "主类型")
|
||||||
private String mianType;
|
private Long mianType;
|
||||||
|
|
||||||
/** 父类型 */
|
/** 父类型 */
|
||||||
@ApiModelProperty(name = "父类型", value = "父类型")
|
@ApiModelProperty(name = "父类型", value = "父类型")
|
||||||
private String parentType;
|
private Long parentType;
|
||||||
|
|
||||||
/** 商品类型 */
|
/** 商品类型 */
|
||||||
@ApiModelProperty(name = "商品类型", value = "商品类型")
|
@ApiModelProperty(name = "商品类型", value = "商品类型")
|
||||||
private String type;
|
private Long type;
|
||||||
|
|
||||||
/** 商品图片 */
|
/** 商品图片 */
|
||||||
@ApiModelProperty(name = "商品图片", value = "商品图片")
|
@ApiModelProperty(name = "商品图片", value = "商品图片")
|
||||||
|
|
|
@ -33,15 +33,15 @@ public class ProjectInfoQueryReq extends BaseEntity {
|
||||||
|
|
||||||
/** 主类型 */
|
/** 主类型 */
|
||||||
@ApiModelProperty(name = "主类型", value = "主类型")
|
@ApiModelProperty(name = "主类型", value = "主类型")
|
||||||
private String mianType;
|
private Long mianType;
|
||||||
|
|
||||||
/** 父类型 */
|
/** 父类型 */
|
||||||
@ApiModelProperty(name = "父类型", value = "父类型")
|
@ApiModelProperty(name = "父类型", value = "父类型")
|
||||||
private String parentType;
|
private Long parentType;
|
||||||
|
|
||||||
/** 商品类型 */
|
/** 商品类型 */
|
||||||
@ApiModelProperty(name = "商品类型", value = "商品类型")
|
@ApiModelProperty(name = "商品类型", value = "商品类型")
|
||||||
private String type;
|
private Long type;
|
||||||
|
|
||||||
/** 商品图片 */
|
/** 商品图片 */
|
||||||
@ApiModelProperty(name = "商品图片", value = "商品图片")
|
@ApiModelProperty(name = "商品图片", value = "商品图片")
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
package com.muyu.product.domain.req;
|
package com.muyu.product.domain.req;
|
||||||
|
|
||||||
|
import com.muyu.product.domain.model.AttrValueModel;
|
||||||
|
import com.muyu.product.domain.model.ProductSkuModel;
|
||||||
|
import com.muyu.product.domain.model.ProjectAddModel;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
@ -8,6 +11,8 @@ import lombok.experimental.SuperBuilder;
|
||||||
import io.swagger.annotations.*;
|
import io.swagger.annotations.*;
|
||||||
import com.muyu.common.core.web.domain.BaseEntity;
|
import com.muyu.common.core.web.domain.BaseEntity;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品信息对象 project_info
|
* 商品信息对象 project_info
|
||||||
*
|
*
|
||||||
|
@ -23,59 +28,19 @@ public class ProjectInfoSaveReq extends BaseEntity {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
/** 主键 */
|
/**
|
||||||
|
* 商品添加基本属性
|
||||||
|
*/
|
||||||
|
private ProjectAddModel projectAddModel;
|
||||||
|
|
||||||
@ApiModelProperty(name = "主键", value = "主键")
|
/**
|
||||||
private Long id;
|
* 商品属性
|
||||||
|
*/
|
||||||
|
private List<AttrValueModel> attrValueList;
|
||||||
|
|
||||||
/** 商品名称 */
|
/**
|
||||||
|
* 商品SKu
|
||||||
@ApiModelProperty(name = "商品名称", value = "商品名称")
|
*/
|
||||||
private String name;
|
private List<ProductSkuModel> productSkuList;
|
||||||
|
|
||||||
/** 商品描述 */
|
|
||||||
|
|
||||||
@ApiModelProperty(name = "商品描述", value = "商品描述")
|
|
||||||
private String introduction;
|
|
||||||
|
|
||||||
/** 主类型 */
|
|
||||||
|
|
||||||
@ApiModelProperty(name = "主类型", value = "主类型")
|
|
||||||
private String mianType;
|
|
||||||
|
|
||||||
/** 父类型 */
|
|
||||||
|
|
||||||
@ApiModelProperty(name = "父类型", value = "父类型")
|
|
||||||
private String parentType;
|
|
||||||
|
|
||||||
/** 商品类型 */
|
|
||||||
|
|
||||||
@ApiModelProperty(name = "商品类型", value = "商品类型")
|
|
||||||
private String type;
|
|
||||||
|
|
||||||
/** 商品图片 */
|
|
||||||
|
|
||||||
@ApiModelProperty(name = "商品图片", value = "商品图片")
|
|
||||||
private String image;
|
|
||||||
|
|
||||||
/** 商品轮播图 */
|
|
||||||
|
|
||||||
@ApiModelProperty(name = "商品轮播图", value = "商品轮播图")
|
|
||||||
private String carouselImages;
|
|
||||||
|
|
||||||
/** 商品状态 */
|
|
||||||
|
|
||||||
@ApiModelProperty(name = "商品状态", value = "商品状态")
|
|
||||||
private String status;
|
|
||||||
|
|
||||||
/** 规格 */
|
|
||||||
|
|
||||||
@ApiModelProperty(name = "规格", value = "规格")
|
|
||||||
private Long ruleId;
|
|
||||||
|
|
||||||
/** 品牌 */
|
|
||||||
|
|
||||||
@ApiModelProperty(name = "品牌", value = "品牌")
|
|
||||||
private Long brandId;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
package com.muyu.product.domain.resp;
|
||||||
|
|
||||||
|
import com.muyu.product.domain.*;
|
||||||
|
import com.muyu.product.domain.model.RuleAttrAddModel;
|
||||||
|
import com.muyu.product.domain.model.TemplateAttributeGroupModel;
|
||||||
|
import com.muyu.product.domain.model.TemplateAttributeModel;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DongZl
|
||||||
|
* @description: 商品详情信息
|
||||||
|
* @Date 2024-3-25 上午 10:46
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ProjectDetailResp {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 品类集合
|
||||||
|
*/
|
||||||
|
private List<CategoryInfo> categoryInfoList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品信息
|
||||||
|
*/
|
||||||
|
private ProjectInfo projectInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 品牌信息
|
||||||
|
*/
|
||||||
|
private BrandInfo brandInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品Sku集合
|
||||||
|
*/
|
||||||
|
private List<ProjectSkuInfo> projectSkuInfoList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品和属性集合
|
||||||
|
*/
|
||||||
|
private List<AsProductAttributeInfo> productAttributeInfoList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品规格
|
||||||
|
*/
|
||||||
|
private List<RuleAttrAddModel> ruleAttrModelList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 属性集合
|
||||||
|
*/
|
||||||
|
private List<TemplateAttributeModel> attributeInfoList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 属性组集合
|
||||||
|
*/
|
||||||
|
private List<TemplateAttributeGroupModel> attributeGroupList;
|
||||||
|
}
|
|
@ -18,6 +18,12 @@
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<!-- 商品模块 缓存 依赖 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-product-cache</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- 商品模块 common 依赖 -->
|
<!-- 商品模块 common 依赖 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.muyu</groupId>
|
<groupId>com.muyu</groupId>
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
package com.muyu.product.cache.impl;
|
||||||
|
|
||||||
|
import com.muyu.product.cache.ProjectInfoData;
|
||||||
|
import com.muyu.product.domain.ProjectInfo;
|
||||||
|
import com.muyu.product.service.ProjectInfoService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DongZl
|
||||||
|
* @description: 商品缓存数据获取
|
||||||
|
* @Date 2024-3-27 下午 03:37
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class ProjectInfoDataImpl implements ProjectInfoData {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ProjectInfoService projectInfoService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从数据库获取数据
|
||||||
|
* @param key ID
|
||||||
|
* @return 缓存对象
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ProjectInfo getData (Long key) {
|
||||||
|
return projectInfoService.getById(key);
|
||||||
|
}
|
||||||
|
}
|
|
@ -36,6 +36,8 @@ import com.muyu.common.core.web.page.TableDataInfo;
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/attribute")
|
@RequestMapping("/attribute")
|
||||||
public class AttributeInfoController extends BaseController {
|
public class AttributeInfoController extends BaseController {
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AttributeInfoService attributeInfoService;
|
private AttributeInfoService attributeInfoService;
|
||||||
|
|
||||||
|
@ -83,7 +85,8 @@ public class AttributeInfoController extends BaseController {
|
||||||
@PostMapping
|
@PostMapping
|
||||||
@ApiOperation("新增商品属性")
|
@ApiOperation("新增商品属性")
|
||||||
public Result<String> add(@RequestBody AttributeInfoSaveReq attributeInfoSaveReq) {
|
public Result<String> add(@RequestBody AttributeInfoSaveReq attributeInfoSaveReq) {
|
||||||
return toAjax(attributeInfoService.save(AttributeInfo.saveBuild(attributeInfoSaveReq)));
|
AttributeInfo attributeInfo = AttributeInfo.saveBuild(attributeInfoSaveReq);
|
||||||
|
return attributeInfoService.save(attributeInfo) ? success(attributeInfo.getId()) : error();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -3,6 +3,8 @@ package com.muyu.product.controller;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import com.muyu.product.cache.ProjectInfoCache;
|
||||||
|
import com.muyu.product.domain.resp.ProjectDetailResp;
|
||||||
import io.swagger.annotations.*;
|
import io.swagger.annotations.*;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
@ -39,6 +41,9 @@ public class ProjectInfoController extends BaseController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ProjectInfoService projectInfoService;
|
private ProjectInfoService projectInfoService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ProjectInfoCache projectInfoCache;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询商品信息列表
|
* 查询商品信息列表
|
||||||
*/
|
*/
|
||||||
|
@ -67,14 +72,36 @@ public class ProjectInfoController extends BaseController {
|
||||||
/**
|
/**
|
||||||
* 获取商品信息详细信息
|
* 获取商品信息详细信息
|
||||||
*/
|
*/
|
||||||
@ApiOperation("获取商品信息详细信息")
|
@ApiOperation("获取商品信息信息")
|
||||||
@RequiresPermissions("product:info:query")
|
// @RequiresPermissions("product:info:query")
|
||||||
@GetMapping(value = "/{id}")
|
@GetMapping(value = "/{id}")
|
||||||
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
|
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
|
||||||
public Result<ProjectInfo> getInfo(@PathVariable("id") Long id) {
|
public Result<ProjectInfo> getInfo(@PathVariable("id") Long id) {
|
||||||
|
return Result.success(projectInfoCache.get(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取商品信息详细信息
|
||||||
|
*/
|
||||||
|
@ApiOperation("获取商品信息详细信息")
|
||||||
|
// @RequiresPermissions("product:info:query")
|
||||||
|
@GetMapping(value = "/cache/{id}")
|
||||||
|
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
|
||||||
|
public Result<ProjectInfo> getCacheInfo(@PathVariable("id") Long id) {
|
||||||
return Result.success(projectInfoService.getById(id));
|
return Result.success(projectInfoService.getById(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取商品信息详细信息
|
||||||
|
*/
|
||||||
|
@ApiOperation("获取商品信息详细信息")
|
||||||
|
// @RequiresPermissions("product:info:query")
|
||||||
|
@GetMapping(value = "/detail/{id}")
|
||||||
|
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
|
||||||
|
public Result<ProjectDetailResp> getDetailInfo(@PathVariable("id") Long id) {
|
||||||
|
return Result.success(projectInfoService.getDetailInfo(id));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增商品信息
|
* 新增商品信息
|
||||||
*/
|
*/
|
||||||
|
@ -83,7 +110,7 @@ public class ProjectInfoController extends BaseController {
|
||||||
@PostMapping
|
@PostMapping
|
||||||
@ApiOperation("新增商品信息")
|
@ApiOperation("新增商品信息")
|
||||||
public Result<String> add(@RequestBody ProjectInfoSaveReq projectInfoSaveReq) {
|
public Result<String> add(@RequestBody ProjectInfoSaveReq projectInfoSaveReq) {
|
||||||
return toAjax(projectInfoService.save(ProjectInfo.saveBuild(projectInfoSaveReq)));
|
return toAjax(projectInfoService.save(projectInfoSaveReq));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -67,4 +67,6 @@ public interface CategoryInfoService extends IService<CategoryInfo> {
|
||||||
* @return 品类共有属性
|
* @return 品类共有属性
|
||||||
*/
|
*/
|
||||||
CategoryCommonElementResp getTemplateAttributeByCateGoryId (Long cateGoryId);
|
CategoryCommonElementResp getTemplateAttributeByCateGoryId (Long cateGoryId);
|
||||||
|
|
||||||
|
public <T, AS> List<T> getCommon (Long categoryId, IService<AS> iService, IService<T> bsiService);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@ package com.muyu.product.service;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.muyu.product.domain.ProjectInfo;
|
import com.muyu.product.domain.ProjectInfo;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.muyu.product.domain.req.ProjectInfoSaveReq;
|
||||||
|
import com.muyu.product.domain.resp.ProjectDetailResp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品信息Service接口
|
* 商品信息Service接口
|
||||||
|
@ -19,4 +21,17 @@ public interface ProjectInfoService extends IService<ProjectInfo> {
|
||||||
*/
|
*/
|
||||||
public List<ProjectInfo> list(ProjectInfo projectInfo);
|
public List<ProjectInfo> list(ProjectInfo projectInfo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存商品信息
|
||||||
|
* @param projectInfoSaveReq 请求对象
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
boolean save (ProjectInfoSaveReq projectInfoSaveReq);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过商品ID获取商品详情
|
||||||
|
* @param id 商品ID
|
||||||
|
* @return 商品详情
|
||||||
|
*/
|
||||||
|
ProjectDetailResp getDetailInfo (Long id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,10 +40,6 @@ public class AsAttributeGroupServiceImpl extends ServiceImpl<AsAttributeGroupMap
|
||||||
queryWrapper.eq(AsAttributeGroup::getAttributeId, asAttributeGroup.getAttributeId());
|
queryWrapper.eq(AsAttributeGroup::getAttributeId, asAttributeGroup.getAttributeId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return list(queryWrapper);
|
return list(queryWrapper);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,11 @@ import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 品类信息Service业务层处理
|
* 品类信息Service业务层处理
|
||||||
|
@ -228,7 +232,7 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
|
||||||
return attributeInfoList;
|
return attributeInfoList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public <T, AS> List<T> getCommon (Long categoryId, IService<AS> iService, IService<T> bsiService) {
|
public <T, AS> List<T> getCommon (Long categoryId, IService<AS> iService, IService<T> bsiService) {
|
||||||
List<T> list = new ArrayList();
|
List<T> list = new ArrayList();
|
||||||
QueryWrapper<AS> asQueryWrapper = new QueryWrapper<>();
|
QueryWrapper<AS> asQueryWrapper = new QueryWrapper<>();
|
||||||
|
@ -277,6 +281,15 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void getParentIdListByCateGoryId(List<Long> parentIdList, Long cateGoryId){
|
||||||
|
if (cateGoryId.equals(0L)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
CategoryInfo categoryInfo = this.getById(cateGoryId);
|
||||||
|
parentIdList.add(categoryInfo.getId());
|
||||||
|
getParentIdListByCateGoryId(parentIdList, categoryInfo.getParentId());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过品类ID获取品类共有属性
|
* 通过品类ID获取品类共有属性
|
||||||
*
|
*
|
||||||
|
@ -286,31 +299,72 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public CategoryCommonElementResp getTemplateAttributeByCateGoryId (Long cateGoryId) {
|
public CategoryCommonElementResp getTemplateAttributeByCateGoryId (Long cateGoryId) {
|
||||||
|
List<Long> cateGoryIdList = new ArrayList<>();
|
||||||
|
getParentIdListByCateGoryId(cateGoryIdList, cateGoryId);
|
||||||
// 取出和品类相关联的属性组关系 - 中间表
|
// 取出和品类相关联的属性组关系 - 中间表
|
||||||
LambdaQueryWrapper<AsCategoryAttributeGroup> asCategoryAttributeGroupLambdaQueryWrapper = new LambdaQueryWrapper<>(){{
|
LambdaQueryWrapper<AsCategoryAttributeGroup> asCategoryAttributeGroupLambdaQueryWrapper = new LambdaQueryWrapper<>(){{
|
||||||
eq(AsCategoryAttributeGroup::getCategoryId, cateGoryId);
|
in(AsCategoryAttributeGroup::getCategoryId, cateGoryIdList);
|
||||||
}};
|
}};
|
||||||
List<AsCategoryAttributeGroup> categoryAttributeGroupList = asCategoryAttributeGroupService.list(asCategoryAttributeGroupLambdaQueryWrapper);
|
List<AsCategoryAttributeGroup> categoryAttributeGroupList = asCategoryAttributeGroupService.list(asCategoryAttributeGroupLambdaQueryWrapper);
|
||||||
List<TemplateAttributeGroupModel> attributeGroupModelList = categoryAttributeGroupList.stream()
|
List<TemplateAttributeGroupModel> attributeGroupModelList = categoryAttributeGroupList.stream()
|
||||||
.map(asCategoryAttributeGroup -> TemplateAttributeGroupModel.attributeGroupBuild(
|
.map(AsCategoryAttributeGroup::getAttributeGroupId)
|
||||||
attributeGroupService.getById(asCategoryAttributeGroup.getAttributeGroupId()),
|
.distinct()
|
||||||
attributeGroupId -> attributeInfoService.listByIds(
|
.map(attributeGroupId -> TemplateAttributeGroupModel.attributeGroupBuild(
|
||||||
asAttributeGroupService.list(
|
attributeGroupService.getById(attributeGroupId),
|
||||||
new LambdaQueryWrapper<>(){{
|
applyAttributeGroupId -> {
|
||||||
eq(AsAttributeGroup::getGroupId, asCategoryAttributeGroup.getAttributeGroupId());
|
LambdaQueryWrapper<AsAttributeGroup> asAttributeGroupQueryWrapper = new LambdaQueryWrapper<>() {{
|
||||||
}}
|
eq(AsAttributeGroup::getGroupId, applyAttributeGroupId);
|
||||||
).stream().map(AsAttributeGroup::getAttributeId).toList()
|
}};
|
||||||
).stream()
|
List<Long> attributeIdList = asAttributeGroupService.list(asAttributeGroupQueryWrapper).stream()
|
||||||
.map(AttributeInfo::buildTemplateModel)
|
.map(AsAttributeGroup::getAttributeId)
|
||||||
.toList()
|
.toList();
|
||||||
|
if (attributeIdList.isEmpty()) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
return attributeInfoService.listByIds(attributeIdList).stream()
|
||||||
|
.map(AttributeInfo::buildTemplateModel)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
))
|
))
|
||||||
.filter(TemplateAttributeGroupModel::isEffective)
|
.filter(TemplateAttributeGroupModel::isEffective)
|
||||||
.toList();
|
.toList();
|
||||||
|
// 查重集合
|
||||||
|
Set<Long> attributeIdSet = new HashSet<>();
|
||||||
|
// 获取组内所有的属性Id
|
||||||
|
if (!attributeGroupModelList.isEmpty()){
|
||||||
|
attributeIdSet.addAll(
|
||||||
|
attributeGroupModelList.stream()
|
||||||
|
.flatMap((Function<TemplateAttributeGroupModel, Stream<TemplateAttributeModel>>) templateAttributeGroupModel -> templateAttributeGroupModel.getAttributeList().stream())
|
||||||
|
.map(TemplateAttributeModel::getId)
|
||||||
|
.toList()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
List<TemplateAttributeModel> templateAttributeModelList = new ArrayList<>();
|
List<TemplateAttributeModel> templateAttributeModelList = new ArrayList<>();
|
||||||
|
LambdaQueryWrapper<AsCategoryAttribute> categoryAttributeQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
categoryAttributeQueryWrapper.in(AsCategoryAttribute::getCategoryId, cateGoryIdList);
|
||||||
|
List<AsCategoryAttribute> asCategoryAttributeList = asCategoryAttributeService.list(categoryAttributeQueryWrapper);
|
||||||
|
if (asCategoryAttributeList != null && !asCategoryAttributeList.isEmpty()){
|
||||||
|
List<Long> templateAttributeIdList = asCategoryAttributeList.stream()
|
||||||
|
.map(AsCategoryAttribute::getAttributeId)
|
||||||
|
.filter(templateAttributeId -> !attributeIdSet.contains(templateAttributeId))
|
||||||
|
.toList();
|
||||||
|
templateAttributeModelList = attributeInfoService.listByIds(templateAttributeIdList).stream()
|
||||||
|
.map(AttributeInfo::buildTemplateModel)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
List<TemplateAttributeModel> attributeModelList = new ArrayList<>();
|
List<TemplateAttributeModel> attributeModelList = new ArrayList<>();
|
||||||
|
|
||||||
|
if (!templateAttributeModelList.isEmpty()){
|
||||||
|
attributeIdSet.addAll(
|
||||||
|
templateAttributeModelList.stream().map(TemplateAttributeModel::getId).toList()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
LambdaQueryWrapper<AttributeInfo> attributeInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
attributeInfoLambdaQueryWrapper.notIn(!attributeIdSet.isEmpty(), AttributeInfo::getId, attributeIdSet);
|
||||||
|
attributeModelList = attributeInfoService.list(attributeInfoLambdaQueryWrapper).stream().map(AttributeInfo::buildTemplateModel).toList();
|
||||||
|
|
||||||
return CategoryCommonElementResp.builder()
|
return CategoryCommonElementResp.builder()
|
||||||
.templateAttributeGroupList(attributeGroupModelList)
|
.templateAttributeGroupList(attributeGroupModelList)
|
||||||
|
|
|
@ -1,13 +1,21 @@
|
||||||
package com.muyu.product.service.impl;
|
package com.muyu.product.service.impl;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.muyu.common.core.utils.ObjUtils;
|
import com.muyu.common.core.utils.ObjUtils;
|
||||||
|
import com.muyu.common.security.utils.SecurityUtils;
|
||||||
|
import com.muyu.product.domain.*;
|
||||||
|
import com.muyu.product.domain.model.*;
|
||||||
|
import com.muyu.product.domain.req.ProjectInfoSaveReq;
|
||||||
|
import com.muyu.product.domain.resp.CategoryCommonElementResp;
|
||||||
|
import com.muyu.product.domain.resp.ProjectDetailResp;
|
||||||
|
import com.muyu.product.service.*;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.muyu.product.mapper.ProjectInfoMapper;
|
import com.muyu.product.mapper.ProjectInfoMapper;
|
||||||
import com.muyu.product.domain.ProjectInfo;
|
|
||||||
import com.muyu.product.service.ProjectInfoService;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
|
||||||
|
@ -21,6 +29,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
@Service
|
@Service
|
||||||
public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, ProjectInfo> implements ProjectInfoService {
|
public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, ProjectInfo> implements ProjectInfoService {
|
||||||
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AsProductAttributeInfoService asProductAttributeInfoService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ProjectSkuInfoService projectSkuInfoService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CategoryInfoService categoryInfoService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RuleAttrInfoService ruleAttrInfoService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private BrandInfoService brandInfoService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AttributeInfoService attributeInfoService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询商品信息列表
|
* 查询商品信息列表
|
||||||
*
|
*
|
||||||
|
@ -78,4 +105,128 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
|
||||||
|
|
||||||
return list(queryWrapper);
|
return list(queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存商品信息
|
||||||
|
*
|
||||||
|
* @param projectInfoSaveReq 请求对象
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean save (ProjectInfoSaveReq projectInfoSaveReq) {
|
||||||
|
ProjectAddModel projectAddModel = projectInfoSaveReq.getProjectAddModel();
|
||||||
|
ProjectInfo projectInfo = ProjectInfo.saveModelBuild(projectAddModel, SecurityUtils::getUsername);
|
||||||
|
boolean save = this.save(projectInfo);
|
||||||
|
if (save){
|
||||||
|
// 属性值
|
||||||
|
List<AttrValueModel> attrValueList = projectInfoSaveReq.getAttrValueList();
|
||||||
|
List<AsProductAttributeInfo> asProductAttributeInfoList = attrValueList.stream()
|
||||||
|
.map(attrValueModel -> AsProductAttributeInfo.attrValueModelBuild(attrValueModel, projectInfo::getId))
|
||||||
|
.toList();
|
||||||
|
if (!asProductAttributeInfoList.isEmpty()){
|
||||||
|
asProductAttributeInfoService.saveBatch(asProductAttributeInfoList);
|
||||||
|
}
|
||||||
|
// sku ProductSkuModel -》 ProjectSkuInfo
|
||||||
|
List<ProductSkuModel> productSkuModelList = projectInfoSaveReq.getProductSkuList();
|
||||||
|
List<ProjectSkuInfo> projectSkuInfoList = productSkuModelList.stream().map(
|
||||||
|
productSkuModel -> ProjectSkuInfo.productSkuModelBuild(productSkuModel, projectInfo::getId)
|
||||||
|
).toList();
|
||||||
|
if (!projectSkuInfoList.isEmpty()){
|
||||||
|
projectSkuInfoService.saveBatch(projectSkuInfoList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return save;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过商品ID获取商品详情
|
||||||
|
*
|
||||||
|
* @param id 商品ID
|
||||||
|
* @return 商品详情
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ProjectDetailResp getDetailInfo (Long id) {
|
||||||
|
// 商品信息获取
|
||||||
|
ProjectInfo projectInfo = this.getById(id);
|
||||||
|
// 品牌信息
|
||||||
|
BrandInfo brandInfo = this.brandInfoService.getById(projectInfo.getBrandId());
|
||||||
|
// 品类集合
|
||||||
|
List<CategoryInfo> categoryInfoList = categoryInfoService.listByIds(new ArrayList<>() {{
|
||||||
|
add(projectInfo.getMianType());
|
||||||
|
add(projectInfo.getParentType());
|
||||||
|
add(projectInfo.getType());
|
||||||
|
}});
|
||||||
|
// 商品Sku集合
|
||||||
|
List<ProjectSkuInfo> projectSkuInfoList = this.projectSkuInfoService.list(new LambdaQueryWrapper<>() {{
|
||||||
|
eq(ProjectSkuInfo::getProjectId, id);
|
||||||
|
}});
|
||||||
|
|
||||||
|
// 商品和属性集合
|
||||||
|
List<AsProductAttributeInfo> productAttributeInfoList = this.asProductAttributeInfoService.list(new LambdaQueryWrapper<>() {{
|
||||||
|
eq(AsProductAttributeInfo::getProductId, id);
|
||||||
|
}});
|
||||||
|
// 商品规格
|
||||||
|
List<RuleAttrAddModel> ruleAttrModelList = ruleAttrInfoService.list(new LambdaQueryWrapper<>() {{
|
||||||
|
eq(RuleAttrInfo::getRuleId, projectInfo.getRuleId());
|
||||||
|
}}).stream()
|
||||||
|
.map(RuleAttrAddModel::infoBuild).toList();
|
||||||
|
|
||||||
|
|
||||||
|
CategoryCommonElementResp templateAttribute = this.categoryInfoService.getTemplateAttributeByCateGoryId(projectInfo.getType());
|
||||||
|
List<TemplateAttributeGroupModel> templateAttributeGroupList = templateAttribute.getTemplateAttributeGroupList();
|
||||||
|
List<TemplateAttributeModel> templateAttributeList = new ArrayList<>(){{
|
||||||
|
addAll(templateAttribute.getTemplateAttributeList());
|
||||||
|
}};
|
||||||
|
// 属性组和商品属性的ID
|
||||||
|
List<Long> notInAttributeIdList = new ArrayList<>();
|
||||||
|
List<Long> attributeGroupIdList = templateAttributeGroupList.stream()
|
||||||
|
.flatMap(templateAttributeGroupModel -> templateAttributeGroupModel.getAttributeList().stream())
|
||||||
|
.map(TemplateAttributeModel::getId)
|
||||||
|
.toList();
|
||||||
|
List<Long> attributeIdList = templateAttributeList.stream()
|
||||||
|
.map(TemplateAttributeModel::getId)
|
||||||
|
.toList();
|
||||||
|
if (!attributeGroupIdList.isEmpty()){
|
||||||
|
notInAttributeIdList.addAll( attributeGroupIdList );
|
||||||
|
}
|
||||||
|
if (!attributeIdList.isEmpty()){
|
||||||
|
notInAttributeIdList.addAll( attributeIdList );
|
||||||
|
}
|
||||||
|
// 添加上,商品的自有属性
|
||||||
|
List<AsProductAttributeInfo> productAttributeList = this.asProductAttributeInfoService.list(
|
||||||
|
new LambdaQueryWrapper<>() {{
|
||||||
|
eq(AsProductAttributeInfo::getProductId, projectInfo.getId());
|
||||||
|
notIn(AsProductAttributeInfo::getAttributeId, notInAttributeIdList);
|
||||||
|
}}
|
||||||
|
);
|
||||||
|
|
||||||
|
List<TemplateAttributeModel> projectAttributeList = new ArrayList<>();
|
||||||
|
if (!productAttributeList.isEmpty()){
|
||||||
|
List<Long> attrIdList = productAttributeList.stream()
|
||||||
|
.map(AsProductAttributeInfo::getAttributeId)
|
||||||
|
.toList();
|
||||||
|
projectAttributeList = attributeInfoService.list(
|
||||||
|
new LambdaQueryWrapper<>() {{
|
||||||
|
in(AttributeInfo::getId, attrIdList);
|
||||||
|
}}
|
||||||
|
).stream()
|
||||||
|
.map(TemplateAttributeModel::attributeInfoBuild)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
// 把自有属性添加到商品属性的集合当中,进行合并
|
||||||
|
if (!projectAttributeList.isEmpty()){
|
||||||
|
templateAttributeList.addAll(projectAttributeList);
|
||||||
|
}
|
||||||
|
return ProjectDetailResp.builder()
|
||||||
|
.projectInfo(projectInfo)
|
||||||
|
.brandInfo(brandInfo)
|
||||||
|
.categoryInfoList(categoryInfoList)
|
||||||
|
.projectSkuInfoList(projectSkuInfoList)
|
||||||
|
.productAttributeInfoList(productAttributeInfoList)
|
||||||
|
.ruleAttrModelList(ruleAttrModelList)
|
||||||
|
.attributeInfoList(templateAttributeList)
|
||||||
|
.attributeGroupList(templateAttributeGroupList)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,10 +14,10 @@ spring:
|
||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
# 服务注册地址
|
# 服务注册地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
config:
|
config:
|
||||||
# 配置中心地址
|
# 配置中心地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
# 配置文件格式
|
# 配置文件格式
|
||||||
file-extension: yml
|
file-extension: yml
|
||||||
# 共享配置
|
# 共享配置
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<module>muyu-product-common</module>
|
<module>muyu-product-common</module>
|
||||||
<module>muyu-product-remote</module>
|
<module>muyu-product-remote</module>
|
||||||
<module>muyu-product-server</module>
|
<module>muyu-product-server</module>
|
||||||
|
<module>muyu-product-cache</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
|
|
|
@ -14,10 +14,10 @@ spring:
|
||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
# 服务注册地址
|
# 服务注册地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
config:
|
config:
|
||||||
# 配置中心地址
|
# 配置中心地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
# 配置文件格式
|
# 配置文件格式
|
||||||
file-extension: yml
|
file-extension: yml
|
||||||
# 共享配置
|
# 共享配置
|
||||||
|
|
|
@ -14,10 +14,10 @@ spring:
|
||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
# 服务注册地址
|
# 服务注册地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
config:
|
config:
|
||||||
# 配置中心地址
|
# 配置中心地址
|
||||||
server-addr: 127.0.0.1:8848
|
server-addr: 111.229.102.61:8848
|
||||||
# 配置文件格式
|
# 配置文件格式
|
||||||
file-extension: yml
|
file-extension: yml
|
||||||
# 共享配置
|
# 共享配置
|
||||||
|
|
14
pom.xml
14
pom.xml
|
@ -150,6 +150,13 @@
|
||||||
<version>${muyu.version}</version>
|
<version>${muyu.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 缓存基准模块 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-common-cache</artifactId>
|
||||||
|
<version>${muyu.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- 接口模块 -->
|
<!-- 接口模块 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.muyu</groupId>
|
<groupId>com.muyu</groupId>
|
||||||
|
@ -220,6 +227,13 @@
|
||||||
<version>${muyu.version}</version>
|
<version>${muyu.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 商品模块 缓存 依赖 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>muyu-product-cache</artifactId>
|
||||||
|
<version>${muyu.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,425 @@
|
||||||
|
/*
|
||||||
|
Navicat Premium Data Transfer
|
||||||
|
|
||||||
|
Source Server : 本地5.7
|
||||||
|
Source Server Type : MySQL
|
||||||
|
Source Server Version : 50737
|
||||||
|
Source Host : 127.0.0.1:3306
|
||||||
|
Source Schema : product
|
||||||
|
|
||||||
|
Target Server Type : MySQL
|
||||||
|
Target Server Version : 50737
|
||||||
|
File Encoding : 65001
|
||||||
|
|
||||||
|
Date: 08/03/2024 14:41:20
|
||||||
|
*/
|
||||||
|
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for as_attribute_group
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `as_attribute_group`;
|
||||||
|
CREATE TABLE `as_attribute_group` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`group_id` bigint(20) NOT NULL COMMENT '组ID',
|
||||||
|
`attribute_id` bigint(20) NOT NULL COMMENT '属性id',
|
||||||
|
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '属性与组中间表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of as_attribute_group
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `as_attribute_group` VALUES (1, 6, 1, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_attribute_group` VALUES (2, 6, 2, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_attribute_group` VALUES (3, 6, 4, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for as_brand_project
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `as_brand_project`;
|
||||||
|
CREATE TABLE `as_brand_project` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`brand_id` bigint(20) NOT NULL COMMENT '品牌id',
|
||||||
|
`project_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商品id',
|
||||||
|
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '品牌商品中间表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of as_brand_project
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for as_category_attribute
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `as_category_attribute`;
|
||||||
|
CREATE TABLE `as_category_attribute` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`category_id` bigint(20) NOT NULL COMMENT '品类id',
|
||||||
|
`attribute_id` bigint(20) NOT NULL COMMENT '属性id',
|
||||||
|
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '品类属性中间表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of as_category_attribute
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `as_category_attribute` VALUES (1, 12, 2, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute` VALUES (2, 12, 10, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute` VALUES (3, 12, 6, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute` VALUES (4, 12, 13, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute` VALUES (5, 13, 1, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute` VALUES (6, 14, 2, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute` VALUES (7, 15, 1, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute` VALUES (8, 15, 2, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute` VALUES (9, 16, 2, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute` VALUES (10, 16, 1, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute` VALUES (11, 16, 10, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute` VALUES (12, 16, 9, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for as_category_attribute_group
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `as_category_attribute_group`;
|
||||||
|
CREATE TABLE `as_category_attribute_group` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`category_id` bigint(20) NOT NULL COMMENT '品类id',
|
||||||
|
`attribute_group_id` bigint(20) NOT NULL COMMENT '属性组',
|
||||||
|
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '品类属性组中间表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of as_category_attribute_group
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `as_category_attribute_group` VALUES (1, 12, 6, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute_group` VALUES (2, 13, 6, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute_group` VALUES (3, 14, 7, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute_group` VALUES (4, 15, 6, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_attribute_group` VALUES (5, 15, 7, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for as_category_brand
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `as_category_brand`;
|
||||||
|
CREATE TABLE `as_category_brand` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`category_id` bigint(20) NOT NULL COMMENT '品类id',
|
||||||
|
`brand_id` bigint(20) NOT NULL COMMENT '品牌id',
|
||||||
|
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '品类品牌中间表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of as_category_brand
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `as_category_brand` VALUES (1, 12, 1, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_brand` VALUES (2, 14, 1, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_brand` VALUES (3, 15, 1, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_brand` VALUES (4, 16, 1, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `as_category_brand` VALUES (5, 16, 2, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for as_product_attribute_info
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `as_product_attribute_info`;
|
||||||
|
CREATE TABLE `as_product_attribute_info` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '属性编号',
|
||||||
|
`product_id` bigint(20) NOT NULL COMMENT '商品',
|
||||||
|
`attribute_id` bigint(20) NOT NULL COMMENT '属性',
|
||||||
|
`value` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '属性值',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
`remark` varchar(900) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品属性表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of as_product_attribute_info
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for attribute_group
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `attribute_group`;
|
||||||
|
CREATE TABLE `attribute_group` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '属性组编号',
|
||||||
|
`name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '组名称',
|
||||||
|
`states` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
`remark` varchar(900) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '属性组表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of attribute_group
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `attribute_group` VALUES (6, '测试', 'Y', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_group` VALUES (7, '成都', 'Y', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for attribute_info
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `attribute_info`;
|
||||||
|
CREATE TABLE `attribute_info` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '属性编号',
|
||||||
|
`code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '属性编码',
|
||||||
|
`name` varchar(90) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '属性名',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
`remark` varchar(900) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品属性表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of attribute_info
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `attribute_info` VALUES (1, 'CPU', 'CPU', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (2, 'memory', '内存', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (3, 'screen_size', '屏幕尺寸', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (4, 'color', '颜色', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (5, 'material', '材质', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (6, 'capacity', '容量', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (7, 'the_year_listing', '上市年份', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (8, 'listing_month', '上市月份', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (9, 'date_of_sale', '销售日期', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (10, 'Length', '长度', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (11, 'width', '宽度', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (12, 'thickness', '厚度', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (13, 'weight', '重量', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (19, 'A', 'A', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (20, 'B', 'B', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (21, 'C', 'C', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `attribute_info` VALUES (22, 'D', '测试D', NULL, NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for brand_info
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `brand_info`;
|
||||||
|
CREATE TABLE `brand_info` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`nam` varchar(90) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '品牌名称',
|
||||||
|
`logo` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'LOGO',
|
||||||
|
`start` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '是否启用',
|
||||||
|
`introduction` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '介绍',
|
||||||
|
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NOT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '品牌信息' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of brand_info
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `brand_info` VALUES (1, '小米', 'http://127.0.0.1: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://127.0.0.1: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://127.0.0.1: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
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `category_info`;
|
||||||
|
CREATE TABLE `category_info` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '品类名称',
|
||||||
|
`image` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '图片',
|
||||||
|
`parent_id` bigint(20) NOT NULL COMMENT '父级品类',
|
||||||
|
`start` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '是否启用',
|
||||||
|
`introduction` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '介绍',
|
||||||
|
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NOT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '品类信息' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of category_info
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `category_info` VALUES (1, '节点1', 'http://127.0.0.1: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://127.0.0.1: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://127.0.0.1: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://127.0.0.1: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://127.0.0.1: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://127.0.0.1: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://127.0.0.1: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://127.0.0.1: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://127.0.0.1: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://127.0.0.1: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://127.0.0.1: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
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `comment_info`;
|
||||||
|
CREATE TABLE `comment_info` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`project_id` bigint(20) NOT NULL COMMENT '商品id',
|
||||||
|
`comment` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '评论',
|
||||||
|
`images` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图片',
|
||||||
|
`parent_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父类id',
|
||||||
|
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NOT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品评论表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of comment_info
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for comment_like_info
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `comment_like_info`;
|
||||||
|
CREATE TABLE `comment_like_info` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`comment_id` bigint(20) NOT NULL COMMENT '评论id',
|
||||||
|
`user_id` bigint(20) NOT NULL COMMENT '点赞人id',
|
||||||
|
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NOT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '评论点赞表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of comment_like_info
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for project_info
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `project_info`;
|
||||||
|
CREATE TABLE `project_info` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`name` varchar(90) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品名称',
|
||||||
|
`introduction` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '商品描述',
|
||||||
|
`mian_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '主类型',
|
||||||
|
`parent_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父类型',
|
||||||
|
`type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品类型',
|
||||||
|
`image` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品图片',
|
||||||
|
`carousel_images` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品轮播图',
|
||||||
|
`status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商品状态',
|
||||||
|
`rule_id` bigint(20) NULL DEFAULT NULL COMMENT '规格',
|
||||||
|
`brand_id` bigint(20) NULL DEFAULT NULL COMMENT '品牌',
|
||||||
|
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NOT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品信息' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of project_info
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for project_sku_info
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `project_sku_info`;
|
||||||
|
CREATE TABLE `project_sku_info` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`project_id` bigint(20) NOT NULL COMMENT '商品id',
|
||||||
|
`sku` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'sku',
|
||||||
|
`stock` int(11) NOT NULL COMMENT '商品库存',
|
||||||
|
`price` decimal(24, 6) NOT NULL COMMENT '商品价格',
|
||||||
|
`image` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '规格图片',
|
||||||
|
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NOT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品SKU表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of project_sku_info
|
||||||
|
-- ----------------------------
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for rule_attr_info
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `rule_attr_info`;
|
||||||
|
CREATE TABLE `rule_attr_info` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`rule_id` bigint(20) NOT NULL COMMENT '规格id',
|
||||||
|
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类目名称',
|
||||||
|
`attr_value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '规格值',
|
||||||
|
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NOT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '规格详情表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of rule_attr_info
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `rule_attr_info` VALUES (1, 4, '规格1', '属性1,属性2', NULL, 'admin', '2024-03-04 15:06:16', NULL, NULL);
|
||||||
|
INSERT INTO `rule_attr_info` VALUES (2, 4, '规格2', '属性3,属性4', NULL, 'admin', '2024-03-04 15:06:16', NULL, NULL);
|
||||||
|
INSERT INTO `rule_attr_info` VALUES (3, 5, 'CPU', '骁龙888,骁龙888plus', NULL, 'admin', '2024-03-04 15:15:35', NULL, NULL);
|
||||||
|
INSERT INTO `rule_attr_info` VALUES (4, 5, '内存', '8G,16G', NULL, 'admin', '2024-03-04 15:15:35', NULL, NULL);
|
||||||
|
INSERT INTO `rule_attr_info` VALUES (5, 5, '储存', '128G,512G', NULL, 'admin', '2024-03-04 15:15:35', NULL, NULL);
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for rule_info
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `rule_info`;
|
||||||
|
CREATE TABLE `rule_info` (
|
||||||
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
|
||||||
|
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '规格名称',
|
||||||
|
`status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '规格状态',
|
||||||
|
`remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注',
|
||||||
|
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建人',
|
||||||
|
`create_time` datetime(0) NOT NULL COMMENT '创建时间',
|
||||||
|
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||||
|
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '商品规格表' ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of rule_info
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `rule_info` VALUES (4, '测试', NULL, NULL, 'admin', '2024-03-04 15:06:16', NULL, NULL);
|
||||||
|
INSERT INTO `rule_info` VALUES (5, '手机', NULL, NULL, 'admin', '2024-03-04 15:15:35', NULL, NULL);
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
Loading…
Reference in New Issue