Commit c7e3f91a82f8ea4aaf280e230677175414233a5e

Authored by 芯火源
1 parent dd44d80f

fix: 新建租户数据无法处理问题修复

1、调整租户的事务回滚为手动删除。
2、修复租户演员初始化无法获取租户信息问题
... ... @@ -205,17 +205,26 @@ public class TkAdminController extends BaseController {
205 205
206 206 @PutMapping("/menu/assign/{tenantId}")
207 207 public void assignMenuToTenant(
208   - @RequestBody String[] menuIds, @PathVariable("tenantId") String tenantId){
  208 + @RequestBody String[] menuIds, @PathVariable("tenantId") String tenantId) {
209 209 menuService.assignMenuToTenant(tenantId, menuIds);
210 210 }
211 211
212 212 @PostMapping("tenant/updateOrCreateTenant")
213   - @Transactional
214 213 public TenantDTO updateOrCreateTenant(
215 214 @Validated(UpdateGroup.class) @RequestBody TenantReqDTO tenantReqDTO)
216   - throws ThingsboardException, IOException {
217   - updateOrSaveTenant(tenantReqDTO);
218   - return tkTenantService.updateOrCreateTenant(tenantReqDTO);
  215 + throws ThingsboardException {
  216 + boolean isCreate = StringUtils.isBlank(tenantReqDTO.getTenantId());
  217 + TenantDTO result = null;
  218 + try {
  219 + updateOrSaveTenant(tenantReqDTO, isCreate);
  220 + result = tkTenantService.updateOrCreateTenant(tenantReqDTO, isCreate);
  221 + } catch (Exception e) {
  222 + if (isCreate) {
  223 + deleteTenant(tenantReqDTO.getTenantId());
  224 + throw handleException(e);
  225 + }
  226 + }
  227 + return result;
219 228 }
220 229
221 230 @GetMapping("all/tenants")
... ... @@ -253,34 +262,40 @@ public class TkAdminController extends BaseController {
253 262 }
254 263 }
255 264
256   - private void updateOrSaveTenant(TenantReqDTO tenantReqDTO) throws IOException {
257   - boolean isCreate = tenantReqDTO.getTenantId() == null;
258   - Tenant tbTenant;
259   - if (isCreate) {
260   - // 增加TB的租户创建
261   - tbTenant = new Tenant();
262   - } else {
263   - tbTenant = new Tenant(TenantId.fromUUID(UUID.fromString(tenantReqDTO.getTenantId())));
264   - }
265   - tbTenant.setTenantProfileId(tenantReqDTO.getTenantProfileId());
266   - tbTenant.setTitle(tenantReqDTO.getName());
267   - tbTenant = tenantService.saveTenant(tbTenant);
268   - if (isCreate) {
269   - installScripts.createDefaultRuleChains(tbTenant.getId());
270   - installScripts.createDefaultEdgeRuleChains(tbTenant.getId());
271   - }
272   - tenantProfileCache.evict(tbTenant.getId());
273   - tbClusterService.onTenantChange(tbTenant, null);
274   - tbClusterService.broadcastEntityStateChangeEvent(
275   - tbTenant.getId(),
276   - tbTenant.getId(),
277   - isCreate ? ComponentLifecycleEvent.CREATED : ComponentLifecycleEvent.UPDATED);
278   - tenantReqDTO.setTenantId(tbTenant.getTenantId().toString());
  265 + /**
  266 + * 实现TB创建租户的原生逻辑
  267 + *
  268 + * @param tenantReqDTO
  269 + * @param isCreate
  270 + * @throws IOException
  271 + */
  272 + private void updateOrSaveTenant(TenantReqDTO tenantReqDTO, boolean isCreate) throws IOException {
  273 + Tenant tbTenant;
  274 + if (isCreate) {
  275 + // 增加TB的租户创建
  276 + tbTenant = new Tenant();
  277 + } else {
  278 + tbTenant = new Tenant(TenantId.fromUUID(UUID.fromString(tenantReqDTO.getTenantId())));
  279 + }
  280 + tbTenant.setTenantProfileId(tenantReqDTO.getTenantProfileId());
  281 + tbTenant.setTitle(tenantReqDTO.getName());
  282 + tbTenant = tenantService.saveTenant(tbTenant);
  283 + if (isCreate) {
  284 + installScripts.createDefaultRuleChains(tbTenant.getId());
  285 + installScripts.createDefaultEdgeRuleChains(tbTenant.getId());
  286 + }
  287 + tenantProfileCache.evict(tbTenant.getId());
  288 + tbClusterService.onTenantChange(tbTenant, null);
  289 + tbClusterService.broadcastEntityStateChangeEvent(
  290 + tbTenant.getId(),
  291 + tbTenant.getId(),
  292 + isCreate ? ComponentLifecycleEvent.CREATED : ComponentLifecycleEvent.UPDATED);
  293 + tenantReqDTO.setTenantId(tbTenant.getTenantId().toString());
279 294 }
280 295
281   - private void deleteTenant(String strTenantId) throws ThingsboardException {
  296 + private void deleteTenant(String tbTenantId) throws ThingsboardException {
282 297 try {
283   - TenantId tenantId = TenantId.fromUUID(toUUID(strTenantId));
  298 + TenantId tenantId = TenantId.fromUUID(toUUID(tbTenantId));
284 299 Tenant tenant = checkTenantId(tenantId, Operation.DELETE);
285 300 tenantService.deleteTenant(tenantId);
286 301 tenantProfileCache.evict(tenantId);
... ...
... ... @@ -265,8 +265,10 @@ public class TkTenantServiceImpl extends AbstractBaseService<TenantMapper, SysTe
265 265
266 266 @Override
267 267 @Transactional
268   - public TenantDTO updateOrCreateTenant(TenantReqDTO tenantReqDTO) {
269   - if (StringUtils.isNotBlank(tenantReqDTO.getId())) {
  268 + public TenantDTO updateOrCreateTenant(TenantReqDTO tenantReqDTO,boolean isCreate) {
  269 + if (isCreate) {
  270 + return createNewTenant(tenantReqDTO);
  271 + } else {
270 272 SysTenantEntity tenant;
271 273 tenant = baseMapper.selectById(tenantReqDTO.getId());
272 274 if (tenant != null) {
... ... @@ -286,8 +288,6 @@ public class TkTenantServiceImpl extends AbstractBaseService<TenantMapper, SysTe
286 288 baseMapper.updateById(tenant);
287 289 }
288 290 return tenant.getDTO(TenantDTO.class);
289   - } else {
290   - return createNewTenant(tenantReqDTO);
291 291 }
292 292 }
293 293
... ...
... ... @@ -25,7 +25,7 @@ public interface TkTenantService {
25 25
26 26 TkPageData<TenantDTO> page(Map<String, Object> queryMap);
27 27
28   - TenantDTO updateOrCreateTenant(TenantReqDTO tenantReqDTO);
  28 + TenantDTO updateOrCreateTenant(TenantReqDTO tenantReqDTO,boolean isCreate);
29 29
30 30 List<String> getTenantRolesByTenantId(String tenantId);
31 31
... ...