package com.webmanage.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.webmanage.entity.Product; import com.webmanage.mapper.ProductMapper; import com.webmanage.service.ProductService; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.List; /** * 产品服务实现类 * * @author webmanage * @date 2024-08-07 */ @Service public class ProductServiceImpl extends ServiceImpl implements ProductService { @Override public List getProductList(String productName, String productType, String status, Long providerId) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); // 添加查询条件 if (StringUtils.hasText(productName)) { queryWrapper.like(Product::getProductName, productName); } if (StringUtils.hasText(productType)) { queryWrapper.eq(Product::getProductType, productType); } if (StringUtils.hasText(status)) { queryWrapper.eq(Product::getStatus, status); } if (providerId != null) { queryWrapper.eq(Product::getProviderId, providerId); } // 按创建时间倒序排列 queryWrapper.orderByDesc(Product::getCreatedAt); return this.list(queryWrapper); } @Override public Product getProductById(Long id) { return this.getById(id); } @Override public boolean createProduct(Product product) { // 检查产品编码是否已存在 if (checkProductCodeExists(product.getProductCode(), null)) { throw new RuntimeException("产品编码已存在"); } return this.save(product); } @Override public boolean updateProduct(Product product) { // 检查产品编码是否已存在(排除当前产品) if (checkProductCodeExists(product.getProductCode(), product.getId())) { throw new RuntimeException("产品编码已存在"); } return this.updateById(product); } @Override public boolean deleteProduct(Long id) { return this.removeById(id); } @Override public boolean updateProductStatus(Long id, String status) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(Product::getId, id) .set(Product::getStatus, status); return this.update(updateWrapper); } @Override public boolean updateProductAuditStatus(Long id, String auditStatus) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(Product::getId, id) .set(Product::getAuditStatus, auditStatus); return this.update(updateWrapper); } @Override public boolean checkProductCodeExists(String productCode, Long excludeId) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Product::getProductCode, productCode); if (excludeId != null) { queryWrapper.ne(Product::getId, excludeId); } return this.count(queryWrapper) > 0; } }