feat:【IoT 物联网】新增产品删除失败错误码,优化产品删除逻辑以防止删除存在设备的产品
This commit is contained in:
@@ -14,6 +14,7 @@ public interface ErrorCodeConstants {
|
||||
ErrorCode PRODUCT_KEY_EXISTS = new ErrorCode(1_050_001_001, "产品标识已经存在");
|
||||
ErrorCode PRODUCT_STATUS_NOT_DELETE = new ErrorCode(1_050_001_002, "产品状是发布状态,不允许删除");
|
||||
ErrorCode PRODUCT_STATUS_NOT_ALLOW_THING_MODEL = new ErrorCode(1_050_001_003, "产品状是发布状态,不允许操作物模型");
|
||||
ErrorCode PRODUCT_DELETE_FAIL_HAS_DEVICE = new ErrorCode(1_050_001_004, "产品下存在设备,不允许删除");
|
||||
|
||||
// ========== 产品物模型 1-050-002-000 ============
|
||||
ErrorCode THING_MODEL_NOT_EXISTS = new ErrorCode(1_050_002_000, "产品物模型不存在");
|
||||
|
||||
@@ -56,6 +56,7 @@ public class IotDeviceServiceImpl implements IotDeviceService {
|
||||
private IotDeviceMapper deviceMapper;
|
||||
|
||||
@Resource
|
||||
@Lazy // 延迟加载,解决循环依赖
|
||||
private IotProductService productService;
|
||||
@Resource
|
||||
@Lazy // 延迟加载,解决循环依赖
|
||||
|
||||
@@ -23,6 +23,7 @@ import cn.iocoder.yudao.module.iot.service.product.IotProductService;
|
||||
import cn.iocoder.yudao.module.iot.service.thingmodel.IotThingModelService;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -58,6 +59,7 @@ public class IotDevicePropertyServiceImpl implements IotDevicePropertyService {
|
||||
@Resource
|
||||
private IotThingModelService thingModelService;
|
||||
@Resource
|
||||
@Lazy // 延迟加载,解决循环依赖
|
||||
private IotProductService productService;
|
||||
|
||||
@Resource
|
||||
|
||||
@@ -10,12 +10,12 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO;
|
||||
import cn.iocoder.yudao.module.iot.dal.mysql.product.IotProductMapper;
|
||||
import cn.iocoder.yudao.module.iot.dal.redis.RedisKeyConstants;
|
||||
import cn.iocoder.yudao.module.iot.enums.product.IotProductStatusEnum;
|
||||
import cn.iocoder.yudao.module.iot.service.device.IotDeviceService;
|
||||
import cn.iocoder.yudao.module.iot.service.device.property.IotDevicePropertyService;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
@@ -40,8 +40,9 @@ public class IotProductServiceImpl implements IotProductService {
|
||||
private IotProductMapper productMapper;
|
||||
|
||||
@Resource
|
||||
@Lazy // 延迟加载,解决循环依赖
|
||||
private IotDevicePropertyService devicePropertyDataService;
|
||||
@Resource
|
||||
private IotDeviceService deviceService;
|
||||
|
||||
@Override
|
||||
public Long createProduct(IotProductSaveReqVO createReqVO) {
|
||||
@@ -65,6 +66,7 @@ public class IotProductServiceImpl implements IotProductService {
|
||||
IotProductDO iotProductDO = validateProductExists(updateReqVO.getId());
|
||||
// 1.2 发布状态不可更新
|
||||
validateProductStatus(iotProductDO);
|
||||
|
||||
// 2. 更新
|
||||
IotProductDO updateObj = BeanUtils.toBean(updateReqVO, IotProductDO.class);
|
||||
productMapper.updateById(updateObj);
|
||||
@@ -74,9 +76,14 @@ public class IotProductServiceImpl implements IotProductService {
|
||||
@CacheEvict(value = RedisKeyConstants.PRODUCT, key = "#id")
|
||||
public void deleteProduct(Long id) {
|
||||
// 1.1 校验存在
|
||||
IotProductDO iotProductDO = validateProductExists(id);
|
||||
IotProductDO product = validateProductExists(id);
|
||||
// 1.2 发布状态不可删除
|
||||
validateProductStatus(iotProductDO);
|
||||
validateProductStatus(product);
|
||||
// 1.3 校验是否有设备
|
||||
if (deviceService.getDeviceCountByProductId(id) > 0) {
|
||||
throw exception(PRODUCT_DELETE_FAIL_HAS_DEVICE);
|
||||
}
|
||||
|
||||
// 2. 删除
|
||||
productMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -47,6 +48,7 @@ public class IotThingModelServiceImpl implements IotThingModelService {
|
||||
private IotThingModelMapper thingModelMapper;
|
||||
|
||||
@Resource
|
||||
@Lazy // 延迟加载,解决循环依赖
|
||||
private IotProductService productService;
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user