feat: 添加初始化设备准备的所需数据
This commit is contained in:
parent
39ad8a0944
commit
1f4b85f9b5
@ -1,8 +1,8 @@
|
|||||||
package com.jsl.oa.config.startup;
|
package com.jsl.oa.config.startup;
|
||||||
|
|
||||||
import com.jsl.oa.model.dodata.RoleDO;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.dao.DataAccessException;
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -16,15 +16,15 @@ public class PrepareData {
|
|||||||
* 检查检查指定的角色是否存在,如果不存在则创建
|
* 检查检查指定的角色是否存在,如果不存在则创建
|
||||||
*/
|
*/
|
||||||
public void checkRole(String roleName, String displayName) {
|
public void checkRole(String roleName, String displayName) {
|
||||||
RoleDO getRole = jdbcTemplate.queryForObject(
|
try {
|
||||||
"SELECT * FROM organize_oa.oa_role WHERE role_name = ?",
|
jdbcTemplate.queryForObject(
|
||||||
RoleDO.class,
|
"SELECT id FROM organize_oa.oa_role WHERE role_name = ? LIMIT 1",
|
||||||
roleName
|
Long.class,
|
||||||
);
|
roleName
|
||||||
// 检查角色是否存在
|
);
|
||||||
if (getRole == null) {
|
} catch (DataAccessException e) {
|
||||||
// 创建角色
|
// 创建角色
|
||||||
log.debug("[Preparation] 创建角色 [{}]{}", roleName, displayName);
|
log.debug("[Preparation] 创建角色 [{}] {}", roleName, displayName);
|
||||||
jdbcTemplate.update(
|
jdbcTemplate.update(
|
||||||
"INSERT INTO organize_oa.oa_role (role_name, display_name) VALUES (?,?)",
|
"INSERT INTO organize_oa.oa_role (role_name, display_name) VALUES (?,?)",
|
||||||
roleName,
|
roleName,
|
||||||
|
@ -1,19 +1,24 @@
|
|||||||
package com.jsl.oa.config.startup;
|
package com.jsl.oa.config.startup;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
import com.jsl.oa.common.constant.SafeConstants;
|
import com.jsl.oa.common.constant.SafeConstants;
|
||||||
import com.jsl.oa.model.dodata.ConfigDO;
|
import com.jsl.oa.model.dodata.ConfigDO;
|
||||||
import com.jsl.oa.model.vodata.business.InfoAboutSecurityKey;
|
import com.jsl.oa.model.vodata.business.InfoAboutSecurityKey;
|
||||||
import com.jsl.oa.utils.Processing;
|
import com.jsl.oa.utils.Processing;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.mindrot.jbcrypt.BCrypt;
|
||||||
import org.springframework.boot.CommandLineRunner;
|
import org.springframework.boot.CommandLineRunner;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.core.annotation.Order;
|
import org.springframework.core.annotation.Order;
|
||||||
|
import org.springframework.dao.DataAccessException;
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
|
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统启动时进行的一些初始化操作
|
* 系统启动时进行的一些初始化操作
|
||||||
@ -32,14 +37,15 @@ import java.sql.Timestamp;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class StartupConfiguration {
|
public class StartupConfiguration {
|
||||||
private final JdbcTemplate jdbcTemplate;
|
private final JdbcTemplate jdbcTemplate;
|
||||||
private final PrepareData prepareData = new PrepareData(jdbcTemplate);
|
private PrepareData prepareData;
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@Order(1)
|
@Order(1)
|
||||||
public CommandLineRunner startUpPreparation() {
|
public CommandLineRunner startUpPreparation() {
|
||||||
return args -> {
|
return args -> {
|
||||||
log.info("============================================================");
|
log.info(">===========================================================");
|
||||||
log.info("[Preparation] 系统进行准备检查");
|
log.info("[Preparation] 系统进行准备检查");
|
||||||
|
prepareData = new PrepareData(jdbcTemplate);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,7 +56,7 @@ public class StartupConfiguration {
|
|||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
@Order(2)
|
@Order(2)
|
||||||
public CommandLineRunner sqlDataPreparation() {
|
public CommandLineRunner roleDataPreparation() {
|
||||||
return args -> {
|
return args -> {
|
||||||
log.info("[Preparation] 系统进行数据库完整性检查");
|
log.info("[Preparation] 系统进行数据库完整性检查");
|
||||||
// 检查角色信息是否完整
|
// 检查角色信息是否完整
|
||||||
@ -60,25 +66,135 @@ public class StartupConfiguration {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查默认管理员账户
|
||||||
|
* <hr/>
|
||||||
|
* 为程序进行检查默认管理员程序,检查默认管理员是否存在,若管理员存在且权限正确则检查通过,若检查失败或该用户不存在将会创建一个超级管理员
|
||||||
|
* 账户。
|
||||||
|
*/
|
||||||
|
@Bean
|
||||||
|
@Order(3)
|
||||||
|
public CommandLineRunner defaultConsoleDataPreparation() {
|
||||||
|
return args -> {
|
||||||
|
log.info("[Preparation] 系统进行默认超级管理员信息检查");
|
||||||
|
// 检查默认的信息是否完整
|
||||||
|
Long getDefaultUser;
|
||||||
|
try {
|
||||||
|
getDefaultUser = jdbcTemplate.queryForObject(
|
||||||
|
"SELECT id FROM organize_oa.oa_user WHERE job_id = 'OTH0000001'",
|
||||||
|
Long.class);
|
||||||
|
} catch (DataAccessException e) {
|
||||||
|
log.debug("[Preparation] 超级管理员不存在,创建 console_user 超级管理员账户,密码 jsl_nbxt");
|
||||||
|
jdbcTemplate.update(
|
||||||
|
"INSERT INTO organize_oa.oa_user "
|
||||||
|
+ "(job_id, username, password, address, phone, email, age) "
|
||||||
|
+ "VALUES (?, ?, ?, ?, ?, ?, ?)",
|
||||||
|
"OTH0000001",
|
||||||
|
"console_user",
|
||||||
|
BCrypt.hashpw("jsl_nbxt", BCrypt.gensalt()),
|
||||||
|
"江苏省/无锡市",
|
||||||
|
"18888888888",
|
||||||
|
"console@jsl.com",
|
||||||
|
"18"
|
||||||
|
);
|
||||||
|
getDefaultUser = jdbcTemplate.queryForObject(
|
||||||
|
"SELECT id FROM organize_oa.oa_user WHERE job_id = 'OTH0000001'",
|
||||||
|
Long.class);
|
||||||
|
}
|
||||||
|
// 检查超级管理员权限是否正确
|
||||||
|
Long getConsoleRole = jdbcTemplate
|
||||||
|
.queryForObject("SELECT id FROM organize_oa.oa_role WHERE role_name='console' LIMIT 1", Long.class);
|
||||||
|
assert getConsoleRole != null;
|
||||||
|
Long getConsoleRoleUser;
|
||||||
|
try {
|
||||||
|
getConsoleRoleUser = jdbcTemplate.queryForObject(
|
||||||
|
"SELECT rid FROM organize_oa.oa_role_user WHERE uid=?",
|
||||||
|
Long.class,
|
||||||
|
getDefaultUser
|
||||||
|
);
|
||||||
|
if (!getConsoleRole.equals(getConsoleRoleUser)) {
|
||||||
|
log.debug("[Preparation] 超级管理员账户权限错误,正在恢复权限至 console 角色组");
|
||||||
|
jdbcTemplate.update(
|
||||||
|
"UPDATE organize_oa.oa_role_user SET rid=? WHERE uid=?",
|
||||||
|
getConsoleRole,
|
||||||
|
getDefaultUser
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch (DataAccessException e) {
|
||||||
|
log.debug("[Preparation] 为超级管理员账户添加 console 角色组权限");
|
||||||
|
// 插入超级管理员权限
|
||||||
|
jdbcTemplate.update(
|
||||||
|
"INSERT INTO organize_oa.oa_role_user (uid, rid) VALUES (?,?)",
|
||||||
|
getDefaultUser,
|
||||||
|
getConsoleRole
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@Order(4)
|
||||||
|
public CommandLineRunner prepareDefaultConfigData(Gson gson) {
|
||||||
|
return args -> {
|
||||||
|
// 检查加密密钥是否存在
|
||||||
|
try {
|
||||||
|
jdbcTemplate
|
||||||
|
.queryForObject("SELECT id FROM organize_oa.oa_config WHERE value='security_key'", Long.class);
|
||||||
|
} catch (DataAccessException e) {
|
||||||
|
HashMap<String, String> insertData = new HashMap<>();
|
||||||
|
insertData.put("key", Processing.generateKey(1233061823L));
|
||||||
|
insertData.put("updateTime", String.valueOf(new Date().getTime()));
|
||||||
|
jdbcTemplate.update(
|
||||||
|
"INSERT INTO organize_oa.oa_config (value, data) VALUES (?,?)",
|
||||||
|
"security_key",
|
||||||
|
gson.toJson(insertData)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// 检查 carousel
|
||||||
|
try {
|
||||||
|
jdbcTemplate.queryForObject("SELECT id FROM organize_oa.oa_config WHERE value='carousel'", Long.class);
|
||||||
|
} catch (DataAccessException e) {
|
||||||
|
jdbcTemplate.update(
|
||||||
|
"INSERT INTO organize_oa.oa_config (value, data) VALUES (?,?)",
|
||||||
|
"carousel",
|
||||||
|
gson.toJson("")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// 检查 project_show
|
||||||
|
try {
|
||||||
|
jdbcTemplate
|
||||||
|
.queryForObject("SELECT id FROM organize_oa.oa_config WHERE value='project_show'", Long.class);
|
||||||
|
} catch (DataAccessException e) {
|
||||||
|
jdbcTemplate.update(
|
||||||
|
"INSERT INTO organize_oa.oa_config (value, data) VALUES (?,?)",
|
||||||
|
"project_show",
|
||||||
|
gson.toJson("")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 准备安全密钥
|
* 准备安全密钥
|
||||||
* <hr/>
|
* <hr/>
|
||||||
* 准备安全密钥,用于加密解密等操作
|
* 准备安全密钥,用于加密解密等操作
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
@Order(3)
|
@Order(5)
|
||||||
public CommandLineRunner prepareKey() {
|
public CommandLineRunner prepareKey() {
|
||||||
return args -> {
|
return args -> {
|
||||||
log.info("[Preparation] 系统进行安全密钥准备");
|
log.info("[Preparation] 系统进行安全密钥准备");
|
||||||
Gson gson = new Gson();
|
Gson gson = new Gson();
|
||||||
// 获取数据库中的安全密钥
|
// 获取数据库中的安全密钥
|
||||||
ConfigDO getSecurityKey = jdbcTemplate.queryForObject(
|
String getSecurityKey = jdbcTemplate.queryForObject(
|
||||||
"SELECT * FROM organize_oa.oa_config WHERE value = ?",
|
"SELECT data FROM organize_oa.oa_config WHERE value = 'security_key' LIMIT 1",
|
||||||
ConfigDO.class,
|
String.class);
|
||||||
"security_key"
|
|
||||||
);
|
|
||||||
if (getSecurityKey != null) {
|
if (getSecurityKey != null) {
|
||||||
SafeConstants.setSecretKey(getSecurityKey.getData());
|
HashMap<String, String> getData = gson.fromJson(
|
||||||
|
getSecurityKey,
|
||||||
|
new TypeToken<HashMap<String, String>>() {
|
||||||
|
}.getType());
|
||||||
|
SafeConstants.setSecretKey(getData.get("key"));
|
||||||
} else {
|
} else {
|
||||||
// 生成密钥
|
// 生成密钥
|
||||||
String key = Processing.generateKey(System.currentTimeMillis());
|
String key = Processing.generateKey(System.currentTimeMillis());
|
||||||
@ -100,4 +216,13 @@ public class StartupConfiguration {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@Order(100)
|
||||||
|
public CommandLineRunner preparationCompleted() {
|
||||||
|
return args -> {
|
||||||
|
log.info("[Preparation] 系统准备检查完毕");
|
||||||
|
log.info("===========================================================>");
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,14 +62,14 @@ public class ModuleServiceImpl implements ModuleService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<ProjectModuleDO> projectWorkDOList = moduleMapper.getBySysId(sysId, userId, is);
|
List<ProjectModuleDO> projectWorkDOList = moduleMapper.getBySysId(sysId, userId, is);
|
||||||
// 封装VO类
|
// 封装VO类
|
||||||
List<ProjectWorkAndNameVO> projectWorkAndNameVOS = new ArrayList<>();
|
List<ProjectWorkAndNameVO> projectWorkAndNameVOS = new ArrayList<>();
|
||||||
for (ProjectModuleDO projectWorkDO : projectWorkDOList) {
|
for (ProjectModuleDO projectWorkDO : projectWorkDOList) {
|
||||||
ProjectWorkAndNameVO projectWorkAndNameVO = new ProjectWorkAndNameVO();
|
ProjectWorkAndNameVO projectWorkAndNameVO = new ProjectWorkAndNameVO();
|
||||||
Processing.copyProperties(projectWorkDO, projectWorkAndNameVO);
|
Processing.copyProperties(projectWorkDO, projectWorkAndNameVO);
|
||||||
// 添加负责人和子系统名称
|
// 添加负责人和子系统名称
|
||||||
projectWorkAndNameVO.
|
projectWorkAndNameVO
|
||||||
setChildSystemName(projectDAO.getProjectWorkerById(projectWorkDO.getPid()).getName())
|
.setChildSystemName(projectDAO.getProjectWorkerById(projectWorkDO.getProjectChildId()).getName())
|
||||||
.setPrincipalUser(userDAO.getUserById(projectWorkDO.getPrincipalId()).getUsername());
|
.setPrincipalUser(userDAO.getUserById(projectWorkDO.getPrincipalId()).getUsername());
|
||||||
|
|
||||||
projectWorkAndNameVOS.add(projectWorkAndNameVO);
|
projectWorkAndNameVOS.add(projectWorkAndNameVO);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user