From 1b46a0f37bbc638b66337dce5e40e9aa8499de51 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 8 Jul 2025 22:50:15 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E6=A0=B9=E6=8D=AEid=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../helper/VmsGeneratorPathHelper.java | 1 + mall-modules/mall-auth-server/pom.xml | 2 +- mall-modules/mall-ware/pom.xml | 2 +- .../controller/AttrGroupController.java | 7 +++++ .../mall/product/domain/dto/AttrGroupDto.java | 3 ++ .../mall/product/domain/vo/AttrGroupVo.java | 6 +++- .../product/service/AttrGroupService.java | 8 +++++ .../mall/product/service/CategoryService.java | 7 +++++ .../service/ext/CategoryServiceImplExt.java | 30 ++++++++++++++++++- .../service/impl/AttrGroupServiceImpl.java | 25 ++++++++++++++++ .../service/impl/CategoryServiceImpl.java | 24 +++++++++++++++ .../main/resources/mapper/AttrGroupMapper.xml | 10 +++++-- .../service/impl/CategoryServiceImplTest.java | 23 ++++++++++++++ mall-services/pom.xml | 5 ++++ 14 files changed, 146 insertions(+), 7 deletions(-) create mode 100644 mall-services/mall-product/src/test/java/com/mall/product/service/impl/CategoryServiceImplTest.java diff --git a/mall-modules/generator-code-server/src/main/java/cn/bunny/service/helper/VmsGeneratorPathHelper.java b/mall-modules/generator-code-server/src/main/java/cn/bunny/service/helper/VmsGeneratorPathHelper.java index c5f8ce5..69858b6 100644 --- a/mall-modules/generator-code-server/src/main/java/cn/bunny/service/helper/VmsGeneratorPathHelper.java +++ b/mall-modules/generator-code-server/src/main/java/cn/bunny/service/helper/VmsGeneratorPathHelper.java @@ -16,6 +16,7 @@ public class VmsGeneratorPathHelper { "mapper", "Mapper", "resourceMapper", "Mapper", "dto", "Dto", + "entity", "Entity", "vo", "Vo" ); diff --git a/mall-modules/mall-auth-server/pom.xml b/mall-modules/mall-auth-server/pom.xml index 1dd21ee..b639774 100644 --- a/mall-modules/mall-auth-server/pom.xml +++ b/mall-modules/mall-auth-server/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.mall - mall-cloud + mall-modules 1.0-SNAPSHOT diff --git a/mall-modules/mall-ware/pom.xml b/mall-modules/mall-ware/pom.xml index 7001c80..e84c572 100644 --- a/mall-modules/mall-ware/pom.xml +++ b/mall-modules/mall-ware/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.mall - mall-cloud + mall-modules 1.0-SNAPSHOT diff --git a/mall-services/mall-product/src/main/java/com/mall/product/controller/AttrGroupController.java b/mall-services/mall-product/src/main/java/com/mall/product/controller/AttrGroupController.java index bcb9ee6..182d267 100644 --- a/mall-services/mall-product/src/main/java/com/mall/product/controller/AttrGroupController.java +++ b/mall-services/mall-product/src/main/java/com/mall/product/controller/AttrGroupController.java @@ -46,6 +46,13 @@ public class AttrGroupController { return Result.success(pageResult); } + @Operation(summary = "根据id查询详情", description = "根据id查询详情") + @GetMapping("info/{attrGroupId}") + public Result getAttrGroupById(@PathVariable("attrGroupId") Long attrGroupId) { + AttrGroupVo attrGroupEntity = attrGroupService.getAttrGroupById(attrGroupId); + return Result.success(attrGroupEntity); + } + @Operation(summary = "添加属性分组", description = "添加属性分组") @PostMapping() public Result addAttrGroup(@Valid @RequestBody AttrGroupDto dto) { diff --git a/mall-services/mall-product/src/main/java/com/mall/product/domain/dto/AttrGroupDto.java b/mall-services/mall-product/src/main/java/com/mall/product/domain/dto/AttrGroupDto.java index 9ca7116..285736c 100644 --- a/mall-services/mall-product/src/main/java/com/mall/product/domain/dto/AttrGroupDto.java +++ b/mall-services/mall-product/src/main/java/com/mall/product/domain/dto/AttrGroupDto.java @@ -31,4 +31,7 @@ public class AttrGroupDto { @Schema(name = "catelogId", title = "所属分类id") private Long catelogId; + @Schema(name = "key", description = "查询关键字key") + private String key; + } \ No newline at end of file diff --git a/mall-services/mall-product/src/main/java/com/mall/product/domain/vo/AttrGroupVo.java b/mall-services/mall-product/src/main/java/com/mall/product/domain/vo/AttrGroupVo.java index a5a32ce..7c60923 100644 --- a/mall-services/mall-product/src/main/java/com/mall/product/domain/vo/AttrGroupVo.java +++ b/mall-services/mall-product/src/main/java/com/mall/product/domain/vo/AttrGroupVo.java @@ -2,10 +2,11 @@ package com.mall.product.domain.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.List; + @Data @AllArgsConstructor @NoArgsConstructor @@ -30,5 +31,8 @@ public class AttrGroupVo { @Schema(name = "catelogId", title = "所属分类id") private Long catelogId; + @Schema(name = "catelogPaths", title = "分类路径") + private List catelogPaths; + } diff --git a/mall-services/mall-product/src/main/java/com/mall/product/service/AttrGroupService.java b/mall-services/mall-product/src/main/java/com/mall/product/service/AttrGroupService.java index f51f1ea..420b0be 100644 --- a/mall-services/mall-product/src/main/java/com/mall/product/service/AttrGroupService.java +++ b/mall-services/mall-product/src/main/java/com/mall/product/service/AttrGroupService.java @@ -46,4 +46,12 @@ public interface AttrGroupService extends IService { * @param ids 删除id列表 */ void deleteAttrGroup(List ids); + + /** + * 根据id查询详情 + * + * @param attrGroupId 分组id + * @return 属性分组 + */ + AttrGroupVo getAttrGroupById(Long attrGroupId); } diff --git a/mall-services/mall-product/src/main/java/com/mall/product/service/CategoryService.java b/mall-services/mall-product/src/main/java/com/mall/product/service/CategoryService.java index c4a619c..aa6e187 100644 --- a/mall-services/mall-product/src/main/java/com/mall/product/service/CategoryService.java +++ b/mall-services/mall-product/src/main/java/com/mall/product/service/CategoryService.java @@ -54,4 +54,11 @@ public interface CategoryService extends IService { */ List getCategoryTreeList(); + /** + * 找到后代所有的路径 + * + * @param catelogId 分类id + * @return 后端所有的id + */ + List findCatelogPath(Long catelogId); } diff --git a/mall-services/mall-product/src/main/java/com/mall/product/service/ext/CategoryServiceImplExt.java b/mall-services/mall-product/src/main/java/com/mall/product/service/ext/CategoryServiceImplExt.java index 00d514f..5943d5d 100644 --- a/mall-services/mall-product/src/main/java/com/mall/product/service/ext/CategoryServiceImplExt.java +++ b/mall-services/mall-product/src/main/java/com/mall/product/service/ext/CategoryServiceImplExt.java @@ -1,15 +1,43 @@ package com.mall.product.service.ext; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mall.product.domain.entity.CategoryEntity; +import com.mall.product.mapper.CategoryMapper; +import org.springframework.stereotype.Service; import java.util.List; -public class CategoryServiceImplExt { +@Service +public class CategoryServiceImplExt extends ServiceImpl { + /** + * 递归组装树型结构 + * + * @param categoryEntity 商品三级分类 + * @param categoryEntityList 商品三级分类列表 + * @return 树型结构菜单 + */ public static List getCategoryTreeChildrenList(CategoryEntity categoryEntity, List categoryEntityList) { return categoryEntityList.stream() .filter(item -> item.getParentCid().equals(categoryEntity.getCatId())) .toList(); } + /** + * 递归查询父级路径 + * + * @param catelogId 分类id + * @param paths 当前组装的路径 + * @return 后代所有的路径 + */ + public List findParentPath(Long catelogId, List paths) { + paths.add(catelogId); + CategoryEntity categoryEntity = getById(catelogId); + if (!categoryEntity.getParentCid().equals(0L)) { + findParentPath(categoryEntity.getParentCid(), paths); + } + + return paths; + } + } diff --git a/mall-services/mall-product/src/main/java/com/mall/product/service/impl/AttrGroupServiceImpl.java b/mall-services/mall-product/src/main/java/com/mall/product/service/impl/AttrGroupServiceImpl.java index 7c9ccd5..2ac1ffb 100644 --- a/mall-services/mall-product/src/main/java/com/mall/product/service/impl/AttrGroupServiceImpl.java +++ b/mall-services/mall-product/src/main/java/com/mall/product/service/impl/AttrGroupServiceImpl.java @@ -9,6 +9,8 @@ import com.mall.product.domain.entity.AttrGroupEntity; import com.mall.product.domain.vo.AttrGroupVo; import com.mall.product.mapper.AttrGroupMapper; import com.mall.product.service.AttrGroupService; +import com.mall.product.service.CategoryService; +import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -25,8 +27,11 @@ import java.util.List; */ @Service @Transactional +@RequiredArgsConstructor public class AttrGroupServiceImpl extends ServiceImpl implements AttrGroupService { + private final CategoryService categoryService; + /** * * 属性分组 服务实现类 * @@ -79,4 +84,24 @@ public class AttrGroupServiceImpl extends ServiceImpl ids) { removeByIds(ids); } + + /** + * 根据id查询详情 + * + * @param attrGroupId 分组id + * @return 属性分组 + */ + @Override + public AttrGroupVo getAttrGroupById(Long attrGroupId) { + AttrGroupEntity attrGroupEntity = getById(attrGroupId); + Long catelogId = attrGroupEntity.getCatelogId(); + + // 找到后代所有的路径 + List catelogIds = categoryService.findCatelogPath(catelogId); + + AttrGroupVo attrGroupVo = new AttrGroupVo(); + BeanUtils.copyProperties(attrGroupEntity, attrGroupVo); + attrGroupVo.setCatelogPaths(catelogIds); + return attrGroupVo; + } } \ No newline at end of file diff --git a/mall-services/mall-product/src/main/java/com/mall/product/service/impl/CategoryServiceImpl.java b/mall-services/mall-product/src/main/java/com/mall/product/service/impl/CategoryServiceImpl.java index df89ef5..5ab985e 100644 --- a/mall-services/mall-product/src/main/java/com/mall/product/service/impl/CategoryServiceImpl.java +++ b/mall-services/mall-product/src/main/java/com/mall/product/service/impl/CategoryServiceImpl.java @@ -9,10 +9,14 @@ import com.mall.product.domain.entity.CategoryEntity; import com.mall.product.domain.vo.CategoryVo; import com.mall.product.mapper.CategoryMapper; import com.mall.product.service.CategoryService; +import com.mall.product.service.ext.CategoryServiceImplExt; +import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -28,8 +32,11 @@ import static com.mall.product.service.ext.CategoryServiceImplExt.getCategoryTre */ @Service @Transactional +@RequiredArgsConstructor public class CategoryServiceImpl extends ServiceImpl implements CategoryService { + private final CategoryServiceImplExt categoryServiceImplExt; + /** * * 商品三级分类 服务实现类 * @@ -98,4 +105,21 @@ public class CategoryServiceImpl extends ServiceImpl findCatelogPath(Long catelogId) { + List paths = new ArrayList<>(); + List longList = categoryServiceImplExt.findParentPath(catelogId, paths); + + // 饭庄当前数组 + Collections.reverse(longList); + + return longList; + } + } \ No newline at end of file diff --git a/mall-services/mall-product/src/main/resources/mapper/AttrGroupMapper.xml b/mall-services/mall-product/src/main/resources/mapper/AttrGroupMapper.xml index 6554dd6..8b8f730 100644 --- a/mall-services/mall-product/src/main/resources/mapper/AttrGroupMapper.xml +++ b/mall-services/mall-product/src/main/resources/mapper/AttrGroupMapper.xml @@ -24,13 +24,13 @@ from pms_attr_group - and attr_group_id like CONCAT('%',#{dto.attrGroupId},'%') + and attr_group_id = #{dto.attrGroupId} and attr_group_name like CONCAT('%',#{dto.attrGroupName},'%') - and sort like CONCAT('%',#{dto.sort},'%') + and sort = #{dto.sort} and descript like CONCAT('%',#{dto.descript},'%') @@ -39,7 +39,11 @@ and icon like CONCAT('%',#{dto.icon},'%') - and catelog_id like CONCAT('%',#{dto.catelogId},'%') + and catelog_id = #{dto.catelogId} + + + + and (catelog_id = #{dto.key} or attr_group_name like CONCAT('%',#{dto.key},'%')) diff --git a/mall-services/mall-product/src/test/java/com/mall/product/service/impl/CategoryServiceImplTest.java b/mall-services/mall-product/src/test/java/com/mall/product/service/impl/CategoryServiceImplTest.java new file mode 100644 index 0000000..7f0d0dd --- /dev/null +++ b/mall-services/mall-product/src/test/java/com/mall/product/service/impl/CategoryServiceImplTest.java @@ -0,0 +1,23 @@ +package com.mall.product.service.impl; + +import com.alibaba.fastjson2.JSON; +import com.mall.product.service.CategoryService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.List; + +@SpringBootTest +class CategoryServiceImplTest { + + @Autowired + private CategoryService categoryService; + + @Test + void test() { + List catelogPath = categoryService.findCatelogPath(225L); + System.out.println(JSON.toJSONString(catelogPath)); + } + +} \ No newline at end of file diff --git a/mall-services/pom.xml b/mall-services/pom.xml index c475f48..2a6dab4 100644 --- a/mall-services/pom.xml +++ b/mall-services/pom.xml @@ -78,6 +78,11 @@ + + com.alibaba.fastjson2 + fastjson2 + + org.webjars