Commit 9b027765e67335e391e70c9b5e3526f0101759cc

Authored by 云中非
1 parent ab4e6483

fix: 编辑设备配置时验证规则链是否合法可用

... ... @@ -21,6 +21,7 @@ import org.thingsboard.server.common.data.id.RuleChainId;
21 21 import org.thingsboard.server.common.data.id.TenantId;
22 22 import org.thingsboard.server.common.data.page.PageLink;
23 23 import org.thingsboard.server.common.data.plugin.ComponentLifecycleEvent;
  24 +import org.thingsboard.server.common.data.rule.RuleChain;
24 25 import org.thingsboard.server.common.data.yunteng.common.DeleteGroup;
25 26 import org.thingsboard.server.common.data.yunteng.constant.FastIotConstants;
26 27 import org.thingsboard.server.common.data.yunteng.core.exception.YtDataValidationException;
... ... @@ -218,9 +219,19 @@ public class YtDeviceProfileController extends BaseController {
218 219 tbDeviceProfile.setTenantId(TenantId.fromUUID(tenantId));
219 220 tbDeviceProfile.setDefault(deviceProfileDTO.isDefault());
220 221
  222 +
  223 + String chainStr = deviceProfileDTO.getDefaultRuleChainId();
  224 + if(StringUtils.isBlank(chainStr)){
  225 + throw new YtDataValidationException(ErrorMessage.RULE_CHAIN_NOT_ENABLE.getMessage());
  226 + }
  227 + UUID chainId = UUID.fromString(chainStr);
  228 + RuleChain chain = ruleChainService.findRuleChainById(TenantId.SYS_TENANT_ID,new RuleChainId(chainId));
  229 + if(chain==null || !deviceProfileDTO.getTenantId().equals(chain.getTenantId().getId().toString())){
  230 + throw new YtDataValidationException(ErrorMessage.RULE_CHAIN_NOT_ENABLE.getMessage());
  231 + }
  232 +
221 233 // 获取当前租户的默认规则链
222 234 if (StringUtils.isNotBlank(deviceProfileDTO.getDefaultRuleChainId())) {
223   - UUID chainId = UUID.fromString(deviceProfileDTO.getDefaultRuleChainId());
224 235 tbDeviceProfile.setDefaultRuleChainId(new RuleChainId(chainId));
225 236 }
226 237
... ...
... ... @@ -83,6 +83,7 @@ public enum ErrorMessage {
83 83 PASSWORD_INCORRECT(4010059, "密码错误!"),
84 84 MESSAGE_SEND_FAILED(4010060, "消息发送失败!"),
85 85 PROJECT_USED_SCRIPT(400061,"产品【%s】正在使用待删除的解析脚本"),
  86 + RULE_CHAIN_NOT_ENABLE(400062,"规则链不是有效的!"),
86 87 HAVE_NO_PERMISSION(500002,"没有修改权限");
87 88 private final int code;
88 89 private String message;
... ...