Merge pull request #45 from eGovFramework/main

contribution 행사 전 병합
main
eGovFrameSupport 1 year ago committed by GitHub
commit 48299c6257
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

1
.gitignore vendored

@ -5,6 +5,7 @@
files/
# Log file
*.log
log/
# BlueJ files
*.ctxt

@ -6,7 +6,7 @@
![swagger](https://img.shields.io/badge/swagger-85EA2D?style=for-the-badge&logo=swagger&logoColor=black)
![workflow](https://github.com/eGovFramework/egovframe-template-simple-backend/actions/workflows/maven.yml/badge.svg)
※ 본 프로젝트는 기존 JSP 뷰 방식에서 벗어나 BackEnd와 FrontEnd를 분리하기 위한 예시 파일로 참고만 하시길 바랍니다.
※ 본 프로젝트는 기존 JSP 뷰 방식에서 벗어나 BackEnd와 FrontEnd를 분리하기 위한 예시 파일로 참고만 하시길 바랍니다.
## 환경 설정

@ -17,9 +17,8 @@
</licenses>
<properties>
<spring.maven.artifact.version>5.3.20</spring.maven.artifact.version>
<org.egovframe.rte.version>4.1.0</org.egovframe.rte.version>
<logback.version>1.2.11</logback.version>
<spring.maven.artifact.version>5.3.27</spring.maven.artifact.version>
<org.egovframe.rte.version>4.2.0</org.egovframe.rte.version>
</properties>
<repositories>
@ -49,52 +48,41 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.0</version>
<version>2.7.12</version>
</parent>
<dependencies>
<!-- spring boot dependency start -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
@ -125,13 +113,11 @@
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!-- war 배포 시 해당 주석 제거
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
@ -142,9 +128,9 @@
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
@ -172,33 +158,46 @@
<artifactId>org.egovframe.rte.fdl.string</artifactId>
<version>${org.egovframe.rte.version}</version>
</dependency>
<dependency>
<groupId>org.egovframe.rte</groupId>
<artifactId>org.egovframe.rte.fdl.crypto</artifactId>
<version>${org.egovframe.rte.version}</version>
</dependency>
<dependency>
<groupId>org.egovframe.rte</groupId>
<artifactId>org.egovframe.rte.fdl.crypto</artifactId>
<artifactId>org.egovframe.rte.fdl.security</artifactId>
<version>${org.egovframe.rte.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
<dependency>
@ -211,12 +210,12 @@
<groupId>org.springmodules</groupId>
<artifactId>spring-modules-validation</artifactId>
<version>0.8</version>
</dependency>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>1.2.5</version>
<artifactId>taglibs-standard-impl</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
@ -234,24 +233,24 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.21</version>
<version>1.23.0</version>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.7.2</version>
<classifier>jdk8</classifier>
</dependency>
<!-- mysql driver -->
<dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<!-- oracle 10g driver -->
<!--
<dependency>
@ -320,9 +319,6 @@
<version>0.9.1</version>
</dependency>
<!--
취약점 점검 조치중 2021.12.17
-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
@ -339,7 +335,18 @@
<dependency>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
<version>71.1</version>
<version>73.2</version>
</dependency>
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>yasson</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.1.3</version>
</dependency>
</dependencies>
@ -350,25 +357,24 @@
<finalName>sht_webapp</finalName>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven3-plugin</artifactId>
<version>1.10.7</version>
<configuration>
<port>80</port>
<path>/</path>
<systemProperties>
<JAVA_OPTS>-Xms256m -Xmx768m -XX:MaxPermSize=256m</JAVA_OPTS>
</systemProperties>
<container>
<containerId>tomcat8x</containerId>
<type>embedded</type>
</container>
<configuration>
<property name="cargo.servlet.port" value="8080"/>
</configuration>
</configuration>
</plugin>
<plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<version>3.11.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
@ -377,41 +383,49 @@
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>3.0</version>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
<implementation>annotationconfiguration</implementation>
</component>
</components>
</configuration>
<dependencies>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
</plugin>
<!-- EMMA -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<version>1.0-alpha-3</version>
</plugin>
<!-- PMD manven plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.17.0</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>3.0</version>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
<implementation>annotationconfiguration</implementation>
</component>
</components>
</configuration>
<dependencies>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.7.2</version>
</dependency>
</dependencies>
</plugin>
<!-- EMMA -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<version>1.0-alpha-3</version>
</plugin>
<!-- PMD manven plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.21.0</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
@ -451,108 +465,109 @@
</dependency>
</dependencies>
</plugin>
<!-- EMMA -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
<forkMode>once</forkMode>
<reportFormat>xml</reportFormat>
<excludes>
<exclude>**/Abstract*.java</exclude>
<exclude>**/*Suite.java</exclude>
</excludes>
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<inherited>true</inherited>
</plugin>
<!-- JavaDoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
<!-- spring-boot-maven-plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<!-- EMMA -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.2</version>
<configuration>
<skipTests>true</skipTests>
<forkMode>once</forkMode>
<reportFormat>xml</reportFormat>
<excludes>
<exclude>**/Abstract*.java</exclude>
<exclude>**/*Suite.java</exclude>
</excludes>
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<inherited>true</inherited>
</plugin>
<!-- JavaDoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.5.0</version>
</plugin>
<!-- spring-boot-maven-plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
</plugins>
</build>
</plugin>
</plugins>
</build>
<reporting>
<outputDirectory>${basedir}/target/site</outputDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.3.0</version>
<reportSets>
<reportSet>
<id>sunlink</id>
<reports>
<report>javadoc</report>
</reports>
<inherited>true</inherited>
<configuration>
<links>
<link>https://docs.oracle.com/javase/8/docs/api/</link>
</links>
</configuration>
</reportSet>
</reportSets>
</plugin>
<!-- JUnit Test Results & EMMA Coverage Reporting -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<inherited>true</inherited>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>surefire-report-maven-plugin</artifactId>
<inherited>true</inherited>
<reportSets>
<reportSet>
<reports>
<report>report-only</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<!-- Generating JavaDoc Report -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<minmemory>128m</minmemory>
<maxmemory>512m</maxmemory>
<encoding>${encoding}</encoding>
<docencoding>${encoding}</docencoding>
<charset>${encoding}</charset>
</configuration>
</plugin>
<!-- Generating Java Source in HTML -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<configuration>
<inputEncoding>${encoding}</inputEncoding>
<outputEncoding>${encoding}</outputEncoding>
<linkJavadoc>true</linkJavadoc>
<javadocDir>apidocs</javadocDir>
</configuration>
</plugin>
</plugins>
</reporting>
<reporting>
<outputDirectory>${basedir}/target/site</outputDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.4.4</version>
<reportSets>
<reportSet>
<id>sunlink</id>
<reports>
<report>javadoc</report>
</reports>
<inherited>true</inherited>
<configuration>
<links>
<link>https://docs.oracle.com/javase/8/docs/api/</link>
</links>
</configuration>
</reportSet>
</reportSets>
</plugin>
<!-- JUnit Test Results & EMMA Coverage Reporting -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<inherited>true</inherited>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>surefire-report-maven-plugin</artifactId>
<inherited>true</inherited>
<reportSets>
<reportSet>
<reports>
<report>report-only</report>
</reports>
</reportSet>
</reportSets>
</plugin>
<!-- Generating JavaDoc Report -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<minmemory>128m</minmemory>
<maxmemory>512m</maxmemory>
<encoding>${encoding}</encoding>
<docencoding>${encoding}</docencoding>
<charset>${encoding}</charset>
</configuration>
</plugin>
<!-- Generating Java Source in HTML -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<configuration>
<inputEncoding>${encoding}</inputEncoding>
<outputEncoding>${encoding}</outputEncoding>
<linkJavadoc>true</linkJavadoc>
<javadocDir>apidocs</javadocDir>
</configuration>
</plugin>
</plugins>
</reporting>
</project>

@ -9,26 +9,6 @@ import org.springframework.context.annotation.Import;
import egovframework.com.config.EgovWebApplicationInitializer;
import lombok.extern.slf4j.Slf4j;
/**
*
* @author :
* @since : 2023. 8. 9.
* @version : 1.0
*
* @package : egovframework
* @filename : EgovBootApplication.java
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
* 2023. 8. 9.
* </pre>
*
*
*/
@Slf4j
@ServletComponentScan
@SpringBootApplication

@ -42,19 +42,7 @@ import lombok.extern.slf4j.Slf4j;
* @author Juergen Hoeller
* @since 1.1.5
* @see org.springframework.orm.ibatis.SqlMapClientFactoryBean#setLobHandler
*
* @version : 1.0
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
*
* </pre>
*/
@Slf4j
@SuppressWarnings("deprecation")
public class AltibaseClobStringTypeHandler extends AbstractLobTypeHandler {

@ -57,4 +57,4 @@ public class ComDefaultCodeVO implements Serializable {
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
}

@ -65,4 +65,4 @@ public class ComDefaultVO implements Serializable {
}
}
}

@ -26,14 +26,14 @@ import javax.servlet.jsp.tagext.BodyTagSupport;
public class EgovComCrossSiteHndlr extends BodyTagSupport {
public static final int HIGHEST_SPECIAL = '>';
public static char[][] specialCharactersRepresentation = new char[HIGHEST_SPECIAL + 1][];
static {
specialCharactersRepresentation['&'] = "&amp;".toCharArray();
specialCharactersRepresentation['<'] = "&lt;".toCharArray();
specialCharactersRepresentation['>'] = "&gt;".toCharArray();
specialCharactersRepresentation['"'] = "&#034;".toCharArray();
specialCharactersRepresentation['\''] = "&#039;".toCharArray();
}
public static char[][] specialCharactersRepresentation = new char[HIGHEST_SPECIAL + 1][];
static {
specialCharactersRepresentation['&'] = "&amp;".toCharArray();
specialCharactersRepresentation['<'] = "&lt;".toCharArray();
specialCharactersRepresentation['>'] = "&gt;".toCharArray();
specialCharactersRepresentation['"'] = "&#034;".toCharArray();
specialCharactersRepresentation['\''] = "&#039;".toCharArray();
}
/*
* (One almost wishes XML and JSP could support "anonymous tags," given the

@ -22,6 +22,7 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public class EgovComExcepHndlr implements ExceptionHandler {
/**
* Exception .
*/

@ -4,27 +4,6 @@ import org.egovframe.rte.fdl.cmmn.exception.handler.ExceptionHandler;
import lombok.extern.slf4j.Slf4j;
/**
*
* @author :
* @since : 2023. 8. 9.
* @version : 1.0
*
* @package : egovframework.com.cmm
* @filename : EgovComOthersExcepHndlr.java
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
* 2023. 8. 9. 2023. 8. 9.
* </pre>
*
*
*/
@Slf4j
public class EgovComOthersExcepHndlr implements ExceptionHandler {

@ -29,4 +29,4 @@ public class IncludedCompInfoVO {
private int gid;
}
}

@ -1,25 +1,5 @@
package egovframework.com.cmm;
/**
*
* @author :
* @since : 2023. 8. 9.
* @version : 1.0
*
* @package : egovframework.com.cmm
* @filename : ResponseCode.java
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
* 2023. 8. 9.
* </pre>
*
*
*/
public enum ResponseCode {
SUCCESS(200, "성공했습니다."),

@ -39,4 +39,4 @@ public class SessionVO implements Serializable {
/** 고유아이디 */
private String uniqId;
}
}

@ -20,6 +20,7 @@ package egovframework.com.cmm.annotation;
* </pre>
*/
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@ -25,27 +25,6 @@ import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
/**
*
* @author :
* @since : 2023. 8. 9.
* @version : 1.0
*
* @package : egovframework.com.cmm.filter
* @filename : HTMLTagFilter.java
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
* 2023. 8. 9.
* </pre>
*
*
*/
public class HTMLTagFilter implements Filter{
@SuppressWarnings("unused")

@ -18,27 +18,6 @@ package egovframework.com.cmm.filter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
/**
*
* @author :
* @since : 2023. 8. 9.
* @version : 1.0
*
* @package : egovframework.com.cmm.filter
* @filename : HTMLTagFilterRequestWrapper.java
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
* 2023. 8. 9.
* </pre>
*
*
*/
public class HTMLTagFilterRequestWrapper extends HttpServletRequestWrapper {
public HTMLTagFilterRequestWrapper(HttpServletRequest request) {

@ -67,11 +67,11 @@ public class SimpleCORSFilter implements Filter {
chain.doFilter(req, res);
}
private static boolean isValidOriginHeader(String originHeader) {
return originHeader != null && !originHeader.isEmpty();
}
private static void setCorsHeaders(HttpServletResponse response, String originHeader) {
response.setHeader("Access-Control-Allow-Origin", originHeader);
@ -82,7 +82,7 @@ public class SimpleCORSFilter implements Filter {
response.setHeader("Access-Control-Allow-Credentials", "true");
// Access-Control-Allow-Methods
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PATCH, PUT, DELETE");
// Access-Control-Allow-Headers
response.setHeader("Access-Control-Allow-Headers",

@ -7,27 +7,6 @@ import org.aspectj.lang.annotation.Pointcut;
import org.egovframe.rte.fdl.cmmn.aspect.ExceptionTransfer;
/**
*
* @author :
* @since : 2023. 8. 9.
* @version : 1.0
*
* @package : egovframework.com.cmm.interceptor
* @filename : AopExceptionTransfer.java
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
* 2023. 8. 9.
* </pre>
*
*
*/
@Aspect
public class AopExceptionTransfer {
private ExceptionTransfer exceptionTransfer;

@ -4,8 +4,6 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.ModelAndViewDefiningException;
import org.springframework.web.servlet.mvc.WebContentInterceptor;
@ -55,4 +53,4 @@ public class AuthenticInterceptor extends WebContentInterceptor {
ModelAndView modelAndView = new ModelAndView("redirect:http://localhost:3000/login");
throw new ModelAndViewDefiningException(modelAndView);
}
}
}

@ -42,4 +42,4 @@ public class CustomAuthenticInterceptor extends HandlerInterceptorAdapter {
return true;
}
}
}

@ -67,4 +67,4 @@ public class CmmnDetailCode implements Serializable {
*/
private String lastUpdusrId = "";
}
}

@ -5,6 +5,8 @@ import java.util.Map;
import egovframework.com.cmm.ComDefaultCodeVO;
/**
*
*

@ -2,26 +2,6 @@ package egovframework.com.cmm.service;
import java.util.List;
/**
*
* @author :
* @since : 2023. 8. 9.
* @version : 1.0
*
* @package : egovframework.com.cmm.service
* @filename : EgovUserDetailsService.java
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
* 2023. 8. 9.
* </pre>
*
*
*/
public interface EgovUserDetailsService {
/**

@ -7,27 +7,6 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
/**
*
* @author :
* @since : 2023. 8. 9.
* @version : 1.0
*
* @package : egovframework.com.cmm.service
* @filename : ResultVO.java
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
* 2023. 8. 9.
* </pre>
*
*
*/
@Schema(description = "응답 객체 VO")
@Getter
@Setter

@ -3,8 +3,8 @@ package egovframework.com.cmm.service.impl;
import java.util.List;
import egovframework.com.cmm.service.EgovUserDetailsService;
import egovframework.com.cmm.util.EgovUserDetailsHelper;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
/**

@ -8,26 +8,6 @@ import org.springframework.beans.propertyeditors.StringTrimmerEditor;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.support.WebBindingInitializer;
/**
*
* @author :
* @since : 2023. 8. 9.
* @version : 1.0
*
* @package : egovframework.com.cmm.web
* @filename : EgovBindingInitializer.java
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
* 2023. 8. 9.
* </pre>
*
*
*/
public class EgovBindingInitializer implements WebBindingInitializer {
@Override

@ -26,6 +26,11 @@ import egovframework.com.cmm.service.EgovFileMngService;
import egovframework.com.cmm.service.EgovProperties;
import egovframework.com.cmm.service.FileVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.Explode;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.enums.ParameterStyle;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -144,8 +149,17 @@ public class EgovFileDownloadController {
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "성공")
})
@GetMapping(value = "/cmm/fms/FileDown.do")
public void cvplFileDownload(@RequestParam Map<String, Object> commandMap, HttpServletRequest request, HttpServletResponse response) throws Exception {
@GetMapping(value = "/file")
public void cvplFileDownload(
@Parameter(
in = ParameterIn.QUERY,
schema = @Schema(type = "object",
additionalProperties = Schema.AdditionalPropertiesValue.TRUE,
ref = "#/components/schemas/fileMap"),
style = ParameterStyle.FORM,
explode = Explode.TRUE
) @RequestParam Map<String, Object> commandMap,
HttpServletRequest request, HttpServletResponse response) throws Exception {
// 암호화된 atchFileId 를 복호화 (2022.12.06 추가) - 파일아이디가 유추 불가능하도록 조치
String param_atchFileId = (String) commandMap.get("atchFileId");

@ -6,18 +6,17 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.egovframe.rte.fdl.cryptography.EgovCryptoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import egovframework.com.cmm.ResponseCode;
import egovframework.com.cmm.service.EgovFileMngService;
import egovframework.com.cmm.service.FileVO;
import egovframework.com.cmm.service.ResultVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
/**
@ -59,12 +58,13 @@ public class EgovFileMngApiController {
@Operation(
summary = "파일 삭제",
description = "첨부파일에 대한 삭제를 처리",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovFileMngApiController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "성공")
})
@PostMapping(value ="/cmm/fms/deleteFileInfsAPI.do")
@PostMapping(value ="/file")
public ResultVO deleteFileInf(HttpServletRequest request, @RequestBody FileVO fileVO) throws Exception {
ResultVO resultVO = new ResultVO();

@ -23,6 +23,11 @@ import egovframework.com.cmm.SessionVO;
import egovframework.com.cmm.service.EgovFileMngService;
import egovframework.com.cmm.service.FileVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.Explode;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.enums.ParameterStyle;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -79,8 +84,18 @@ public class EgovImageProcessController extends HttpServlet {
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "성공")
})
@GetMapping("/cmm/fms/getImage.do")
public void getImageInf(SessionVO sessionVO, ModelMap model, @RequestParam Map<String, Object> commandMap,
@GetMapping("/image")
public void getImageInf(
@Parameter(hidden = true)SessionVO sessionVO,
ModelMap model,
@Parameter(
in = ParameterIn.QUERY,
schema = @Schema(type = "object",
additionalProperties = Schema.AdditionalPropertiesValue.TRUE,
ref = "#/components/schemas/fileMap"),
style = ParameterStyle.FORM,
explode = Explode.TRUE
) @RequestParam Map<String, Object> commandMap,
HttpServletResponse response) throws Exception {
// 암호화된 atchFileId 를 복호화. (2022.12.06 추가) - 파일아이디가 유추 불가능하도록 조치

@ -5,26 +5,6 @@ import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.annotation.PropertySources;
/**
*
* @author :
* @since : 2023. 8. 9.
* @version : 1.0
*
* @package : egovframework.com.config
* @filename : EgovConfigApp.java
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
* 2023. 8. 9.
* </pre>
*
*
*/
@Configuration
@Import({
EgovConfigAppAspect.class,

@ -122,8 +122,8 @@ public class EgovConfigAppCommon {
public CommonsMultipartResolver springRegularCommonsMultipartResolver() {
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
commonsMultipartResolver.setMaxUploadSize(100000000);
commonsMultipartResolver.setSupportedMethods("POST","PUT");
commonsMultipartResolver.setMaxInMemorySize(100000000);
commonsMultipartResolver.setSupportedMethods("POST","PUT");
return commonsMultipartResolver;
}
@ -134,9 +134,9 @@ public class EgovConfigAppCommon {
@Bean
public EgovMultipartResolver localMultiCommonsMultipartResolver() {
EgovMultipartResolver egovMultipartResolver = new EgovMultipartResolver();
egovMultipartResolver.setSupportedMethods("POST","PUT");
egovMultipartResolver.setMaxUploadSize(100000000);
egovMultipartResolver.setMaxInMemorySize(100000000);
egovMultipartResolver.setSupportedMethods("POST","PUT");
return egovMultipartResolver;
}

@ -29,7 +29,7 @@ import org.egovframe.rte.fdl.property.impl.EgovPropertyServiceImpl;
@Configuration
public class EgovConfigAppProperties {
@Value("${Globals.fileStorePath}")
private String fileStorePath;
@ -42,8 +42,8 @@ public class EgovConfigAppProperties {
private String pageSize;
@Value("${Globals.posblAtchFileSize}")
private String posblAtchFileSize;
@Bean(destroyMethod = "destroy")
public EgovPropertyServiceImpl propertiesService() {
EgovPropertyServiceImpl egovPropertyServiceImpl = new EgovPropertyServiceImpl();

@ -6,29 +6,9 @@ import javax.servlet.ServletContextListener;
import egovframework.com.cmm.service.EgovProperties;
import lombok.extern.slf4j.Slf4j;
/**
*
* @author :
* @since : 2023. 8. 9.
* @version : 1.0
*
* @package : egovframework.com.config
* @filename : EgovWebServletContextListener.java
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
* 2023. 8. 9.
* </pre>
*
*
*/
@Slf4j
public class EgovWebServletContextListener implements ServletContextListener {
public EgovWebServletContextListener() {
setEgovProfileSetting();
}

@ -0,0 +1,82 @@
package egovframework.com.config;
import java.util.Map;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.media.StringSchema;
import io.swagger.v3.oas.models.security.SecurityScheme;
@Configuration
public class OpenApiConfig {
private static final String API_NAME = "Simple Homepage Project API";
private static final String API_VERSION = "4.2.0";
private static final String API_DESCRIPTION = "심플홈페이지 프로젝트 명세서";
@Bean
public OpenAPI api() {
Schema<?> searchBbsMap = new Schema<Map<String, String>>()
.addProperty("bbsId", new StringSchema().example("BBSMSTR_AAAAAAAAAAAA"))
.addProperty("pageIndex", new StringSchema().example("1"))
.addProperty("searchCnd", new StringSchema().example("0"))
.addProperty("searchWrd", new StringSchema().example(""));
Schema<?> searchMap = new Schema<Map<String, String>>()
.addProperty("pageIndex", new StringSchema().example("1"))
.addProperty("searchCnd", new StringSchema().example("0"))
.addProperty("searchWrd", new StringSchema().example(""));
Schema<?> fileMap = new Schema<Map<String, String>>()
.addProperty("atchFileId", new StringSchema().example(""))
.addProperty("fileSn", new StringSchema().example("0"));
Schema<?> searchSchdulMap = new Schema<Map<String, String>>()
.addProperty("schdulSe", new StringSchema().example(""))
.addProperty("year", new StringSchema().example("2023"))
.addProperty("month", new StringSchema().example("0"))
.addProperty("date", new StringSchema().example("1"));
Schema<?> searchSchdulWeekMap = new Schema<Map<String, String>>()
.addProperty("schdulSe", new StringSchema().example(""))
.addProperty("year", new StringSchema().example("2023"))
.addProperty("month", new StringSchema().example("0"))
.addProperty("date", new StringSchema().example("1"))
.addProperty("weekDay", new StringSchema().example("0"))
.addProperty("weekOfMonth", new StringSchema().example("1"));
Schema<?> passwordMap = new Schema<Map<String, String>>()
.addProperty("old_password", new StringSchema().example(""))
.addProperty("new_password", new StringSchema().example(""));
return new OpenAPI()
.info(new Info().title(API_NAME)
.description(API_DESCRIPTION)
.version(API_VERSION)
.contact(new Contact().name("eGovFrame").url("https://www.egovframe.go.kr/").email("egovframesupport@gmail.com"))
.license(new License().name("Apache 2.0").url("https://www.apache.org/licenses/LICENSE-2.0")))
.components(new Components()
.addSecuritySchemes("Authorization", new SecurityScheme()
.name("Authorization")
.type(SecurityScheme.Type.APIKEY)
.in(SecurityScheme.In.HEADER))
.addSchemas("searchBbsMap", searchBbsMap)
.addSchemas("searchMap", searchMap)
.addSchemas("fileMap", fileMap)
.addSchemas("searchSchdulMap", searchSchdulMap)
.addSchemas("searchSchdulWeekMap", searchSchdulWeekMap)
.addSchemas("passwordMap", passwordMap))
.externalDocs(new ExternalDocumentation()
.description("Wiki Documentation")
.url("https://github.com/eGovFramework/egovframe-template-simple-backend/wiki"));
}
}

@ -1,91 +0,0 @@
package egovframework.com.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
//accessToken 입력 화면과 처리 라이브러리 추가(아래4줄)
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.service.*;
import java.util.Arrays;
import java.util.List;
/**
*
* @author :
* @since : 2023. 8. 9.
* @version : 1.0
*
* @package : egovframework.com.config
* @filename : SwaggerConfig.java
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
* 2023. 8. 9.
* </pre>
*
*
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
private static final String API_NAME = "Simple Homepage Project API";
private static final String API_VERSION = "4.1.0";
private static final String API_DESCRIPTION = "심플홈페이지 프로젝트 명세서";
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("egovframework"))
.paths(PathSelectors.any())
.build()
.securityContexts(Arrays.asList(securityContext())) // 스웨그에서 컨텐츠 url 접근 시 인증처리를 위한 보안 규칙 호출
.securitySchemes(Arrays.asList(apiKey())); // 스웨그 화면상단에 토큰값 입력하는 창 구조 호출, 여기에 배열로 추가 apiKey메서드를 입력가능
}
// Authorization창에 Token값 입력 화면 구조
private ApiKey apiKey() {
return new ApiKey("Authorization", "Authorization", "header");
}
// 스웨그에서 컨텐츠 url 접근 시 인증처리를 위한 보안 규칙 추가(아래)
private SecurityContext securityContext() {
return springfox
.documentation
.spi.service
.contexts
.SecurityContext
.builder()
.securityReferences(defaultAuth()).operationSelector(operationContext -> true).build();
}
// 토큰 인증영역 배열리스트을 반환하는 매서드
List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); // 인증영역 객체 생성
AuthorizationScope[] authorizationScopeArray = new AuthorizationScope[1]; // 빈 배열 인증영역 객체 생성
authorizationScopeArray[0] = authorizationScope; // 배열변수에 인증영역 객체 등록
return Arrays.asList(new SecurityReference("Authorization", authorizationScopeArray)); // 여기에 배열로 추가 SecurityReference객체를 입력가능
}
public ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title(API_NAME)
.version(API_VERSION)
.description(API_DESCRIPTION)
.contact(new Contact("eGovFrame", "https://www.egovframe.go.kr/", "egovframesupport@gmail.com"))
.build();
}
}

@ -17,26 +17,6 @@ import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.extern.slf4j.Slf4j;
/**
*
* @author :
* @since : 2023. 8. 9.
* @version : 1.0
*
* @package : egovframework.com.jwt
* @filename : EgovJwtTokenUtil.java
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
* 2023. 8. 9.
* </pre>
*
*
*/
//security 관련 제외한 jwt util 클래스
@Slf4j
@Component

@ -1,20 +1,20 @@
package egovframework.com.jwt;
import com.fasterxml.jackson.databind.ObjectMapper;
import egovframework.com.cmm.EgovWebUtil;
import egovframework.com.cmm.LoginVO;
import egovframework.com.cmm.ResponseCode;
import egovframework.com.cmm.service.ResultVO;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import com.fasterxml.jackson.databind.ObjectMapper;
import egovframework.com.cmm.ResponseCode;
import egovframework.com.cmm.service.ResultVO;
/**
* fileName : JwtAuthenticationEntryPoint

@ -1,11 +1,13 @@
package egovframework.com.jwt;
import egovframework.com.cmm.LoginVO;
import egovframework.let.utl.fcc.service.EgovStringUtil;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.MalformedJwtException;
import io.jsonwebtoken.SignatureException;
import io.jsonwebtoken.UnsupportedJwtException;
import java.io.IOException;
import java.util.Arrays;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
@ -13,13 +15,12 @@ import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import egovframework.com.cmm.LoginVO;
import egovframework.let.utl.fcc.service.EgovStringUtil;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.MalformedJwtException;
import io.jsonwebtoken.SignatureException;
import io.jsonwebtoken.UnsupportedJwtException;
/**
* fileName : JwtAuthenticationFilter

@ -29,34 +29,34 @@ import java.util.Arrays;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
//Http Methpd : Get 인증예외 List
//Http Methpd : Get 인증예외 List
private String[] AUTH_GET_WHITELIST = {
"/mainPage", //메인 화면 리스트 조회
"/board", // 게시판 목록조회
"/board/{bbsId}/{nttId}", // 게시물 상세조회
"/boardFileAtch/{bbsId}", //게시판 파일 첨부가능 여부 조회
"/schedule/daily", //일별 일정 조회
"/schedule/week", //주간 일정 조회
"/schedule/{schdulId}", //일정 상세조회
"/image", //갤러리 이미지보기
};
// 인증 예외 List
private String[] AUTH_WHITELIST = {
"/",
"/",
"/login/**",
"/auth/login-jwt",//JWT 로그인
"/auth/login",//일반 로그인
"/cmm/main/**.do", // 메인페이지
"/cmm/fms/FileDown.do", //파일 다운로드
"/cmm/fms/getImage.do", //갤러리 이미지보기
"/cop/bbs/selectUserBBSMasterInfAPI.do", //게시판 마스터 상세 조회
"/cop/bbs/selectBoardListAPI.do", //게시판 목록조회
"/cop/bbs/selectBoardArticleAPI.do", //게시물 상세조회
/* swagger v2 */
"/v2/api-docs",
"/file", //파일 다운로드
/* swagger*/
"/v3/api-docs/**",
"/swagger-resources",
"/swagger-resources/**",
"/swagger-ui.html",
"/swagger-ui/**"
"/swagger-ui/**",
};
private static final String[] ORIGINS_WHITELIST = {
"http://localhost:3000",
@ -73,7 +73,7 @@ public class SecurityConfig {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOriginPatterns(Arrays.asList("*"));
configuration.setAllowedMethods(Arrays.asList("HEAD","POST","GET","DELETE","PUT"));
configuration.setAllowedMethods(Arrays.asList("HEAD","POST","GET","DELETE","PUT","PATCH"));
configuration.setAllowedOrigins(Arrays.asList(ORIGINS_WHITELIST));
configuration.setAllowedHeaders(Arrays.asList("*"));
configuration.setAllowCredentials(true);

@ -7,18 +7,18 @@ import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.egovframe.rte.fdl.cmmn.exception.EgovBizException;
import org.egovframe.rte.fdl.property.EgovPropertyService;
import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springmodules.validation.commons.DefaultBeanValidator;
@ -31,8 +31,14 @@ import egovframework.com.cmm.service.ResultVO;
import egovframework.let.cop.bbs.service.BoardMasterVO;
import egovframework.let.cop.bbs.service.EgovBBSAttributeManageService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.Explode;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.enums.ParameterStyle;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
/**
@ -89,19 +95,31 @@ public class EgovBBSAttributeManageApiController {
@Operation(
summary = "게시판 마스터 조회",
description = "게시판 마스터 목록을 조회",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovBBSAttributeManageApiController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "조회 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@PostMapping(value ="/cop/bbs/selectBBSMasterInfsAPI.do")
@GetMapping(value = "/bbsMaster")
public ResultVO selectBBSMasterInfs(HttpServletRequest request,
@RequestBody BoardMasterVO boardMasterVO)
@Parameter(
in = ParameterIn.QUERY,
schema = @Schema(type = "object",
additionalProperties = Schema.AdditionalPropertiesValue.TRUE,
ref = "#/components/schemas/searchMap"),
style = ParameterStyle.FORM,
explode = Explode.TRUE
) @RequestParam Map<String, Object> commandMap)
throws Exception {
ResultVO resultVO = new ResultVO();
BoardMasterVO boardMasterVO = new BoardMasterVO();
boardMasterVO.setSearchCnd((String)commandMap.get("searchCnd"));
boardMasterVO.setSearchWrd((String)commandMap.get("searchWrd"));
boardMasterVO.setPageUnit(propertyService.getInt("Globals.pageUnit"));
boardMasterVO.setPageSize(propertyService.getInt("Globals.pageSize"));
@ -140,17 +158,23 @@ public class EgovBBSAttributeManageApiController {
@Operation(
summary = "게시판 마스터 상세 조회",
description = "게시판 마스터 상세내용을 조회",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovBBSAttributeManageApiController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "조회 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@PostMapping(value ="/cop/bbs/selectBBSMasterInfAPI.do")
@GetMapping(value ="/bbsMaster/{bbsId}")
public ResultVO selectBBSMasterInf(HttpServletRequest request,
@RequestBody BoardMasterVO searchVO)
@Parameter(name = "bbsId", description = "게시판 Id", in = ParameterIn.PATH, example="BBSMSTR_AAAAAAAAAAAA")
@PathVariable("bbsId") String bbsId)
throws Exception {
ResultVO resultVO = new ResultVO();
BoardMasterVO searchVO = new BoardMasterVO();
searchVO.setBbsId(bbsId);
Map<String, Object> resultMap = new HashMap<String, Object>();
BoardMasterVO vo = bbsAttrbService.selectBBSMasterInf(searchVO);
@ -176,6 +200,7 @@ public class EgovBBSAttributeManageApiController {
@Operation(
summary = "게시판 마스터 등록",
description = "신규 게시판 마스터 정보를 등록",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovBBSAttributeManageApiController"}
)
@ApiResponses(value = {
@ -183,11 +208,11 @@ public class EgovBBSAttributeManageApiController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님"),
@ApiResponse(responseCode = "900", description = "입력값 무결성 오류")
})
@PostMapping(value ="/cop/bbs/insertBBSMasterInfAPI.do")
@PostMapping(value ="/bbsMaster")
public ResultVO insertBBSMasterInf(HttpServletRequest request,
BoardMasterVO boardMasterVO,
BindingResult bindingResult,
@AuthenticationPrincipal LoginVO loginVO
@Parameter(hidden = true) @AuthenticationPrincipal LoginVO loginVO
)
throws Exception {
ResultVO resultVO = new ResultVO();
@ -244,6 +269,7 @@ public class EgovBBSAttributeManageApiController {
@Operation(
summary = "게시판 마스터 수정",
description = "게시판 마스터 정보를 수정",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovBBSAttributeManageApiController"}
)
@ApiResponses(value = {
@ -251,13 +277,14 @@ public class EgovBBSAttributeManageApiController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님"),
@ApiResponse(responseCode = "900", description = "입력값 무결성 오류")
})
@PutMapping(value ="/cop/bbs/updateBBSMasterInfAPI/{bbsId}.do")
@PutMapping(value ="/bbsMaster/{bbsId}")
public ResultVO updateBBSMasterInf(HttpServletRequest request,
@PathVariable("bbsId") String bbsId,
@RequestBody BoardMasterVO boardMasterVO,
BindingResult bindingResult,
@AuthenticationPrincipal LoginVO loginVO
) throws Exception {
@Parameter(name = "bbsId", description = "게시판 Id", in = ParameterIn.PATH, example="BBSMSTR_AAAAAAAAAAAA")
@PathVariable("bbsId") String bbsId,
@RequestBody BoardMasterVO boardMasterVO,
BindingResult bindingResult,
@Parameter(hidden = true) @AuthenticationPrincipal LoginVO loginVO
) throws Exception {
ResultVO resultVO = new ResultVO();
Map<String, Object> resultMap = new HashMap<String, Object>();
@ -297,20 +324,26 @@ public class EgovBBSAttributeManageApiController {
@Operation(
summary = "게시판 마스터 삭제",
description = "게시판 마스터 정보를 삭제",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovBBSAttributeManageApiController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "삭제 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@PutMapping(value ="/cop/bbs/deleteBBSMasterInfAPI/{bbsId}.do")
@PatchMapping(value ="/bbsMaster/{bbsId}")
public ResultVO deleteBBSMasterInf(HttpServletRequest request,
@AuthenticationPrincipal LoginVO loginVO,
@PathVariable("bbsId") String bbsId,
@RequestBody BoardMasterVO boardMasterVO) throws Exception {
ResultVO resultVO = new ResultVO();
@Parameter(hidden = true) @AuthenticationPrincipal LoginVO loginVO,
@Parameter(name = "bbsId", description = "게시판 Id", in = ParameterIn.PATH, example="BBSMSTR_AAAAAAAAAAAA")
@PathVariable("bbsId") String bbsId
) throws Exception {
ResultVO resultVO = new ResultVO();
BoardMasterVO boardMasterVO = new BoardMasterVO();
boardMasterVO.setLastUpdusrId(loginVO.getUniqId());
boardMasterVO.setBbsId(bbsId);
bbsAttrbService.deleteBBSMasterInf(boardMasterVO);
resultVO.setResultCode(ResponseCode.SUCCESS.getCode());

@ -12,13 +12,14 @@ import org.egovframe.rte.fdl.cryptography.EgovCryptoService;
import org.egovframe.rte.fdl.property.EgovPropertyService;
import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
@ -38,8 +39,14 @@ import egovframework.let.cop.bbs.service.EgovBBSAttributeManageService;
import egovframework.let.cop.bbs.service.EgovBBSManageService;
import egovframework.let.utl.sim.service.EgovFileScrty;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.Explode;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.enums.ParameterStyle;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
/**
@ -115,23 +122,36 @@ public class EgovBBSManageApiController {
* @throws Exception
*/
@Operation(
summary = "게시판 마스터 상세 조회",
description = "게시판 마스터 상세내용을 조회 (파일 첨부가능 여부 조회용)",
summary = "게시판 파일 첨부 관련 정보 조회",
description = "게시판의 파일 첨부가능 여부 및 첨부가능 파일 수 조회",
tags = {"EgovBBSManageApiController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "조회 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@PostMapping(value = "/cop/bbs/selectUserBBSMasterInfAPI.do", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResultVO selectUserBBSMasterInf(@RequestBody BoardMasterVO searchVO)
@GetMapping(value = "/boardFileAtch/{bbsId}")
public ResultVO selectUserBBSMasterInf(
@Parameter(name = "bbsId", description = "게시판 Id", in = ParameterIn.PATH, example="BBSMSTR_AAAAAAAAAAAA")
@PathVariable("bbsId") String bbsId)
throws Exception {
ResultVO resultVO = new ResultVO();
Map<String, Object> resultMap = new HashMap<String, Object>();
BoardMasterVO searchVO = new BoardMasterVO();
searchVO.setBbsId(bbsId);
BoardMasterVO master = bbsAttrbService.selectBBSMasterInf(searchVO);
resultMap.put("brdMstrVO", master);
// 파일 첨부 외의 다른 정보를 전달하지 않기 위해 신규 객체 생성
BoardMasterVO masterFileAtchInfo = new BoardMasterVO();
masterFileAtchInfo.setFileAtchPosblAt(master.getFileAtchPosblAt());
masterFileAtchInfo.setPosblAtchFileNumber(master.getPosblAtchFileNumber());
masterFileAtchInfo.setPosblAtchFileSize(master.getPosblAtchFileSize());
resultMap.put("brdMstrVO", masterFileAtchInfo);
resultVO.setResult(resultMap);
resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
resultVO.setResultMessage(ResponseCode.SUCCESS.getMessage());
@ -155,10 +175,24 @@ public class EgovBBSManageApiController {
@ApiResponse(responseCode = "200", description = "조회 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@PostMapping(value = "/cop/bbs/selectBoardListAPI.do", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResultVO selectBoardArticles(@RequestBody BoardVO boardVO, @AuthenticationPrincipal LoginVO user)
@GetMapping(value = "/board")
public ResultVO selectBoardArticles(
@Parameter(
in = ParameterIn.QUERY,
schema = @Schema(type = "object",
additionalProperties = Schema.AdditionalPropertiesValue.TRUE,
ref = "#/components/schemas/searchBbsMap"),
style = ParameterStyle.FORM,
explode = Explode.TRUE
) @RequestParam Map<String, Object> commandMap,
@Parameter(hidden = true) @AuthenticationPrincipal LoginVO user)
throws Exception {
ResultVO resultVO = new ResultVO();
BoardVO boardVO = new BoardVO();
boardVO.setBbsId((String)commandMap.get("bbsId"));
boardVO.setSearchCnd((String)commandMap.get("searchCnd"));
boardVO.setSearchWrd((String)commandMap.get("searchWrd"));
BoardMasterVO vo = new BoardMasterVO();
vo.setBbsId(boardVO.getBbsId());
@ -208,11 +242,20 @@ public class EgovBBSManageApiController {
@ApiResponse(responseCode = "200", description = "조회 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@PostMapping(value = "/cop/bbs/selectBoardArticleAPI.do")
public ResultVO selectBoardArticle(@RequestBody BoardVO boardVO,@AuthenticationPrincipal LoginVO user)
@GetMapping(value = "/board/{bbsId}/{nttId}")
public ResultVO selectBoardArticle(
@Parameter(name = "bbsId", description = "게시판 Id", in = ParameterIn.PATH, example="BBSMSTR_AAAAAAAAAAAA")
@PathVariable("bbsId") String bbsId,
@Parameter(name = "nttId", description = "게시글 Id", in = ParameterIn.PATH, example="1")
@PathVariable("nttId") String nttId,
@Parameter(hidden = true) @AuthenticationPrincipal LoginVO user)
throws Exception {
ResultVO resultVO = new ResultVO();
BoardVO boardVO = new BoardVO();
boardVO.setBbsId(bbsId);
boardVO.setNttId(Long.parseLong(nttId));
// 조회수 증가 여부 지정
boardVO.setPlusCount(true);
@ -281,6 +324,7 @@ public class EgovBBSManageApiController {
@Operation(
summary = "게시물 수정",
description = "게시물에 대한 내용을 수정",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovBBSManageApiController"}
)
@ApiResponses(value = {
@ -288,9 +332,11 @@ public class EgovBBSManageApiController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님"),
@ApiResponse(responseCode = "900", description = "입력값 무결성 오류")
})
@PostMapping(value ="/cop/bbs/updateBoardArticleAPI.do")
@PutMapping(value ="/board/{nttId}")
public ResultVO updateBoardArticle(final MultipartHttpServletRequest multiRequest,
BoardVO boardVO,
@Parameter(name = "nttId", description = "게시글 Id", in = ParameterIn.PATH, example="1")
@PathVariable("nttId") String nttId,
BindingResult bindingResult,
HttpServletRequest request)
throws Exception {
@ -326,6 +372,7 @@ public class EgovBBSManageApiController {
}
}
boardVO.setNttId(Long.parseLong(nttId));
boardVO.setLastUpdusrId(user.getUniqId());
boardVO.setNtcrNm(""); // dummy 오류 수정 (익명이 아닌 경우 validator 처리를 위해 dummy로 지정됨)
boardVO.setPassword(EgovFileScrty.encryptPassword("", user.getUniqId())); // dummy 오류 수정 (익명이 아닌 경우 validator 처리를 위해 dummy로 지정됨)
@ -352,6 +399,7 @@ public class EgovBBSManageApiController {
@Operation(
summary = "게시물 등록",
description = "게시물을 등록",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovBBSManageApiController"}
)
@ApiResponses(value = {
@ -359,7 +407,7 @@ public class EgovBBSManageApiController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님"),
@ApiResponse(responseCode = "900", description = "입력값 무결성 오류")
})
@PostMapping(value ="/cop/bbs/insertBoardArticleAPI.do")
@PostMapping(value ="/board")
public ResultVO insertBoardArticle(final MultipartHttpServletRequest multiRequest,
BoardVO boardVO,
BindingResult bindingResult,
@ -415,6 +463,7 @@ public class EgovBBSManageApiController {
@Operation(
summary = "게시물 답변 등록",
description = "게시물에 대한 답변을 등록",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovBBSManageApiController"}
)
@ApiResponses(value = {
@ -422,7 +471,7 @@ public class EgovBBSManageApiController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님"),
@ApiResponse(responseCode = "900", description = "입력값 무결성 오류")
})
@PostMapping(value ="/cop/bbs/replyBoardArticleAPI.do")
@PostMapping(value ="/boardReply")
public ResultVO replyBoardArticle(final MultipartHttpServletRequest multiRequest,
BoardVO boardVO,
BindingResult bindingResult,
@ -483,21 +532,27 @@ public class EgovBBSManageApiController {
@Operation(
summary = "게시물 삭제",
description = "게시물에 대한 내용을 삭제",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovBBSManageApiController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "삭제 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@PutMapping(value = "/cop/bbs/deleteBoardArticleAPI/{nttId}.do")
public ResultVO deleteBoardArticle(@RequestBody BoardVO boardVO,
@PatchMapping(value = "/board/{bbsId}/{nttId}")
public ResultVO deleteBoardArticle(
@Parameter(name = "bbsId", description = "게시판 Id", in = ParameterIn.PATH, example="BBSMSTR_AAAAAAAAAAAA")
@PathVariable("bbsId") String bbsId,
@Parameter(name = "nttId", description = "게시글 Id", in = ParameterIn.PATH, example="1")
@PathVariable("nttId") String nttId,
@AuthenticationPrincipal LoginVO user,
@Parameter(hidden = true) @AuthenticationPrincipal LoginVO user,
HttpServletRequest request)
throws Exception {
ResultVO resultVO = new ResultVO();
BoardVO boardVO = new BoardVO();
boardVO.setBbsId(bbsId);
boardVO.setNttId(Long.parseLong(nttId));
boardVO.setLastUpdusrId(user.getUniqId());

@ -110,4 +110,4 @@ public class UserInfVO implements Serializable {
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}
}

@ -6,16 +6,17 @@ import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.egovframe.rte.fdl.cmmn.exception.EgovBizException;
import org.egovframe.rte.fdl.property.EgovPropertyService;
import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springmodules.validation.commons.DefaultBeanValidator;
@ -28,8 +29,14 @@ import egovframework.let.cop.bbs.service.EgovBBSAttributeManageService;
import egovframework.let.cop.com.service.BoardUseInfVO;
import egovframework.let.cop.com.service.EgovBBSUseInfoManageService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.Explode;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.enums.ParameterStyle;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
/**
@ -85,19 +92,29 @@ public class EgovBBSUseInfoManageApiController {
@Operation(
summary = "게시판 사용정보 목록 조회",
description = "게시판 사용정보 목록을 조회",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovBBSUseInfoManageApiController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "조회 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@PostMapping(value ="/cop/com/selectBBSUseInfsAPI.do")
@GetMapping(value ="/bbsUseInf")
public ResultVO selectBBSUseInfs(HttpServletRequest request,
@RequestBody BoardUseInfVO bdUseVO) throws Exception {
@Parameter(
in = ParameterIn.QUERY,
schema = @Schema(type = "object",
additionalProperties = Schema.AdditionalPropertiesValue.TRUE,
ref = "#/components/schemas/searchMap"),
style = ParameterStyle.FORM,
explode = Explode.TRUE
) @RequestParam Map<String, Object> commandMap) throws Exception {
ResultVO resultVO = new ResultVO();
BoardUseInfVO bdUseVO = new BoardUseInfVO();
Map<String, Object> resultMap = new HashMap<String, Object>();
bdUseVO.setSearchWrd((String)commandMap.get("searchWrd"));
bdUseVO.setPageUnit(propertyService.getInt("Globals.pageUnit"));
bdUseVO.setPageSize(propertyService.getInt("Globals.pageSize"));
@ -129,24 +146,25 @@ public class EgovBBSUseInfoManageApiController {
}
/**
* .
* @param boardMasterVO
*
* @return
* @throws Exception
*/
@Operation(
summary = "미사용 게시판 속성정보 목록 조회",
description = "사용중이지 않은 게시판 속성 정보의 목록을 조회",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovBBSUseInfoManageApiController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "조회 성공")
})
@PostMapping(value ="/cop/com/selectNotUsedBdMstrList.do")
public ResultVO selectNotUsedBdMstrList(
BoardMasterVO boardMasterVO) throws Exception {
@GetMapping(value ="/notUsedBbsMaster")
public ResultVO selectNotUsedBdMstrList() throws Exception {
ResultVO resultVO = new ResultVO();
BoardMasterVO boardMasterVO = new BoardMasterVO();
boardMasterVO.setFirstIndex(0);
Map<String, Object> resultMap = bbsAttrbService.selectNotUsedBdMstrList(boardMasterVO);
@ -168,27 +186,35 @@ public class EgovBBSUseInfoManageApiController {
@Operation(
summary = "게시판 사용정보 상세 조회",
description = "게시판 사용정보에 대한 상세정보를 조회",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovBBSUseInfoManageApiController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "조회 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@PostMapping(value ="/cop/com/selectBBSUseInfAPI.do")
public ResultVO selectBBSUseInf(HttpServletRequest request,
@RequestBody BoardUseInfVO bdUseVO) throws Exception {
@GetMapping(value ="/bbsUseInf/{trgetId}/{bbsId}")
public ResultVO selectBBSUseInf(HttpServletRequest request,
@Parameter(name = "trgetId", description = "대상시스템 Id", in = ParameterIn.PATH, example="SYSTEM_DEFAULT_BOARD")
@PathVariable("trgetId") String trgetId,
@Parameter(name = "bbsId", description = "게시판 Id", in = ParameterIn.PATH, example="BBSMSTR_AAAAAAAAAAAA")
@PathVariable("bbsId") String bbsId
)throws Exception {
ResultVO resultVO = new ResultVO();
BoardUseInfVO bdUseVO = new BoardUseInfVO();
Map<String, Object> resultMap = new HashMap<String, Object>();
bdUseVO.setBbsId(bbsId);
bdUseVO.setTrgetId(trgetId);
BoardUseInfVO vo = bbsUseService.selectBBSUseInf(bdUseVO);// bbsItrgetId
// 시스템 사용 게시판의 경우 URL 표시
if ("SYSTEM_DEFAULT_BOARD".equals(vo.getTrgetId())) {
if (vo.getBbsTyCode().equals("BBST02")) { // 익명게시판
} else {
vo.setProvdUrl("/cop/bbs/selectBoardListAPI.do");//bbsId 값을 따로 넘겨줘야 함
vo.setProvdUrl("bbsUseInf/" + trgetId + "/" + bbsId);//bbsId 값을 따로 넘겨줘야 함
}
}
@ -216,6 +242,7 @@ public class EgovBBSUseInfoManageApiController {
@Operation(
summary = "게시판 사용정보 등록",
description = " 게시판 사용정보를 등록",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovBBSUseInfoManageApiController"}
)
@ApiResponses(value = {
@ -223,11 +250,11 @@ public class EgovBBSUseInfoManageApiController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님"),
@ApiResponse(responseCode = "900", description = "입력값 무결성 오류")
})
@PostMapping(value ="/cop/com/insertBBSUseInfAPI.do")
@PostMapping(value ="/bbsUseInf")
public ResultVO insertBBSUseInf(HttpServletRequest request,
BoardUseInfVO bdUseVO,
BindingResult bindingResult,
@AuthenticationPrincipal LoginVO loginVO
@Parameter(hidden = true) @AuthenticationPrincipal LoginVO loginVO
) throws Exception {
ResultVO resultVO = new ResultVO();
@ -271,6 +298,7 @@ public class EgovBBSUseInfoManageApiController {
@Operation(
summary = "게시판 사용정보 수정",
description = " 게시판 사용정보를 수정",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovBBSUseInfoManageApiController"}
)
@ApiResponses(value = {
@ -278,11 +306,12 @@ public class EgovBBSUseInfoManageApiController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님"),
@ApiResponse(responseCode = "900", description = "입력값 무결성 오류")
})
@PutMapping(value ="/cop/com/updateBBSUseInfAPI/{bbsId}.do")
@PutMapping(value ="/bbsUseInf/{bbsId}")
public ResultVO updateBBSUseInf(HttpServletRequest request,
@RequestBody BoardUseInfVO bdUseVO,
@Parameter(name = "bbsId", description = "게시판 Id", in = ParameterIn.PATH, example="BBSMSTR_AAAAAAAAAAAA")
@PathVariable("bbsId") String bbsId,
@AuthenticationPrincipal LoginVO loginVO
@Parameter(hidden = true) @AuthenticationPrincipal LoginVO loginVO
) throws Exception {
ResultVO resultVO = new ResultVO();

@ -2,6 +2,7 @@ package egovframework.let.cop.smt.sim.service;
import java.io.Serializable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
@ -18,6 +19,7 @@ import lombok.Setter;
* @version 1.0
* @created 09-6-2011 10:08:07
*/
@Schema(description = "일정 VO")
@Getter
@Setter
public class IndvdlSchdulManageVO implements Serializable {
@ -27,80 +29,80 @@ public class IndvdlSchdulManageVO implements Serializable {
*/
private static final long serialVersionUID = 1L;
/** 일정ID */
@Schema(description = "일정ID")
private String schdulId;
/** 일정구분(회의/교육/세미나/강의 기타) */
@Schema(description = "일정구분(회의/교육/세미나/강의 기타)")
private String schdulSe;
/** 일정부서ID */
@Schema(description = "일정부서ID")
private String schdulDeptId;
/** 일정종류(부서일정/개인일정) */
@Schema(description = "일정종류(부서일정/개인일정)")
private String schdulKindCode;
/** 일정시작일자 */
@Schema(description = "일정시작일자")
private String schdulBgnde;
/** 일정종료일자 */
@Schema(description = "일정종료일자")
private String schdulEndde;
/** 일정명 */
@Schema(description = "일정명")
private String schdulNm;
/** 일정내용 */
@Schema(description = "일정내용")
private String schdulCn;
/** 일정장소 */
@Schema(description = "일정장소")
private String schdulPlace;
/** 일정중요도코드 */
@Schema(description = "일정중요도코드")
private String schdulIpcrCode;
/** 일정담담자ID */
@Schema(description = "일정담담자ID")
private String schdulChargerId;
/** 첨부파일ID */
@Schema(description = "첨부파일ID")
private String atchFileId;
/** 반복구분(반복, 연속, 요일반복) */
@Schema(description = "반복구분(반복, 연속, 요일반복)")
private String reptitSeCode;
/** 최초등록시점 */
@Schema(description = "최초등록시점")
private String frstRegisterPnttm = "";
/** 최초등록자ID */
@Schema(description = "최초등록자ID")
private String frstRegisterId = "";
/** 최종수정시점 */
@Schema(description = "최종수정시점")
private String lastUpdusrPnttm = "";
/** 최종수정ID */
@Schema(description = "최종수정ID")
private String lastUpdusrId = "";
/** 일정시작일자(시간) */
@Schema(description = "일정시작일자(시간)")
private String schdulBgndeHH = "";
/** 일정시작일자(분) */
@Schema(description = "일정시작일자(분)")
private String schdulBgndeMM = "";
/** 일정종료일자(시간) */
@Schema(description = "일정종료일자(시간)")
private String schdulEnddeHH = "";
/** 일정종료일자(분) */
@Schema(description = "일정종료일자(분)")
private String schdulEnddeMM = "";
/** 일정시작일자(Year/Month/Day) */
@Schema(description = "일정시작일자(Year/Month/Day)")
private String schdulBgndeYYYMMDD = "";
/** 일정종료일자(Year/Month/Day) */
@Schema(description = "일정시작일자일정종료일자(Year/Month/Day)")
private String schdulEnddeYYYMMDD = "";
/** 담당부서 */
@Schema(description = "담당부서")
private String schdulDeptName = "";
/** 담당자명 */
@Schema(description = "담당자명")
private String schdulChargerName = "";
}
}

@ -16,7 +16,13 @@ import org.egovframe.rte.fdl.property.EgovPropertyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springmodules.validation.commons.DefaultBeanValidator;
@ -34,8 +40,14 @@ import egovframework.com.cmm.web.EgovFileDownloadController;
import egovframework.let.cop.smt.sim.service.EgovIndvdlSchdulManageService;
import egovframework.let.cop.smt.sim.service.IndvdlSchdulManageVO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.Explode;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.enums.ParameterStyle;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
/**
@ -101,9 +113,18 @@ public class EgovIndvdlSchdulManageApiController {
@ApiResponse(responseCode = "200", description = "조회 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@GetMapping(value = "/schedule/month")
public ResultVO EgovIndvdlSchdulManageMonthList(@AuthenticationPrincipal LoginVO loginVO, HttpServletRequest request,
@RequestParam Map<String, Object> commandMap) throws Exception {
@GetMapping(value = "/schedule/month")
public ResultVO EgovIndvdlSchdulManageMonthList(
HttpServletRequest request,
@Parameter(
in = ParameterIn.QUERY,
schema = @Schema(type = "object",
additionalProperties = Schema.AdditionalPropertiesValue.TRUE,
ref = "#/components/schemas/searchSchdulMap"),
style = ParameterStyle.FORM,
explode = Explode.TRUE
) @RequestParam Map<String, Object> commandMap,
@Parameter(hidden = true) @AuthenticationPrincipal LoginVO loginVO) throws Exception {
ResultVO resultVO = new ResultVO();
Map<String, Object> resultMap = new HashMap<String, Object>();
@ -148,6 +169,7 @@ public class EgovIndvdlSchdulManageApiController {
resultMap.put("resultList", egovIndvdlSchdulManageService.selectIndvdlSchdulManageRetrieve(commandMap));
resultMap.put("prevRequest", commandMap);
resultVO.setResult(resultMap);
resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
@ -168,6 +190,7 @@ public class EgovIndvdlSchdulManageApiController {
@Operation(
summary = "일정 등록",
description = "일정을 등록 처리",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovIndvdlSchdulManageApiController"}
)
@ApiResponses(value = {
@ -175,13 +198,13 @@ public class EgovIndvdlSchdulManageApiController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님"),
@ApiResponse(responseCode = "900", description = "입력값 무결성 오류")
})
@PostMapping(value = "/schedule")
@PostMapping(value = "/schedule")
public ResultVO IndvdlSchdulManageRegistActor(
HttpServletRequest request,
final MultipartHttpServletRequest multiRequest,
IndvdlSchdulManageVO indvdlSchdulManageVO,
BindingResult bindingResult,
@AuthenticationPrincipal LoginVO loginVO
@Parameter(hidden = true) @AuthenticationPrincipal LoginVO loginVO
) throws Exception {
ResultVO resultVO = new ResultVO();
@ -240,10 +263,11 @@ public class EgovIndvdlSchdulManageApiController {
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "조회 성공")
})
@GetMapping(value = "/schedule/{schdulId}")
@GetMapping(value = "/schedule/{schdulId}")
public ResultVO EgovIndvdlSchdulManageDetail(
@Parameter(name = "schdulId", description = "일정 Id", in = ParameterIn.PATH, example="SCHDUL_0000000000001")
@PathVariable("schdulId") String schdulId,
@AuthenticationPrincipal LoginVO user)
@Parameter(hidden = true) @AuthenticationPrincipal LoginVO user)
throws Exception {
ResultVO resultVO = new ResultVO();
@ -311,16 +335,18 @@ public class EgovIndvdlSchdulManageApiController {
@Operation(
summary = "일정 삭제",
description = "일정을 삭제 처리",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovIndvdlSchdulManageApiController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "등록 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@DeleteMapping(value = "/schedule/{schdulId}")
public ResultVO EgovIndvdlSchdulManageDelete(
@PathVariable("schdulId") String schdulId
) throws Exception {
@DeleteMapping(value = "/schedule/{schdulId}")
public ResultVO EgovIndvdlSchdulManageDelete(
@Parameter(name = "schdulId", description = "일정 Id", in = ParameterIn.PATH, example="SCHDUL_0000000000001")
@PathVariable("schdulId") String schdulId
) throws Exception {
ResultVO resultVO = new ResultVO();
@ -348,6 +374,7 @@ public class EgovIndvdlSchdulManageApiController {
@Operation(
summary = "일정 수정",
description = "일정을 수정 처리",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovIndvdlSchdulManageApiController"}
)
@ApiResponses(value = {
@ -355,18 +382,20 @@ public class EgovIndvdlSchdulManageApiController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님"),
@ApiResponse(responseCode = "900", description = "입력값 무결성 오류")
})
@PutMapping(value = "/schedule/{schdulId}")
@PutMapping(value = "/schedule/{schdulId}")
public ResultVO IndvdlSchdulManageModifyActor(
final MultipartHttpServletRequest multiRequest,
IndvdlSchdulManageVO indvdlSchdulManageVO,
BindingResult bindingResult,
@Parameter(name = "schdulId", description = "일정 Id", in = ParameterIn.PATH, example="SCHDUL_0000000000001")
@PathVariable("schdulId") String schdulId,
@AuthenticationPrincipal LoginVO user)
@Parameter(hidden = true) @AuthenticationPrincipal LoginVO user)
throws Exception {
ResultVO resultVO = new ResultVO();
Map<String, Object> resultMap = new HashMap<String, Object>();
//서버 validate 체크
indvdlSchdulManageVO.setSchdulId(schdulId);
beanValidator.validate(indvdlSchdulManageVO, bindingResult);
@ -393,7 +422,7 @@ public class EgovIndvdlSchdulManageApiController {
if (!files.isEmpty()) {
String atchFileAt = multiRequest.getAttribute("atchFileAt") == null ? "" : (String)multiRequest.getAttribute("atchFileAt");
if ("N".equals(atchFileAt) || _atchFileId.equals("")) {
if ("N".equals(atchFileAt) || _atchFileId.equals("") || _atchFileId.equals("undefined")) {
//기존 첨부 파일이 존재하지 않는 경우
List<FileVO> _result = fileUtil.parseFileInf(files, "DSCH_", 0, _atchFileId, "");
_atchFileId = fileMngService.insertFileInfs(_result);
@ -438,8 +467,16 @@ public class EgovIndvdlSchdulManageApiController {
@ApiResponse(responseCode = "200", description = "조회 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@GetMapping(value = "/schedule/daily")
public ResultVO EgovIndvdlSchdulManageDailyList(@RequestParam Map<String, Object> commandMap) throws Exception {
@GetMapping(value = "/schedule/daily")
public ResultVO EgovIndvdlSchdulManageDailyList(
@Parameter(
in = ParameterIn.QUERY,
schema = @Schema(type = "object",
additionalProperties = Schema.AdditionalPropertiesValue.TRUE,
ref = "#/components/schemas/searchSchdulMap"),
style = ParameterStyle.FORM,
explode = Explode.TRUE
) @RequestParam Map<String, Object> commandMap) throws Exception {
ResultVO resultVO = new ResultVO();
Map<String, Object> resultMap = new HashMap<String, Object>();
@ -510,9 +547,16 @@ public class EgovIndvdlSchdulManageApiController {
@ApiResponse(responseCode = "200", description = "조회 성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@GetMapping(value = "/schedule/week")
@GetMapping(value = "/schedule/week")
public ResultVO EgovIndvdlSchdulManageWeekList(
@RequestParam Map<String, Object> commandMap)
@Parameter(
in = ParameterIn.QUERY,
schema = @Schema(type = "object",
additionalProperties = Schema.AdditionalPropertiesValue.TRUE,
ref = "#/components/schemas/searchSchdulWeekMap"),
style = ParameterStyle.FORM,
explode = Explode.TRUE
) @RequestParam Map<String, Object> commandMap)
throws Exception {
ResultVO resultVO = new ResultVO();

@ -6,7 +6,7 @@ import java.util.Map;
import javax.annotation.Resource;
import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.SessionAttributes;
@ -61,7 +61,7 @@ public class EgovMainApiController {
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "조회 성공")
})
@PostMapping(value = "/cmm/main/mainPageAPI.do")
@GetMapping(value = "/mainPage")
public ResultVO getMgtMainPage()
throws Exception{

@ -3,7 +3,6 @@ package egovframework.let.uat.esm.service.impl;
import java.util.Map;
import org.egovframe.rte.psl.dataaccess.EgovAbstractMapper;
import org.springframework.stereotype.Repository;
/**

@ -8,7 +8,7 @@ import javax.servlet.http.HttpServletRequest;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import egovframework.com.cmm.LoginVO;
@ -17,8 +17,13 @@ import egovframework.com.cmm.service.ResultVO;
import egovframework.let.uat.esm.service.EgovSiteManagerService;
import egovframework.let.utl.sim.service.EgovFileScrty;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.Explode;
import io.swagger.v3.oas.annotations.enums.ParameterStyle;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
@ -58,13 +63,14 @@ public class EgovSiteManagerApiController {
@Operation(
summary = "토큰값 검증",
description = "Headers에서 Authorization 속성값에 발급한 토큰값 검증",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovSiteManagerApiController"}
)
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "성공"),
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
})
@PostMapping(value = "/uat/esm/jwtAuthAPI.do")
@PostMapping(value = "/jwtAuthAPI")
public ResultVO jwtAuthentication(HttpServletRequest request) throws Exception {
ResultVO resultVO = new ResultVO();
@ -82,6 +88,7 @@ public class EgovSiteManagerApiController {
@Operation(
summary = "비밀번호 변경",
description = "사이트관리자의 기존 비번과 비교하여 변경된 비밀번호를 저장",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovSiteManagerApiController"}
)
@ApiResponses(value = {
@ -89,8 +96,16 @@ public class EgovSiteManagerApiController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님"),
@ApiResponse(responseCode = "800", description = "저장시 내부 오류")
})
@PostMapping(value = "/uat/esm/updateAdminPasswordAPI.do")
public ResultVO updateAdminPassword(@RequestBody Map<String,String> param, HttpServletRequest request, @AuthenticationPrincipal LoginVO user) throws Exception {
@PostMapping(value = "/adminPassword")
public ResultVO updateAdminPassword(
@Parameter(
schema = @Schema(type = "object",
additionalProperties = Schema.AdditionalPropertiesValue.TRUE,
ref = "#/components/schemas/passwordMap"),
style = ParameterStyle.FORM,
explode = Explode.TRUE
) @RequestParam Map<String, String> param, HttpServletRequest request,
@Parameter(hidden = true) @AuthenticationPrincipal LoginVO user) throws Exception {
ResultVO resultVO = new ResultVO();
String old_password = param.get("old_password");

@ -6,11 +6,6 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import egovframework.com.cmm.util.EgovUserDetailsHelper;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.egovframe.rte.fdl.cmmn.trace.LeaveaTrace;
import org.egovframe.rte.fdl.property.EgovPropertyService;
import org.springframework.beans.factory.annotation.Autowired;
@ -28,6 +23,11 @@ import egovframework.com.cmm.ResponseCode;
import egovframework.com.cmm.service.ResultVO;
import egovframework.com.jwt.EgovJwtTokenUtil;
import egovframework.let.uat.uia.service.EgovLoginService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
/**
@ -165,6 +165,7 @@ public class EgovLoginApiController {
@Operation(
summary = "로그아웃",
description = "로그아웃 처리(JWT,일반 관계 없이)",
security = {@SecurityRequirement(name = "Authorization")},
tags = {"EgovLoginApiController"}
)
@ApiResponses(value = {

@ -35,7 +35,7 @@ import lombok.extern.slf4j.Slf4j;
*/
@Slf4j
public class EgovDateUtil {
private static SecureRandom r = new SecureRandom();
/**

@ -36,4 +36,4 @@ public class EgovFormBasedFileVo implements Serializable {
/** 파일 사이즈 */
private long size = 0L;
}
}

@ -24,26 +24,6 @@ import java.util.Locale;
import lombok.extern.slf4j.Slf4j;
/**
*
* @author :
* @since : 2023. 8. 9.
* @version : 1.0
*
* @package : egovframework.let.utl.fcc.service
* @filename : EgovNumberUtil.java
* @modificationInformation
*
* <pre>
* << (Modification Information) >>
*
*
* ---------- ---------- ----------------------
* 2023. 8. 9.
* </pre>
*
*
*/
@Slf4j
public class EgovNumberUtil {

@ -102,12 +102,12 @@ logging.file.path=./log
logging.rollingpolicy.maxFileSize=10MB
logging.rollingpolicy.maxHistory=30
# JPA Setting Info
logging.level.org.hibernate.type.descriptor.sql: DEBUG
spring.jpa.properties.hibernate.diarect: org.hibernate.dialect.HSQLDialect
spring.jpa.properties.hibernate.format_sql: true
spring.jpa.properties.hibernate.show_sql: true
spring.jpa.properties.hibernate.use_sql_comments: true
spring.jpa.hibernate.id.new_generator_mappings: true
spring.jpa.hibernate.ddl-auto: create
# option type: create, create-drop, update, validate, none
#swaggerdoc
springdoc.version=v4.2.0
springdoc.packages-to-scan=egovframework
springdoc.swagger-ui.tags-sorter=alpha
springdoc.swagger-ui.operations-sorter=alpha
springdoc.swagger-ui.doc-expansion=none
springdoc.api-docs.path=/v3/api-docs
springdoc.api-docs.groups.enabled=true
springdoc.cache.disabled=true

@ -109,9 +109,9 @@
<if test="searchMode == &quot;WEEK&quot;">
AND (
( SUBSTR(A.SCHDUL_BEGINDE,1,8) &gt; #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
( SUBSTR(A.SCHDUL_BEGINDE,1,8) &gt;= #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
OR
( SUBSTR(A.SCHDUL_ENDDE,1,8) &gt; #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
( SUBSTR(A.SCHDUL_ENDDE,1,8) &gt;= #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
)
</if>

@ -90,7 +90,8 @@
A.FRST_REGISTER_ID,
A.LAST_UPDT_PNTTM,
A.LAST_UPDUSR_ID,
A.REPTIT_SE_CODE
A.REPTIT_SE_CODE,
(SELECT USER_NM FROM LETTNEMPLYRINFO WHERE ESNTL_ID = A.SCHDUL_CHARGER_ID) USER_NM
FROM LETTNSCHDULINFO A
WHERE 1=1
AND A.SCHDUL_KND_CODE = '2'
@ -108,9 +109,9 @@
<if test="searchMode == &quot;WEEK&quot;">
AND (
( SUBSTR(A.SCHDUL_BEGINDE,1,8) &gt; #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
( SUBSTR(A.SCHDUL_BEGINDE,1,8) &gt;= #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
OR
( SUBSTR(A.SCHDUL_ENDDE,1,8) &gt; #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
( SUBSTR(A.SCHDUL_ENDDE,1,8) &gt;= #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
)
</if>

@ -46,7 +46,7 @@
A.ATCH_FILE_ID,
TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYY-MM-DD') FRST_REGIST_PNTTM,
A.FRST_REGISTER_ID,
A.LAST_UPDT_PNTTM,
TO_CHAR(A.LAST_UPDT_PNTTM, 'YYYY-MM-DD') LAST_UPDT_PNTTM,
A.LAST_UPDUSR_ID,
A.REPTIT_SE_CODE
FROM LETTNSCHDULINFO A
@ -82,9 +82,9 @@
A.SCHDUL_IPCR_CODE,
A.SCHDUL_CHARGER_ID,
A.ATCH_FILE_ID,
A.FRST_REGIST_PNTTM,
TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYY-MM-DD') FRST_REGIST_PNTTM,
A.FRST_REGISTER_ID,
A.LAST_UPDT_PNTTM,
TO_CHAR(A.LAST_UPDT_PNTTM, 'YYYY-MM-DD') LAST_UPDT_PNTTM,
A.LAST_UPDUSR_ID,
A.REPTIT_SE_CODE,
(SELECT USER_NM FROM LETTNEMPLYRINFO WHERE ESNTL_ID = A.SCHDUL_CHARGER_ID) USER_NM
@ -105,9 +105,9 @@
<if test="searchMode == &quot;WEEK&quot;">
AND (
( SUBSTRING(TO_CHAR(A.SCHDUL_BEGINDE, 'YYYYMMDD'),1,8) &gt; #{schdulBgnde} AND SUBSTRING(TO_CHAR(A.SCHDUL_BEGINDE, 'YYYYMMDD'),1,8) &lt;= #{schdulEndde})
( SUBSTRING(TO_CHAR(A.SCHDUL_BEGINDE, 'YYYYMMDD'),1,8) &gt;= #{schdulBgnde} AND SUBSTRING(TO_CHAR(A.SCHDUL_BEGINDE, 'YYYYMMDD'),1,8) &lt;= #{schdulEndde})
OR
( SUBSTRING(TO_CHAR(A.SCHDUL_ENDDE, 'YYYYMMDD'),1,8) &gt; #{schdulBgnde} AND SUBSTRING(TO_CHAR(A.SCHDUL_BEGINDE, 'YYYYMMDD'),1,8) &lt;= #{schdulEndde})
( SUBSTRING(TO_CHAR(A.SCHDUL_ENDDE, 'YYYYMMDD'),1,8) &gt;= #{schdulBgnde} AND SUBSTRING(TO_CHAR(A.SCHDUL_BEGINDE, 'YYYYMMDD'),1,8) &lt;= #{schdulEndde})
)
</if>
@ -146,9 +146,9 @@
(SELECT USER_NM FROM LETTNEMPLYRINFO WHERE ESNTL_ID = A.SCHDUL_CHARGER_ID) SCHDUL_CHARGER_NAME,
A.ATCH_FILE_ID,
A.REPTIT_SE_CODE,
A.FRST_REGIST_PNTTM,
TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYY-MM-DD') FRST_REGIST_PNTTM,
A.FRST_REGISTER_ID,
A.LAST_UPDT_PNTTM,
TO_CHAR(A.LAST_UPDT_PNTTM, 'YYYY-MM-DD') LAST_UPDT_PNTTM,
A.LAST_UPDUSR_ID
FROM LETTNSCHDULINFO A
WHERE 1=1
@ -171,9 +171,9 @@
A.SCHDUL_IPCR_CODE,
A.SCHDUL_CHARGER_ID,
A.ATCH_FILE_ID,
A.FRST_REGIST_PNTTM,
TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYY-MM-DD') FRST_REGIST_PNTTM,
A.FRST_REGISTER_ID,
A.LAST_UPDT_PNTTM,
TO_CHAR(A.LAST_UPDT_PNTTM, 'YYYY-MM-DD') LAST_UPDT_PNTTM,
A.LAST_UPDUSR_ID,
A.REPTIT_SE_CODE
FROM LETTNSCHDULINFO A
@ -255,9 +255,9 @@
A.SCHDUL_CHARGER_ID,
(SELECT USER_NM FROM LETTNEMPLYRINFO WHERE ESNTL_ID = A.SCHDUL_CHARGER_ID) SCHDUL_CHARGER_NAME,
A.ATCH_FILE_ID,
A.FRST_REGIST_PNTTM,
TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYY-MM-DD') FRST_REGIST_PNTTM,
A.FRST_REGISTER_ID,
A.LAST_UPDT_PNTTM,
TO_CHAR(A.LAST_UPDT_PNTTM, 'YYYY-MM-DD') LAST_UPDT_PNTTM,
A.LAST_UPDUSR_ID,
A.REPTIT_SE_CODE
FROM LETTNSCHDULINFO A

@ -46,7 +46,7 @@
A.ATCH_FILE_ID,
DATE_FORMAT(A.FRST_REGIST_PNTTM,'%Y-%m-%d') FRST_REGIST_PNTTM,
A.FRST_REGISTER_ID,
A.LAST_UPDT_PNTTM,
DATE_FORMAT(A.LAST_UPDT_PNTTM,'%Y-%m-%d') LAST_UPDT_PNTTM,
A.LAST_UPDUSR_ID,
A.REPTIT_SE_CODE
FROM LETTNSCHDULINFO A
@ -82,9 +82,9 @@
A.SCHDUL_IPCR_CODE,
A.SCHDUL_CHARGER_ID,
A.ATCH_FILE_ID,
A.FRST_REGIST_PNTTM,
DATE_FORMAT(A.FRST_REGIST_PNTTM,'%Y-%m-%d') FRST_REGIST_PNTTM,
A.FRST_REGISTER_ID,
A.LAST_UPDT_PNTTM,
DATE_FORMAT(A.LAST_UPDT_PNTTM,'%Y-%m-%d') LAST_UPDT_PNTTM,
A.LAST_UPDUSR_ID,
A.REPTIT_SE_CODE,
(SELECT USER_NM FROM LETTNEMPLYRINFO WHERE ESNTL_ID = A.SCHDUL_CHARGER_ID) USER_NM
@ -105,9 +105,9 @@
<if test="searchMode == &quot;WEEK&quot;">
AND (
( SUBSTRING(DATE_FORMAT(A.SCHDUL_BEGINDE,'%Y%m%d'),1,8) &gt; #{schdulBgnde} AND SUBSTRING(DATE_FORMAT(A.SCHDUL_BEGINDE,'%Y%m%d'),1,8) &lt;= #{schdulEndde})
( SUBSTRING(DATE_FORMAT(A.SCHDUL_BEGINDE,'%Y%m%d'),1,8) &gt;= #{schdulBgnde} AND SUBSTRING(DATE_FORMAT(A.SCHDUL_BEGINDE,'%Y%m%d'),1,8) &lt;= #{schdulEndde})
OR
( SUBSTRING(DATE_FORMAT(A.SCHDUL_ENDDE,'%Y%m%d'),1,8) &gt; #{schdulBgnde} AND SUBSTRING(DATE_FORMAT(A.SCHDUL_BEGINDE,'%Y%m%d'),1,8) &lt;= #{schdulEndde})
( SUBSTRING(DATE_FORMAT(A.SCHDUL_ENDDE,'%Y%m%d'),1,8) &gt;= #{schdulBgnde} AND SUBSTRING(DATE_FORMAT(A.SCHDUL_BEGINDE,'%Y%m%d'),1,8) &lt;= #{schdulEndde})
)
</if>
@ -145,9 +145,9 @@
(SELECT USER_NM FROM LETTNEMPLYRINFO WHERE ESNTL_ID = A.SCHDUL_CHARGER_ID) SCHDUL_CHARGER_NAME,
A.ATCH_FILE_ID,
A.REPTIT_SE_CODE,
A.FRST_REGIST_PNTTM,
DATE_FORMAT(A.FRST_REGIST_PNTTM,'%Y-%m-%d') FRST_REGIST_PNTTM,
A.FRST_REGISTER_ID,
A.LAST_UPDT_PNTTM,
DATE_FORMAT(A.LAST_UPDT_PNTTM,'%Y-%m-%d') LAST_UPDT_PNTTM,
A.LAST_UPDUSR_ID
FROM LETTNSCHDULINFO A
WHERE 1=1
@ -170,9 +170,9 @@
A.SCHDUL_IPCR_CODE,
A.SCHDUL_CHARGER_ID,
A.ATCH_FILE_ID,
A.FRST_REGIST_PNTTM,
DATE_FORMAT(A.FRST_REGIST_PNTTM,'%Y-%m-%d') FRST_REGIST_PNTTM,
A.FRST_REGISTER_ID,
A.LAST_UPDT_PNTTM,
DATE_FORMAT(A.LAST_UPDT_PNTTM,'%Y-%m-%d') LAST_UPDT_PNTTM,
A.LAST_UPDUSR_ID,
A.REPTIT_SE_CODE
FROM LETTNSCHDULINFO A
@ -254,9 +254,9 @@
A.SCHDUL_CHARGER_ID,
(SELECT USER_NM FROM LETTNEMPLYRINFO WHERE ESNTL_ID = A.SCHDUL_CHARGER_ID) SCHDUL_CHARGER_NAME,
A.ATCH_FILE_ID,
A.FRST_REGIST_PNTTM,
DATE_FORMAT(A.FRST_REGIST_PNTTM,'%Y-%m-%d') FRST_REGIST_PNTTM,
A.FRST_REGISTER_ID,
A.LAST_UPDT_PNTTM,
DATE_FORMAT(A.LAST_UPDT_PNTTM,'%Y-%m-%d') LAST_UPDT_PNTTM,
A.LAST_UPDUSR_ID,
A.REPTIT_SE_CODE
FROM LETTNSCHDULINFO A

@ -109,9 +109,9 @@
<if test="searchMode == &quot;WEEK&quot;">
AND (
( SUBSTR(A.SCHDUL_BEGINDE,1,8) &gt; #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
( SUBSTR(A.SCHDUL_BEGINDE,1,8) &gt;= #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
OR
( SUBSTR(A.SCHDUL_ENDDE,1,8) &gt; #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
( SUBSTR(A.SCHDUL_ENDDE,1,8) &gt;= #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
)
</if>

@ -109,9 +109,9 @@
<if test="searchMode == &quot;WEEK&quot;">
AND (
( SUBSTR(A.SCHDUL_BEGINDE,1,8) &gt; #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
( SUBSTR(A.SCHDUL_BEGINDE,1,8) &gt;= #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
OR
( SUBSTR(A.SCHDUL_ENDDE,1,8) &gt; #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
( SUBSTR(A.SCHDUL_ENDDE,1,8) &gt;= #{schdulBgnde} AND SUBSTR(A.SCHDUL_BEGINDE,1,8) &lt;= #{schdulEndde})
)
</if>

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<!DOCTYPE xml>
<Configuration scan="true">
<property resource="application.properties"/>
@ -75,4 +76,4 @@
<!-- 위에 설정한 파일 설정 추가 -->
<appender-ref ref="FILE" />
</root>
</configuration>
</Configuration>

@ -0,0 +1,3 @@
Manifest-Version: 1.0
Class-Path:

@ -1,71 +0,0 @@
package egovframework.com;
import egovframework.com.cmm.EgovMessageSource;
import egovframework.com.config.EgovConfigAppMsg;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.stream.Stream;
/**
* fileName : EgovMessageSourceTest
* author : crlee
* date : 2023/05/05
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023/05/05 crlee
*/
@SpringBootTest(classes = {EgovConfigAppMsg.class})
public class EgovMessageSourceTest {
@Autowired
EgovMessageSource egovMessageSource;
@TestFactory
Stream<DynamicTest> messageTests() {
List<Locale> locales = Arrays.asList(
Locale.KOREA,
Locale.US
);
return locales.stream().map(locale -> DynamicTest.dynamicTest(
"Message test with " + locale.getDisplayName(),
() -> {
String msgType = "fail.common.login";
String expectedMessage = getMessageForLocale(locale);
Assertions.assertThat(
egovMessageSource.getMessage(msgType, locale)
).isEqualTo(expectedMessage);
}
));
}
private String getMessageForLocale(Locale locale) {
if (locale == Locale.KOREA) {
return "로그인 정보가 올바르지 않습니다.";
} else if (locale == Locale.US) {
return "login information is not correct";
} else {
return "";
}
}
@Test
void enMessageTest(){
String msgType = "fail.common.login";
String expectedMessage = "login information is not correct";
Assertions.assertThat( egovMessageSource.getMessage(msgType, Locale.US) ).isEqualTo(expectedMessage);
Assertions.assertThat( egovMessageSource.getMessage(msgType, Locale.UK) ).isEqualTo(expectedMessage);
Assertions.assertThat( egovMessageSource.getMessage(msgType, Locale.ENGLISH) ).isEqualTo(expectedMessage);
}
}

@ -1,38 +0,0 @@
package egovframework.com;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
/**
* fileName : ProfileTestDev
* author : crlee
* date : 2023/04/28
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023/04/28 crlee
*/
@SpringBootTest
@ActiveProfiles("dev")
public class ProfileTestDev {
@Value("${Globals.DbType}")
String dbType;
@Value("${Globals.OsType}")
String osType;
@Value("${logging.rollingpolicy.maxHistory}")
String maxHistory;
@Test
void propertyTest() {
Assertions.assertThat(dbType).isEqualTo("hsql");
Assertions.assertThat(osType).isEqualTo("WINDOWS");
Assertions.assertThat(maxHistory).isEqualTo("2");
}
}

@ -1,37 +0,0 @@
package egovframework.com;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
/**
* fileName : ProfileTestProd
* author : crlee
* date : 2023/04/28
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023/04/28 crlee
*/
@SpringBootTest
@ActiveProfiles("prod")
public class ProfileTestProd {
@Value("${Globals.DbType}")
String dbType;
@Value("${Globals.OsType}")
String osType;
@Value("${logging.rollingpolicy.maxHistory}")
String maxHistory;
@Test
void propertyTest() {
Assertions.assertThat(dbType).isEqualTo("hsql");
Assertions.assertThat(osType).isEqualTo("LINUX");
Assertions.assertThat(maxHistory).isEqualTo("90");
}
}

@ -1,30 +0,0 @@
package egovframework.let.cop.bbs.service;
import org.junit.Test;
/**
* fileName : BoardTest
* author : crlee
* date : 2023/04/26
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023/04/26 crlee
*/
public class BoardTest{
@Test
public void Board() {
Board board = new Board();
board.setBbsId("TestId");
board.setFrstRegisterId("FrstId");
board.setNttNo(3L);
org.junit.Assert.assertEquals( board.getBbsId() , "TestId" );
org.junit.Assert.assertEquals( board.getFrstRegisterId() , "FrstId" );
org.junit.Assert.assertEquals( board.getNttNo() , 3L );
}
}

@ -1,32 +0,0 @@
package egovframework.let.cop.bbs.service;
import org.junit.Test;
/**
* fileName : BoardVOTest
* author : crlee
* date : 2023/04/26
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023/04/26 crlee
*/
public class BoardVOTest{
@Test
public void BoardVo() {
BoardVO boardVO = new BoardVO();
boardVO.setBbsId("TestId");
boardVO.setBbsNm("게시판nm");
boardVO.setFrstRegisterId("FrstId");
boardVO.setNttNo(3L);
org.junit.Assert.assertEquals( boardVO.getBbsId() , "TestId" );
org.junit.Assert.assertEquals( boardVO.getFrstRegisterId() , "FrstId" );
org.junit.Assert.assertEquals( boardVO.getNttNo() , 3L );
org.junit.Assert.assertEquals( boardVO.getBbsNm() , "게시판nm" );
}
}

@ -1,101 +0,0 @@
package egovframework.let.uat.uia.web;
import egovframework.com.cmm.ResponseCode;
import egovframework.com.cmm.service.ResultVO;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.http.*;
import java.util.HashMap;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
/**
* fileName : EgovLoginApiContollerTest
* author : crlee
* date : 2023/06/19
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023/06/19 crlee
*/
@TestInstance(TestInstance. Lifecycle.PER_CLASS)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class EgovLoginApiControllerTest {
@Value("${server.servlet.context-path}")
String CONTEXT_PATH;
String URL = "http://localhost";
@LocalServerPort
int randomServerPort;
String SERVER_URL;
@BeforeAll
void init(){
this.SERVER_URL = String.format("%s:%s%s", URL,randomServerPort,CONTEXT_PATH);
}
@Test
@DisplayName("인증 성공")
void hasToken(){
String token = getToken();
ResponseEntity<ResultVO> result = callApi(token);
Assertions.assertThat( result.getStatusCode() ).isEqualTo( HttpStatus.OK );
Assertions.assertThat( result.getBody().getResultCode() ).isEqualTo( ResponseCode.SUCCESS.getCode() );
Assertions.assertThat( result.getBody().getResultMessage() ).isEqualTo( ResponseCode.SUCCESS.getMessage() );
}
@Test
@DisplayName("인증 실패 - Token null")
void noToken(){
ResponseEntity<ResultVO> result = callApi(null);
Assertions.assertThat( result.getStatusCode() ).isEqualTo( HttpStatus.UNAUTHORIZED );
Assertions.assertThat( result.getBody().getResultCode() ).isEqualTo( ResponseCode.AUTH_ERROR.getCode() );
Assertions.assertThat( result.getBody().getResultMessage() ).isEqualTo( ResponseCode.AUTH_ERROR.getMessage() );
}
@Test
@DisplayName("인증 실패 - Wrong Token")
void wrongToken(){
ResponseEntity<ResultVO> result = callApi("123123123123123T&*#$SDF123");
Assertions.assertThat( result.getStatusCode() ).isEqualTo( HttpStatus.UNAUTHORIZED );
Assertions.assertThat( result.getBody().getResultCode() ).isEqualTo( ResponseCode.AUTH_ERROR.getCode() );
Assertions.assertThat( result.getBody().getResultMessage() ).isEqualTo( ResponseCode.AUTH_ERROR.getMessage() );
}
String getToken(){
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
Map<String,Object> params = new HashMap<>();
params.put("id","admin");
params.put("password","1");
params.put("userSe","USR");
HttpEntity request = new HttpEntity(params,headers);
TestRestTemplate rest = new TestRestTemplate();
ResponseEntity<HashMap> res = rest.exchange(this.SERVER_URL + "/auth/login-jwt", HttpMethod.POST,request , HashMap.class);
assertThat( res.getStatusCode() ).isEqualTo( HttpStatus.OK );
HashMap<String,Object> body = (HashMap<String,Object>) res.getBody();
assertThat( body.get("jToken") ).isNotNull();
assertThat( body.get("resultCode") ).isEqualTo("200");
assertThat( body.get("resultMessage") ).isEqualTo("성공 !!!");
String token = body.get("jToken").toString();
return token;
}
ResponseEntity<ResultVO> callApi(String token){
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", token);
HttpEntity request = new HttpEntity(headers);
TestRestTemplate rest = new TestRestTemplate();
return rest.exchange(this.SERVER_URL + "/uat/esm/jwtAuthAPI.do", HttpMethod.POST, request,ResultVO.class);
}
}

@ -1,170 +0,0 @@
package egovframework.study.jpa;
import egovframework.study.jpa.domain.Locker;
import egovframework.study.jpa.domain.Member;
import egovframework.study.jpa.domain.Team;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.*;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import javax.persistence.*;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import java.util.List;
/**
* fileName : jpaTest
* author : crlee
* date : 2023/04/28
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023/04/28 crlee
*/
@DataJpaTest
@TestInstance(TestInstance. Lifecycle.PER_CLASS)
public class JpaTest {
@PersistenceUnit
EntityManagerFactory emf; //엔티티 매니저 팩토리 생성
EntityManager em;
EntityTransaction tx;
@BeforeAll
public void init(){
this.em = emf.createEntityManager();
}
@BeforeEach
public void open(){
this.tx = em.getTransaction();
this.tx.begin(); //트랜잭션 시작
this.setData();
}
@AfterEach
public void close(){
this.tx.rollback();
}
@AfterAll
public void end(){
this.em.close(); //엔티티 매니저 종료
this.emf.close();
}
void setData(){
Team team1 = Team.builder()
.id("team1")
.name("team_name1")
.build();
em.persist(team1);
for (int i=1 ; i<30 ; i++ ){
em.persist(
Member.builder()
.id("member_id"+i)
.username("member_name"+i)
.age(2)
.team(team1)
.build()
);
}
em.flush();
em.clear();
}
@Test
@DisplayName("기본 select 작업을 테스트")
void testSelectById(){
Member findMember = em.find(Member.class,"member_id1");
Assertions.assertThat( findMember.getUsername() ).isEqualTo( "member_name1" );
}
@Test
@DisplayName("기본 update 작업 테스트")
void testUpdate(){
Member updateMember = Member.builder()
.id("member_id1")
.username("UPDATE_NAME1")
.age(20)
.build();
em.persist( updateMember );
Member findMember = em.find(Member.class,"member_id1");
Assertions.assertThat( findMember.getUsername() ).isEqualTo( updateMember.getUsername() );
}
@Test
@DisplayName("변경감지 Update Test")
void testDirtyChecking(){
Member updateMember = em.find(Member.class,"member_id1");
updateMember.setUsername("UPDATE_NAME");
Member findMember = em.find(Member.class,"member_id1");
Assertions.assertThat( findMember.getUsername() ).isEqualTo( updateMember.getUsername() );
}
@Test
@DisplayName("객체 그래프 Test")
void fetchTest(){
Member findMember = em.find(Member.class,"member_id1");
Assertions.assertThat( findMember.getTeam().getName() ).isEqualTo( "team_name1" );
Team findTeam = em.find(Team.class,"team1");
Assertions.assertThat( findTeam.getName() ).isEqualTo( "team_name1" );
Assertions.assertThat( findTeam.getMembers().size() ).isEqualTo( 29 );
}
@Test
@DisplayName("cascade Test")
public void cascadeTest(){
Member member1 = Member.builder()
.id("mem1")
.username("name1")
.age(1)
.build();
Locker locker1 = Locker.builder().id(1L).name("LockerNm1").member(member1).build();
em.persist(locker1);
// Member는 persist()하지 않았지만 영속상태
Assertions.assertThat( em.contains(member1) ).isTrue();
Assertions.assertThat( em.contains(locker1) ).isTrue();
}
@Test
@DisplayName("select * from member;")
void ParameterTest(){
TypedQuery query = em.createQuery( "select m from Member m where m.username = :username" , Member.class );
query.setParameter("username" , "member_name1" );
List<Member> resultList = query.getResultList();
Assertions.assertThat( resultList.size() ).isEqualTo(1);
Assertions.assertThat( resultList.get(0).getAge() ).isEqualTo(2);
Assertions.assertThat( resultList.get(0).getId() ).isEqualTo("member_id1");
}
@Test
@DisplayName("select username from member;")
void projectionTest(){
Query query = em.createQuery( "select m.username from Member m where m.username = :username");
query.setParameter("username" , "member_name1" );
List<String> resultList = query.getResultList();
Assertions.assertThat( resultList.get(0) ).isEqualTo("member_name1");
}
@Test
@DisplayName("Criteria Test ")
void CriteriaTest(){
// 사용 준비
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Member> query = criteriaBuilder.createQuery(Member.class);
// 루트 클래스( 조회를 시작할 클래스 )
Root<Member> memberRoot = query.from(Member.class);
// 쿼리 생성
CriteriaQuery<Member> criteriaQuery = query.select(memberRoot).where( criteriaBuilder.equal( memberRoot.get("age"),2 ) );
List<Member> resultList = em.createQuery(criteriaQuery).getResultList();
Assertions.assertThat( resultList.size() ).isEqualTo( 29 );
}
}

@ -1,112 +0,0 @@
package egovframework.study.jpa;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.jpa.impl.JPAQueryFactory;
import egovframework.study.jpa.domain.Member;
import egovframework.study.jpa.domain.QMember;
import org.junit.jupiter.api.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* fileName : QueryDslTest
* author : crlee
* date : 2023/05/21
* description : Query DSL
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023/05/21 crlee
*/
import static org.assertj.core.api.Assertions.assertThat;
@DataJpaTest
@Transactional
public class QueryDslTest {
@Autowired
private TestEntityManager entityManager;
private JPAQueryFactory queryFactory;
@BeforeEach
public void setup() {
queryFactory = new JPAQueryFactory(entityManager.getEntityManager());
}
@Test
@DisplayName("QueryDSL로 selectList")
public void testSelectList() {
insertTestMembers(30);
QMember member = QMember.member;
List<Member> members = queryFactory
.selectFrom(member)
.where(member.age.between(10, 15))
.orderBy(member.username.asc())
.fetch();
assertThat(members.size()).isEqualTo(6);
assertThat(members.get(0).getUsername()).isEqualTo("member_name10");
assertThat(members.get(5).getUsername()).isEqualTo("member_name15");
}
@Test
@DisplayName("QueryDSL로 selectList - 동적")
public void testSelectListDynamic() throws CloneNotSupportedException {
insertTestMembers(30);
QMember member = QMember.member;
BooleanBuilder builder = createAgeNameFilter(member, 10);
List<Member> members = queryFactory
.selectFrom(member)
.where(builder)
.fetch();
assertThat(members.size()).isEqualTo(1);
assertThat(members.get(0).getUsername()).isEqualTo("member_name10");
assertThat(members.get(0).getAge()).isEqualTo(10);
}
private BooleanBuilder createAgeNameFilter(QMember member, int age) {
BooleanBuilder builder = new BooleanBuilder();
if (age == 10) {
builder.and(member.age.eq(10));
} else {
builder.and(member.age.eq(15)).or(member.username.contains("member_name"));
}
return builder;
}
@Test
@DisplayName("QueryDSL로 selectOne")
public void testSelectOne() {
insertTestMembers(5);
QMember member = QMember.member;
Member members = queryFactory
.selectFrom(member)
.where(member.age.eq(3))
.fetchOne();
assertThat(members.getUsername()).isEqualTo("member_name3");
assertThat(members.getAge()).isEqualTo(3);
}
private void insertTestMembers(int count) {
for (int i = 1; i <= count; i++) {
entityManager.persist(Member.builder()
.id("member_id" + i)
.username("member_name" + i)
.age(i)
.build());
}
}
}

@ -1,36 +0,0 @@
package egovframework.study.jpa.domain;
import lombok.*;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;
/**
* fileName : Locker
* author : crlee
* date : 2023/04/28
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023/04/28 crlee
*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
@Entity
public class Locker {
@Id
private Long id;
private String name;
@Builder.Default
@OneToOne(mappedBy = "locker" , cascade = CascadeType.PERSIST)
private Member member = new Member();
}

@ -1,39 +0,0 @@
package egovframework.study.jpa.domain;
import lombok.*;
import javax.persistence.*;
/**
* fileName : Member
* author : crlee
* date : 2023/04/28
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023/04/28 crlee
*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString(exclude = { "team" , "locker"})
@Entity
public class Member {
@Id
private String id;
private String username;
private int age;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="TEAM_ID")
private Team team;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name="LOCKER_ID")
private Locker locker;
}

@ -1,38 +0,0 @@
package egovframework.study.jpa.domain;
import lombok.*;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import java.util.ArrayList;
import java.util.List;
/**
* fileName : Team
* author : crlee
* date : 2023/04/28
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023/04/28 crlee
*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
@Entity
public class Team {
@Id
private String id;
private String name;
@Builder.Default
@OneToMany(mappedBy = "team")
private List<Member> members = new ArrayList<Member>();
}
Loading…
Cancel
Save