Commit 02ae52d72ab1d8389e0c4a2ea6ab8eba5801b6f9

Authored by xp.Huang
1 parent 3612fa7a

feat: 提供删除租户配置前的检查接口

1 1 package org.thingsboard.server.controller.yunteng;
2 2
3 3 import lombok.RequiredArgsConstructor;
  4 +import org.apache.commons.lang3.StringUtils;
4 5 import org.springframework.security.access.prepost.PreAuthorize;
5   -import org.springframework.web.bind.annotation.GetMapping;
6   -import org.springframework.web.bind.annotation.RequestMapping;
7   -import org.springframework.web.bind.annotation.RequestParam;
8   -import org.springframework.web.bind.annotation.RestController;
  6 +import org.springframework.web.bind.annotation.*;
9 7 import org.thingsboard.server.common.data.TenantProfile;
10 8 import org.thingsboard.server.common.data.exception.ThingsboardException;
11 9 import org.thingsboard.server.common.data.id.TenantId;
12 10 import org.thingsboard.server.common.data.page.PageData;
13 11 import org.thingsboard.server.common.data.page.PageLink;
  12 +import org.thingsboard.server.common.data.yunteng.core.exception.TkDataValidationException;
  13 +import org.thingsboard.server.common.data.yunteng.core.message.ErrorMessage;
  14 +import org.thingsboard.server.common.data.yunteng.dto.TenantDTO;
14 15 import org.thingsboard.server.common.data.yunteng.enums.OrderTypeEnum;
15 16 import org.thingsboard.server.common.data.yunteng.utils.ReflectUtils;
  17 +import org.thingsboard.server.common.data.yunteng.utils.tools.ResponseResult;
16 18 import org.thingsboard.server.common.data.yunteng.utils.tools.TkPageData;
17 19 import org.thingsboard.server.controller.BaseController;
  20 +import org.thingsboard.server.dao.yunteng.service.TkTenantService;
18 21
19 22 import java.util.List;
20 23 import java.util.UUID;
... ... @@ -25,6 +28,7 @@ import static org.thingsboard.server.common.data.yunteng.constant.QueryConstant.
25 28 @RequestMapping("/api/yt/tenant_profiles")
26 29 @RequiredArgsConstructor
27 30 public class TkTenantProfilesController extends BaseController {
  31 + private final TkTenantService tkTenantService;
28 32
29 33 @PreAuthorize("@check.checkPermissions({'SYS_ADMIN','PLATFORM_ADMIN'},{})")
30 34 @GetMapping(
... ... @@ -47,7 +51,7 @@ public class TkTenantProfilesController extends BaseController {
47 51 orderBy,
48 52 null == orderType ? OrderTypeEnum.DESC.name() : orderType.name());
49 53 TenantId tenantId = getTenantId();
50   - if(getCurrentUser().isPtAdmin()){
  54 + if (getCurrentUser().isPtAdmin()) {
51 55 tenantId = new TenantId(UUID.fromString(getCurrentUser().getCurrentTenantId()));
52 56 }
53 57 PageData<TenantProfile> tenantProfilePageData =
... ... @@ -59,4 +63,23 @@ public class TkTenantProfilesController extends BaseController {
59 63 throw handleException(e);
60 64 }
61 65 }
  66 +
  67 + @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'PLATFORM_ADMIN')")
  68 + @GetMapping("/allow/{tenantProfileId}/delete")
  69 + public ResponseResult<Boolean> deleteCheck(
  70 + @PathVariable("tenantProfileId") String tenantProfileId) {
  71 + if (StringUtils.isEmpty(tenantProfileId)) {
  72 + throw new TkDataValidationException(ErrorMessage.INVALID_PARAMETER.getMessage());
  73 + }
  74 + List<TenantDTO> dtoList = tkTenantService.checkTenantProfileIdUsedByTenants(tenantProfileId);
  75 + boolean result = null == dtoList || dtoList.isEmpty();
  76 + String message = "OK";
  77 + if (!result) {
  78 + message =
  79 + String.format(
  80 + ErrorMessage.TENANT_USED_THIS_TENANT_PROFILE_ID.getMessage(),
  81 + dtoList.get(0).getName());
  82 + }
  83 + return ResponseResult.success(result, message);
  84 + }
62 85 }
... ...
... ... @@ -334,6 +334,21 @@ public class TkTenantServiceImpl extends AbstractBaseService<TenantMapper, SysTe
334 334 return CompletableFuture.supplyAsync(() -> new TsValue(ts, String.valueOf(tenants.size())));
335 335 }
336 336
  337 + @Override
  338 + public List<TenantDTO> checkTenantProfileIdUsedByTenants(String tenantProfileId) {
  339 + List<SysTenantEntity> entities =
  340 + baseMapper.selectList(
  341 + new LambdaQueryWrapper<SysTenantEntity>()
  342 + .eq(SysTenantEntity::getTenantProfileId, tenantProfileId));
  343 + return Optional.ofNullable(entities)
  344 + .map(
  345 + list ->
  346 + list.stream()
  347 + .map(entity -> entity.getDTO(TenantDTO.class))
  348 + .collect(Collectors.toList()))
  349 + .orElse(null);
  350 + }
  351 +
337 352 /**
338 353 * 保存租户与菜单、角色的映射关系
339 354 *
... ...
... ... @@ -34,4 +34,6 @@ public interface TkTenantService {
34 34 List<TenantDTO> getAllTenant();
35 35
36 36 CompletableFuture<TsValue> findTenantsByTs(LocalDateTime startTs, LocalDateTime endTs,long ts);
  37 +
  38 + List<TenantDTO> checkTenantProfileIdUsedByTenants(String tenantProfileId);
37 39 }
... ...