Commit c7e3f91a82f8ea4aaf280e230677175414233a5e
1 parent
dd44d80f
fix: 新建租户数据无法处理问题修复
1、调整租户的事务回滚为手动删除。 2、修复租户演员初始化无法获取租户信息问题
Showing
3 changed files
with
50 additions
and
35 deletions
... | ... | @@ -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 | ... | ... |