diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttribute.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttribute.java index 1423b22..4e22f45 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttribute.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttribute.java @@ -4,6 +4,8 @@ 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 com.muyu.product.domain.model.RuleAttrAddModel; +import com.muyu.product.domain.req.CategoryInfoEditReq; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -13,6 +15,9 @@ import io.swagger.annotations.*; import com.muyu.common.core.annotation.Excel; import com.muyu.common.core.web.domain.BaseEntity; +import java.util.Date; +import java.util.function.Supplier; + /** * 品类属性中间对象 as_category_attribute * @@ -53,6 +58,7 @@ public class AsCategoryAttribute extends BaseEntity implements CategoryBase { .build(); } + @Override public Long getBaseId () { return this.attributeId; diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeGroupEditReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeGroupEditReq.java index 5c834ee..eb6d762 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeGroupEditReq.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/AttributeGroupEditReq.java @@ -4,6 +4,7 @@ import java.util.Date; import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; +import com.muyu.product.domain.AttributeInfo; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -40,5 +41,5 @@ public class AttributeGroupEditReq extends BaseEntity { */ @ApiModelProperty(name = "属性ID集合", value = "属性ID集合", required = true) - private List attributeIdList; + private List attributeIdList; } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java index 5d56770..8618675 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java @@ -1,5 +1,8 @@ package com.muyu.product.domain.req; +import com.muyu.product.domain.AttributeGroup; +import com.muyu.product.domain.AttributeInfo; +import com.muyu.product.domain.BrandInfo; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -43,14 +46,14 @@ public class CategoryInfoEditReq extends TreeEntity { /** * 商品属性组关联ID */ - private List attributeGroupIdList; + private List attributeGroupIdList; /** * 商品属性关联ID */ - private List attributeIdList; + private List attributeIdList; /** * 商品品牌组关联ID */ - private List brandIdList; + private List brandIdList; } 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 0664b70..552310b 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 @@ -77,8 +77,9 @@ public class CategoryInfoController extends BaseController { @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)); + public Result getInfo(@PathVariable("id") Long id) { + CategoryParentCommonElementResp categoryById = categoryInfoService.getCategoryById(id); + return Result.success(categoryById); } /** @@ -122,11 +123,11 @@ public class CategoryInfoController extends BaseController { */ @RequiresPermissions("product:category:remove") @Log(title = "品类信息", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") + @DeleteMapping("/{id}") @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) { - return toAjax(categoryInfoService.removeBatchByIds(ids)); + public Result remove(@PathVariable Long id) { + return toAjax(categoryInfoService.removeCateByIds(id)); } /** diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/CategoryInfoMapper.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/CategoryInfoMapper.java index 6ed8f75..ddab6bf 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/CategoryInfoMapper.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/CategoryInfoMapper.java @@ -2,7 +2,9 @@ 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.*; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 品类信息Mapper接口 @@ -10,6 +12,26 @@ import com.muyu.product.domain.CategoryInfo; * @author DongZeLiang * @date 2024-02-27 */ +@Mapper public interface CategoryInfoMapper extends BaseMapper { + /** + * 查询子集 + * @param parentId + * @return + */ + List selByParentId(@Param("parentId") Long parentId); + + /** + * 查询 + * @param id + * @return + */ + List selectByProjectInfo(@Param("id") Long id); + //品类属性 + AttributeInfo selectCateById(@Param("aLong") Long aLong); + //品类属性组 + AttributeGroup selectGroup(@Param("aLong") Long aLong); + //品牌信息 + BrandInfo seleteBrand(@Param("aLong") Long aLong); } 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 ba44caf..12cf9bb 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 @@ -79,4 +79,13 @@ public interface CategoryInfoService extends IService { CategoryParentCommonElementResp getCategoryById(Long id); void updateCategoryById(Long id, CategoryInfoEditReq categoryInfoEditReq); + + /** + * 删除 + * + * @param id + * @return + */ + int removeCateByIds(Long id); + } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeGroupServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeGroupServiceImpl.java index 2ca12ab..4732ee8 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeGroupServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AttributeGroupServiceImpl.java @@ -144,6 +144,8 @@ public class AttributeGroupServiceImpl extends ServiceImpl list = attributeGroupEditReq.getAttributeIdList(); + List longs = list.stream().map(AttributeInfo::getId).toList(); + attributeGroupMapper.addAsAttributeGroup(id,longs); } } 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 a7a64ff..8a56641 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 @@ -58,7 +58,8 @@ public class CategoryInfoServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(AsCategoryAttribute::getCategoryId,id); List attributeList = asCategoryAttributeService.list(queryWrapper); - List longs = attributeList.stream().map(AsCategoryAttribute::getCategoryId).toList(); - List byIds = attributeInfoService.listByIds(longs); + List longs = attributeList.stream().map(AsCategoryAttribute::getAttributeId).toList(); + ArrayList arrayList = new ArrayList<>(); + for (Long aLong : longs) { + AttributeInfo attribute=categoryInfoMapper.selectCateById(aLong); + arrayList.add(attribute); + } //品类属性组中间表 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(AsCategoryAttributeGroup::getCategoryId,id); List list = asCategoryAttributeGroupService.list(wrapper); - List toList = list.stream().map(AsCategoryAttributeGroup::getCategoryId).toList(); - List attributeGroups = attributeGroupService.listByIds(toList); + List toList = list.stream().map(AsCategoryAttributeGroup::getAttributeGroupId).toList(); + ArrayList groupArrayList = new ArrayList<>(); + for (Long aLong : toList) { + AttributeGroup attributeGroup= categoryInfoMapper.selectGroup(aLong); + groupArrayList.add(attributeGroup); + } //品类品牌中间表 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(AsCategoryBrand::getCategoryId,id); List asCategoryBrands = asCategoryBrandService.list(lambdaQueryWrapper); - List longList = asCategoryBrands.stream().map(AsCategoryBrand::getCategoryId).toList(); - List brandInfos = brandInfoService.listByIds(longList); + List longList = asCategoryBrands.stream().map(AsCategoryBrand::getBrandId).toList(); + ArrayList brandArrayList = new ArrayList<>(); + for (Long aLong : longList) { + BrandInfo brands= categoryInfoMapper.seleteBrand(aLong); + brandArrayList.add(brands); + } return CategoryParentCommonElementResp.builder() .id(info.getId()) .name(info.getName()) .image(info.getImage()) .start(info.getStart()) .introduction(info.getIntroduction()) - .attributeInfoList(byIds) - .attributeGroupList(attributeGroups) - .brandInfoList(brandInfos).build(); + .attributeInfoList(arrayList) + .attributeGroupList(groupArrayList) + .brandInfoList(brandArrayList).build(); } /** @@ -316,7 +329,66 @@ public class CategoryInfoServiceImpl extends ServiceImpl categoryInfos=categoryInfoMapper.selByParentId(categoryInfo.getId()); + if (categoryInfos.size()!=0){ + throw new SecurityException("不能删除还有子集"); + } + List projectInfos=categoryInfoMapper.selectByProjectInfo(categoryInfo.getParentId()); + if (projectInfos.size()!=0){ + throw new SecurityException("不能删除与商品关联"); + } + int res=categoryInfoMapper.deleteById(id); + return res; + } + + private void updateCateBrand(Long id, CategoryInfoEditReq categoryInfoEditReq) { + //品类品牌中间表as_category_brand + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(AsCategoryBrand::getCategoryId,id); + asCategoryBrandService.remove(lambdaQueryWrapper); + List brandIdList = categoryInfoEditReq.getBrandIdList().stream().map(BrandInfo::getId).toList(); + asCategoryBrandService.saveBatch( + brandIdList.stream().map(brandId ->AsCategoryBrand.categoryBuild(id,brandId)).toList() + ); + } + + private void updateCateGroup(Long id, CategoryInfoEditReq categoryInfoEditReq) { + //删除品类属性组中间表 as_category_attribute_group + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(AsCategoryAttributeGroup::getCategoryId,id); + asCategoryAttributeGroupService.remove(wrapper); + List attributeGroupIdList = categoryInfoEditReq.getAttributeGroupIdList().stream().map(AttributeGroup::getId).toList(); + asCategoryAttributeGroupService.saveBatch( + attributeGroupIdList.stream().map(aLong -> AsCategoryAttributeGroup.categoryBuild(id,aLong)).toList() + ); + } + + private void updateCateInfo(Long id, CategoryInfoEditReq categoryInfoEditReq) { + //删除品类属性中间表 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(AsCategoryAttribute::getCategoryId,id); + asCategoryAttributeService.remove(queryWrapper); + List longList = categoryInfoEditReq.getAttributeIdList().stream().map(AttributeInfo::getId).toList(); + asCategoryAttributeService.saveBatch( + longList.stream().map(aLong -> AsCategoryAttribute.categoryBuild(id,aLong)).toList() + ); } /** diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CategoryInfoMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CategoryInfoMapper.xml index 99be65b..b3788a3 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CategoryInfoMapper.xml +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CategoryInfoMapper.xml @@ -21,4 +21,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select id, name, image, parent_id, start, introduction, remark, create_by, create_time, update_by, update_time from category_info + + + + + +