From 3b66cca44144a1a77fe150132b626e14dfb27187 Mon Sep 17 00:00:00 2001 From: Wang Chen Chen <932560435@qq.com> Date: Thu, 23 Nov 2023 16:18:05 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=20=E9=9A=8F=E6=9C=BA?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=A7=9F=E6=88=B7=E7=9A=84=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=B1=BB=E3=80=822.=E5=88=A0=E9=99=A4=E7=A7=9F=E6=88=B7?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=88=A0=E9=99=A4=E7=A7=9F=E6=88=B7=E5=85=B3?= =?UTF-8?q?=E8=81=94=E7=9A=84=E7=94=A8=E6=88=B7=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../molly/corems/runner/ProjectTableRunner.java | 8 ++++---- .../com/xaaef/molly/MollyApplicationTests.java | 13 ++++++++++--- .../xaaef/molly/system/mapper/SysUserMapper.java | 5 +++++ .../molly/system/runner/TenantTableRunner.java | 15 +++++++-------- .../molly/system/service/SysUserService.java | 10 ++++++++++ .../system/service/impl/SysTenantServiceImpl.java | 2 ++ .../system/service/impl/SysUserServiceImpl.java | 7 +++++++ 7 files changed, 45 insertions(+), 15 deletions(-) diff --git a/server/molly-cms/src/main/java/com/xaaef/molly/corems/runner/ProjectTableRunner.java b/server/molly-cms/src/main/java/com/xaaef/molly/corems/runner/ProjectTableRunner.java index 33f70a1..a67027e 100644 --- a/server/molly-cms/src/main/java/com/xaaef/molly/corems/runner/ProjectTableRunner.java +++ b/server/molly-cms/src/main/java/com/xaaef/molly/corems/runner/ProjectTableRunner.java @@ -6,10 +6,10 @@ import com.xaaef.molly.common.util.JsonUtils; import com.xaaef.molly.corems.entity.CmsProject; import com.xaaef.molly.corems.mapper.CmsProjectMapper; import com.xaaef.molly.tenant.props.MultiTenantProperties; -import jakarta.servlet.ServletContextEvent; -import jakarta.servlet.ServletContextListener; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @@ -30,14 +30,14 @@ import static com.xaaef.molly.common.consts.MbpConst.PROJECT_ID; @Component @Order(Integer.MIN_VALUE) @AllArgsConstructor -public class ProjectTableRunner implements ServletContextListener { +public class ProjectTableRunner implements ApplicationRunner { private final CmsProjectMapper projectMapper; private final MultiTenantProperties multiTenantProperties; @Override - public void contextInitialized(ServletContextEvent sce) { + public void run(ApplicationArguments args) throws Exception { log.info("ProjectTableRunner Initialized ....."); if (multiTenantProperties.getEnableProject()) { // 查询 所有的 不包含 project_id 的表 diff --git a/server/molly-service/src/test/java/com/xaaef/molly/MollyApplicationTests.java b/server/molly-service/src/test/java/com/xaaef/molly/MollyApplicationTests.java index 96f634e..5630f91 100644 --- a/server/molly-service/src/test/java/com/xaaef/molly/MollyApplicationTests.java +++ b/server/molly-service/src/test/java/com/xaaef/molly/MollyApplicationTests.java @@ -20,7 +20,9 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.context.SecurityContextHolder; +import java.time.Duration; import java.time.LocalDateTime; +import java.util.List; import java.util.Set; import static com.xaaef.molly.system.cron.TestCronAsync.randomChinese; @@ -63,18 +65,21 @@ public class MollyApplicationTests { */ @Test public void test1() throws Exception { - for (int i = 0; i < 1; i++) { + var areaCodeList = List.of(440301000000L, 440303000000L, 440304000000L, 440305000000L, + 440306000000L, 440307000000L, 440308000000L, 440309000000L, 440310000000L, 440311000000L); + for (int i = 0; i < 3; i++) { var start = System.currentTimeMillis(); var email = String.format("%s@qq.com", RandomUtil.randomString(10)); var contactNumber = String.format("0755-%s", RandomUtil.randomNumbers(7)); var expired = LocalDateTime.now().plusDays(RandomUtil.randomInt(30, 3650)); + var ac = areaCodeList.get(RandomUtil.randomInt(0, (areaCodeList.size() - 1))); var po = new CreateTenantPO() .setName(randomChinese(5)) .setEmail(email) .setLinkman(randomChinese(3)) .setContactNumber(contactNumber) .setLogo("https://images.xaaef.com/molly_master_logo.png") - .setAreaCode(440307000000L) + .setAreaCode(ac) .setAddress(randomChinese(10)) .setTemplates(Set.of(new SysTemplate().setId(10001L))) .setExpired(expired); @@ -82,12 +87,14 @@ public class MollyApplicationTests { System.out.println(JsonUtils.toFormatJson(success)); var end = System.currentTimeMillis() - start; System.out.printf("耗时: %d ms\n", end); + // 异步初始化,需要等创建数据库表结构完成 + Thread.sleep(Duration.ofSeconds(20)); } } /** - * 随机生成租户 + * 获取项目 * * @author WangChenChen * @version 2.0 diff --git a/server/molly-sys/src/main/java/com/xaaef/molly/system/mapper/SysUserMapper.java b/server/molly-sys/src/main/java/com/xaaef/molly/system/mapper/SysUserMapper.java index 097b3bc..f39d4f4 100644 --- a/server/molly-sys/src/main/java/com/xaaef/molly/system/mapper/SysUserMapper.java +++ b/server/molly-sys/src/main/java/com/xaaef/molly/system/mapper/SysUserMapper.java @@ -20,6 +20,11 @@ public interface SysUserMapper { int deleteHaveTenants(Long userId); + // 租户 删除关联的 系统用户 + @Delete("delete from sys_user_tenant WHERE tenant_id = #{tenantId}") + int deleteHaveSysUser(String tenantId); + + // 系统用户 关联租户 int insertByTenants(@Param("userId") Long userId, @Param("tenantIds") Set tenantIds); diff --git a/server/molly-sys/src/main/java/com/xaaef/molly/system/runner/TenantTableRunner.java b/server/molly-sys/src/main/java/com/xaaef/molly/system/runner/TenantTableRunner.java index 6c26703..2e0381d 100644 --- a/server/molly-sys/src/main/java/com/xaaef/molly/system/runner/TenantTableRunner.java +++ b/server/molly-sys/src/main/java/com/xaaef/molly/system/runner/TenantTableRunner.java @@ -10,10 +10,11 @@ import com.xaaef.molly.system.entity.SysTenant; import com.xaaef.molly.system.mapper.SysTenantMapper; import com.xaaef.molly.tenant.DatabaseManager; import com.xaaef.molly.tenant.service.MultiTenantManager; -import jakarta.servlet.ServletContextEvent; -import jakarta.servlet.ServletContextListener; +import jakarta.annotation.PreDestroy; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; import org.springframework.context.annotation.DependsOn; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @@ -42,7 +43,7 @@ import java.util.stream.Collectors; @DependsOn(value = "projectTableRunner") @Order(Integer.MIN_VALUE + 1) @AllArgsConstructor -public class TenantTableRunner implements ServletContextListener { +public class TenantTableRunner implements ApplicationRunner { private final SysTenantMapper tenantMapper; @@ -52,9 +53,8 @@ public class TenantTableRunner implements ServletContextListener { private final ApiCmsProjectService projectService; - @Override - public void contextInitialized(ServletContextEvent sce) { + public void run(ApplicationArguments args) throws Exception { log.info("TenantTableRunner Initialized ....."); var props = databaseManager.getMultiTenantProperties(); if (props.getEnable()) { @@ -98,9 +98,8 @@ public class TenantTableRunner implements ServletContextListener { } } - - @Override - public void contextDestroyed(ServletContextEvent sce) { + @PreDestroy + public void destroy() { tenantManager.removeAll(); log.info("delete the tenantId in redis ..."); } diff --git a/server/molly-sys/src/main/java/com/xaaef/molly/system/service/SysUserService.java b/server/molly-sys/src/main/java/com/xaaef/molly/system/service/SysUserService.java index 8786842..7af4266 100644 --- a/server/molly-sys/src/main/java/com/xaaef/molly/system/service/SysUserService.java +++ b/server/molly-sys/src/main/java/com/xaaef/molly/system/service/SysUserService.java @@ -50,4 +50,14 @@ public interface SysUserService { */ boolean updateTenant(Long userId, Set tenantIds); + + /** + * 租户 删除关联的 系统用户 + * + * @param tenantId + * @author Wang Chen Chen + * @date 2023/11/23 17:31 + */ + boolean deleteHaveSysUser(String tenantId); + } diff --git a/server/molly-sys/src/main/java/com/xaaef/molly/system/service/impl/SysTenantServiceImpl.java b/server/molly-sys/src/main/java/com/xaaef/molly/system/service/impl/SysTenantServiceImpl.java index 67506f5..1a3a454 100644 --- a/server/molly-sys/src/main/java/com/xaaef/molly/system/service/impl/SysTenantServiceImpl.java +++ b/server/molly-sys/src/main/java/com/xaaef/molly/system/service/impl/SysTenantServiceImpl.java @@ -466,6 +466,8 @@ public class SysTenantServiceImpl extends BaseServiceImpl 0; + } + + }