diff --git a/cloud-auth/pom.xml b/cloud-auth/pom.xml index c38fc2b..86f3f7a 100644 --- a/cloud-auth/pom.xml +++ b/cloud-auth/pom.xml @@ -41,10 +41,7 @@ spring-cloud-starter-alibaba-sentinel - - com.muyu - cloud-common-saas - + diff --git a/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java b/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java index 665a504..25b2462 100644 --- a/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java +++ b/cloud-auth/src/main/java/com/muyu/auth/service/SysLoginService.java @@ -1,6 +1,7 @@ package com.muyu.auth.service; +import com.muyu.cloud.common.many.datasource.ManyDataSource; import com.muyu.common.core.constant.CacheConstants; import com.muyu.common.core.constant.Constants; import com.muyu.common.core.constant.SecurityConstants; @@ -41,6 +42,8 @@ public class SysLoginService { @Autowired private RedisService redisService; + + /** * 登录 */ @@ -92,6 +95,8 @@ public class SysLoginService { } passwordService.validate(user, password); recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功"); + + return userInfo; } diff --git a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java index f1e6ffd..995a64c 100644 --- a/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java +++ b/cloud-common/cloud-common-saas/src/main/java/com/muyu/cloud/common/many/datasource/ManyDataSource.java @@ -40,7 +40,7 @@ public class ManyDataSource implements ApplicationRunner{ private InitDataSource initDataSource; - private List dataSourceInfoList(){ + public List dataSourceInfoList(){ RemoteSaaSService remoteSaaSService = SpringUtils.getBean(RemoteSaaSService.class); Result> tableDataInfoResult = initDataSource.initDatasource(); if (tableDataInfoResult==null){ diff --git a/cloud-modules/cloud-modules-system/pom.xml b/cloud-modules/cloud-modules-system/pom.xml index 4d83d4d..67c6a32 100644 --- a/cloud-modules/cloud-modules-system/pom.xml +++ b/cloud-modules/cloud-modules-system/pom.xml @@ -78,6 +78,7 @@ cloud-common-xxl + diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/EnterpriseController.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/EnterpriseController.java index fbe366d..2ad4761 100644 --- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/EnterpriseController.java +++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/EnterpriseController.java @@ -6,6 +6,7 @@ import com.muyu.common.core.constant.SecurityConstants; import com.muyu.common.core.domain.Result; import com.muyu.common.domain.Enterprise; import com.muyu.common.system.domain.Business; +import com.muyu.common.system.domain.SysUser; import com.muyu.common.system.remote.RemoteUserService; import com.muyu.common.util.PageUtils; import com.muyu.server.controller.form.DeleteEnterpriseByIds; @@ -27,6 +28,7 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; +import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -46,8 +48,7 @@ public class EnterpriseController { @Autowired private EnterpriseService enterpriseService; - @Autowired - private RemoteUserService remoteUserService; + /** @@ -73,61 +74,20 @@ public class EnterpriseController { /** * 新增企业信息 - * @param form + * @param enterprise * @return */ @PostMapping("/insert") @Operation(summary = "新增企业信息",description = "新增企业信息") - public Result insert(@RequestBody @Valid InsertEnterprise form){ - Enterprise enterprise = new Enterprise(); + public Result insert(@RequestBody @Valid Enterprise enterprise){ - enterprise.setEnterpriseName(form.getEnterpriseName()); - enterprise.setEnterpriseCarCount(form.getEnterpriseCarCount()); - enterprise.setEnterpriseFenceCount(form.getEnterpriseFenceCount()); + +// enterprise.setEnterpriseName(form.getEnterpriseName()); +// enterprise.setEnterpriseCarCount(form.getEnterpriseCarCount()); +// enterprise.setEnterpriseFenceCount(form.getEnterpriseFenceCount()); int rows = enterpriseService.insert(enterprise); - if (rows == 0){ - return Result.error("新增失败"); - } - Business business = new Business(); - business.setFirmName(form.getEnterpriseName()); - business.setDatabaseName(form.getEnterpriseDatabaseName()); - remoteUserService.settlementEnterpriseInfo(business, SecurityConstants.INNER); - - String createDatabaseUrl="jdbc:mysql://"+ DatasourceContent.IP+":"+DatasourceContent.PORT+"?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8"; - String createDatabaseSql = "CREATE DATABASE IF NOT EXISTS " + form.getEnterpriseDatabaseName() + ";"; - try (Connection adminConn = DriverManager.getConnection(createDatabaseUrl, DatasourceContent.USER_NAME, DatasourceContent.PASSWORD); - Statement stmt = adminConn.createStatement()) { - - boolean success = stmt.execute(createDatabaseSql); - if (success) { - log.info("数据库 {} 创建失败", form.getEnterpriseDatabaseName()); - - } else { - log.warn("数据库 {} 创建成功", form.getEnterpriseDatabaseName()); - - // 切换到新的数据库连接 - Connection connection = null; - try { - String url = "jdbc:mysql://47.101.53.251:3306/" + form.getEnterpriseDatabaseName() + "?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8"; - String user = "root"; - String pwd = "Lw030106"; - String driverClassName = "com.mysql.cj.jdbc.Driver"; - Class.forName(driverClassName); - connection = DriverManager.getConnection(url, user, pwd); - } catch (ClassNotFoundException e) { - throw new RuntimeException(e); - } - ClassPathResource rc = new ClassPathResource("static/saas.sql"); - EncodedResource er = new EncodedResource(rc, "utf-8"); - ScriptUtils.executeSqlScript(connection, er); - } - - } catch (SQLException e) { - e.printStackTrace(); - log.error("连接数据库时发生错误或创建数据库失败", e); - } return Result.success(rows); } diff --git a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/EnterpriseServiceImpl.java b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/EnterpriseServiceImpl.java index b4e7b4e..ea92448 100644 --- a/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/EnterpriseServiceImpl.java +++ b/cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/EnterpriseServiceImpl.java @@ -1,10 +1,20 @@ package com.muyu.server.service.impl; import cn.hutool.core.map.MapUtil; +import com.alibaba.druid.pool.DruidDataSource; import com.muyu.cache.EnterpriseCacheService; +import com.muyu.cloud.common.many.datasource.ManyDataSource; import com.muyu.cloud.common.many.datasource.constents.DatasourceContent; +import com.muyu.cloud.common.many.datasource.domain.model.DataSourceInfo; +import com.muyu.cloud.common.many.datasource.factory.DruidDataSourceFactory; +import com.muyu.cloud.common.many.datasource.init.InitDataSource; +import com.muyu.cloud.common.many.datasource.role.DynamicDataSource; +import com.muyu.cloud.common.saas.domain.Datasource; +import com.muyu.cloud.common.saas.domain.model.EntInfo; +import com.muyu.cloud.common.saas.exception.SaaSException; import com.muyu.common.core.constant.SecurityConstants; import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.SpringUtils; import com.muyu.common.domain.Enterprise; import com.muyu.common.system.domain.Business; import com.muyu.common.system.domain.SysUser; @@ -14,6 +24,7 @@ import com.muyu.server.mapper.EnterpriseMapper; import com.muyu.server.service.EnterpriseService; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.support.EncodedResource; import org.springframework.jdbc.datasource.init.ScriptUtils; @@ -42,6 +53,9 @@ public class EnterpriseServiceImpl implements EnterpriseService { @Autowired private RemoteUserService remoteUserService; + @Autowired + private ManyDataSource manyDataSource; + /** * 分页查询企业运营信息 @@ -111,6 +125,7 @@ public class EnterpriseServiceImpl implements EnterpriseService { ClassPathResource rc = new ClassPathResource("saas.sql"); EncodedResource er = new EncodedResource(rc, "utf-8"); ScriptUtils.executeSqlScript(connection1, er); + } catch (SQLException e) { throw new RuntimeException("无法执行SQL脚本", e); } @@ -118,13 +133,26 @@ public class EnterpriseServiceImpl implements EnterpriseService { throw new RuntimeException("链接不到数据源驱动", e); } - } } catch (SQLException e) { e.printStackTrace(); log.error("连接数据库时发生错误或创建数据库失败", e); } + + + + DruidDataSourceFactory druidDataSourceFactory = SpringUtils.getBean(DruidDataSourceFactory.class); + DynamicDataSource dynamicDataSource = SpringUtils.getBean(DynamicDataSource.class); + for (EntInfo entInfo : manyDataSource.dataSourceInfoList()) { + DataSourceInfo dataSourceInfo = DataSourceInfo.hostAndPortBuild( + entInfo.getEntCode(), entInfo.getIp(), entInfo.getPort() + ); + DruidDataSource druidDataSource = druidDataSourceFactory.create(dataSourceInfo); + dynamicDataSource.put(dataSourceInfo.getKey(), druidDataSource); + log.info("存储数据连接池为:key:{}",dataSourceInfo.getKey()); + } + log.info("企业信息插入成功"); return rows; }