商品自由属性

master
rouchen 2024-03-07 21:11:41 +08:00
parent 49ff049004
commit 90bcce03e0
6 changed files with 229 additions and 272 deletions

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

View File

@ -1,9 +1,11 @@
package com.muyu.product.domain;
import java.util.Date;
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.resp.TempateAttributeModel;
import com.muyu.product.domain.model.TemplateAttributeModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@ -49,6 +51,14 @@ public class AttributeInfo extends BaseEntity {
private String name;
public TemplateAttributeModel buildTemplateModel(){
return TemplateAttributeModel.builder()
.id(this.getId())
.code(this.getCode())
.name(this.getName())
.build();
}
/**
*
*/
@ -80,11 +90,4 @@ public class AttributeInfo extends BaseEntity {
.build();
}
public TempateAttributeModel buildTemplateModel(){
return TempateAttributeModel.builder()
.id(this.getId())
.code(this.getCode())
.name(this.getName())
.build();
}
}

View File

@ -83,7 +83,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

@ -1,11 +1,15 @@
package com.muyu.product.controller;
import java.util.List;
import java.util.function.Supplier;
import javax.servlet.http.HttpServletResponse;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.product.domain.AttributeGroup;
import com.muyu.product.domain.AttributeInfo;
import com.muyu.product.domain.BrandInfo;
import com.muyu.product.domain.model.CategoryInfoSaveModel;
import com.muyu.product.domain.resp.CategoryCommontElementResp;
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;
@ -24,6 +28,7 @@ import com.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.product.domain.CategoryInfo;
import com.muyu.product.domain.req.CategoryInfoQueryReq;
import com.muyu.product.domain.req.CategoryInfoSaveReq;
import com.muyu.product.domain.req.CategoryInfoEditReq;
import com.muyu.product.service.CategoryInfoService;
@ -65,14 +70,25 @@ public class CategoryInfoController extends BaseController {
util.exportExcel(response, list, "品类信息数据");
}
/**
*
*/
@ApiOperation("获取品类信息详细信息")
@RequiresPermissions("product:category:query")
@GetMapping(value = "/{id}")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
public Result<CategoryInfo> getInfo(@PathVariable("id") Long id) {
return Result.success(categoryInfoService.getById(id));
}
/**
*
*/
@ApiOperation("获取品类信息共有属性信息")
@RequiresPermissions("product:category:query")
@GetMapping(value = "/getTemplateAttributeByCateGoryId/{CateGoryId}")
@GetMapping(value = "/getTemplateAttribute/{cateGoryId}")
@ApiImplicitParam(name = "cateGoryId", value = "cateGoryId", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
public Result<CategoryCommontElementResp> getTemplateAttributeByCateGoryId(@PathVariable("cateGoryId") Long cateGoryId) {
public Result<CategoryCommonElementResp> getTemplateAttributeByCateGoryId(@PathVariable("cateGoryId") Long cateGoryId) {
return Result.success(categoryInfoService.getTemplateAttributeByCateGoryId(cateGoryId));
}
@ -85,7 +101,7 @@ public class CategoryInfoController extends BaseController {
@ApiOperation("新增品类信息")
public Result<String> add(@RequestBody CategoryInfoSaveReq categoryInfoSaveReq) {
return toAjax(categoryInfoService.save(
CategoryInfo.saveModelBuild(categoryInfoSaveReq)
CategoryInfoSaveModel.saveBuild(categoryInfoSaveReq, SecurityUtils::getUsername)
));
}
@ -97,7 +113,6 @@ public class CategoryInfoController extends BaseController {
@PutMapping("/{id}")
@ApiOperation("修改品类信息")
public Result<String> edit(@PathVariable Long id, @RequestBody CategoryInfoEditReq categoryInfoEditReq) {
categoryInfoService.util(categoryInfoEditReq,id);
return toAjax(categoryInfoService.updateById(CategoryInfo.editBuild(id,categoryInfoEditReq)));
}
@ -126,6 +141,4 @@ public class CategoryInfoController extends BaseController {
) {
return Result.success(categoryInfoService.parentCommonElement(categoryId));
}
}

View File

@ -9,7 +9,7 @@ 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.CategoryCommontElementResp;
import com.muyu.product.domain.resp.CategoryCommonElementResp;
import com.muyu.product.domain.resp.CategoryParentCommonElementResp;
/**
@ -47,5 +47,5 @@ public interface CategoryInfoService extends IService<CategoryInfo> {
* @param cateGoryId Id
* @return
*/
CategoryCommontElementResp getTemplateAttributeByCateGoryId(Long cateGoryId);
CategoryCommonElementResp getTemplateAttributeByCateGoryId(Long cateGoryId);
}

View File

@ -1,5 +1,25 @@
package com.muyu.product.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.req.CategoryInfoEditReq;
import com.muyu.product.domain.resp.CategoryCommonElementResp;
import com.muyu.product.domain.resp.CategoryParentCommonElementResp;
import com.muyu.product.mapper.CategoryInfoMapper;
import com.muyu.product.service.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@ -7,25 +27,6 @@ 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.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.req.CategoryInfoEditReq;
import com.muyu.product.domain.resp.CategoryCommontElementResp;
import com.muyu.product.domain.resp.CategoryParentCommonElementResp;
import com.muyu.product.domain.resp.TempateAttributeModel;
import com.muyu.product.domain.model.TemplateAttributeGroupModel;
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.CategoryInfoMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
/**
* Service
*
@ -35,6 +36,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@Slf4j
@Service
public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, CategoryInfo> implements CategoryInfoService {
@Autowired
private AsCategoryAttributeService asCategoryAttributeService;
@ -48,15 +51,19 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
private AsAttributeGroupService asAttributeGroupService;
@Autowired
private AttributeInfoServiceImpl attributeInfoService;
@Autowired
private AttributeGroupService attributeGroupService;
private AttributeInfoService attributeInfoService;
@Autowired
private BrandInfoService brandInfoService;
@Autowired
private AttributeGroupService attributeGroupService;
/**
*
*
* @param categoryInfo
*
* @return
*/
@Override
@ -84,58 +91,11 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
queryWrapper.eq(CategoryInfo::getIntroduction, categoryInfo.getIntroduction());
}
return list(queryWrapper);
}
@Override
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.getParentId());
getParentIdListByCateGoryId(parentIdList,categoryInfo.getParentId());
}
@Override
public void util(CategoryInfoEditReq categoryInfoEditReq, Long groupId) {
// List<Long> cateGoryIdList = categoryInfoEditReq.getCateGoryIdList();
// // 删除现有的 AsCategoryAttribute 对象
// List<AsCategoryAttribute> existingAttributes = asCategoryAttributeService.list();
// List<Long> existingCategoryIds = existingAttributes.stream()
// .map(AsCategoryAttribute::getCategoryId)
// .collect(Collectors.toList());
// asCategoryAttributeService.removeBatchByIds(existingCategoryIds);
//
// // 保存新的 AsCategoryAttribute 对象
// List<AsCategoryAttribute> newAttributes = cateGoryIdList.stream()
// .map(categoryId -> new AsCategoryAttribute())
// .collect(Collectors.toList());
// asCategoryAttributeService.saveBatch(newAttributes);
AsCategoryAttribute categoryAttribute = AsCategoryAttribute.categoryAttribute(groupId);
List<AsCategoryAttribute> list = asCategoryAttributeService.list(categoryAttribute);
ArrayList<Long> longArrayList = new ArrayList<>();
for (AsCategoryAttribute asCategoryAttribute : list) {
longArrayList.add(asCategoryAttribute.getId());
}
asCategoryAttributeService.removeBatchByIds(longArrayList);
List<Long> goryIdList = categoryInfoEditReq.getCateGoryIdList();
asCategoryAttributeService.saveBatch(
goryIdList.stream()
.map(categoryId->AsCategoryAttribute.categoryBuild(groupId,categoryId))
.toList()
);
}
@Override
@Transactional
public boolean save (CategoryInfoSaveModel categoryInfoSaveModel) {
CategoryInfo categoryInfo = CategoryInfo.saveModelBuild(categoryInfoSaveModel);
boolean save = this.save(categoryInfo);
@ -164,20 +124,27 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
.toList()
);
}
return false;
return save;
}
/**
* ID
*
* @param categoryId ID
*
* @return
*/
@Override
public List<AttributeGroup> getAttributeGroup (Long categoryId) {
ArrayList<AttributeGroup> attributeGroupList = new ArrayList<>();
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()) {
asCategoryAttributeGroupList.stream()
List<Long> attributeGroupIdList = asCategoryAttributeGroupList.stream()
.map(AsCategoryAttributeGroup::getAttributeGroupId)
.toList();
attributeGroupList.addAll(attributeGroupService.listByIds(attributeGroupList));
attributeGroupList.addAll(attributeGroupService.listByIds(attributeGroupIdList));
}
CategoryInfo categoryInfo = this.getById(categoryId);
if (categoryInfo.getParentId() != 0) {
@ -195,9 +162,16 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
return attributeGroupList;
}
/**
* ID
*
* @param categoryId ID
*
* @return
*/
@Override
public List<BrandInfo> getBrand (Long categoryId) {
ArrayList<BrandInfo> brandInfoList = new ArrayList<>();
List<BrandInfo> brandInfoList = new ArrayList<>();
LambdaQueryWrapper<AsCategoryBrand> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AsCategoryBrand::getCategoryId, categoryId);
List<AsCategoryBrand> asCategoryBrandList = asCategoryBrandService.list(queryWrapper);
@ -221,19 +195,25 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
}
}
return null;
return brandInfoList;
}
/**
* ID
*
* @param categoryId ID
*
* @return
*/
@Override
public List<AttributeInfo> getAttribute (Long categoryId) {
ArrayList<AttributeInfo> attributeInfoList = new ArrayList<>();
List<AttributeInfo> attributeInfoList = new ArrayList<>();
LambdaQueryWrapper<AsCategoryAttribute> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(AsCategoryAttribute::getCategoryId, categoryId);
List<AsCategoryAttribute> asCategoryAttributeList = asCategoryAttributeService.list(queryWrapper);
if (asCategoryAttributeList != null && !asCategoryAttributeList.isEmpty()) {
List<Long> attributeIdList = asCategoryAttributeList.stream()
.map(AsCategoryAttribute::getCategoryId)
.map(AsCategoryAttribute::getAttributeId)
.toList();
attributeInfoList.addAll(attributeInfoService.listByIds(attributeIdList));
}
@ -243,11 +223,9 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
attributeInfoList.addAll(getAttribute(categoryInfo.getParentId()));
} else {
List<AttributeInfo> attributeInfos = getAttribute(categoryInfo.getParentId());
attributeInfos.forEach(attributeInfosQurey -> {
if (!attributeInfoList.contains(attributeInfosQurey)){
if (!attributeInfoList.contains(attributeInfosQurey)){
attributeInfoList.add(attributeInfosQurey);
}
attributeInfos.forEach(attributeInfoQuery -> {
if (!attributeInfoList.contains(attributeInfoQuery)) {
attributeInfoList.add(attributeInfoQuery);
}
});
}
@ -257,6 +235,51 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
@Override
public CategoryParentCommonElementResp paretCoommonElement(Long categoryId) {
return null;
}
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
*
* @param categoryId ID
*
* @return
*/
@Override
public CategoryParentCommonElementResp parentCommonElement (Long categoryId) {
return CategoryParentCommonElementResp.builder()
.attributeInfoList(getCommon(categoryId, asCategoryAttributeService, attributeInfoService))
.attributeGroupList(getCommon(categoryId, asCategoryAttributeGroupService, attributeGroupService))
@ -265,7 +288,28 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
}
@Override
public CategoryCommontElementResp getTemplateAttributeByCateGoryId(Long cateGoryId) {
public void util(CategoryInfoEditReq categoryInfoEditReq, Long id) {
}
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 CategoryCommonElementResp getTemplateAttributeByCateGoryId (Long cateGoryId) {
List<Long> cateGoryIdList = new ArrayList<>();
getParentIdListByCateGoryId(cateGoryIdList, cateGoryId);
// 取出和品类相关联的属性组关系 - 中间表
@ -299,147 +343,42 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
if (!attributeGroupModelList.isEmpty()){
attributeIdSet.addAll(
attributeGroupModelList.stream()
.flatMap((Function<TemplateAttributeGroupModel, Stream<TempateAttributeModel>>) templateAttributeGroupModel -> templateAttributeGroupModel.getAttributeList().stream())
.map(TempateAttributeModel::getId)
.flatMap((Function<TemplateAttributeGroupModel, Stream<TemplateAttributeModel>>) templateAttributeGroupModel -> templateAttributeGroupModel.getAttributeList().stream())
.map(TemplateAttributeModel::getId)
.toList()
);
}
List<TempateAttributeModel> tempateAttributeModelList=new ArrayList<>();
List<TemplateAttributeModel> templateAttributeModelList = new ArrayList<>();
LambdaQueryWrapper<AsCategoryAttribute> categoryAttributeQueryWrapper = new LambdaQueryWrapper<>();
categoryAttributeQueryWrapper.in(AsCategoryAttribute::getAttributeId,cateGoryIdList);
categoryAttributeQueryWrapper.in(AsCategoryAttribute::getCategoryId, cateGoryIdList);
List<AsCategoryAttribute> asCategoryAttributeList = asCategoryAttributeService.list(categoryAttributeQueryWrapper);
if (asCategoryAttributeList!=null && asCategoryAttributeList.isEmpty()){
if (asCategoryAttributeList != null && !asCategoryAttributeList.isEmpty()){
List<Long> templateAttributeIdList = asCategoryAttributeList.stream()
.map(AsCategoryAttribute::getAttributeId)
.filter(templateAttributeId -> !attributeIdSet.contains(templateAttributeId))
.toList();
tempateAttributeModelList =attributeInfoService.listByIds(
templateAttributeIdList
).stream().map(AttributeInfo::buildTemplateModel)
templateAttributeModelList = attributeInfoService.listByIds(templateAttributeIdList).stream()
.map(AttributeInfo::buildTemplateModel)
.toList();
}
List<TempateAttributeModel> attributeModelList=new ArrayList<>();
if (!tempateAttributeModelList.isEmpty()){
List<TemplateAttributeModel> attributeModelList = new ArrayList<>();
if (!templateAttributeModelList.isEmpty()){
attributeIdSet.addAll(
tempateAttributeModelList.stream().map(TempateAttributeModel::getId).toList()
templateAttributeModelList.stream().map(TemplateAttributeModel::getId).toList()
);
}
LambdaQueryWrapper<AttributeInfo> attributeInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
attributeInfoLambdaQueryWrapper.notIn(!attributeIdSet.isEmpty(), AttributeInfo::getId, attributeIdSet);
attributeInfoService.list(attributeInfoLambdaQueryWrapper).stream().map(AttributeInfo::buildTemplateModel).toList();
attributeModelList = attributeInfoService.list(attributeInfoLambdaQueryWrapper).stream().map(AttributeInfo::buildTemplateModel).toList();
return CategoryCommontElementResp.builder()
.templateAttributeGroupList(null)
.templateAttributeList(null)
.attributeList(null)
return CategoryCommonElementResp.builder()
.templateAttributeGroupList(attributeGroupModelList)
.templateAttributeList(templateAttributeModelList)
.attributeList(attributeModelList)
.build();
}
//
// @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))
// .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;
// }
// 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("attribute_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;
// }
//T和AS是泛型类参数
public <T,AS> List<T> getCommon(Long categoryId,IService<AS> iService,
IService<T> bsiervice){
//初始化并创建一个空列表
ArrayList<T> list = new ArrayList<>();
//创建查询条件
QueryWrapper<AS> asQueryWrapper = new QueryWrapper<>();
asQueryWrapper.eq("attribute_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(bsiervice.listByIds(baseIdList));
}
CategoryInfo byId = this.getById(categoryId);
if (byId.getParentId()!=0){
if (list.isEmpty()){
list.addAll(getCommon(byId.getParentId(),iService,bsiervice));
}else {
List<T> commonList = getCommon(byId.getParentId(), iService, bsiervice);
commonList.forEach(common ->{
if (!list.contains(common)){
list.add(common);
}
});
}
}
return list;
}
}