gongchunyi
8 小时以前 78e70bb892fd12843ead1b5bbbe5de2c23967ded
src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
@@ -89,27 +89,48 @@
    @Override
    public int addOrEditProduct(ProductDto productDto) {
        checkDuplicateName(productDto);
        if (productDto.getId() == null) {
            // 新增产品逻辑
            if (productDto.getParentId() == null) {
                // 若未指定父节点,默认为根节点(parentId 设为 null)
                productDto.setParentId(null);
            } else {
                // 检查父节点是否存在(可选,根据业务需求)
            if (productDto.getParentId() != null) {
                Product parent = productMapper.selectById(productDto.getParentId());
                if (parent == null) {
                    throw new IllegalArgumentException("父节点不存在,无法添加子产品");
                    throw new IllegalArgumentException("父节点不存在");
                }
            }
            return productMapper.insert(productDto);
            Product product = new Product();
            BeanUtils.copyProperties(productDto, product);
            return productMapper.insert(product);
        } else {
            // 编辑产品逻辑
            // 检查产品是否存在(可选,根据业务需求)
            Product existingProduct = productMapper.selectById(productDto.getId());
            if (existingProduct == null) {
                throw new IllegalArgumentException("要编辑的产品不存在");
                throw new IllegalArgumentException("产品不存在");
            }
            return productMapper.updateById(productDto);
            Product product = new Product();
            BeanUtils.copyProperties(productDto, product);
            return productMapper.updateById(product);
        }
    }
    /**
     * 校验同级目录下是否存在重复名称
     */
    private void checkDuplicateName(ProductDto productDto) {
        LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
        if (productDto.getParentId() == null) {
            queryWrapper.isNull(Product::getParentId);
        } else {
            queryWrapper.eq(Product::getParentId, productDto.getParentId());
        }
        queryWrapper.eq(Product::getProductName, productDto.getProductName());
        if (productDto.getId() != null) {
            queryWrapper.ne(Product::getId, productDto.getId());
        }
        if (productMapper.selectCount(queryWrapper) > 0) {
            throw new IllegalArgumentException("在该层级下已存在名为 [" + productDto.getProductName() + "] 的产品");
        }
    }