将添加数据源的代码从实现层转移到业务层
parent
ed3a542066
commit
2b559984aa
|
@ -9,11 +9,8 @@ import com.muyu.common.security.annotation.RequiresPermissions;
|
||||||
import com.muyu.common.security.utils.SecurityUtils;
|
import com.muyu.common.security.utils.SecurityUtils;
|
||||||
import com.muyu.common.system.domain.SysDept;
|
import com.muyu.common.system.domain.SysDept;
|
||||||
import com.muyu.common.system.domain.SysEnt;
|
import com.muyu.common.system.domain.SysEnt;
|
||||||
import com.muyu.common.system.domain.SysRole;
|
|
||||||
import com.muyu.common.system.domain.SysUser;
|
import com.muyu.common.system.domain.SysUser;
|
||||||
import com.muyu.system.domain.SysFirm;
|
import com.muyu.system.domain.SysFirm;
|
||||||
import com.muyu.system.domain.SysMenu;
|
|
||||||
import com.muyu.system.domain.req.SysFirmReq;
|
|
||||||
import com.muyu.system.service.ISysFirmService;
|
import com.muyu.system.service.ISysFirmService;
|
||||||
import com.muyu.system.service.SysEntService;
|
import com.muyu.system.service.SysEntService;
|
||||||
import com.muyu.system.service.impl.SysConfigServiceImpl;
|
import com.muyu.system.service.impl.SysConfigServiceImpl;
|
||||||
|
@ -32,7 +29,6 @@ import java.sql.SQLException;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
@ -48,21 +44,6 @@ public class SysFirmController extends BaseController
|
||||||
{
|
{
|
||||||
@Resource
|
@Resource
|
||||||
private ISysFirmService sysFirmService;
|
private ISysFirmService sysFirmService;
|
||||||
@Resource
|
|
||||||
private SysEntService sysEntService;
|
|
||||||
@Resource
|
|
||||||
private SysRoleController sysRoleController;
|
|
||||||
@Resource
|
|
||||||
private SysMenuController sysMenuController;
|
|
||||||
@Resource
|
|
||||||
private SysUserController sysUserController;
|
|
||||||
@Resource
|
|
||||||
private SysDeptController sysDeptController;
|
|
||||||
|
|
||||||
|
|
||||||
private static final String FIRM_CREDIT_CODE = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$";
|
|
||||||
@Autowired
|
|
||||||
private SysConfigServiceImpl sysConfigServiceImpl;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询企业基础信息列表
|
* 查询企业基础信息列表
|
||||||
|
@ -103,108 +84,10 @@ public class SysFirmController extends BaseController
|
||||||
*/
|
*/
|
||||||
@RequiresPermissions("firm:firmInfo:add")
|
@RequiresPermissions("firm:firmInfo:add")
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public Result<Integer> add(@Validated @RequestBody SysFirmReq sysFirm) {
|
public Result<Integer> add(@Validated @RequestBody SysFirm sysFirm) {
|
||||||
String firmName = sysFirm.getFirmName();
|
|
||||||
String firmCode = sysFirm.getFirmCode();
|
|
||||||
String firmCreditCode = sysFirm.getFirmCreditCode();
|
|
||||||
|
|
||||||
// 验证企业基础信息是否为空
|
|
||||||
if (StringUtils.isAllBlank(firmName, firmCode, firmCreditCode)) {
|
|
||||||
return error("新增 企业基础信息 '" + sysFirm + "'失败,企业基础信息信息为空");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检查企业基础信息是否已存在
|
|
||||||
if (sysFirmService.checkIdUnique(sysFirm)) {
|
|
||||||
return error("新增 企业基础信息 '" + sysFirm + "'失败,企业基础信息已存在");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 验证统一社会信用代码格式
|
|
||||||
if (!isValidFirmCreditCode(firmCreditCode)) {
|
|
||||||
return error("新增 企业基础信息 '" + sysFirm + "'失败,统一社会信用代码格式不正确");
|
|
||||||
}
|
|
||||||
|
|
||||||
//添加部门
|
|
||||||
SysDept sysDept = new SysDept();
|
|
||||||
sysDept.setFirmCode(firmCode);
|
|
||||||
sysDept.setParentId(100L);
|
|
||||||
sysDept.setDeptName(firmName);
|
|
||||||
sysDept.setAncestors("0,100");
|
|
||||||
sysDept.setOrderNum(3);
|
|
||||||
sysDept.setStatus("0");
|
|
||||||
sysDept.setDelFlag("0");
|
|
||||||
|
|
||||||
sysDeptController.add(sysDept);
|
|
||||||
|
|
||||||
// 设置创建者和状态
|
|
||||||
sysFirm.setCreateBy(SecurityUtils.getUsername());
|
|
||||||
|
|
||||||
//添加用户与用户角色
|
|
||||||
SysUser sysUser = new SysUser();
|
|
||||||
sysUser.setFirmCode(firmCode);
|
|
||||||
sysUser.setUserName(sysFirm.getFirmCode()+"-admin");
|
|
||||||
sysUser.setNickName(sysFirm.getFirmName()+"管理员");
|
|
||||||
sysUser.setPassword(sysConfigServiceImpl.selectConfigByKey("sys.user.initPassword"));
|
|
||||||
sysUser.setDeptId(sysDept.getDeptId());
|
|
||||||
sysUser.setRoleIds(new Long[]{119L});
|
|
||||||
sysUserController.add(sysUser);
|
|
||||||
|
|
||||||
// 创建数据库和表
|
|
||||||
try {
|
|
||||||
createDatabaseAndTables(firmCode);
|
|
||||||
} catch (SQLException e) {
|
|
||||||
return error("数据库操作失败: " + e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 保存企业信息
|
|
||||||
SysEnt sysEnt = new SysEnt();
|
|
||||||
sysEnt.setUserName("root");
|
|
||||||
sysEnt.setPassword("bawei2112A");
|
|
||||||
sysEnt.setEntCode(firmCode);
|
|
||||||
sysEnt.setDbName(firmCode);
|
|
||||||
sysEnt.setIp("47.116.173.119");
|
|
||||||
sysEnt.setPort(3306);
|
|
||||||
sysEntService.save(sysEnt);
|
|
||||||
|
|
||||||
sysFirm.setMemberId(1L);
|
|
||||||
|
|
||||||
return toAjax(sysFirmService.save(sysFirm));
|
return toAjax(sysFirmService.save(sysFirm));
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
private boolean isValidFirmCreditCode(String firmCreditCode) {
|
|
||||||
Pattern pattern = Pattern.compile(FIRM_CREDIT_CODE);
|
|
||||||
Matcher matcher = pattern.matcher(firmCreditCode);
|
|
||||||
return matcher.matches();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void createDatabaseAndTables(String firmCode) throws SQLException {
|
|
||||||
String url = "jdbc:mysql://47.116.173.119:3306/?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8";
|
|
||||||
try (Connection connection = DriverManager.getConnection(url, "root", "bawei2112A");
|
|
||||||
Statement statement = connection.createStatement()) {
|
|
||||||
|
|
||||||
// 创建数据库
|
|
||||||
statement.executeUpdate("CREATE DATABASE IF NOT EXISTS " + firmCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 切换到新的数据库连接
|
|
||||||
Connection connection = null;
|
|
||||||
try {
|
|
||||||
url = "jdbc:mysql://47.116.173.119:3306/" + firmCode + "?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8";
|
|
||||||
String user = "root";
|
|
||||||
String pwd = "bawei2112A";
|
|
||||||
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_operation.sql");
|
|
||||||
EncodedResource er = new EncodedResource(rc, "utf-8");
|
|
||||||
ScriptUtils.executeSqlScript(connection, er);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改企业基础信息
|
* 修改企业基础信息
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
package com.muyu.system.domain.req;
|
|
||||||
|
|
||||||
import com.muyu.common.core.annotation.Excel;
|
|
||||||
import com.muyu.system.domain.SysFirm;
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
|
||||||
import lombok.*;
|
|
||||||
import lombok.experimental.SuperBuilder;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
@SuperBuilder
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class SysFirmReq extends SysFirm {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用户账号
|
|
||||||
*/
|
|
||||||
@Excel(name = "登录名称")
|
|
||||||
private String userName;
|
|
||||||
|
|
||||||
/** 统一社会信用代码 */
|
|
||||||
@NotBlank(message = "统一社会信用代码不可为空")
|
|
||||||
private String firmCreditCode;
|
|
||||||
/**
|
|
||||||
* 密码
|
|
||||||
*/
|
|
||||||
private String password;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -36,4 +36,6 @@ public interface ISysFirmService extends IService<SysFirm> {
|
||||||
*/
|
*/
|
||||||
Boolean checkIdUnique(SysFirm sysFirm);
|
Boolean checkIdUnique(SysFirm sysFirm);
|
||||||
|
|
||||||
|
|
||||||
|
boolean save(SysFirm sysFirm);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,15 +3,34 @@ package com.muyu.system.service.impl;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.github.pagehelper.util.StringUtil;
|
import com.github.pagehelper.util.StringUtil;
|
||||||
|
import com.muyu.common.core.utils.StringUtils;
|
||||||
|
import com.muyu.common.security.utils.SecurityUtils;
|
||||||
|
import com.muyu.common.system.domain.SysDept;
|
||||||
|
import com.muyu.common.system.domain.SysEnt;
|
||||||
|
import com.muyu.common.system.domain.SysUser;
|
||||||
|
import com.muyu.system.controller.SysDeptController;
|
||||||
|
import com.muyu.system.controller.SysMenuController;
|
||||||
|
import com.muyu.system.controller.SysRoleController;
|
||||||
|
import com.muyu.system.controller.SysUserController;
|
||||||
import com.muyu.system.domain.SysFirm;
|
import com.muyu.system.domain.SysFirm;
|
||||||
import com.muyu.system.mapper.SysFirmMapper;
|
import com.muyu.system.mapper.SysFirmMapper;
|
||||||
import com.muyu.system.service.ISysFirmService;
|
import com.muyu.system.service.ISysFirmService;
|
||||||
|
import com.muyu.system.service.SysEntService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.core.io.ClassPathResource;
|
||||||
|
import org.springframework.core.io.support.EncodedResource;
|
||||||
|
import org.springframework.jdbc.datasource.init.ScriptUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 企业基础信息Service业务层处理
|
* 企业基础信息Service业务层处理
|
||||||
|
@ -26,6 +45,17 @@ public class SysFirmServiceImpl
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private SysFirmMapper sysFirmMapper;
|
private SysFirmMapper sysFirmMapper;
|
||||||
|
@Resource
|
||||||
|
private SysEntService sysEntService;
|
||||||
|
@Resource
|
||||||
|
private SysUserController sysUserController;
|
||||||
|
@Resource
|
||||||
|
private SysDeptController sysDeptController;
|
||||||
|
@Autowired
|
||||||
|
private SysConfigServiceImpl sysConfigServiceImpl;
|
||||||
|
|
||||||
|
private static final String FIRM_CREDIT_CODE = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 精确查询企业基础信息
|
* 精确查询企业基础信息
|
||||||
|
@ -78,6 +108,108 @@ public class SysFirmServiceImpl
|
||||||
return this.count(queryWrapper) > 0;
|
return this.count(queryWrapper) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean save(SysFirm sysFirm) {
|
||||||
|
String firmName = sysFirm.getFirmName();
|
||||||
|
String firmCode = sysFirm.getFirmCode();
|
||||||
|
String firmCreditCode = sysFirm.getFirmCreditCode();
|
||||||
|
|
||||||
|
// 验证企业基础信息是否为空
|
||||||
|
if (StringUtils.isAllBlank(firmName, firmCode, firmCreditCode)) {
|
||||||
|
throw new RuntimeException("新增 企业基础信息 '" + sysFirm + "'失败,企业基础信息信息为空");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查企业基础信息是否已存在
|
||||||
|
if (this.checkIdUnique(sysFirm)) {
|
||||||
|
throw new RuntimeException("新增 企业基础信息 '" + sysFirm + "'失败,企业基础信息已存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 验证统一社会信用代码格式
|
||||||
|
if (!isValidFirmCreditCode(firmCreditCode)) {
|
||||||
|
throw new RuntimeException("新增 企业基础信息 '" + sysFirm + "'失败,统一社会信用代码格式不正确");
|
||||||
|
}
|
||||||
|
|
||||||
|
//添加部门
|
||||||
|
SysDept sysDept = new SysDept();
|
||||||
|
sysDept.setFirmCode(firmCode);
|
||||||
|
sysDept.setParentId(100L);
|
||||||
|
sysDept.setDeptName(firmName);
|
||||||
|
sysDept.setAncestors("0,100");
|
||||||
|
sysDept.setOrderNum(3);
|
||||||
|
sysDept.setStatus("0");
|
||||||
|
sysDept.setDelFlag("0");
|
||||||
|
|
||||||
|
sysDeptController.add(sysDept);
|
||||||
|
|
||||||
|
// 设置创建者和状态
|
||||||
|
sysFirm.setCreateBy(SecurityUtils.getUsername());
|
||||||
|
|
||||||
|
//添加用户与用户角色
|
||||||
|
SysUser sysUser = new SysUser();
|
||||||
|
sysUser.setFirmCode(firmCode);
|
||||||
|
sysUser.setUserName(sysFirm.getFirmCode()+"-admin");
|
||||||
|
sysUser.setNickName(sysFirm.getFirmName()+"管理员");
|
||||||
|
sysUser.setPassword(sysConfigServiceImpl.selectConfigByKey("sys.user.initPassword"));
|
||||||
|
sysUser.setDeptId(sysDept.getDeptId());
|
||||||
|
sysUser.setRoleIds(new Long[]{119L});
|
||||||
|
sysUserController.add(sysUser);
|
||||||
|
|
||||||
|
// 创建数据库和表
|
||||||
|
try {
|
||||||
|
createDatabaseAndTables(firmCode);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new RuntimeException("数据库操作失败: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 保存企业信息
|
||||||
|
SysEnt sysEnt = new SysEnt();
|
||||||
|
sysEnt.setUserName("root");
|
||||||
|
sysEnt.setPassword("bawei2112A");
|
||||||
|
sysEnt.setEntCode(firmCode);
|
||||||
|
sysEnt.setDbName(firmCode);
|
||||||
|
sysEnt.setIp("47.116.173.119");
|
||||||
|
sysEnt.setPort(3306);
|
||||||
|
sysEntService.save(sysEnt);
|
||||||
|
|
||||||
|
sysFirm.setMemberId(1L);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private boolean isValidFirmCreditCode(String firmCreditCode) {
|
||||||
|
Pattern pattern = Pattern.compile(FIRM_CREDIT_CODE);
|
||||||
|
Matcher matcher = pattern.matcher(firmCreditCode);
|
||||||
|
return matcher.matches();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createDatabaseAndTables(String firmCode) throws SQLException {
|
||||||
|
String url = "jdbc:mysql://47.116.173.119:3306/?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8";
|
||||||
|
try (Connection connection = DriverManager.getConnection(url, "root", "bawei2112A");
|
||||||
|
Statement statement = connection.createStatement()) {
|
||||||
|
|
||||||
|
// 创建数据库
|
||||||
|
statement.executeUpdate("CREATE DATABASE IF NOT EXISTS " + firmCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 切换到新的数据库连接
|
||||||
|
Connection connection = null;
|
||||||
|
try {
|
||||||
|
url = "jdbc:mysql://47.116.173.119:3306/" + firmCode + "?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8";
|
||||||
|
String user = "root";
|
||||||
|
String pwd = "bawei2112A";
|
||||||
|
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_operation.sql");
|
||||||
|
EncodedResource er = new EncodedResource(rc, "utf-8");
|
||||||
|
ScriptUtils.executeSqlScript(connection, er);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue