Compare commits

..

10 Commits

Author SHA1 Message Date
rouchen 6c17b06a7c projectInfoCache 2024-03-27 20:41:25 +08:00
rouchen 51ba9f2877 商品详情页面 1.0 2024-03-26 20:22:04 +08:00
rouchen abd068cfb0 商品详情页面 2024-03-25 20:05:21 +08:00
rouchen 9ef7aba9b8 更新 商品信息修改回显 删除 2024-03-24 19:05:03 +08:00
rouchen 5c9f4287d5 商品信息修改回显 2024-03-24 11:46:23 +08:00
rouchen 9f67361dfd 商品信息修改回显 2024-03-24 10:53:12 +08:00
rouchen 55bb4bc9e6 商品规格回显 2024-03-24 10:53:12 +08:00
rouchen 106eac1803 商品添加 属性组修改 2024-03-21 16:47:58 +08:00
DongZeLiang cd0304954a bug修改
增加product微服务SQL
2024-03-21 15:39:51 +08:00
DongZeLiang 931b0d3646 公共元素优化 2024-03-08 14:11:44 +08:00
58 changed files with 1647 additions and 122 deletions

View File

@ -14,10 +14,11 @@ spring:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0
# 配置文件格式
file-extension: yml
# 共享配置

View File

@ -0,0 +1,27 @@
<?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>
<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>

View File

@ -0,0 +1,61 @@
package com.muyu.cache;
/**
* CaChe
*
* @author LeYang
* on 2024/3/27
*/
public interface CaChe <K,V> {
/**
* key
* @return key
*/
public String keyPre();
/**
*
* @param key
* @return
*/
public String encode(K key);
/**
*
* @param redisKey
* @return ID
*/
public K decode(String redisKey);
/**
* keyvalue
* @param key
* @return
*/
public V get(K key);
/**
* /
* @param key
* @param value
*/
public void put(K key,V value);
/**
*
* @param key
*/
public void remove(K key);
/**
*
* @param key
*/
public void refreshTime(K key);
/**
*
* @param key
*/
public void refreshDate(K key);
}

View File

@ -0,0 +1,97 @@
package com.muyu.cache.abs;
import com.muyu.cache.CaChe;
import com.muyu.common.redis.service.RedisService;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.concurrent.TimeUnit;
/**
* CacheAbs
*
* @author LeYang
* on 2024/3/27
*/
public abstract class CacheAbs<K,V> implements CaChe<K,V> {
@Autowired
private RedisService redisService;
/**
*
* @param key Id
* @return
*/
@Override
public String encode(K key) {
return keyPre()+key;
}
/**
* keyvalue
* @param key
* @return
*/
@Override
public V get(K key) {
V value= redisService.getCacheObject(encode(key));
if (value == null){
value = getData(key);
if (value == null ){
value = defaultValue();
}
}
this.put(key,value);
return value;
}
/**
* /
* @param key
* @param value
*/
@Override
public void put(K key, V value) {
this.redisService.setCacheObject(encode(key), value);
}
/**
*
* @param key
*/
@Override
public void remove(K key) {
this.redisService.deleteObject(encode(key));
}
/**
*
* @param key
*/
@Override
public void refreshTime(K key) {
this.redisService.expire(encode(key), 60, TimeUnit.SECONDS);
}
/**
*
* @param key
*/
@Override
public void refreshDate(K key) {
this.put(key,getData(key));
}
/**
*
* @param key ID
* @return
*/
public abstract V getData(K key);
/**
*
*/
public abstract V defaultValue();
}

View File

@ -58,7 +58,7 @@ public class IpUtils {
ip = request.getRemoteAddr();
}
return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : getMultistageReverseProxyIp(ip);
return "0:0:0:0:0:0:0:1".equals(ip) ? "115.159.211.196" : getMultistageReverseProxyIp(ip);
}
/**
@ -70,7 +70,7 @@ public class IpUtils {
*/
public static boolean internalIp (String ip) {
byte[] addr = textToNumericFormatV4(ip);
return internalIp(addr) || "127.0.0.1".equals(ip);
return internalIp(addr) || "115.159.211.196".equals(ip);
}
/**
@ -197,7 +197,7 @@ public class IpUtils {
return InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
}
return "127.0.0.1";
return "115.159.211.196";
}
/**

View File

@ -18,6 +18,7 @@
<module>muyu-common-datascope</module>
<module>muyu-common-datasource</module>
<module>muyu-common-system</module>
<module>muyu-common-cache</module>
</modules>
<artifactId>muyu-common</artifactId>

View File

@ -14,10 +14,11 @@ spring:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0
# 配置文件格式
file-extension: yml
# 共享配置
@ -28,12 +29,12 @@ spring:
eager: true
transport:
# 控制台地址
dashboard: 127.0.0.1:8718
dashboard: 115.159.211.196:8718
# nacos配置持久化
datasource:
ds1:
nacos:
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
dataId: sentinel-muyu-gateway
groupId: DEFAULT_GROUP
data-type: json

View File

@ -14,10 +14,11 @@ spring:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0
# 配置文件格式
file-extension: yml
# 共享配置

View File

@ -14,10 +14,11 @@ spring:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0
# 配置文件格式
file-extension: yml
# 共享配置

View File

@ -14,10 +14,11 @@ spring:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0
# 配置文件格式
file-extension: yml
# 共享配置

View File

@ -0,0 +1,32 @@
<?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>

View File

@ -0,0 +1,53 @@
package com.muyu.product.cache;
import com.muyu.cache.abs.CacheAbs;
import com.muyu.common.core.text.Convert;
import com.muyu.product.domain.ProjectInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* ProjectInfoCache
*
* @author LeYang
* on 2024/3/27
*/
@Component
public class ProjectInfoCache extends CacheAbs<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();
}
}

View File

@ -0,0 +1,18 @@
package com.muyu.product.cache;
import com.muyu.product.domain.ProjectInfo;
/**
* ProjectInfoData
*
* @author LeYang
* on 2024/3/27
*/
public interface ProjectInfoData {
/**
*
* @param key ID
* @return
*/
public ProjectInfo getData(Long key);
}

View File

@ -52,4 +52,10 @@ public class AsAttributeGroup extends BaseEntity {
.attributeId(attributeId)
.build();
}
public static AsAttributeGroup buildGroup(Long attributeGroupId){
return AsAttributeGroup.builder()
.groupId(attributeGroupId)
.build();
}
}

View File

@ -53,6 +53,11 @@ public class AsCategoryAttribute extends BaseEntity implements CategoryBase {
.build();
}
public static AsCategoryAttribute categoryAttribute(Long attributeId){
return AsCategoryAttribute.builder()
.categoryId(attributeId)
.build();
}
@Override
public Long getBaseId () {
return this.attributeId;

View File

@ -52,6 +52,11 @@ public class AsCategoryAttributeGroup extends BaseEntity implements CategoryBase
.categoryId(categoryInfoId)
.build();
}
public static AsCategoryAttributeGroup categoryBuild(Long categoryInfoId) {
return AsCategoryAttributeGroup.builder()
.categoryId(categoryInfoId)
.build();
}
@Override
public Long getBaseId () {

View File

@ -1,10 +1,13 @@
package com.muyu.product.domain;
import java.util.Date;
import java.util.function.Supplier;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.product.domain.model.AttrValueModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@ -51,4 +54,19 @@ public class AsProductAttributeInfo extends BaseEntity {
@ApiModelProperty(name = "属性值", value = "属性值", required = true)
private String value;
public static AsProductAttributeInfo attrValueModelBuild(AttrValueModel attrValueModel, Supplier<Long> projectId ){
return AsProductAttributeInfo.builder()
.productId(projectId.get())
.attributeId(attrValueModel.getId())
.value(attrValueModel.getValue())
.productId(projectId.get())
.build();
}
public static AsProductAttributeInfo productAttributeInfo(Long productId){
return AsProductAttributeInfo.builder()
.attributeId(productId)
.productId(productId)
.build();
}
}

View File

@ -3,6 +3,8 @@ package com.muyu.product.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.product.domain.model.ProductSkuModel;
import com.muyu.product.domain.model.ProjectAddModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@ -11,10 +13,12 @@ import lombok.experimental.SuperBuilder;
import io.swagger.annotations.*;
import com.muyu.common.core.annotation.Excel;
import com.muyu.product.domain.req.ProjectInfoQueryReq;
import com.muyu.product.domain.req.ProjectInfoSaveReq;
import com.muyu.product.domain.req.ProjectInfoEditReq;
import com.muyu.common.core.web.domain.BaseEntity;
import java.util.Date;
import java.util.function.Supplier;
/**
* project_info
*
@ -50,17 +54,17 @@ public class ProjectInfo extends BaseEntity {
/** 主类型 */
@Excel(name = "主类型")
@ApiModelProperty(name = "主类型", value = "主类型")
private String mianType;
private Long mianType;
/** 父类型 */
@Excel(name = "父类型")
@ApiModelProperty(name = "父类型", value = "父类型")
private String parentType;
private Long parentType;
/** 商品类型 */
@Excel(name = "商品类型")
@ApiModelProperty(name = "商品类型", value = "商品类型")
private String type;
private Long type;
/** 商品图片 */
@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()
.name(projectInfoSaveReq.getName())
.introduction(projectInfoSaveReq.getIntroduction())
.mianType(projectInfoSaveReq.getMianType())
.parentType(projectInfoSaveReq.getParentType())
.type(projectInfoSaveReq.getType())
.image(projectInfoSaveReq.getImage())
.carouselImages(projectInfoSaveReq.getCarouselImages())
.status(projectInfoSaveReq.getStatus())
.ruleId(projectInfoSaveReq.getRuleId())
.brandId(projectInfoSaveReq.getBrandId())
.name(projectAddModel.getName())
.introduction(projectAddModel.getIntroduction())
.mianType(projectAddModel.getMianType())
.parentType(projectAddModel.getParentType())
.type(projectAddModel.getType())
.image(projectAddModel.getImage())
.carouselImages(projectAddModel.getCarouselImages())
.status(projectAddModel.getStatus())
.ruleId(projectAddModel.getRuleId())
.brandId(projectAddModel.getBrandId())
.createBy(createBy.get())
.createTime(new Date())
.build();
}
@ -142,4 +148,5 @@ public class ProjectInfo extends BaseEntity {
.build();
}
}

View File

@ -1,9 +1,12 @@
package com.muyu.product.domain;
import java.math.BigDecimal;
import java.util.function.Supplier;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.product.domain.model.ProductSkuModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@ -103,4 +106,15 @@ public class ProjectSkuInfo extends BaseEntity {
.build();
}
public static ProjectSkuInfo productSkuModelNuild(ProductSkuModel productSkuModel, Supplier<Long> projectId){
return ProjectSkuInfo.builder()
.projectId(projectId.get())
.sku(productSkuModel.getSku())
.image(productSkuModel.getImage())
.stock(productSkuModel.getStock())
.price(productSkuModel.getPrice())
.build();
}
}

View File

@ -0,0 +1,35 @@
{
"品牌":
{
"id"
"品牌中间表"
}
"轮播图"
"名称":
"价格"
"商品规格"{
"规格详情表"
}
}
商品信息 商品品类 品类信息
{
"商品品类":[
"品类id":
"品类名称"
]
"商品轮播图":
"商品名称":
"商品价格":
"商品规格":[
{
"规格id"
"规格值"
}
]
"商品数量"
"商品图片"
自由属性:[]
}

View File

@ -0,0 +1,27 @@
package com.muyu.product.domain.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* AttrValueModel
*
* @author LeYang
* on 2024/3/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AttrValueModel {
/**
* id
*/
private Long id;
/**
*
*/
private String value;
}

View File

@ -0,0 +1,46 @@
package com.muyu.product.domain.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* sku ProductSkuModel
*
* @author LeYang
* on 2024/3/22
*/
@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;
}

View File

@ -0,0 +1,118 @@
package com.muyu.product.domain.model;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.product.domain.AsProductAttributeInfo;
import com.muyu.product.domain.ProjectInfo;
import com.muyu.product.domain.ProjectSkuInfo;
import com.muyu.product.domain.req.ProjectInfoQueryReq;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* ProjectAddModel
*
* @author LeYang
* on 2024/3/22
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class ProjectAddModel extends BaseEntity {
private Long id;
/**
*
*/
@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;
/**
*
*/
@ApiModelProperty(name = "备注",value = "备注")
private String remark;
private List<AsProductAttributeInfo> asProductAttributeInfos;
private List<ProjectSkuInfo> projectSkuInfos;
public static ProjectAddModel queryBuild(ProjectInfo projectInfoQueryReq, List<AsProductAttributeInfo> asProductAttributeInfoList, List<ProjectSkuInfo> projectSkuInfoList){
return ProjectAddModel.builder()
.name(projectInfoQueryReq.getName())
.introduction(projectInfoQueryReq.getIntroduction())
.mianType(projectInfoQueryReq.getMianType())
.parentType(projectInfoQueryReq.getParentType())
.type(projectInfoQueryReq.getType())
.image(projectInfoQueryReq.getImage())
.carouselImages(projectInfoQueryReq.getCarouselImages())
.status(projectInfoQueryReq.getStatus())
.ruleId(projectInfoQueryReq.getRuleId())
.brandId(projectInfoQueryReq.getBrandId())
.projectSkuInfos(projectSkuInfoList)
.remark(projectInfoQueryReq.getRemark())
.asProductAttributeInfos(asProductAttributeInfoList)
.build();
}
}

View File

@ -1,6 +1,7 @@
package com.muyu.product.domain.model;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.product.domain.AttributeInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -33,4 +34,12 @@ public class TemplateAttributeModel extends BaseEntity {
*
*/
private String code;
public static TemplateAttributeModel attributeInfoBuild(AttributeInfo attributeInfo){
return TemplateAttributeModel.builder()
.id(attributeInfo.getId())
.name(attributeInfo.getName())
.code(attributeInfo.getCode())
.build();
}
}

View File

@ -1,6 +1,8 @@
package com.muyu.product.domain.req;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -33,5 +35,7 @@ public class AttributeGroupEditReq extends BaseEntity {
@ApiModelProperty(name = "状态", value = "状态", required = true)
private String states;
private List<Long> attributeIdList;
}

View File

@ -8,6 +8,8 @@ import lombok.experimental.SuperBuilder;
import io.swagger.annotations.*;
import com.muyu.common.core.web.domain.TreeEntity;
import java.util.List;
/**
* category_info
*
@ -39,4 +41,17 @@ public class CategoryInfoEditReq extends TreeEntity {
@ApiModelProperty(name = "介绍", value = "介绍")
private String introduction;
/**
* id
*/
private List<Long> attributeGroupIdList;
/**
* id
*/
private List<Long> attributeIdList;
/**
* id
*/
private List<Long> brandIdList;
}

View File

@ -1,5 +1,8 @@
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.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@ -8,6 +11,8 @@ import lombok.experimental.SuperBuilder;
import io.swagger.annotations.*;
import com.muyu.common.core.web.domain.BaseEntity;
import java.util.List;
/**
* project_info
*
@ -33,15 +38,15 @@ public class ProjectInfoEditReq extends BaseEntity {
/** 主类型 */
@ApiModelProperty(name = "主类型", value = "主类型")
private String mianType;
private Long mianType;
/** 父类型 */
@ApiModelProperty(name = "父类型", value = "父类型")
private String parentType;
private Long parentType;
/** 商品类型 */
@ApiModelProperty(name = "商品类型", value = "商品类型")
private String type;
private Long type;
/** 商品图片 */
@ApiModelProperty(name = "商品图片", value = "商品图片")
@ -63,4 +68,9 @@ public class ProjectInfoEditReq extends BaseEntity {
@ApiModelProperty(name = "品牌", value = "品牌")
private Long brandId;
private ProjectAddModel projectAddModel;
private List<AttrValueModel> attrValueList;
private List<ProductSkuModel> productSkuList;
}

View File

@ -33,15 +33,15 @@ public class ProjectInfoQueryReq extends BaseEntity {
/** 主类型 */
@ApiModelProperty(name = "主类型", value = "主类型")
private String mianType;
private Long mianType;
/** 父类型 */
@ApiModelProperty(name = "父类型", value = "父类型")
private String parentType;
private Long parentType;
/** 商品类型 */
@ApiModelProperty(name = "商品类型", value = "商品类型")
private String type;
private Long type;
/** 商品图片 */
@ApiModelProperty(name = "商品图片", value = "商品图片")

View File

@ -1,5 +1,8 @@
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.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@ -8,6 +11,8 @@ import lombok.experimental.SuperBuilder;
import io.swagger.annotations.*;
import com.muyu.common.core.web.domain.BaseEntity;
import java.util.List;
/**
* project_info
*
@ -22,60 +27,16 @@ import com.muyu.common.core.web.domain.BaseEntity;
public class ProjectInfoSaveReq extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 主键 */
@ApiModelProperty(name = "主键", value = "主键")
private Long id;
/** 商品名称 */
@ApiModelProperty(name = "商品名称", value = "商品名称")
private String name;
/** 商品描述 */
@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;
/**
*
*/
private ProjectAddModel projectAddModel;
/**
*
*/
private List<AttrValueModel> attrValueList;
/**
* sku
*/
private List<ProductSkuModel> productSkuList;
}

View File

@ -0,0 +1,61 @@
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;
/**
* ProjectDetailResp
*
* @author LeYang
* on 2024/3/25
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
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> ruleAttrAddModelList;
/**
*
*/
private List<TemplateAttributeModel> attributeInfoList;
/**
*
*/
private List<TemplateAttributeGroupModel> attributeGroupList;
}

View File

@ -18,6 +18,11 @@
</properties>
<dependencies>
<!--商品模块 缓存 依赖-->
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-product-cache</artifactId>
</dependency>
<!-- 商品模块 common 依赖 -->
<dependency>
<groupId>com.muyu</groupId>
@ -84,6 +89,18 @@
<groupId>com.muyu</groupId>
<artifactId>muyu-common-swagger</artifactId>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-product-cache</artifactId>
<version>3.6.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-product-cache</artifactId>
<version>3.6.3</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

View File

@ -0,0 +1,28 @@
package com.muyu.product.cache;
import com.muyu.product.domain.ProjectInfo;
import com.muyu.product.service.ProjectInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* ProjectInfoDataImpl
*
* @author LeYang
* on 2024/3/27
*/
@Service
public class ProjectInfoDataImpl implements ProjectInfoData{
@Autowired
private ProjectInfoService projectInfoService;
/**
*
* @param key ID
* @return
*/
@Override
public ProjectInfo getData(Long key){
return projectInfoService.getById(key);
}
}

View File

@ -36,6 +36,8 @@ import com.muyu.common.core.web.page.TableDataInfo;
@RestController
@RequestMapping("/attribute")
public class AttributeInfoController extends BaseController {
@Autowired
private AttributeInfoService attributeInfoService;
@ -83,7 +85,8 @@ public class AttributeInfoController extends BaseController {
@PostMapping
@ApiOperation("新增商品属性")
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();
}
/**

View File

@ -98,6 +98,7 @@ public class BrandInfoController extends BaseController {
@PutMapping("/{id}")
@ApiOperation("修改品牌信息")
public Result<String> edit(@PathVariable Long id, @RequestBody BrandInfoEditReq brandInfoEditReq) {
brandInfoService.urikBrand(brandInfoEditReq,id);
return toAjax(brandInfoService.updateById(BrandInfo.editBuild(id,brandInfoEditReq)));
}
@ -110,6 +111,7 @@ public class BrandInfoController extends BaseController {
@ApiOperation("删除品牌信息")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4")
public Result<String> remove(@PathVariable List<Long> ids) {
return toAjax(brandInfoService.removeBatchByIds(ids));
}
}

View File

@ -113,6 +113,7 @@ public class CategoryInfoController extends BaseController {
@PutMapping("/{id}")
@ApiOperation("修改品类信息")
public Result<String> edit(@PathVariable Long id, @RequestBody CategoryInfoEditReq categoryInfoEditReq) {
categoryInfoService.util(id,categoryInfoEditReq);
return toAjax(categoryInfoService.updateById(CategoryInfo.editBuild(id,categoryInfoEditReq)));
}
@ -125,6 +126,7 @@ public class CategoryInfoController extends BaseController {
@ApiOperation("删除品类信息")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4")
public Result<String> remove(@PathVariable List<Long> ids) {
categoryInfoService.removeBatchById(ids);
return toAjax(categoryInfoService.removeBatchByIds(ids));
}

View File

@ -3,7 +3,18 @@ package com.muyu.product.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.muyu.product.cache.ProjectInfoCache;
import com.muyu.product.domain.AsProductAttributeInfo;
import com.muyu.product.domain.ProjectSkuInfo;
import com.muyu.product.domain.model.CategoryInfoSaveModel;
import com.muyu.product.domain.model.ProductSkuModel;
import com.muyu.product.domain.model.ProjectAddModel;
import com.muyu.product.domain.resp.ProjectDetailResp;
import com.muyu.product.service.AsProductAttributeInfoService;
import com.muyu.product.service.ProjectSkuInfoService;
import io.swagger.annotations.*;
import org.apache.commons.lang3.SystemUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@ -38,6 +49,10 @@ import com.muyu.common.core.web.page.TableDataInfo;
public class ProjectInfoController extends BaseController {
@Autowired
private ProjectInfoService projectInfoService;
@Autowired
private AsProductAttributeInfoService asProductAttributeInfoService;
@Autowired
private ProjectSkuInfoService projectSkuInfoService;
/**
*
@ -63,18 +78,60 @@ public class ProjectInfoController extends BaseController {
ExcelUtil<ProjectInfo> util = new ExcelUtil<ProjectInfo>(ProjectInfo.class);
util.exportExcel(response, list, "商品信息数据");
}
/**
*
*/
@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));
}
/**
*
*/
@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));
}
@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<ProjectInfo> getInfo(@PathVariable("id") Long id) {
return Result.success(projectInfoService.getById(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<ProjectAddModel> getInfo(@PathVariable("id") Long id) {
//
// LambdaQueryWrapper<AsProductAttributeInfo> asProductAttributeInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
// asProductAttributeInfoLambdaQueryWrapper.eq(AsProductAttributeInfo::getProductId, id);
// List<AsProductAttributeInfo> list = asProductAttributeInfoService.list(asProductAttributeInfoLambdaQueryWrapper);
//
// ProjectInfo projectInfo = projectInfoService.getById(id);
// LambdaQueryWrapper<ProjectSkuInfo> projectSkuInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
// projectSkuInfoLambdaQueryWrapper.eq(ProjectSkuInfo::getProjectId,id);
// List<ProjectSkuInfo> projectSkuInfos = projectSkuInfoService.list(projectSkuInfoLambdaQueryWrapper);
// ProjectAddModel projectAddModel = ProjectAddModel.queryBuild(projectInfo,
// list, projectSkuInfos
// );
// projectAddModel.setId(id);
// return Result.success(projectAddModel);
// }
/**
*
*/
@ -83,7 +140,7 @@ public class ProjectInfoController extends BaseController {
@PostMapping
@ApiOperation("新增商品信息")
public Result<String> add(@RequestBody ProjectInfoSaveReq projectInfoSaveReq) {
return toAjax(projectInfoService.save(ProjectInfo.saveBuild(projectInfoSaveReq)));
return toAjax(projectInfoService.save(projectInfoSaveReq));
}
/**
@ -94,7 +151,7 @@ public class ProjectInfoController extends BaseController {
@PutMapping("/{id}")
@ApiOperation("修改商品信息")
public Result<String> edit(@PathVariable Long id, @RequestBody ProjectInfoEditReq projectInfoEditReq) {
return toAjax(projectInfoService.updateById(ProjectInfo.editBuild(id,projectInfoEditReq)));
return toAjax(projectInfoService.updateInfo(projectInfoEditReq));
}
/**
@ -106,6 +163,7 @@ public class ProjectInfoController extends BaseController {
@ApiOperation("删除商品信息")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4")
public Result<String> remove(@PathVariable List<Long> ids) {
projectInfoService.del(ids);
return toAjax(projectInfoService.removeBatchByIds(ids));
}
}

View File

@ -3,6 +3,8 @@ package com.muyu.product.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.product.domain.CategoryInfo;
import com.muyu.product.domain.model.CategoryInfoSaveModel;
import org.apache.ibatis.annotations.Mapper;
/**
* Mapper
@ -10,6 +12,10 @@ import com.muyu.product.domain.CategoryInfo;
* @author DongZeLiang
* @date 2024-02-27
*/
@Mapper
public interface CategoryInfoMapper extends BaseMapper<CategoryInfo> {
CategoryInfoSaveModel findType(Long id);
CategoryInfoSaveModel getCategoryInfoByProjectId(Long id);
}

View File

@ -12,4 +12,5 @@ import com.muyu.product.domain.ProjectInfo;
*/
public interface ProjectInfoMapper extends BaseMapper<ProjectInfo> {
ProjectInfo findType(Long id);
}

View File

@ -2,7 +2,10 @@ package com.muyu.product.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.product.domain.ProjectInfo;
import com.muyu.product.domain.ProjectSkuInfo;
import com.muyu.product.domain.model.ProductSkuModel;
import org.apache.ibatis.annotations.Mapper;
/**
* SKUMapper
@ -10,6 +13,10 @@ import com.muyu.product.domain.ProjectSkuInfo;
* @author DongZeLiang
* @date 2024-02-27
*/
@Mapper
public interface ProjectSkuInfoMapper extends BaseMapper<ProjectSkuInfo> {
ProductSkuModel find(Long id);
ProjectInfo findType(Long id);
}

View File

@ -7,6 +7,7 @@ import com.muyu.product.domain.AttributeGroup;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.product.domain.AttributeInfo;
import com.muyu.product.domain.model.AttributeGroupSaveModel;
import com.muyu.product.domain.req.AttributeGroupEditReq;
import com.muyu.product.domain.resp.AttributeGroupPageResp;
/**
@ -39,4 +40,5 @@ public interface AttributeGroupService extends IService<AttributeGroup> {
*/
public Boolean save(AttributeGroupSaveModel attributeGroupSaveModel);
}

View File

@ -3,6 +3,7 @@ package com.muyu.product.service;
import java.util.List;
import com.muyu.product.domain.BrandInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.product.domain.req.BrandInfoEditReq;
/**
* Service
@ -19,4 +20,5 @@ public interface BrandInfoService extends IService<BrandInfo> {
*/
public List<BrandInfo> list(BrandInfo brandInfo);
void urikBrand(BrandInfoEditReq brandInfoEditReq, Long id);
}

View File

@ -8,6 +8,7 @@ import com.muyu.product.domain.BrandInfo;
import com.muyu.product.domain.CategoryInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.product.domain.model.CategoryInfoSaveModel;
import com.muyu.product.domain.req.CategoryInfoEditReq;
import com.muyu.product.domain.resp.CategoryCommonElementResp;
import com.muyu.product.domain.resp.CategoryParentCommonElementResp;
@ -67,4 +68,13 @@ public interface CategoryInfoService extends IService<CategoryInfo> {
* @return
*/
CategoryCommonElementResp getTemplateAttributeByCateGoryId (Long cateGoryId);
Boolean removeBatchById(List<Long> ids);
void util(Long id, CategoryInfoEditReq categoryInfoEditReq);
CategoryInfoSaveModel getCategoryInfoByProjectId(Long id);
public <T,AS> List<T> getCommon(Long categoryId,IService<AS> iService,IService<T> bsiService);
}

View File

@ -3,6 +3,11 @@ package com.muyu.product.service;
import java.util.List;
import com.muyu.product.domain.ProjectInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.product.domain.model.ProductSkuModel;
import com.muyu.product.domain.model.ProjectAddModel;
import com.muyu.product.domain.req.ProjectInfoEditReq;
import com.muyu.product.domain.req.ProjectInfoSaveReq;
import com.muyu.product.domain.resp.ProjectDetailResp;
/**
* Service
@ -19,4 +24,14 @@ public interface ProjectInfoService extends IService<ProjectInfo> {
*/
public List<ProjectInfo> list(ProjectInfo projectInfo);
boolean save(ProjectInfoSaveReq projectInfoSaveReq);
boolean updateInfo(ProjectInfoEditReq projectInfoEditReq);
boolean del(List<Long> ids);
ProjectDetailResp getDetailInfo(Long id);
}

View File

@ -40,10 +40,6 @@ public class AsAttributeGroupServiceImpl extends ServiceImpl<AsAttributeGroupMap
queryWrapper.eq(AsAttributeGroup::getAttributeId, asAttributeGroup.getAttributeId());
}
return list(queryWrapper);
}
}

View File

@ -5,6 +5,7 @@ import java.util.List;
import com.muyu.common.core.utils.ObjUtils;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.product.domain.req.BrandInfoEditReq;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.muyu.product.mapper.BrandInfoMapper;
@ -53,6 +54,11 @@ public class BrandInfoServiceImpl extends ServiceImpl<BrandInfoMapper, BrandInfo
return list(queryWrapper);
}
@Override
public void urikBrand(BrandInfoEditReq brandInfoEditReq, Long id) {
}
@Override
public boolean save(BrandInfo entity) {
entity.setCreateBy(SecurityUtils.getUsername());

View File

@ -10,8 +10,12 @@ import com.muyu.product.domain.base.CategoryBase;
import com.muyu.product.domain.model.CategoryInfoSaveModel;
import com.muyu.product.domain.model.TemplateAttributeGroupModel;
import com.muyu.product.domain.model.TemplateAttributeModel;
import com.muyu.product.domain.req.CategoryInfoEditReq;
import com.muyu.product.domain.resp.CategoryCommonElementResp;
import com.muyu.product.domain.resp.CategoryParentCommonElementResp;
import com.muyu.product.mapper.AsCategoryAttributeGroupMapper;
import com.muyu.product.mapper.AsCategoryAttributeMapper;
import com.muyu.product.mapper.AsCategoryBrandMapper;
import com.muyu.product.mapper.CategoryInfoMapper;
import com.muyu.product.service.*;
import lombok.extern.slf4j.Slf4j;
@ -58,6 +62,7 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
@Autowired
private AttributeGroupService attributeGroupService;
/**
*
*
@ -232,7 +237,7 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
return attributeInfoList;
}
@Override
public <T, AS> List<T> getCommon (Long categoryId, IService<AS> iService, IService<T> bsiService) {
List<T> list = new ArrayList();
QueryWrapper<AS> asQueryWrapper = new QueryWrapper<>();
@ -307,16 +312,18 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
}};
List<AsCategoryAttributeGroup> categoryAttributeGroupList = asCategoryAttributeGroupService.list(asCategoryAttributeGroupLambdaQueryWrapper);
List<TemplateAttributeGroupModel> attributeGroupModelList = categoryAttributeGroupList.stream()
.map(asCategoryAttributeGroup -> TemplateAttributeGroupModel.attributeGroupBuild(
attributeGroupService.getById(asCategoryAttributeGroup.getAttributeGroupId()),
attributeGroupId -> {
.map(AsCategoryAttributeGroup::getAttributeGroupId)
.distinct()
.map(attributeGroupId -> TemplateAttributeGroupModel.attributeGroupBuild(
attributeGroupService.getById(attributeGroupId),
applyAttributeGroupId -> {
LambdaQueryWrapper<AsAttributeGroup> asAttributeGroupQueryWrapper = new LambdaQueryWrapper<>() {{
eq(AsAttributeGroup::getGroupId, asCategoryAttributeGroup.getAttributeGroupId());
eq(AsAttributeGroup::getGroupId, applyAttributeGroupId);
}};
List<Long> attributeIdList = asAttributeGroupService.list(asAttributeGroupQueryWrapper).stream()
.map(AsAttributeGroup::getAttributeId)
.toList();
if (attributeIdList.isEmpty()){
if (attributeIdList.isEmpty()) {
return new ArrayList<>();
}
return attributeInfoService.listByIds(attributeIdList).stream()
@ -370,4 +377,61 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
.attributeList(attributeModelList)
.build();
}
@Autowired
private AsCategoryAttributeGroupMapper asCategoryAttributeGroupMapper;
@Autowired
private AsCategoryAttributeMapper asCategoryAttributeMapper;
@Autowired
private AsCategoryBrandMapper asCategoryBrandMapper;
/**
*
* @param ids
* @return
*/
@Override
public Boolean removeBatchById(List<Long> ids) {
//删除品类属性组中间表
LambdaQueryWrapper<AsCategoryAttributeGroup> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(AsCategoryAttributeGroup::getAttributeGroupId, ids);
asCategoryAttributeGroupMapper.delete(lambdaQueryWrapper);
//删除品类属性中间表
LambdaQueryWrapper<AsCategoryAttribute> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(AsCategoryAttribute::getAttributeId, ids);
asCategoryAttributeMapper.delete(queryWrapper);
//删除品类品牌中间
LambdaQueryWrapper<AsCategoryBrand> asCategoryBrandLambdaQueryWrapper = new LambdaQueryWrapper<>();
asCategoryBrandLambdaQueryWrapper.in(AsCategoryBrand::getBrandId, ids);
asCategoryBrandMapper.delete(asCategoryBrandLambdaQueryWrapper);
return true;
}
@Override
public void util(Long id, CategoryInfoEditReq categoryInfoEditReq) {
//品类 属性组
AsCategoryAttribute asCategoryAttribute = AsCategoryAttribute.categoryAttribute(id);
List<AsCategoryAttribute> list = asCategoryAttributeService.list(asCategoryAttribute);
ArrayList<Long> longs = new ArrayList<>();
for (AsCategoryAttribute categoryAttribute : list) {
longs.add(categoryAttribute.getId());
}
asCategoryAttributeService.removeBatchByIds(longs);
List<Long> attributeGroupIdList = categoryInfoEditReq.getAttributeGroupIdList();
asCategoryAttributeService.saveBatch(
attributeGroupIdList.stream()
.map(aLong -> AsCategoryAttribute.categoryBuild(id,aLong))
.toList()
);
AsCategoryAttributeGroup asCategoryAttributeGroup = AsCategoryAttributeGroup.categoryBuild(id);
}
@Autowired
private CategoryInfoMapper categoryInfoMapper;
@Override
public CategoryInfoSaveModel getCategoryInfoByProjectId(Long id) {
return categoryInfoMapper.getCategoryInfoByProjectId(id);
}
}

View File

@ -1,13 +1,24 @@
package com.muyu.product.service.impl;
import java.util.ArrayList;
import java.util.List;
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.ProjectInfoEditReq;
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.mapper.AsCategoryAttributeGroupMapper;
import com.muyu.product.mapper.CategoryInfoMapper;
import com.muyu.product.mapper.ProjectSkuInfoMapper;
import com.muyu.product.service.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
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.core.conditions.query.LambdaQueryWrapper;
@ -20,6 +31,24 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@Slf4j
@Service
public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, ProjectInfo> implements ProjectInfoService {
@Autowired
private AsProductAttributeInfoService asProductAttributeInfoService;
@Autowired
private ProjectSkuInfoService projectSkuInfoService;
@Autowired
private CategoryInfoService categoryInfoService;
@Autowired
private RuleAttrInfoServiceImpl ruleAttrInfoService;
@Autowired
private AsCategoryAttributeService asCategoryAttributeService;
@Autowired
private AsCategoryAttributeGroupService asCategoryAttributeGroupService;
@Autowired
private AttributeGroupService attributeGroupService;
@Autowired
private AttributeInfoService attributeInfoService;
@Autowired
private BrandInfoService brandInfoService;
/**
*
@ -72,10 +101,194 @@ public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, Proje
queryWrapper.eq(ProjectInfo::getBrandId, projectInfo.getBrandId());
}
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
List<ProductSkuModel> productSkuModelList = projectInfoSaveReq.getProductSkuList();
List<ProjectSkuInfo> projectSkuInfos = productSkuModelList.stream().map(
productSkuModel -> ProjectSkuInfo.productSkuModelNuild(productSkuModel, projectInfo::getId)
).toList();
if (!productSkuModelList.isEmpty()){
projectSkuInfoService.saveBatch(projectSkuInfos);
}
}
return save;
}
@Autowired
private AsBrandProjectService asBrandProjectService;
@Override
public boolean updateInfo(ProjectInfoEditReq projectInfoEditReq) {
ProjectAddModel projectAddModel = projectInfoEditReq.getProjectAddModel();
ProjectInfo projectInfo = ProjectInfo.saveModelBuild(projectAddModel, SecurityUtils::getUsername);
LambdaQueryWrapper<AsBrandProject> asBrandProjectLambdaQueryWrapper = new LambdaQueryWrapper<>();
asBrandProjectLambdaQueryWrapper.eq(AsBrandProject::getProjectId, projectInfoEditReq.getProjectAddModel().getId());
boolean remove = asBrandProjectService.remove(asBrandProjectLambdaQueryWrapper);
if (remove) {
log.debug("删除中间表成功");
}
AsBrandProject asBrandProject = new AsBrandProject(null, projectInfo.getBrandId(), String.valueOf(projectInfoEditReq.getProjectAddModel().getId()));
boolean save1 = asBrandProjectService.save(asBrandProject);
LambdaQueryWrapper<ProjectInfo> projectInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
projectInfoLambdaQueryWrapper.eq(ProjectInfo::getId, projectInfoEditReq.getProjectAddModel().getId());
boolean save = this.update(projectInfo, projectInfoLambdaQueryWrapper);
if (save) {
//删除属性值
LambdaQueryWrapper<AsProductAttributeInfo> asProductAttributeInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
asProductAttributeInfoLambdaQueryWrapper.eq(AsProductAttributeInfo::getProductId, projectInfoEditReq.getProjectAddModel().getId());
asProductAttributeInfoService.remove(asProductAttributeInfoLambdaQueryWrapper);
// 添加属性值
List<AttrValueModel> attrValueList = projectInfoEditReq.getAttrValueList();
List<AsProductAttributeInfo> asProductAttributeInfoList = attrValueList.stream()
.map(attrValueModel -> AsProductAttributeInfo.attrValueModelBuild(attrValueModel, projectInfoEditReq.getProjectAddModel()::getId))
.toList();
if (!asProductAttributeInfoList.isEmpty()) {
asProductAttributeInfoService.saveBatch(asProductAttributeInfoList);
}
// sku ProductSkuModel -》 ProjectSkuInfo
//删除SKU
LambdaQueryWrapper<ProjectSkuInfo> projectSkuInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
projectSkuInfoLambdaQueryWrapper.eq(ProjectSkuInfo::getProjectId, projectInfoEditReq.getProjectAddModel().getId());
projectSkuInfoService.remove(projectSkuInfoLambdaQueryWrapper);
//添加sku
List<ProductSkuModel> productSkuModelList = projectInfoEditReq.getProductSkuList();
List<ProjectSkuInfo> projectSkuInfoList = productSkuModelList.stream().map(
productSkuModel -> ProjectSkuInfo.productSkuModelNuild(productSkuModel, projectInfoEditReq.getProjectAddModel()::getId)
).toList();
if (!projectSkuInfoList.isEmpty()) {
projectSkuInfoService.saveBatch(projectSkuInfoList);
}
}
return save;
}
@Override
public boolean del(List<Long> ids) {
LambdaQueryWrapper<ProjectInfo> projectInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
projectInfoLambdaQueryWrapper.in(ProjectInfo::getId,ids );
boolean remove = this.remove(projectInfoLambdaQueryWrapper);
if (remove){
LambdaQueryWrapper<ProjectSkuInfo> projectSkuInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
projectSkuInfoLambdaQueryWrapper.in(ProjectSkuInfo::getProjectId, ids);
List<ProjectSkuInfo> list = projectSkuInfoService.list(projectSkuInfoLambdaQueryWrapper);
boolean b = projectSkuInfoService.removeBatchByIds(list);
if (b){
LambdaQueryWrapper<AsProductAttributeInfo> asProductAttributeInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
asProductAttributeInfoLambdaQueryWrapper.in(AsProductAttributeInfo::getProductId, ids);
List<AsProductAttributeInfo> list1 = asProductAttributeInfoService.list(asProductAttributeInfoLambdaQueryWrapper);
asProductAttributeInfoService.removeBatchByIds(list1);
return true;
}
}
return false;
}
@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<AsProductAttributeInfo>() {{
eq(AsProductAttributeInfo::getProductId, id);
}});
//商品规格
List<RuleAttrAddModel> ruleAttrModelList = this.ruleAttrInfoService.list(new LambdaQueryWrapper<RuleAttrInfo>() {{
eq(RuleAttrInfo::getRuleId, projectInfo.getRuleId());
}}).stream()
.map(RuleAttrAddModel::infoBuild).toList();
CategoryCommonElementResp templateAttribute = this.categoryInfoService.getTemplateAttributeByCateGoryId(projectInfo.getType());
List<TemplateAttributeGroupModel> templateAttributeGroupList = templateAttribute.getTemplateAttributeGroupList();
ArrayList<TemplateAttributeModel> templateAttributeList = new ArrayList<>() {{
addAll(templateAttribute.getTemplateAttributeList());
}};
//属性组和商品属性的id
ArrayList<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 (!projectAttributeList.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)
.ruleAttrAddModelList(ruleAttrModelList)
.attributeInfoList(templateAttributeList)
.attributeGroupList(templateAttributeGroupList)
.build();
}
}

View File

@ -14,10 +14,11 @@ spring:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0
# 配置文件格式
file-extension: yml
# 共享配置

View File

@ -21,4 +21,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectCategoryInfoVo">
select id, name, image, parent_id, start, introduction, remark, create_by, create_time, update_by, update_time from category_info
</sql>
<select id="findType" resultType="com.muyu.product.domain.model.CategoryInfoSaveModel">
select * from category_info where id =#{id}
</select>
<select id="getCategoryInfoByProjectId" resultType="com.muyu.product.domain.model.CategoryInfoSaveModel">
select * from category_info where id =#{id}
</select>
</mapper>

View File

@ -26,4 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectProjectInfoVo">
select id, name, introduction, mian_type, parent_type, type, image, carousel_images, status, rule_id, brand_id, remark, create_by, create_time, update_by, update_time from project_info
</sql>
<select id="findType" resultType="com.muyu.product.domain.ProjectInfo">
select * from project_info where id =#{id}
</select>
</mapper>

View File

@ -21,4 +21,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectProjectSkuInfoVo">
select id, project_id, sku, stock, price, image, remark, create_by, create_time, update_by, update_time from project_sku_info
</sql>
<select id="find" resultType="com.muyu.product.domain.model.ProductSkuModel">
select * from project_sku_info where id =#{id}
</select>
<select id="findType" resultType="com.muyu.product.domain.ProjectInfo">
select * from project_info where type=#{id}
</select>
</mapper>

View File

@ -15,6 +15,7 @@
<module>muyu-product-common</module>
<module>muyu-product-remote</module>
<module>muyu-product-server</module>
<module>muyu-product-cache</module>
</modules>
<properties>

View File

@ -14,10 +14,11 @@ spring:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0
# 配置文件格式
file-extension: yml
# 共享配置

View File

@ -14,10 +14,11 @@ spring:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
server-addr: 115.159.211.196:8848
namespace: b8ace5a6-28a3-4126-b109-9b6623c58dc0
# 配置文件格式
file-extension: yml
# 共享配置

14
pom.xml
View File

@ -150,6 +150,13 @@
<version>${muyu.version}</version>
</dependency>
<!-- 缓存基准模块 -->
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-common-cache</artifactId>
<version>${muyu.version}</version>
</dependency>
<!-- 接口模块 -->
<dependency>
<groupId>com.muyu</groupId>
@ -220,6 +227,13 @@
<version>${muyu.version}</version>
</dependency>
<!-- 商品模块 缓存 依赖 -->
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-product-cache</artifactId>
<version>${muyu.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

425
sql/product.sql 100644
View File

@ -0,0 +1,425 @@
/*
Navicat Premium Data Transfer
Source Server : 5.7
Source Server Type : MySQL
Source Server Version : 50737
Source Host : 115.159.211.196: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://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);
-- ----------------------------
-- 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://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);
-- ----------------------------
-- 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;

View File

@ -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', '127.0.0.1', 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', '127.0.0.1', 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.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, '测试员');
-- ----------------------------

View File

@ -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://127.0.0.1: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.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,''),
(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,'');