diff --git a/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/controller/CoscoCategoryMaintenanceController.java b/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/controller/CoscoCategoryMaintenanceController.java index ec9422e..f547bae 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/controller/CoscoCategoryMaintenanceController.java +++ b/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/controller/CoscoCategoryMaintenanceController.java @@ -113,4 +113,17 @@ public class CoscoCategoryMaintenanceController{ return BaseResponse.success(coscoCategoryMaintenanceService.getList(coscoCategoryMaintenanceVO)); } + + /** + * 更新所有数据的path和path_name字段 + * + * @param versionId 版本ID + * @return 返回结果 + */ + @ApiOperation("更新所有数据的path和path_name字段") + @GetMapping("/updatePathAndPathName/{versionId}") + public BaseResponse updatePathAndPathName(@ApiParam(value = "版本ID", required = true) @PathVariable Long versionId) { + + return BaseResponse.success(coscoCategoryMaintenanceService.updateAllPathAndPathName(versionId)); + } } diff --git a/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/dao/CoscoCategoryMaintenanceMapper.java b/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/dao/CoscoCategoryMaintenanceMapper.java index 1f47fd1..ed94838 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/dao/CoscoCategoryMaintenanceMapper.java +++ b/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/dao/CoscoCategoryMaintenanceMapper.java @@ -51,4 +51,12 @@ public interface CoscoCategoryMaintenanceMapper extends IBaseMapper + @@ -49,15 +50,15 @@ - INSERT INTO cosco_category_maintenance (`version_id`, `parent_id`, `path`, `category_name`, `code`, `status`) + INSERT INTO cosco_category_maintenance (`version_id`, `parent_id`, `path`, `path_name`, `category_name`, `code`, `status`) VALUES ( #{categoryMaintenance.versionId},#{categoryMaintenance.parentId},#{categoryMaintenance.path}, - #{categoryMaintenance.categoryName},#{categoryMaintenance.code},#{categoryMaintenance.status}); + #{categoryMaintenance.pathName},#{categoryMaintenance.categoryName},#{categoryMaintenance.code},#{categoryMaintenance.status}); UPDATE cosco_category_maintenance SET `version_id` = #{categoryMaintenance.versionId}, `parent_id` = #{categoryMaintenance.parentId}, - `path` = #{categoryMaintenance.path}, `category_name` = #{categoryMaintenance.categoryName}, + `path` = #{categoryMaintenance.path}, `path_name` = #{categoryMaintenance.pathName}, `category_name` = #{categoryMaintenance.categoryName}, `code` = #{categoryMaintenance.code}, `status` = #{categoryMaintenance.status} WHERE `id` = #{categoryMaintenance.id}; @@ -83,10 +84,16 @@ INSERT INTO cosco_category_maintenance - (id,version_id, parent_id,category_name,code,status) VALUES + (id,version_id, parent_id, path, path_name, category_name,code,status) VALUES - (#{item.id},#{item.versionId}, #{item.parentId},#{item.categoryName},#{item.code},#{item.status}) + (#{item.id},#{item.versionId}, #{item.parentId}, #{item.path}, #{item.pathName}, #{item.categoryName},#{item.code},#{item.status}) + + UPDATE cosco_category_maintenance + SET path = #{path}, path_name = #{pathName} + WHERE id = #{id} + + diff --git a/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/entity/CoscoCategoryMaintenance.java b/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/entity/CoscoCategoryMaintenance.java index 2d9c33f..569a82f 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/entity/CoscoCategoryMaintenance.java +++ b/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/entity/CoscoCategoryMaintenance.java @@ -53,6 +53,12 @@ public class CoscoCategoryMaintenance implements Serializable { @ApiModelProperty(value = "路径") private String path; + /** + * 路径名称(从根到当前节点的所有category_name,以逗号分隔) + */ + @ApiModelProperty(value = "路径名称") + private String pathName; + /** * 品类名称 */ diff --git a/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/service/ICoscoCategoryMaintenanceService.java b/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/service/ICoscoCategoryMaintenanceService.java index 2b373d4..91ee8b6 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/service/ICoscoCategoryMaintenanceService.java +++ b/src/main/java/com/coscoshipping/ebtp/system/category/maintenance/service/ICoscoCategoryMaintenanceService.java @@ -30,4 +30,11 @@ public interface ICoscoCategoryMaintenanceService extends IBaseService queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(CoscoCategoryMaintenance::getVersionId, versionId) + .eq(CoscoCategoryMaintenance::getParentId, 0L); + + List rootNodes = this.list(queryWrapper); + + // 递归更新每个根节点及其子节点的path和path_name + for (CoscoCategoryMaintenance rootNode : rootNodes) { + updateNodePathAndPathName(rootNode, versionId); + } + + return true; + } + + /** + * 递归更新节点的path和path_name + * @param node 当前节点 + * @param versionId 版本ID + */ + private void updateNodePathAndPathName(CoscoCategoryMaintenance node, Long versionId) { + // 生成当前节点的path和path_name + String path = generatePath(node, versionId); + String pathName = generatePathName(node, versionId); + + // 更新数据库 + coscoCategoryMaintenanceMapper.updatePathAndPathName(node.getId(), path, pathName); + + // 查询子节点 + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(CoscoCategoryMaintenance::getVersionId, versionId) + .eq(CoscoCategoryMaintenance::getParentId, node.getId()); + + List children = this.list(queryWrapper); + + // 递归更新子节点 + for (CoscoCategoryMaintenance child : children) { + updateNodePathAndPathName(child, versionId); + } + } + + /** + * 生成节点的path + * @param node 当前节点 + * @param versionId 版本ID + * @return path字符串 + */ + private String generatePath(CoscoCategoryMaintenance node, Long versionId) { + if (node.getParentId() == null || node.getParentId() == 0L) { + return node.getId().toString(); + } + + // 查询父节点 + CoscoCategoryMaintenance parent = this.getById(node.getParentId()); + if (parent != null) { + return generatePath(parent, versionId) + "," + node.getId(); + } + + return node.getId().toString(); + } + + /** + * 生成节点的path_name + * @param node 当前节点 + * @param versionId 版本ID + * @return path_name字符串 + */ + private String generatePathName(CoscoCategoryMaintenance node, Long versionId) { + if (node.getParentId() == null || node.getParentId() == 0L) { + return node.getCategoryName(); + } + + // 查询父节点 + CoscoCategoryMaintenance parent = this.getById(node.getParentId()); + if (parent != null) { + return generatePathName(parent, versionId) + "," + node.getCategoryName(); + } + + return node.getCategoryName(); + } }