Commit 9dca62919d1bdbce6af681f045137704a54a62c5

Authored by xp.Huang
2 parents dd44d80f c7e3f91a

Merge branch '20230804' into 'master_dev'

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

See merge request yunteng/thingskit!220
@@ -205,17 +205,26 @@ public class TkAdminController extends BaseController { @@ -205,17 +205,26 @@ public class TkAdminController extends BaseController {
205 205
206 @PutMapping("/menu/assign/{tenantId}") 206 @PutMapping("/menu/assign/{tenantId}")
207 public void assignMenuToTenant( 207 public void assignMenuToTenant(
208 - @RequestBody String[] menuIds, @PathVariable("tenantId") String tenantId){ 208 + @RequestBody String[] menuIds, @PathVariable("tenantId") String tenantId) {
209 menuService.assignMenuToTenant(tenantId, menuIds); 209 menuService.assignMenuToTenant(tenantId, menuIds);
210 } 210 }
211 211
212 @PostMapping("tenant/updateOrCreateTenant") 212 @PostMapping("tenant/updateOrCreateTenant")
213 - @Transactional  
214 public TenantDTO updateOrCreateTenant( 213 public TenantDTO updateOrCreateTenant(
215 @Validated(UpdateGroup.class) @RequestBody TenantReqDTO tenantReqDTO) 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 @GetMapping("all/tenants") 230 @GetMapping("all/tenants")
@@ -253,34 +262,40 @@ public class TkAdminController extends BaseController { @@ -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 try { 297 try {
283 - TenantId tenantId = TenantId.fromUUID(toUUID(strTenantId)); 298 + TenantId tenantId = TenantId.fromUUID(toUUID(tbTenantId));
284 Tenant tenant = checkTenantId(tenantId, Operation.DELETE); 299 Tenant tenant = checkTenantId(tenantId, Operation.DELETE);
285 tenantService.deleteTenant(tenantId); 300 tenantService.deleteTenant(tenantId);
286 tenantProfileCache.evict(tenantId); 301 tenantProfileCache.evict(tenantId);
@@ -265,8 +265,10 @@ public class TkTenantServiceImpl extends AbstractBaseService<TenantMapper, SysTe @@ -265,8 +265,10 @@ public class TkTenantServiceImpl extends AbstractBaseService<TenantMapper, SysTe
265 265
266 @Override 266 @Override
267 @Transactional 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 SysTenantEntity tenant; 272 SysTenantEntity tenant;
271 tenant = baseMapper.selectById(tenantReqDTO.getId()); 273 tenant = baseMapper.selectById(tenantReqDTO.getId());
272 if (tenant != null) { 274 if (tenant != null) {
@@ -286,8 +288,6 @@ public class TkTenantServiceImpl extends AbstractBaseService<TenantMapper, SysTe @@ -286,8 +288,6 @@ public class TkTenantServiceImpl extends AbstractBaseService<TenantMapper, SysTe
286 baseMapper.updateById(tenant); 288 baseMapper.updateById(tenant);
287 } 289 }
288 return tenant.getDTO(TenantDTO.class); 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,7 +25,7 @@ public interface TkTenantService {
25 25
26 TkPageData<TenantDTO> page(Map<String, Object> queryMap); 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 List<String> getTenantRolesByTenantId(String tenantId); 30 List<String> getTenantRolesByTenantId(String tenantId);
31 31