Merge remote-tracking branch 'origin/dev.business' into dev

# Conflicts:
#	cloud-modules/saas/saas-server/src/main/java/com/muyu/server/controller/EnterpriseController.java
#	cloud-modules/saas/saas-server/src/main/java/com/muyu/server/service/impl/EnterpriseServiceImpl.java
dev.business
袁子龙 2024-10-10 22:25:22 +08:00
commit 24b8fe4085
6 changed files with 46 additions and 55 deletions

View File

@ -41,10 +41,7 @@
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>cloud-common-saas</artifactId>
</dependency>
<!-- SpringBoot Web -->
<dependency>

View File

@ -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;
}

View File

@ -40,7 +40,7 @@ public class ManyDataSource implements ApplicationRunner{
private InitDataSource initDataSource;
private List<EntInfo> dataSourceInfoList(){
public List<EntInfo> dataSourceInfoList(){
RemoteSaaSService remoteSaaSService = SpringUtils.getBean(RemoteSaaSService.class);
Result<List<Datasource>> tableDataInfoResult = initDataSource.initDatasource();
if (tableDataInfoResult==null){

View File

@ -78,6 +78,7 @@
<artifactId>cloud-common-xxl</artifactId>
</dependency>
</dependencies>
<build>

View File

@ -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);
}

View File

@ -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;
}