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