Преглед изворни кода

:zap: 删除租户同时删除对应用户

smallchill пре 6 година
родитељ
комит
1b877b6e11

+ 1 - 1
src/main/java/org/springblade/modules/system/controller/TenantController.java

@@ -136,7 +136,7 @@ public class TenantController extends BladeController {
 	@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
 	@CacheEvict(cacheNames = {SYS_CACHE}, allEntries = true)
 	public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		return R.status(tenantService.deleteLogic(Func.toLongList(ids)));
+		return R.status(tenantService.removeTenant(Func.toLongList(ids)));
 	}
 
 	/**

+ 10 - 0
src/main/java/org/springblade/modules/system/service/ITenantService.java

@@ -20,6 +20,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.modules.system.entity.Tenant;
 
+import java.util.List;
+
 /**
  * 服务类
  *
@@ -52,4 +54,12 @@ public interface ITenantService extends BaseService<Tenant> {
 	 */
 	boolean saveTenant(Tenant tenant);
 
+	/**
+	 * 删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	boolean removeTenant(List<Long> ids);
+
 }

+ 18 - 1
src/main/java/org/springblade/modules/system/service/impl/TenantServiceImpl.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import org.springblade.common.cache.ParamCache;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.tenant.TenantId;
 import org.springblade.core.tool.constant.BladeConstant;
@@ -30,7 +31,10 @@ import org.springblade.modules.system.service.*;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
 import java.util.stream.Collectors;
 
 import static org.springblade.common.constant.TenantConstant.*;
@@ -134,6 +138,19 @@ public class TenantServiceImpl extends BaseServiceImpl<TenantMapper, Tenant> imp
 		return super.saveOrUpdate(tenant);
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean removeTenant(List<Long> ids) {
+		List<Tenant> tenantList = this.list(Wrappers.<Tenant>query().lambda().in(Tenant::getId, ids));
+		List<String> tenantIds = tenantList.stream().map(tenant -> Func.toStr(tenant.getTenantId())).distinct().collect(Collectors.toList());
+		if (tenantIds.contains(BladeConstant.ADMIN_TENANT_ID)) {
+			throw new ServiceException("不可删除管理租户!");
+		}
+		boolean tenantTemp = this.deleteLogic(ids);
+		boolean userTemp = userService.remove(Wrappers.<User>query().lambda().in(User::getTenantId, tenantIds));
+		return tenantTemp && userTemp;
+	}
+
 	private String getTenantId(List<String> codes) {
 		String code = tenantId.generate();
 		if (codes.contains(code)) {