| | |
| | | package com.ruoyi.basic.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.dto.ProductDto; |
| | | import com.ruoyi.basic.dto.ProductTreeDto; |
| | |
| | | return tree; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<ProductModel> listPageProductModel(Page<ProductModel> page, ProductModel productModel) { |
| | | return productModelMapper.listPageProductModel(page, productModel); |
| | | } |
| | | |
| | | |
| | | // 递归构建子节点 |
| | |
| | | |
| | | @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() + "] 的产品"); |
| | | } |
| | | } |
| | | |