Merge remote-tracking branch 'origin/master'
eapim-admin CI / build (push) Has been cancelled

This commit is contained in:
Rinjae
2026-06-29 18:39:25 +09:00
13 changed files with 146 additions and 28 deletions
@@ -192,6 +192,8 @@
<option value="">전체</option>
<option value="EMAIL">EMAIL</option>
<option value="SMS">SMS</option>
<option value="KAKAO">KAKAO</option>
<option value="MESSENGER">MESSENGER</option>
</select>
</div>
</td>
@@ -208,6 +208,7 @@
<option value="">전체</option>
<option value="PENDING">문의중</option>
<option value="RESPONDED">답변완료</option>
<option value="CLOSED">답변종료</option>
</select>
</div>
</td>
Binary file not shown.
@@ -33,6 +33,7 @@ import com.eactive.eai.rms.data.entity.man.role.Role;
import com.eactive.eai.rms.data.entity.man.role.RoleService;
import com.eactive.eai.rms.data.entity.onl.bzwkdstcd.UserBusinessService;
import com.eactive.eai.rms.onl.common.exception.BizException;
import com.eactive.ext.djb.DamoManager;
import lombok.RequiredArgsConstructor;
@@ -99,7 +100,7 @@ public class UserManService extends BaseService {
userInfo.setRoleidnfiname(CommonConstants.DEPT_DEVELOPER);
try {
userInfo.setPassword(Seed.encrypt(userUI.getUserId()));
userInfo.setPassword(DamoManager.getInstance().hash(DamoManager.SHA256,userUI.getUserId()));
} catch (Exception e) {
throw new RuntimeException("Error encrypting password", e);
}
@@ -140,7 +141,7 @@ public class UserManService extends BaseService {
public void updatePassword(UserUI userUI) throws Exception {
UserInfo userInfo = userInfoService.getById(userUI.getUserId());
userInfo.setPassword(Seed.encrypt(userUI.getUserId()));
userInfo.setPassword(DamoManager.getInstance().hash(DamoManager.SHA256, userUI.getUserId()));
userUIMapper.updateToEntity(userUI, userInfo);
userInfoService.save(userInfo);
}
@@ -21,6 +21,7 @@ import com.eactive.eai.rms.data.entity.man.user.UserServiceType;
import com.eactive.eai.rms.data.entity.man.user.UserServiceTypeId;
import com.eactive.eai.rms.data.entity.man.user.UserServiceTypeService;
import com.eactive.eai.rms.data.entity.onl.bzwkdstcd.UserBusinessService;
import com.eactive.ext.djb.DamoManager;
@Service
@Transactional
@@ -124,7 +125,7 @@ public class UserSyncService extends BaseService {
UserInfo userInfo = new UserInfo();
userInfo.setUserid(userId);
userInfo.setUsername(userInfoMap.get("EMPY_NM").toString());
userInfo.setPassword(Seed.encrypt(userId));
userInfo.setPassword(DamoManager.getInstance().hash(DamoManager.SHA256,userId));
userInfo.setRoleidnfiname(CommonConstants.DEPT_DEVELOPER);
userInfoService.save(userInfo);
@@ -33,6 +33,7 @@ import org.springframework.web.servlet.View;
import com.eactive.eai.common.seed.Seed;
import com.eactive.eai.rms.ext.kjb.smsauth.SmsAuthService;
import com.eactive.ext.djb.DamoManager;
import com.eactive.eai.data.converter.LocalDateTimeFormatters;
import com.eactive.eai.rms.common.context.MonitoringContext;
import com.eactive.eai.rms.common.datasource.DataSourceType;
@@ -363,7 +364,7 @@ public class MainController implements InterceptorSkipController {
String loginMode = System.getProperty("login.mode");
if("db".equals(loginMode) || "DB".equals(loginMode)) {
/* 기존로직 - LDAP 사용 x */
if (!userInfo.getPassword().equals(Seed.encrypt(dto.getPassword()))) {
if (!userInfo.getPassword().equals(DamoManager.getInstance().hash(DamoManager.SHA256, dto.getPassword()))) {
// password 다름.
setLoginFailure(request, session, "login.loginfail1",
"login.loginfail2");
@@ -799,9 +800,9 @@ public class MainController implements InterceptorSkipController {
.getString("login.pwdmismatch4"));
return REDIRECT_CHANGE_PASSWORD_URL;
}
// 3. 비밀번호 체크
if (!userInfo.getPassword().equals(Seed.encrypt(resetPassword))
if (!userInfo.getPassword().equals(DamoManager.getInstance().hash(DamoManager.SHA256,resetPassword))
|| !userInfo.getUserid().equals(resetUserId)) {
UserAccessLogger.log(request, LOG_CATEGORY_LOGIN, "F",
localeMessage
@@ -812,7 +813,7 @@ public class MainController implements InterceptorSkipController {
}
// 4. 비밀번호 변경
userInfo.setPassword(Seed.encrypt(changePassword));
userInfo.setPassword(DamoManager.getInstance().hash(DamoManager.SHA256,changePassword));
userInfoService.save(userInfo);
UserAccessLogger.log(request, LOG_CATEGORY_LOGIN, "S", localeMessage
@@ -141,6 +141,16 @@ public class EMSSchedulerImpl implements EMSScheduler {
JobDetail existingJob = clusteredScheduler.getJobDetail(jobKey);
if (existing != null && existingJob != null) {
// JobDetail(JobData 포함) 갱신
@SuppressWarnings("unchecked")
Class<Job> jobClass = (Class<Job>) Class.forName(jobInfo.getJobClassName());
JobBuilder jobBuilder = newJob(jobClass).withIdentity(jobKey);
for (JobData jobData : jobInfo.getJobDatas()) {
jobBuilder.usingJobData(jobData.getId().getDataKey(), jobData.getDataValue());
}
clusteredScheduler.addJob(jobBuilder.build(), true);
// 트리거(cron) 갱신
CronTrigger newTrigger = newTrigger()
.withIdentity(triggerKey)
.withSchedule(cronSchedule(jobInfo.getCronExp()))
@@ -11,9 +11,10 @@ import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.SchedulerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import java.util.Arrays;
import java.util.Set;
@@ -45,9 +46,6 @@ public class PortalInquiryClosingJob implements Job {
private static final int DEFAULT_CLOSING_DAYS = 7;
@Autowired
private PortalInquiryClosingService inquiryCommentClosingService;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();
@@ -67,6 +65,15 @@ public class PortalInquiryClosingJob implements Job {
log.info("*** START PortalInquiryCommentClosingService run({})", CommonUtil.getToday("yyyy-MM-dd HH:mm"));
PortalInquiryClosingService service;
try {
ApplicationContext appContext = (ApplicationContext) context.getScheduler().getContext().get("applicationContext");
service = appContext.getBean(PortalInquiryClosingService.class);
} catch (SchedulerException e) {
log.error("applicationContext 조회 실패", e);
throw new JobExecutionException(e);
}
int closingDays = DEFAULT_CLOSING_DAYS;
String closingDayParam = context.getMergedJobDataMap().getString(KEY_INQUIRY_COMMENT_CLOSING_DAY);
if (closingDayParam != null) {
@@ -80,7 +87,7 @@ public class PortalInquiryClosingJob implements Job {
DataSourceContextHolder.setDataSourceType(
DataSourceTypeManager.getDataSourceType(DataSourceTypeManager.APIGW));
try {
int closedCount = inquiryCommentClosingService.closeExpiredInquiries(closingDays);
int closedCount = service.closeExpiredInquiries(closingDays);
log.info("PortalInquiryCommentClosingService 완료: {}건 CLOSED 처리", closedCount);
} catch (Exception e) {
log.error("PortalInquiryCommentClosingService execution failed", e);
@@ -15,6 +15,7 @@ import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.eactive.apim.portal.jpa.PersonalDataEncryptConverter;
import com.eactive.apim.portal.user.entity.UserInfo;
import com.eactive.eai.data.converter.LocalDateTimeFormatters;
import com.eactive.eai.data.entity.onl.unifbwk.UnifBwkTp;
@@ -33,6 +34,7 @@ public class UnifbwkManService extends BaseService {
private final BizManService bizManService;
private final UserInfoService userInfoService;
private final UserDao userDao;
private final PersonalDataEncryptConverter encryptConverter = new PersonalDataEncryptConverter();
@Autowired
public UnifbwkManService(UnifBwkTpService unifBwkTpService,
@@ -54,7 +56,8 @@ public class UnifbwkManService extends BaseService {
private UnifbwkUI getUserOrgInfo(UnifBwkTp unifBwkTp) {
UnifbwkUI unifbwkUI = unifbwkUIMapper.toVo(unifBwkTp);
String rspblpsncntpctnt = unifBwkTp.getRspblpsncntpctnt();
String rspblpsncntpctnt = encryptConverter.convertToEntityAttribute(unifBwkTp.getRspblpsncntpctnt());
unifbwkUI.setRsPblpsncntpcTnt(rspblpsncntpctnt);
Optional<UserInfo> userInfo = Optional.empty();
if (StringUtils.isNotBlank(rspblpsncntpctnt)) {
@@ -75,10 +78,13 @@ public class UnifbwkManService extends BaseService {
UnifBwkTp unifBwkTp = unifBwkTpService.getById(eaiBzwkDstcd);
UnifbwkUI unifbwkUI = unifbwkUIMapper.toVo(unifBwkTp);
String rspblpsncntpctnt = encryptConverter.convertToEntityAttribute(unifBwkTp.getRspblpsncntpctnt());
unifbwkUI.setRsPblpsncntpcTnt(rspblpsncntpctnt);
Optional<UserInfo> optionalUserInfo = Optional.empty();
if (StringUtils.isNotBlank(unifBwkTp.getRspblpsncntpctnt())) {
optionalUserInfo = userInfoService.findByOfctelno(unifBwkTp.getRspblpsncntpctnt());
if (StringUtils.isNotBlank(rspblpsncntpctnt)) {
optionalUserInfo = userInfoService.findByOfctelno(rspblpsncntpctnt);
}
if (optionalUserInfo.isPresent()) {
UserInfo userInfo = optionalUserInfo.get();
@@ -90,8 +96,9 @@ public class UnifbwkManService extends BaseService {
public void insert(UnifbwkUI unifbwkUI) {
UnifBwkTp unifBwkTp = unifbwkUIMapper.toEntity(unifbwkUI);
unifBwkTp.setRspblpsncntpctnt(encryptConverter.convertToDatabaseColumn(unifBwkTp.getRspblpsncntpctnt()));
unifBwkTpService.save(unifBwkTp);
bizManService.transactionAdminBiz(unifbwkUI.getEaiBzwkDstcd());
}
@@ -113,6 +120,7 @@ public class UnifbwkManService extends BaseService {
unifbwkUI.setTrackAsisKey2Name(trackAsisKey2Name);
unifbwkUIMapper.updateToEntity(unifbwkUI, unifBwkTp);
unifBwkTp.setRspblpsncntpctnt(encryptConverter.convertToDatabaseColumn(rspblPsnCntpCtnt));
unifBwkTpService.save(unifBwkTp);
}
@@ -132,7 +140,7 @@ public class UnifbwkManService extends BaseService {
map.put("TRACKASISKEY1NAME", e.getTrackasiskey1name());
map.put("TRACKASISKEY2NAME", e.getTrackasiskey2name());
map.put("RSEMPNAME", e.getRsempname());
map.put("RSPBLPSNCNTPCTNT", e.getRspblpsncntpctnt());
map.put("RSPBLPSNCNTPCTNT", encryptConverter.convertToEntityAttribute(e.getRspblpsncntpctnt()));
map.put("GROUPCOCD", e.getGroupcocd());
if (e.getLastModDtm() != null) {
map.put("LAST_MOD_DTM",
@@ -174,6 +182,7 @@ public class UnifbwkManService extends BaseService {
}
UnifBwkTp unifBwkTp = unifbwkUIMapper.toEntity(unifbwkUI);
unifBwkTp.setRspblpsncntpctnt(encryptConverter.convertToDatabaseColumn(unifBwkTp.getRspblpsncntpctnt()));
unifBwkTpService.save(unifBwkTp);
}
@@ -206,6 +215,7 @@ public class UnifbwkManService extends BaseService {
}
unifbwkUIMapper.updateToEntity(unifbwkUI, optionalUnifBwkTp.get());
optionalUnifBwkTp.get().setRspblpsncntpctnt(encryptConverter.convertToDatabaseColumn(unifbwkUI.getRsPblpsncntpcTnt()));
unifBwkTpService.save(optionalUnifBwkTp.get());
}
}
@@ -74,6 +74,7 @@ public class LayoutDao extends SqlMapClientTemplateDao {
entity.setEaibzwkdstcd((String) paramMap.get("eaiBzwkDstcd"));
entity.setUapplname((String) paramMap.get("uapplName"));
entity.setSysintfacname((String) paramMap.get("sysIntfacName"));
entity.setUseyn((String) paramMap.get("useYn"));
layoutService.save(entity);
}
@@ -683,7 +683,9 @@ public class LayoutSyncController extends OnlBaseAnnotationController implements
param.put("recvData", "");
}
syncLayout(param, recvTime, json);
//syncLayout(param, recvTime, json);
syncLayoutDjb(param, recvTime, json);
// results.getChild("Result").setText("S".equals(param.get("prcssRslt"))?"True":"False");
// results.getChild("ResultMessage").setText("S".equals(param.get("prcssRslt"))?"성공":param.get("prcssRsltCmnt"));
@@ -900,7 +902,11 @@ public class LayoutSyncController extends OnlBaseAnnotationController implements
private void syncLayout(HashMap<String, String> param, JSONObject body, String command, JSONObject layout)
throws Exception, BizException, ParseException {
String layoutName = (String) layout.get("id");
String id = (String) layout.get("id");
String layoutName = (String) layout.get("layoutName");
if (StringUtils.isEmpty(layoutName)) {
layoutName = id;
}
String useSystem = (String) layout.get("usesystem");
param.put("logPrcssSeqno", UUIDGenerator.getUUID());
@@ -935,7 +941,7 @@ public class LayoutSyncController extends OnlBaseAnnotationController implements
break;
}
if(!layoutName.matches(fattern)) {
if(!id.matches(fattern)) {
throw new BizException("잘못된 전문레이아웃명 입니다.\n명명규칙을 확인하세요.\n"+fattern);
}
@@ -955,7 +961,8 @@ public class LayoutSyncController extends OnlBaseAnnotationController implements
// Layout Format (TR07)
vo.put("loutName",layoutName);
vo.put("loutPtrnName",msgType); // ASCII, EBCDIC, XML
vo.put("loutDesc",layout.get("desc"));
vo.put("loutDesc",layout.get("desc"));
vo.put("useYn", "1");
String date = (String) layout.get("date");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -1183,5 +1190,63 @@ public class LayoutSyncController extends OnlBaseAnnotationController implements
}
return null ;
}
private void syncLayoutDjb(HashMap<String, String> param, String recvTime, JSONObject json)
throws Exception, BizException, ParseException {
JSONObject header = (JSONObject) ((JSONObject) json.get("Message")).get("Header");
JSONObject body = (JSONObject) ((JSONObject) json.get("Message")).get("Body");
String serviceName = (String) header.get("ServiceName");
String command = (String) header.get("Command");
param.put("serviceName", serviceName);
param.put("command", command);
param.put("recvAmndHMS", recvTime);
Object layoutObject = body.get("Layout");
JSONArray layoutArray = null;
if (layoutObject instanceof JSONArray) {
String interfaceId = (String) body.get("interfaceCode");
if (interfaceId.startsWith("ES")) {
interfaceId = interfaceId.replaceFirst("ES", "AS");
}
layoutArray = (JSONArray) layoutObject;
for (int i = 0; i < layoutArray.size(); i++) {
JSONObject layout = (JSONObject)layoutArray.get(i);
String usesystem = (String)layout.get("usesystem");
if ("EAI".equals(usesystem)) {
String id = (String)layout.get("id");
String inOutType = "OPA".equals(id.substring(5,8)) ? "S1" : "S2";
String group = (String)layout.get("group");
String ioType = (String)layout.get("ioType");
if ("I".equals(ioType)) {
layout.put("layoutName", group + "_" + interfaceId + inOutType + "_SRCS");
syncLayout(param, body, command, layout);
layout.put("layoutName", group + "_" + interfaceId + inOutType + "_TGTS");
syncLayout(param, body, command, layout);
} else {
layout.put("layoutName", group + "_" + interfaceId + inOutType + "_SRCR");
syncLayout(param, body, command, layout);
layout.put("layoutName", group + "_" + interfaceId + inOutType + "_TGTR");
syncLayout(param, body, command, layout);
}
}
}
} else {
throw new BizException("단독 레이아웃 연동은 지원하지 않습니다.");
}
}
}
+2 -3
View File
@@ -9,12 +9,12 @@
<property name="LOG_LEVEL" value="${LOGBACK_LOG_LEVEL:-DEBUG}" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<charset>utf-8</charset>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
</appender> -->
<appender name="STDOUT"
class="ch.qos.logback.core.rolling.RollingFileAppender">
@@ -183,6 +183,5 @@
<root>
<level value="DEBUG" />
<appender-ref ref="STDOUT" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
+24 -4
View File
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="10 seconds">
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
<!-- <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />-->
<property name="LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] \\(%F:%L\\) %-20M -%msg%n" />
<property name="PREFIX" value="${inst.Type:-ems}" />
<property name="LOG_HOME" value="/logs/eapim/${inst.Name:-devSvr00}" />
<property name="LOG_HOME" value="D:/Log/App/eapim/${inst.Name:-devSvr00}" />
<property name="BACKUP_HOME" value="${LOG_HOME}/backup/" />
<property name="LOG_LEVEL" value="${LOGBACK_LOG_LEVEL:-DEBUG}" />
@@ -113,12 +113,13 @@
<logger name="com.eactive.eai.rms.onl.dashboard" level="ERROR" />
<logger name="com.eactive.eai.rms.common.acl.user.BizDao" level="ERROR" />
<logger name="org.springframework" level="DEBUG" />
<logger name="org.hibernate" level="DEBUG" >
<logger name="org.springframework" level="INFO" />
<logger name="org.hibernate" level="INFO" >
<appender-ref ref="QUERY_APPENDER" />
<appender-ref ref="HIBERNATE_APPENDER" />
</logger>
<logger name="net.sf.ehcache" level="INFO" />
<logger name="org.quartz" level="INFO" />
<logger name="ACCESS_LOGGER" level="DEBUG" >
@@ -135,6 +136,7 @@
<!-- QUERY_APPENDER start -->
<logger name="java.sql" level="DEBUG" additivity="false">
<appender-ref ref="QUERY_APPENDER" />
<appender-ref ref="CONSOLE" />
</logger>
<logger name="com.ibatis" level="DEBUG" additivity="false">
<appender-ref ref="QUERY_APPENDER" />
@@ -159,9 +161,11 @@
</logger>
<logger name="java.sql.PreparedStatement" level="DEBUG" additivity="false">
<appender-ref ref="QUERY_APPENDER" />
<appender-ref ref="CONSOLE" /> <!-- 이 줄 추가 -->
</logger>
<logger name="java.sql.ResultSet" level="DEBUG" additivity="false">
<appender-ref ref="QUERY_APPENDER" />
<appender-ref ref="CONSOLE" /> <!-- 이 줄 추가 -->
</logger>
<logger name="com.eactive.eai.rms.common.base.SchemaIdConfiguredSqlMapTemplate" level="DEBUG" additivity="false">
<appender-ref ref="QUERY_APPENDER" />
@@ -178,6 +182,22 @@
<!-- QUERY_APPENDER end -->
<logger name="org.hibernate.SQL" level="DEBUG" additivity="false">
<appender-ref ref="HIBERNATE_APPENDER" />
<appender-ref ref="CONSOLE" />
</logger>
<!-- org.hibernate.SQL 로거 아래에 추가 -->
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="TRACE" additivity="false">
<appender-ref ref="HIBERNATE_APPENDER" />
<appender-ref ref="CONSOLE" />
</logger>
<!-- 바인딩 파라미터 값 (Hibernate 5.4 기준) -->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" additivity="false">
<appender-ref ref="HIBERNATE_APPENDER" />
<appender-ref ref="CONSOLE" />
</logger>
<root>
<level value="DEBUG" />