feat: 添加初始化设备准备的所需数据
This commit is contained in:
parent
39ad8a0944
commit
1f4b85f9b5
|
@ -1,8 +1,8 @@
|
|||
package com.jsl.oa.config.startup;
|
||||
|
||||
import com.jsl.oa.model.dodata.RoleDO;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.dao.DataAccessException;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
|
||||
@Slf4j
|
||||
|
@ -16,15 +16,15 @@ public class PrepareData {
|
|||
* 检查检查指定的角色是否存在,如果不存在则创建
|
||||
*/
|
||||
public void checkRole(String roleName, String displayName) {
|
||||
RoleDO getRole = jdbcTemplate.queryForObject(
|
||||
"SELECT * FROM organize_oa.oa_role WHERE role_name = ?",
|
||||
RoleDO.class,
|
||||
roleName
|
||||
);
|
||||
// 检查角色是否存在
|
||||
if (getRole == null) {
|
||||
try {
|
||||
jdbcTemplate.queryForObject(
|
||||
"SELECT id FROM organize_oa.oa_role WHERE role_name = ? LIMIT 1",
|
||||
Long.class,
|
||||
roleName
|
||||
);
|
||||
} catch (DataAccessException e) {
|
||||
// 创建角色
|
||||
log.debug("[Preparation] 创建角色 [{}]{}", roleName, displayName);
|
||||
log.debug("[Preparation] 创建角色 [{}] {}", roleName, displayName);
|
||||
jdbcTemplate.update(
|
||||
"INSERT INTO organize_oa.oa_role (role_name, display_name) VALUES (?,?)",
|
||||
roleName,
|
||||
|
|
|
@ -1,19 +1,24 @@
|
|||
package com.jsl.oa.config.startup;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.jsl.oa.common.constant.SafeConstants;
|
||||
import com.jsl.oa.model.dodata.ConfigDO;
|
||||
import com.jsl.oa.model.vodata.business.InfoAboutSecurityKey;
|
||||
import com.jsl.oa.utils.Processing;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.mindrot.jbcrypt.BCrypt;
|
||||
import org.springframework.boot.CommandLineRunner;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.dao.DataAccessException;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* 系统启动时进行的一些初始化操作
|
||||
|
@ -32,14 +37,15 @@ import java.sql.Timestamp;
|
|||
@RequiredArgsConstructor
|
||||
public class StartupConfiguration {
|
||||
private final JdbcTemplate jdbcTemplate;
|
||||
private final PrepareData prepareData = new PrepareData(jdbcTemplate);
|
||||
private PrepareData prepareData;
|
||||
|
||||
@Bean
|
||||
@Order(1)
|
||||
public CommandLineRunner startUpPreparation() {
|
||||
return args -> {
|
||||
log.info("============================================================");
|
||||
log.info(">===========================================================");
|
||||
log.info("[Preparation] 系统进行准备检查");
|
||||
prepareData = new PrepareData(jdbcTemplate);
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -50,7 +56,7 @@ public class StartupConfiguration {
|
|||
*/
|
||||
@Bean
|
||||
@Order(2)
|
||||
public CommandLineRunner sqlDataPreparation() {
|
||||
public CommandLineRunner roleDataPreparation() {
|
||||
return args -> {
|
||||
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/>
|
||||
* 准备安全密钥,用于加密解密等操作
|
||||
*/
|
||||
@Bean
|
||||
@Order(3)
|
||||
@Order(5)
|
||||
public CommandLineRunner prepareKey() {
|
||||
return args -> {
|
||||
log.info("[Preparation] 系统进行安全密钥准备");
|
||||
Gson gson = new Gson();
|
||||
// 获取数据库中的安全密钥
|
||||
ConfigDO getSecurityKey = jdbcTemplate.queryForObject(
|
||||
"SELECT * FROM organize_oa.oa_config WHERE value = ?",
|
||||
ConfigDO.class,
|
||||
"security_key"
|
||||
);
|
||||
String getSecurityKey = jdbcTemplate.queryForObject(
|
||||
"SELECT data FROM organize_oa.oa_config WHERE value = 'security_key' LIMIT 1",
|
||||
String.class);
|
||||
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 {
|
||||
// 生成密钥
|
||||
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);
|
||||
// 封装VO类
|
||||
// 封装VO类
|
||||
List<ProjectWorkAndNameVO> projectWorkAndNameVOS = new ArrayList<>();
|
||||
for (ProjectModuleDO projectWorkDO : projectWorkDOList) {
|
||||
ProjectWorkAndNameVO projectWorkAndNameVO = new ProjectWorkAndNameVO();
|
||||
Processing.copyProperties(projectWorkDO, projectWorkAndNameVO);
|
||||
// 添加负责人和子系统名称
|
||||
projectWorkAndNameVO.
|
||||
setChildSystemName(projectDAO.getProjectWorkerById(projectWorkDO.getPid()).getName())
|
||||
// 添加负责人和子系统名称
|
||||
projectWorkAndNameVO
|
||||
.setChildSystemName(projectDAO.getProjectWorkerById(projectWorkDO.getProjectChildId()).getName())
|
||||
.setPrincipalUser(userDAO.getUserById(projectWorkDO.getPrincipalId()).getUsername());
|
||||
|
||||
projectWorkAndNameVOS.add(projectWorkAndNameVO);
|
||||
|
|
Loading…
Reference in New Issue
Block a user