公共属性-属性组
parent
b52f1b46f3
commit
c26da508d7
|
@ -18,6 +18,7 @@ spring:
|
|||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 101.34.248.9:8848
|
||||
namespace: b9d88e07-8713-4ccd-8e98-d7c19f40fe74
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
|
|
@ -18,6 +18,7 @@ spring:
|
|||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 101.34.248.9:8848
|
||||
namespace: b9d88e07-8713-4ccd-8e98-d7c19f40fe74
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
|
|
@ -18,6 +18,7 @@ spring:
|
|||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 101.34.248.9:8848
|
||||
namespace: b9d88e07-8713-4ccd-8e98-d7c19f40fe74
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
|
|
@ -18,6 +18,7 @@ spring:
|
|||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 101.34.248.9:8848
|
||||
namespace: b9d88e07-8713-4ccd-8e98-d7c19f40fe74
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
|
|
@ -18,6 +18,7 @@ spring:
|
|||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 101.34.248.9:8848
|
||||
namespace: b9d88e07-8713-4ccd-8e98-d7c19f40fe74
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
|
|
@ -3,6 +3,7 @@ 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.base.CategoryBase;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
@ -25,7 +26,7 @@ import com.muyu.common.core.web.domain.BaseEntity;
|
|||
@TableName("as_category_attribute_group")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ApiModel(value = "AsCategoryAttributeGroup", description = "品类属性组中间")
|
||||
public class AsCategoryAttributeGroup extends BaseEntity {
|
||||
public class AsCategoryAttributeGroup extends BaseEntity implements CategoryBase {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
@ -44,11 +45,16 @@ public class AsCategoryAttributeGroup extends BaseEntity {
|
|||
@ApiModelProperty(name = "属性组", value = "属性组", required = true)
|
||||
private Long attributeGroupId;
|
||||
|
||||
public static AsCategoryAttributeGroup categoryAttributeGroup(Long categoryId,Long attributeGroupId){
|
||||
public static AsCategoryAttributeGroup categoryBuild(Long categoryId,Long attributeGroupId){
|
||||
return AsCategoryAttributeGroup.builder()
|
||||
.categoryId(categoryId)
|
||||
.attributeGroupId(attributeGroupId)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getBaseId(){
|
||||
return this.attributeGroupId;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ 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.base.CategoryBase;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
@ -25,7 +26,7 @@ import com.muyu.common.core.web.domain.BaseEntity;
|
|||
@TableName("as_category_brand")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ApiModel(value = "AsCategoryBrand", description = "品类品牌中间")
|
||||
public class AsCategoryBrand extends BaseEntity {
|
||||
public class AsCategoryBrand extends BaseEntity implements CategoryBase {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
@ -44,10 +45,15 @@ public class AsCategoryBrand extends BaseEntity {
|
|||
@ApiModelProperty(name = "品牌id", value = "品牌id", required = true)
|
||||
private Long brandId;
|
||||
|
||||
public static AsCategoryBrand categoryBrand(Long categoryId,Long brandId){
|
||||
public static AsCategoryBrand categoryBuild(Long categoryInfoId, Long brandId) {
|
||||
return AsCategoryBrand.builder()
|
||||
.categoryId(categoryId)
|
||||
.brandId(brandId)
|
||||
.categoryId(categoryInfoId)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getBaseId () {
|
||||
return this.brandId;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ 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.TemplateAttributeModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
@ -49,6 +50,13 @@ public class AttributeInfo extends BaseEntity {
|
|||
@ApiModelProperty(name = "属性名", value = "属性名", required = true)
|
||||
private String name;
|
||||
|
||||
public TemplateAttributeModel buildTemplateModel(){
|
||||
return TemplateAttributeModel.builder()
|
||||
.id(this.getId())
|
||||
.code(this.getCode())
|
||||
.name(this.getName())
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询构造器
|
||||
|
|
|
@ -101,4 +101,5 @@ public class RuleAttrInfo extends BaseEntity {
|
|||
.build();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
package com.muyu.product.domain.base;
|
||||
|
||||
public interface CategoryBase {
|
||||
|
||||
public Long getBaseId();
|
||||
|
||||
}
|
|
@ -35,4 +35,5 @@ public class RuleAttrAddModel extends BaseEntity {
|
|||
.valueList(Arrays.stream(ruleAttrInfo.getAttrValue().split(",")).toList())
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -39,4 +39,6 @@ public class RuleInfoAddModel extends BaseEntity {
|
|||
.ruleAttrList(req.getRuleAttrList())
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
package com.muyu.product.domain.model;
|
||||
|
||||
import com.muyu.common.core.utils.StringUtils;
|
||||
import com.muyu.common.core.web.domain.BaseEntity;
|
||||
import com.muyu.product.domain.AttributeGroup;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class TemplateAttributeGroupModel extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 组名称
|
||||
*/
|
||||
private String groupName;
|
||||
|
||||
/**
|
||||
* 属性组下属性集合
|
||||
*/
|
||||
private List<TemplateAttributeModel> attributeList;
|
||||
|
||||
/**
|
||||
* 是否有效
|
||||
*/
|
||||
public boolean isEffective(){
|
||||
return StringUtils.isNotEmpty(groupName) && attributeList != null && attributeList.isEmpty();
|
||||
}
|
||||
|
||||
public static TemplateAttributeGroupModel attributeGroupBuild(AttributeGroup attributeGroup,
|
||||
Function<Long, List<TemplateAttributeModel>> attributeList){
|
||||
return TemplateAttributeGroupModel.builder()
|
||||
.groupName(attributeGroup.getName())
|
||||
.attributeList(attributeList.apply(attributeGroup.getId()))
|
||||
.build();
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package com.muyu.product.domain.model;
|
||||
|
||||
import com.muyu.common.core.web.domain.BaseEntity;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class TemplateAttributeModel extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 属性名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
private String code;
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package com.muyu.product.domain.resp;
|
||||
|
||||
import com.muyu.common.core.web.domain.BaseEntity;
|
||||
import com.muyu.product.domain.model.TemplateAttributeGroupModel;
|
||||
import com.muyu.product.domain.model.TemplateAttributeModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class CategoryCommonElementResp extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 共有属性组
|
||||
*/
|
||||
private List<TemplateAttributeGroupModel> templateAttributeGroupList;
|
||||
|
||||
/**
|
||||
* 共有属性
|
||||
*/
|
||||
private List<TemplateAttributeModel> templateAttributeList;
|
||||
|
||||
/**
|
||||
* 自有属性(所有未包含属性)
|
||||
*/
|
||||
private List<TemplateAttributeModel> attributeList;
|
||||
|
||||
}
|
|
@ -27,7 +27,7 @@ public class RuleInfoResp extends BaseEntity {
|
|||
|
||||
private List<RuleAttrAddModel> ruleAttrList;
|
||||
|
||||
public static RuleInfoResp infoBuild(RuleInfo ruleInfo, Function<Long,List<RuleAttrAddModel>> ruleAttrList){
|
||||
public static RuleInfoResp infoBuild(RuleInfo ruleInfo,Function<Long,List<RuleAttrAddModel>> ruleAttrList){
|
||||
return RuleInfoResp.builder()
|
||||
.id(ruleInfo.getId())
|
||||
.name(ruleInfo.getName())
|
||||
|
@ -35,4 +35,5 @@ public class RuleInfoResp extends BaseEntity {
|
|||
.ruleAttrList(ruleAttrList.apply(ruleInfo.getId()))
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -7,6 +7,8 @@ import com.muyu.common.security.utils.SecurityUtils;
|
|||
import com.muyu.product.domain.AttributeGroup;
|
||||
import com.muyu.product.domain.model.CategoryInfoSaveModel;
|
||||
import com.muyu.product.domain.req.AttributeGroupEditReq;
|
||||
import com.muyu.product.domain.resp.CategoryCommonElementResp;
|
||||
import com.muyu.product.domain.resp.CategoryParentCommonElementResp;
|
||||
import io.swagger.annotations.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
@ -77,6 +79,17 @@ public class CategoryInfoController extends BaseController {
|
|||
return Result.success(categoryInfoService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取品类信息详细信息
|
||||
*/
|
||||
@ApiOperation("获取品类信息共有属性信息")
|
||||
@RequiresPermissions("product:category:query")
|
||||
@GetMapping(value = "/getTemplateAttribute/{cateGoryId}")
|
||||
@ApiImplicitParam(name = "cateGoryId", value = "cateGoryId", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
|
||||
public Result<CategoryCommonElementResp> getTemplateAttributeByCateGoryId(@PathVariable("cateGoryId") Long cateGoryId) {
|
||||
return Result.success(categoryInfoService.getTemplateAttributeByCateGoryId(cateGoryId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增品类信息
|
||||
*/
|
||||
|
@ -86,7 +99,8 @@ public class CategoryInfoController extends BaseController {
|
|||
@ApiOperation("新增品类信息")
|
||||
public Result<String> add(@RequestBody CategoryInfoSaveReq categoryInfoSaveReq) {
|
||||
return toAjax(categoryInfoService.save(
|
||||
CategoryInfoSaveModel.saveBuild(categoryInfoSaveReq, SecurityUtils::getUsername)));
|
||||
CategoryInfoSaveModel.saveBuild(categoryInfoSaveReq, SecurityUtils::getUsername)
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -113,13 +127,16 @@ public class CategoryInfoController extends BaseController {
|
|||
}
|
||||
|
||||
/**
|
||||
* 通过品类id查找包括父级属性集合,属性组集合以及品牌集合
|
||||
* 通过品类ID获取父级以上的属性、属性组、品牌集合
|
||||
* @param categoryId 品类ID
|
||||
* @return 父级以上的属性、属性组、品牌集合
|
||||
*/
|
||||
@GetMapping("/parentCommonElement/{categoryId}")
|
||||
@ApiOperation("通过品类id查找包括父级属性集合,属性组集合以及品牌集合")
|
||||
@ApiImplicitParam(name = "categoryId", value = "categoryId", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1")
|
||||
public Result parentCommonElement(@PathVariable(value = "categoryId") Long categoryId){
|
||||
return categoryInfoService.parentCommonElement(categoryId);
|
||||
@ApiOperation("通过品类ID获取父级以上的属性集合")
|
||||
@ApiImplicitParam(name = "categoryId", value = "categoryId", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class, example = "1")
|
||||
public Result<CategoryParentCommonElementResp> parentCommonElement(
|
||||
@PathVariable(value = "categoryId") Long categoryId
|
||||
) {
|
||||
return Result.success(categoryInfoService.parentCommonElement(categoryId));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -110,4 +110,5 @@ public class RuleInfoController extends BaseController {
|
|||
public Result<String> remove(@PathVariable List<Long> ids) {
|
||||
return toAjax(ruleInfoService.removeBatchByIds(ids));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9,6 +9,8 @@ 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.resp.CategoryCommonElementResp;
|
||||
import com.muyu.product.domain.resp.CategoryParentCommonElementResp;
|
||||
|
||||
/**
|
||||
* 品类信息Service接口
|
||||
|
@ -24,26 +26,56 @@ public interface CategoryInfoService extends IService<CategoryInfo> {
|
|||
public List<CategoryInfo> list(CategoryInfo categoryInfo);
|
||||
|
||||
/**
|
||||
* 通过品类id查找包括父级属性集合,属性组集合,品牌集合
|
||||
* 保存品类模型
|
||||
*/
|
||||
Result parentCommonElement(Long categoryId);
|
||||
|
||||
/**
|
||||
* 通过品类id获取属性组集合
|
||||
*/
|
||||
List<AttributeGroup> getAttributeGroupList(Long categoryId);
|
||||
|
||||
/**
|
||||
* 通过品类id获取属性集合
|
||||
*/
|
||||
List<AttributeInfo> getAttributeInfoList(Long categoryId);
|
||||
|
||||
|
||||
/**
|
||||
* 通过品类id获取品牌集合
|
||||
*/
|
||||
List<BrandInfo> getBrandInfoList(Long categoryId);
|
||||
|
||||
public boolean save(CategoryInfoSaveModel categoryInfoSaveModel);
|
||||
|
||||
/**
|
||||
* 通过品类id获取父级以上的属性集合
|
||||
*/
|
||||
List<AttributeGroup> getAttributeGroup(Long categoryId);
|
||||
|
||||
/**
|
||||
* 通过品类id获取父级以上的品牌集合
|
||||
*/
|
||||
List<BrandInfo> getBrand(Long categoryId);
|
||||
|
||||
List<AttributeInfo> getAttribute(Long categoryId);
|
||||
|
||||
CategoryParentCommonElementResp parentCommonElement(Long categoryId);
|
||||
|
||||
CategoryCommonElementResp getTemplateAttributeByCateGoryId(Long cateGoryId);
|
||||
|
||||
|
||||
|
||||
// /**
|
||||
// * 通过品类id查找包括父级属性集合,属性组集合,品牌集合
|
||||
// */
|
||||
// Result parentCommonElement(Long categoryId);
|
||||
//
|
||||
// /**
|
||||
// * 通过品类id获取属性组集合
|
||||
// */
|
||||
// List<AttributeGroup> getAttributeGroupList(Long categoryId);
|
||||
//
|
||||
// /**
|
||||
// * 通过品类id获取属性集合
|
||||
// */
|
||||
// List<AttributeInfo> getAttributeInfoList(Long categoryId);
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * 通过品类id获取品牌集合
|
||||
// */
|
||||
// List<BrandInfo> getBrandInfoList(Long categoryId);
|
||||
//
|
||||
// public boolean save(CategoryInfoSaveModel categoryInfoSaveModel);
|
||||
//
|
||||
// /**
|
||||
// * 通过品类id过去父级以上的属性、属性组、品牌集合
|
||||
// */
|
||||
// CategoryParentCommonElementResp parentCommonElement(Long categoryId);
|
||||
//
|
||||
// CategoryCommonElementResp getTemplateAttributeByCateGoryId(Long categoryId);
|
||||
|
||||
}
|
||||
|
|
|
@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||
import com.muyu.product.domain.model.RuleInfoAddModel;
|
||||
import com.muyu.product.domain.req.RuleInfoQueryReq;
|
||||
import com.muyu.product.domain.resp.RuleInfoResp;
|
||||
import com.mysql.cj.xdevapi.Table;
|
||||
import org.apache.tomcat.util.digester.Rule;
|
||||
|
||||
/**
|
||||
* 商品规格Service接口
|
||||
|
@ -31,5 +33,4 @@ public interface RuleInfoService extends IService<RuleInfo> {
|
|||
|
||||
TableDataInfo<RuleInfoResp> queryList(RuleInfoQueryReq ruleInfoQueryReq);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,12 +1,23 @@
|
|||
package com.muyu.product.service.impl;
|
||||
|
||||
import java.sql.Array;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.muyu.common.core.domain.Result;
|
||||
import com.muyu.common.core.utils.ObjUtils;
|
||||
import com.muyu.product.domain.*;
|
||||
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.resp.CategoryCommonElementResp;
|
||||
import com.muyu.product.domain.resp.CategoryParentCommonElementResp;
|
||||
import com.muyu.product.service.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -15,6 +26,7 @@ import org.springframework.stereotype.Service;
|
|||
import com.muyu.product.mapper.CategoryInfoMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* 品类信息Service业务层处理
|
||||
|
@ -24,7 +36,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, CategoryInfo> implements CategoryInfoService {
|
||||
public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, CategoryInfo> implements CategoryInfoService {
|
||||
|
||||
|
||||
@Autowired
|
||||
private AsCategoryAttributeService asCategoryAttributeService;
|
||||
|
@ -35,118 +48,328 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
|
|||
@Autowired
|
||||
private AsCategoryBrandService asCategoryBrandService;
|
||||
|
||||
@Autowired
|
||||
private AsAttributeGroupService asAttributeGroupService;
|
||||
|
||||
@Autowired
|
||||
private AttributeInfoService attributeInfoService;
|
||||
|
||||
@Autowired
|
||||
private BrandInfoService brandInfoService;
|
||||
|
||||
@Autowired
|
||||
private AttributeGroupService attributeGroupService;
|
||||
|
||||
/**
|
||||
* 查询品类信息列表
|
||||
*
|
||||
* @param categoryInfo 品类信息
|
||||
*
|
||||
* @return 品类信息
|
||||
*/
|
||||
@Override
|
||||
public List<CategoryInfo> list(CategoryInfo categoryInfo) {
|
||||
public List<CategoryInfo> list (CategoryInfo categoryInfo) {
|
||||
LambdaQueryWrapper<CategoryInfo> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
|
||||
if (ObjUtils.notNull(categoryInfo.getName())){
|
||||
if (ObjUtils.notNull(categoryInfo.getName())) {
|
||||
queryWrapper.like(CategoryInfo::getName, categoryInfo.getName());
|
||||
}
|
||||
|
||||
if (ObjUtils.notNull(categoryInfo.getImage())){
|
||||
if (ObjUtils.notNull(categoryInfo.getImage())) {
|
||||
queryWrapper.eq(CategoryInfo::getImage, categoryInfo.getImage());
|
||||
}
|
||||
|
||||
if (ObjUtils.notNull(categoryInfo.getParentId())){
|
||||
if (ObjUtils.notNull(categoryInfo.getParentId())) {
|
||||
queryWrapper.eq(CategoryInfo::getParentId, categoryInfo.getParentId());
|
||||
}
|
||||
|
||||
if (ObjUtils.notNull(categoryInfo.getStart())){
|
||||
if (ObjUtils.notNull(categoryInfo.getStart())) {
|
||||
queryWrapper.eq(CategoryInfo::getStart, categoryInfo.getStart());
|
||||
}
|
||||
|
||||
if (ObjUtils.notNull(categoryInfo.getIntroduction())){
|
||||
if (ObjUtils.notNull(categoryInfo.getIntroduction())) {
|
||||
queryWrapper.eq(CategoryInfo::getIntroduction, categoryInfo.getIntroduction());
|
||||
}
|
||||
|
||||
return list(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result parentCommonElement(Long categoryId) {
|
||||
return Result.success(CategoryParentCommonElementResp.builder()
|
||||
.attributeGroupList(getAttributeGroupList(categoryId))
|
||||
.attributeInfoList(getAttributeInfoList(categoryId))
|
||||
.brandInfoList(getBrandInfoList(categoryId))
|
||||
.build());
|
||||
@Transactional
|
||||
public boolean save (CategoryInfoSaveModel categoryInfoSaveModel) {
|
||||
CategoryInfo categoryInfo = CategoryInfo.saveModelBuild(categoryInfoSaveModel);
|
||||
boolean save = this.save(categoryInfo);
|
||||
Long categoryInfoId = categoryInfo.getId();
|
||||
List<Long> attributeIdList = categoryInfoSaveModel.getAttributeIdList();
|
||||
if (attributeIdList != null && !attributeIdList.isEmpty()) {
|
||||
asCategoryAttributeService.saveBatch(
|
||||
attributeIdList.stream()
|
||||
.map(attributeId -> AsCategoryAttribute.categoryBuild(categoryInfoId, attributeId))
|
||||
.toList()
|
||||
);
|
||||
}
|
||||
List<Long> attributeGroupIdList = categoryInfoSaveModel.getAttributeGroupIdList();
|
||||
if (attributeGroupIdList != null && !attributeGroupIdList.isEmpty()) {
|
||||
asCategoryAttributeGroupService.saveBatch(
|
||||
attributeGroupIdList.stream()
|
||||
.map(attributeGroupId -> AsCategoryAttributeGroup.categoryBuild(categoryInfoId, attributeGroupId))
|
||||
.toList()
|
||||
);
|
||||
}
|
||||
List<Long> brandIdList = categoryInfoSaveModel.getBrandIdList();
|
||||
if (brandIdList != null && !brandIdList.isEmpty()) {
|
||||
asCategoryBrandService.saveBatch(
|
||||
brandIdList.stream()
|
||||
.map(brandId -> AsCategoryBrand.categoryBuild(categoryInfoId, brandId))
|
||||
.toList()
|
||||
);
|
||||
}
|
||||
return save;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过品类id获取属性组集合
|
||||
* 通过品类ID获取父级以上的属性组集合
|
||||
*
|
||||
* @param categoryId 品类ID
|
||||
*
|
||||
* @return 父级以上的属性组集合
|
||||
*/
|
||||
@Override
|
||||
public List<AttributeGroup> getAttributeGroupList(Long categoryId){
|
||||
return null;
|
||||
public List<AttributeGroup> getAttributeGroup (Long categoryId) {
|
||||
List<AttributeGroup> attributeGroupList = new ArrayList<>();
|
||||
LambdaQueryWrapper<AsCategoryAttributeGroup> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(AsCategoryAttributeGroup::getCategoryId, categoryId);
|
||||
List<AsCategoryAttributeGroup> asCategoryAttributeGroupList = asCategoryAttributeGroupService.list(queryWrapper);
|
||||
if (asCategoryAttributeGroupList != null && !asCategoryAttributeGroupList.isEmpty()) {
|
||||
List<Long> attributeGroupIdList = asCategoryAttributeGroupList.stream()
|
||||
.map(AsCategoryAttributeGroup::getAttributeGroupId)
|
||||
.toList();
|
||||
attributeGroupList.addAll(attributeGroupService.listByIds(attributeGroupIdList));
|
||||
}
|
||||
CategoryInfo categoryInfo = this.getById(categoryId);
|
||||
if (categoryInfo.getParentId() != 0) {
|
||||
if (attributeGroupList.isEmpty()) {
|
||||
attributeGroupList.addAll(getAttributeGroup(categoryInfo.getParentId()));
|
||||
} else {
|
||||
List<AttributeGroup> attributeGroups = getAttributeGroup(categoryInfo.getParentId());
|
||||
attributeGroups.forEach(attributeGroup -> {
|
||||
if (!attributeGroupList.contains(attributeGroup)) {
|
||||
attributeGroupList.add(attributeGroup);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
return attributeGroupList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过品类id获取属性集合
|
||||
* 通过品类ID获取父级以上的品牌集合
|
||||
*
|
||||
* @param categoryId 品类ID
|
||||
*
|
||||
* @return 父级以上的品牌集合
|
||||
*/
|
||||
@Override
|
||||
public List<AttributeInfo> getAttributeInfoList(Long categoryId) {
|
||||
ArrayList<AttributeInfo> attributeInfoList = new ArrayList<>();
|
||||
public List<BrandInfo> getBrand (Long categoryId) {
|
||||
List<BrandInfo> brandInfoList = new ArrayList<>();
|
||||
LambdaQueryWrapper<AsCategoryBrand> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(AsCategoryBrand::getCategoryId, categoryId);
|
||||
List<AsCategoryBrand> asCategoryBrandList = asCategoryBrandService.list(queryWrapper);
|
||||
if (asCategoryBrandList != null && !asCategoryBrandList.isEmpty()) {
|
||||
List<Long> brandIdList = asCategoryBrandList.stream()
|
||||
.map(AsCategoryBrand::getBrandId)
|
||||
.toList();
|
||||
brandInfoList.addAll(brandInfoService.listByIds(brandIdList));
|
||||
}
|
||||
CategoryInfo categoryInfo = this.getById(categoryId);
|
||||
if (categoryInfo.getParentId() != 0) {
|
||||
if (brandInfoList.isEmpty()) {
|
||||
brandInfoList.addAll(getBrand(categoryInfo.getParentId()));
|
||||
} else {
|
||||
List<BrandInfo> brandInfos = getBrand(categoryInfo.getParentId());
|
||||
brandInfos.forEach(brandInfo -> {
|
||||
if (!brandInfoList.contains(brandInfo)) {
|
||||
brandInfoList.add(brandInfo);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
return brandInfoList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过品类ID获取父级以上的属性集合
|
||||
*
|
||||
* @param categoryId 品类ID
|
||||
*
|
||||
* @return 父级以上的属性集合
|
||||
*/
|
||||
@Override
|
||||
public List<AttributeInfo> getAttribute (Long categoryId) {
|
||||
List<AttributeInfo> attributeInfoList = new ArrayList<>();
|
||||
LambdaQueryWrapper<AsCategoryAttribute> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(AsCategoryAttribute::getCategoryId,categoryId);
|
||||
queryWrapper.eq(AsCategoryAttribute::getCategoryId, categoryId);
|
||||
List<AsCategoryAttribute> asCategoryAttributeList = asCategoryAttributeService.list(queryWrapper);
|
||||
if (asCategoryAttributeList != null && asCategoryAttributeList.isEmpty()){
|
||||
if (asCategoryAttributeList != null && !asCategoryAttributeList.isEmpty()) {
|
||||
List<Long> attributeIdList = asCategoryAttributeList.stream()
|
||||
.map(AsCategoryAttribute::getAttributeId)
|
||||
.toList();
|
||||
attributeInfoList.addAll(attributeInfoService.listByIds(attributeIdList));
|
||||
}
|
||||
CategoryInfo categoryInfo = this.getById(categoryId);
|
||||
if (categoryInfo.getParentId() !=0){
|
||||
if (attributeInfoList.isEmpty()){
|
||||
|
||||
if (categoryInfo.getParentId() != 0) {
|
||||
if (attributeInfoList.isEmpty()) {
|
||||
attributeInfoList.addAll(getAttribute(categoryInfo.getParentId()));
|
||||
} else {
|
||||
List<AttributeInfo> attributeInfos = getAttribute(categoryInfo.getParentId());
|
||||
attributeInfos.forEach(attributeInfoQuery -> {
|
||||
if (!attributeInfoList.contains(attributeInfoQuery)) {
|
||||
attributeInfoList.add(attributeInfoQuery);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return attributeInfoList;
|
||||
}
|
||||
|
||||
public <T, AS> List<T> getCommon (Long categoryId, IService<AS> iService, IService<T> bsiService) {
|
||||
List<T> list = new ArrayList();
|
||||
QueryWrapper<AS> asQueryWrapper = new QueryWrapper<>();
|
||||
asQueryWrapper.eq("category_id", categoryId);
|
||||
List<AS> asList = iService.list(asQueryWrapper);
|
||||
if (asList != null && !asList.isEmpty()) {
|
||||
List<Long> baseIdList = asList.stream()
|
||||
.map(as -> {
|
||||
if (as instanceof CategoryBase categoryBase) {
|
||||
return categoryBase.getBaseId();
|
||||
}
|
||||
return null;
|
||||
})
|
||||
.toList();
|
||||
list.addAll(bsiService.listByIds(baseIdList));
|
||||
}
|
||||
CategoryInfo categoryInfo = this.getById(categoryId);
|
||||
if (categoryInfo.getParentId() != 0) {
|
||||
if (list.isEmpty()) {
|
||||
list.addAll(getCommon(categoryInfo.getParentId(), iService, bsiService));
|
||||
} else {
|
||||
List<T> commonList = getCommon(categoryInfo.getParentId(), iService, bsiService);
|
||||
commonList.forEach(common -> {
|
||||
if (!list.contains(common)) {
|
||||
list.add(common);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过品类id获取品牌集合
|
||||
* 通过品类ID获取父级以上的属性、属性组、品牌集合
|
||||
*
|
||||
* @param categoryId 品类ID
|
||||
*
|
||||
* @return 父级以上的属性、属性组、品牌集合
|
||||
*/
|
||||
@Override
|
||||
public List<BrandInfo> getBrandInfoList(Long categoryId) {
|
||||
return null;
|
||||
public CategoryParentCommonElementResp parentCommonElement (Long categoryId) {
|
||||
return CategoryParentCommonElementResp.builder()
|
||||
.attributeInfoList(getCommon(categoryId, asCategoryAttributeService, attributeInfoService))
|
||||
.attributeGroupList(getCommon(categoryId, asCategoryAttributeGroupService, attributeGroupService))
|
||||
.brandInfoList(getCommon(categoryId, asCategoryBrandService, brandInfoService))
|
||||
.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获取品类共有属性
|
||||
*
|
||||
* @param cateGoryId 品类ID
|
||||
*
|
||||
* @return 品类共有属性
|
||||
*/
|
||||
@Override
|
||||
public boolean save(CategoryInfoSaveModel categoryInfoSaveModel) {
|
||||
CategoryInfo categoryInfo = CategoryInfo.saveModelBuild(categoryInfoSaveModel);
|
||||
boolean save = this.save(categoryInfo);
|
||||
Long categoryInfoId = categoryInfo.getId();
|
||||
List<Long> attributeIdList = categoryInfoSaveModel.getAttributeIdList();
|
||||
if (attributeIdList != null && !attributeIdList.isEmpty()){
|
||||
asCategoryAttributeService.saveBatch(
|
||||
attributeIdList.stream()
|
||||
.map(attributeId -> AsCategoryAttribute.categoryBuild(categoryInfoId,attributeId))
|
||||
public CategoryCommonElementResp getTemplateAttributeByCateGoryId (Long cateGoryId) {
|
||||
List<Long> cateGoryIdList = new ArrayList<>();
|
||||
getParentIdListByCateGoryId(cateGoryIdList, cateGoryId);
|
||||
// 取出和品类相关联的属性组关系 - 中间表
|
||||
LambdaQueryWrapper<AsCategoryAttributeGroup> asCategoryAttributeGroupLambdaQueryWrapper = new LambdaQueryWrapper<>(){{
|
||||
in(AsCategoryAttributeGroup::getCategoryId, cateGoryIdList);
|
||||
}};
|
||||
List<AsCategoryAttributeGroup> categoryAttributeGroupList = asCategoryAttributeGroupService.list(asCategoryAttributeGroupLambdaQueryWrapper);
|
||||
List<TemplateAttributeGroupModel> attributeGroupModelList = categoryAttributeGroupList.stream()
|
||||
.map(asCategoryAttributeGroup -> TemplateAttributeGroupModel.attributeGroupBuild(
|
||||
attributeGroupService.getById(asCategoryAttributeGroup.getAttributeGroupId()),
|
||||
attributeGroupId -> {
|
||||
LambdaQueryWrapper<AsAttributeGroup> asAttributeGroupQueryWrapper = new LambdaQueryWrapper<>() {{
|
||||
eq(AsAttributeGroup::getGroupId, asCategoryAttributeGroup.getAttributeGroupId());
|
||||
}};
|
||||
List<Long> attributeIdList = asAttributeGroupService.list(asAttributeGroupQueryWrapper).stream()
|
||||
.map(AsAttributeGroup::getAttributeId)
|
||||
.toList();
|
||||
if (attributeIdList.isEmpty()){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return attributeInfoService.listByIds(attributeIdList).stream()
|
||||
.map(AttributeInfo::buildTemplateModel)
|
||||
.toList();
|
||||
}
|
||||
))
|
||||
.filter(TemplateAttributeGroupModel::isEffective)
|
||||
.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<Long> attributeGroupIdList = categoryInfoSaveModel.getAttributeGroupIdList();
|
||||
if (attributeGroupIdList != null && !attributeGroupIdList.isEmpty()){
|
||||
asCategoryAttributeGroupService.saveBatch(
|
||||
attributeGroupIdList.stream()
|
||||
.map(attributeGrooupId -> AsCategoryAttributeGroup.categoryAttributeGroup(categoryInfoId,attributeGrooupId))
|
||||
.toList()
|
||||
|
||||
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<>();
|
||||
|
||||
if (!templateAttributeModelList.isEmpty()){
|
||||
attributeIdSet.addAll(
|
||||
templateAttributeModelList.stream().map(TemplateAttributeModel::getId).toList()
|
||||
);
|
||||
}
|
||||
List<Long> brandIdList = categoryInfoSaveModel.getBrandIdList();
|
||||
if (brandIdList != null && !brandIdList.isEmpty()){
|
||||
asCategoryBrandService.saveBatch(
|
||||
brandIdList.stream()
|
||||
.map(brandId -> AsCategoryBrand.categoryBrand(categoryInfoId,brandId))
|
||||
.toList()
|
||||
);
|
||||
}
|
||||
return save;
|
||||
|
||||
LambdaQueryWrapper<AttributeInfo> attributeInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
attributeInfoLambdaQueryWrapper.notIn(!attributeIdSet.isEmpty(), AttributeInfo::getId, attributeIdSet);
|
||||
attributeModelList = attributeInfoService.list(attributeInfoLambdaQueryWrapper).stream().map(AttributeInfo::buildTemplateModel).toList();
|
||||
|
||||
return CategoryCommonElementResp.builder()
|
||||
.templateAttributeGroupList(attributeGroupModelList)
|
||||
.templateAttributeList(templateAttributeModelList)
|
||||
.attributeList(attributeModelList)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -92,4 +92,5 @@ public class RuleInfoServiceImpl extends ServiceImpl<RuleInfoMapper, RuleInfo>
|
|||
.total(new PageInfo<>(list).getTotal())
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ spring:
|
|||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 101.34.248.9
|
||||
namespace: b9d88e07-8713-4ccd-8e98-d7c19f40fe74
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
|
|
@ -18,6 +18,7 @@ spring:
|
|||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 101.34.248.9:8848
|
||||
namespace: b9d88e07-8713-4ccd-8e98-d7c19f40fe74
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
|
|
@ -18,6 +18,7 @@ spring:
|
|||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 43.142.44.217:8848
|
||||
namespace: b9d88e07-8713-4ccd-8e98-d7c19f40fe74
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
|
|
Loading…
Reference in New Issue