From 90bcce03e0a122134976b8c0ab064ac967faf7be Mon Sep 17 00:00:00 2001 From: rouchen <3133657697@qq.com> Date: Thu, 7 Mar 2024 21:11:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E8=87=AA=E7=94=B1=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/AsProductAttributeInfo.java | 1 + .../muyu/product/domain/AttributeInfo.java | 33 +- .../controller/AttributeInfoController.java | 3 +- .../controller/CategoryInfoController.java | 29 +- .../product/service/CategoryInfoService.java | 4 +- .../service/impl/CategoryInfoServiceImpl.java | 431 ++++++++---------- 6 files changed, 229 insertions(+), 272 deletions(-) diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsProductAttributeInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsProductAttributeInfo.java index 49f25a8..6336ec2 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsProductAttributeInfo.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsProductAttributeInfo.java @@ -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; diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeInfo.java index ac94fcd..5842aa9 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeInfo.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeInfo.java @@ -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,9 +51,17 @@ public class AttributeInfo extends BaseEntity { private String name; + public TemplateAttributeModel buildTemplateModel(){ + return TemplateAttributeModel.builder() + .id(this.getId()) + .code(this.getCode()) + .name(this.getName()) + .build(); + } + /** - * 查询构造器 - */ + * 查询构造器 + */ public static AttributeInfo queryBuild( AttributeInfoQueryReq attributeInfoQueryReq){ return AttributeInfo.builder() .name(attributeInfoQueryReq.getName()) @@ -60,8 +70,8 @@ public class AttributeInfo extends BaseEntity { } /** - * 添加构造器 - */ + * 添加构造器 + */ public static AttributeInfo saveBuild(AttributeInfoSaveReq attributeInfoSaveReq){ return AttributeInfo.builder() .name(attributeInfoSaveReq.getName()) @@ -70,21 +80,14 @@ public class AttributeInfo extends BaseEntity { } /** - * 修改构造器 - */ + * 修改构造器 + */ public static AttributeInfo editBuild(Long id, AttributeInfoEditReq attributeInfoEditReq){ return AttributeInfo.builder() - .id(id) + .id(id) .name(attributeInfoEditReq.getName()) .code(attributeInfoEditReq.getCode()) .build(); } - public TempateAttributeModel buildTemplateModel(){ - return TempateAttributeModel.builder() - .id(this.getId()) - .code(this.getCode()) - .name(this.getName()) - .build(); - } } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/AttributeInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/AttributeInfoController.java index 6f59dcb..edf967d 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/AttributeInfoController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/AttributeInfoController.java @@ -83,7 +83,8 @@ public class AttributeInfoController extends BaseController { @PostMapping @ApiOperation("新增商品属性") public Result add(@RequestBody AttributeInfoSaveReq attributeInfoSaveReq) { - return toAjax(attributeInfoService.save(AttributeInfo.saveBuild(attributeInfoSaveReq))); + AttributeInfo attributeInfo = AttributeInfo.saveBuild(attributeInfoSaveReq); + return attributeInfoService.save(attributeInfo) ? success(attributeInfo.getId()) : error(); } /** diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java index 0a92547..12e963b 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java @@ -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 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 getTemplateAttributeByCateGoryId(@PathVariable("cateGoryId") Long cateGoryId) { + public Result getTemplateAttributeByCateGoryId(@PathVariable("cateGoryId") Long cateGoryId) { return Result.success(categoryInfoService.getTemplateAttributeByCateGoryId(cateGoryId)); } @@ -85,7 +101,7 @@ public class CategoryInfoController extends BaseController { @ApiOperation("新增品类信息") public Result 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 edit(@PathVariable Long id, @RequestBody CategoryInfoEditReq categoryInfoEditReq) { - categoryInfoService.util(categoryInfoEditReq,id); return toAjax(categoryInfoService.updateById(CategoryInfo.editBuild(id,categoryInfoEditReq))); } @@ -106,7 +121,7 @@ public class CategoryInfoController extends BaseController { */ @RequiresPermissions("product:category:remove") @Log(title = "品类信息", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") + @DeleteMapping("/{ids}") @ApiOperation("删除品类信息") @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4") public Result remove(@PathVariable List ids) { @@ -126,6 +141,4 @@ public class CategoryInfoController extends BaseController { ) { return Result.success(categoryInfoService.parentCommonElement(categoryId)); } - - } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java index 789988f..06504c0 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java @@ -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 { * @param cateGoryId 品类Id * @return */ - CategoryCommontElementResp getTemplateAttributeByCateGoryId(Long cateGoryId); + CategoryCommonElementResp getTemplateAttributeByCateGoryId(Long cateGoryId); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java index fad9fb1..67062b4 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java @@ -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业务层处理 * @@ -34,7 +35,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; */ @Slf4j @Service -public class CategoryInfoServiceImpl extends ServiceImpl implements CategoryInfoService { +public class CategoryInfoServiceImpl extends ServiceImpl implements CategoryInfoService { + + @Autowired private AsCategoryAttributeService asCategoryAttributeService; @@ -48,19 +51,23 @@ public class CategoryInfoServiceImpl extends ServiceImpl list(CategoryInfo categoryInfo) { + public List list (CategoryInfo categoryInfo) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); @@ -84,109 +91,69 @@ public class CategoryInfoServiceImpl extends ServiceImpl 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 cateGoryIdList = categoryInfoEditReq.getCateGoryIdList(); -// // 删除现有的 AsCategoryAttribute 对象 -// List existingAttributes = asCategoryAttributeService.list(); -// List existingCategoryIds = existingAttributes.stream() -// .map(AsCategoryAttribute::getCategoryId) -// .collect(Collectors.toList()); -// asCategoryAttributeService.removeBatchByIds(existingCategoryIds); -// -// // 保存新的 AsCategoryAttribute 对象 -// List newAttributes = cateGoryIdList.stream() -// .map(categoryId -> new AsCategoryAttribute()) -// .collect(Collectors.toList()); -// asCategoryAttributeService.saveBatch(newAttributes); - AsCategoryAttribute categoryAttribute = AsCategoryAttribute.categoryAttribute(groupId); - List list = asCategoryAttributeService.list(categoryAttribute); - ArrayList longArrayList = new ArrayList<>(); - for (AsCategoryAttribute asCategoryAttribute : list) { - longArrayList.add(asCategoryAttribute.getId()); - } - asCategoryAttributeService.removeBatchByIds(longArrayList); - List goryIdList = categoryInfoEditReq.getCateGoryIdList(); - asCategoryAttributeService.saveBatch( - goryIdList.stream() - .map(categoryId->AsCategoryAttribute.categoryBuild(groupId,categoryId)) - .toList() - ); - } - - @Override - public boolean save(CategoryInfoSaveModel categoryInfoSaveModel) { + @Transactional + public boolean save (CategoryInfoSaveModel categoryInfoSaveModel) { CategoryInfo categoryInfo = CategoryInfo.saveModelBuild(categoryInfoSaveModel); boolean save = this.save(categoryInfo); Long categoryInfoId = categoryInfo.getId(); List attributeIdList = categoryInfoSaveModel.getAttributeIdList(); - if (attributeIdList!=null && !attributeIdList.isEmpty()){ + if (attributeIdList != null && !attributeIdList.isEmpty()) { asCategoryAttributeService.saveBatch( attributeIdList.stream() - .map(attributeId->AsCategoryAttribute.categoryBuild(categoryInfoId,attributeId)) + .map(attributeId -> AsCategoryAttribute.categoryBuild(categoryInfoId, attributeId)) .toList() ); } List attributeGroupIdList = categoryInfoSaveModel.getAttributeGroupIdList(); - if (attributeGroupIdList!=null && !attributeGroupIdList.isEmpty()){ + if (attributeGroupIdList != null && !attributeGroupIdList.isEmpty()) { asCategoryAttributeGroupService.saveBatch( attributeGroupIdList.stream() - .map(attributeGroupId -> AsCategoryAttributeGroup.categoryBuild(categoryInfoId,attributeGroupId)) + .map(attributeGroupId -> AsCategoryAttributeGroup.categoryBuild(categoryInfoId, attributeGroupId)) .toList() ); } List brandIdList = categoryInfoSaveModel.getBrandIdList(); - if (brandIdList!=null && !brandIdList.isEmpty()){ + if (brandIdList != null && !brandIdList.isEmpty()) { asCategoryBrandService.saveBatch( brandIdList.stream() - .map(brandId->AsCategoryBrand.categoryBuild(categoryInfoId,brandId)) + .map(brandId -> AsCategoryBrand.categoryBuild(categoryInfoId, brandId)) .toList() ); } - return false; + return save; } + /** + * 通过品类ID获取父级以上的属性组集合 + * + * @param categoryId 品类ID + * + * @return 父级以上的属性组集合 + */ @Override - public List getAttributeGroup(Long categoryId) { - ArrayList attributeGroupList = new ArrayList<>(); + public List getAttributeGroup (Long categoryId) { + List attributeGroupList = new ArrayList<>(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AsCategoryAttributeGroup::getCategoryId,categoryId); + queryWrapper.eq(AsCategoryAttributeGroup::getCategoryId, categoryId); List asCategoryAttributeGroupList = asCategoryAttributeGroupService.list(queryWrapper); - if (asCategoryAttributeGroupList!=null && !asCategoryAttributeGroupList.isEmpty()){ - asCategoryAttributeGroupList.stream() + if (asCategoryAttributeGroupList != null && !asCategoryAttributeGroupList.isEmpty()) { + List 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){ - if (attributeGroupList.isEmpty()){ + if (categoryInfo.getParentId() != 0) { + if (attributeGroupList.isEmpty()) { attributeGroupList.addAll(getAttributeGroup(categoryInfo.getParentId())); - }else { + } else { List attributeGroups = getAttributeGroup(categoryInfo.getParentId()); attributeGroups.forEach(attributeGroup -> { - if (!attributeGroupList.contains(attributeGroup)){ + if (!attributeGroupList.contains(attributeGroup)) { attributeGroupList.add(attributeGroup); } }); @@ -195,59 +162,70 @@ public class CategoryInfoServiceImpl extends ServiceImpl getBrand(Long categoryId) { - ArrayList brandInfoList = new ArrayList<>(); + public List getBrand (Long categoryId) { + List brandInfoList = new ArrayList<>(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AsCategoryBrand::getCategoryId,categoryId); + queryWrapper.eq(AsCategoryBrand::getCategoryId, categoryId); List asCategoryBrandList = asCategoryBrandService.list(queryWrapper); - if (asCategoryBrandList!=null &&!asCategoryBrandList.isEmpty()){ + if (asCategoryBrandList != null && !asCategoryBrandList.isEmpty()) { List 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 { + if (categoryInfo.getParentId() != 0) { + if (brandInfoList.isEmpty()) { + brandInfoList.addAll(getBrand(categoryInfo.getParentId())); + } else { List brandInfos = getBrand(categoryInfo.getParentId()); brandInfos.forEach(brandInfo -> { - if (!brandInfoList.contains(brandInfo)){ + if (!brandInfoList.contains(brandInfo)) { brandInfoList.add(brandInfo); } }); } } - - return null; + return brandInfoList; } + /** + * 通过品类ID获取父级以上的属性集合 + * + * @param categoryId 品类ID + * + * @return 父级以上的属性集合 + */ @Override - public List getAttribute(Long categoryId) { - ArrayList attributeInfoList = new ArrayList<>(); + public List getAttribute (Long categoryId) { + List attributeInfoList = new ArrayList<>(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(AsCategoryAttribute::getCategoryId,categoryId); + queryWrapper.eq(AsCategoryAttribute::getCategoryId, categoryId); List asCategoryAttributeList = asCategoryAttributeService.list(queryWrapper); - if (asCategoryAttributeList!=null && !asCategoryAttributeList.isEmpty()){ + if (asCategoryAttributeList != null && !asCategoryAttributeList.isEmpty()) { List attributeIdList = asCategoryAttributeList.stream() - .map(AsCategoryAttribute::getCategoryId) + .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 { + } else { List 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,15 +235,81 @@ public class CategoryInfoServiceImpl extends ServiceImpl List getCommon (Long categoryId, IService iService, IService bsiService) { + List list = new ArrayList(); + QueryWrapper asQueryWrapper = new QueryWrapper<>(); + asQueryWrapper.eq("category_id", categoryId); + List asList = iService.list(asQueryWrapper); + if (asList != null && !asList.isEmpty()) { + List 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 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)) - .brandInfoList(getCommon(categoryId,asCategoryBrandService,brandInfoService)) + .attributeInfoList(getCommon(categoryId, asCategoryAttributeService, attributeInfoService)) + .attributeGroupList(getCommon(categoryId, asCategoryAttributeGroupService, attributeGroupService)) + .brandInfoList(getCommon(categoryId, asCategoryBrandService, brandInfoService)) .build(); } @Override - public CategoryCommontElementResp getTemplateAttributeByCateGoryId(Long cateGoryId) { + public void util(CategoryInfoEditReq categoryInfoEditReq, Long id) { + + } + + private void getParentIdListByCateGoryId(List 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 cateGoryIdList = new ArrayList<>(); getParentIdListByCateGoryId(cateGoryIdList, cateGoryId); // 取出和品类相关联的属性组关系 - 中间表 @@ -299,147 +343,42 @@ public class CategoryInfoServiceImpl extends ServiceImpl>) templateAttributeGroupModel -> templateAttributeGroupModel.getAttributeList().stream()) - .map(TempateAttributeModel::getId) + .flatMap((Function>) templateAttributeGroupModel -> templateAttributeGroupModel.getAttributeList().stream()) + .map(TemplateAttributeModel::getId) .toList() ); } - List tempateAttributeModelList=new ArrayList<>(); + List templateAttributeModelList = new ArrayList<>(); LambdaQueryWrapper categoryAttributeQueryWrapper = new LambdaQueryWrapper<>(); - categoryAttributeQueryWrapper.in(AsCategoryAttribute::getAttributeId,cateGoryIdList); + categoryAttributeQueryWrapper.in(AsCategoryAttribute::getCategoryId, cateGoryIdList); List asCategoryAttributeList = asCategoryAttributeService.list(categoryAttributeQueryWrapper); - if (asCategoryAttributeList!=null && asCategoryAttributeList.isEmpty()){ - List templateAttributeIdList = asCategoryAttributeList.stream() - .map(AsCategoryAttribute::getAttributeId) - .filter(templateAttributeId -> !attributeIdSet.contains(templateAttributeId)) - .toList(); - tempateAttributeModelList =attributeInfoService.listByIds( - templateAttributeIdList - ).stream().map(AttributeInfo::buildTemplateModel) - .toList(); - } - List attributeModelList=new ArrayList<>(); + if (asCategoryAttributeList != null && !asCategoryAttributeList.isEmpty()){ + List templateAttributeIdList = asCategoryAttributeList.stream() + .map(AsCategoryAttribute::getAttributeId) + .filter(templateAttributeId -> !attributeIdSet.contains(templateAttributeId)) + .toList(); + templateAttributeModelList = attributeInfoService.listByIds(templateAttributeIdList).stream() + .map(AttributeInfo::buildTemplateModel) + .toList(); + } - if (!tempateAttributeModelList.isEmpty()){ + List attributeModelList = new ArrayList<>(); + + if (!templateAttributeModelList.isEmpty()){ attributeIdSet.addAll( - tempateAttributeModelList.stream().map(TempateAttributeModel::getId).toList() + templateAttributeModelList.stream().map(TemplateAttributeModel::getId).toList() ); } LambdaQueryWrapper attributeInfoLambdaQueryWrapper = new LambdaQueryWrapper<>(); - attributeInfoLambdaQueryWrapper.notIn(!attributeIdSet.isEmpty(),AttributeInfo::getId,attributeIdSet); - attributeInfoService.list(attributeInfoLambdaQueryWrapper).stream().map(AttributeInfo::buildTemplateModel).toList(); + attributeInfoLambdaQueryWrapper.notIn(!attributeIdSet.isEmpty(), AttributeInfo::getId, attributeIdSet); + 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 attributeIdList = categoryInfoSaveModel.getAttributeIdList(); -// if (attributeIdList != null && !attributeIdList.isEmpty()){ -// asCategoryAttributeService.saveBatch( -// attributeIdList.stream() -// .map(attributeId -> AsCategoryAttribute.categoryBuild(categoryInfoId, attributeId)) -// .toList() -// ); -// } -// List attributeGroupIdList = categoryInfoSaveModel.getAttributeGroupIdList(); -// if (attributeGroupIdList != null && !attributeGroupIdList.isEmpty()){ -// asCategoryAttributeGroupService.saveBatch( -// attributeGroupIdList.stream() -// .map(attributeGroupId -> AsCategoryAttributeGroup.categoryBuild(categoryInfoId, attributeGroupId)) -// .toList() -// ); -// } -// List brandIdList = categoryInfoSaveModel.getBrandIdList(); -// if (brandIdList != null && !brandIdList.isEmpty()){ -// asCategoryBrandService.saveBatch( -// brandIdList.stream() -// .map(brandId -> AsCategoryBrand.categoryBuild(categoryInfoId, brandId)) -// .toList() -// ); -// } -// return save; -// } - -// public List getCommon(Long categoryId, IService iService, -// IService bsiservice) { -// List list = new ArrayList<>(); -// QueryWrapper asQueryWrapper = new QueryWrapper<>(); -// asQueryWrapper.eq("attribute_id", categoryId); -// List asList = iService.list(asQueryWrapper); -// if (asList != null && !asList.isEmpty()) { -// List 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 commonList = getCommon(categoryInfo.getParentId(), iService, bsiservice); -// commonList.forEach(common -> { -// if (!list.contains(common)) { -// list.add(common); -// } -// }); -// } -// } -// return list; -// } - //T和AS是泛型类参数 - public List getCommon(Long categoryId,IService iService, - IService bsiervice){ - //初始化并创建一个空列表 - ArrayList list = new ArrayList<>(); - //创建查询条件 - QueryWrapper asQueryWrapper = new QueryWrapper<>(); - asQueryWrapper.eq("attribute_id",categoryId); - List asList = iService.list(asQueryWrapper); - if (asList!=null && !asList.isEmpty()){ - List 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 commonList = getCommon(byId.getParentId(), iService, bsiervice); - commonList.forEach(common ->{ - if (!list.contains(common)){ - list.add(common); - } - }); - } - } - return list; - } - }