将添加数据源的代码从实现层转移到业务层
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.system.domain.SysDept;
|
||||
import com.muyu.common.system.domain.SysEnt;
|
||||
import com.muyu.common.system.domain.SysRole;
|
||||
import com.muyu.common.system.domain.SysUser;
|
||||
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.SysEntService;
|
||||
import com.muyu.system.service.impl.SysConfigServiceImpl;
|
||||
|
@ -32,7 +29,6 @@ import java.sql.SQLException;
|
|||
import java.sql.Statement;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
@ -48,21 +44,6 @@ public class SysFirmController extends BaseController
|
|||
{
|
||||
@Resource
|
||||
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")
|
||||
@PostMapping
|
||||
public Result<Integer> add(@Validated @RequestBody SysFirmReq 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);
|
||||
|
||||
public Result<Integer> add(@Validated @RequestBody SysFirm 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 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.extension.service.impl.ServiceImpl;
|
||||
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.mapper.SysFirmMapper;
|
||||
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.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
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.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* 企业基础信息Service业务层处理
|
||||
|
@ -26,6 +45,17 @@ public class SysFirmServiceImpl
|
|||
|
||||
@Resource
|
||||
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;
|
||||
}
|
||||
|
||||
@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