Browse Source

init clone

feature/auth
지대한 2 years ago
commit
257260f7a5
  1. 33
      .gitignore
  2. 117
      .mvn/wrapper/MavenWrapperDownloader.java
  3. BIN
      .mvn/wrapper/maven-wrapper.jar
  4. 2
      .mvn/wrapper/maven-wrapper.properties
  5. BIN
      lib/opensky-api-1.3.0.jar
  6. 310
      mvnw
  7. 182
      mvnw.cmd
  8. 164
      pom.xml
  9. 15
      src/main/java/com/palnet/ControlServerApplication.java
  10. 110
      src/main/java/com/palnet/biz/api/acnt/crtfyhp/controller/AcntCrtfyhpController.java
  11. 177
      src/main/java/com/palnet/biz/api/acnt/crtfyhp/service/AcntCrtfyhpService.java
  12. 70
      src/main/java/com/palnet/biz/api/acnt/cstmr/controller/AcntCstmrController.java
  13. 46
      src/main/java/com/palnet/biz/api/acnt/cstmr/model/AcntCstmrRqModel.java
  14. 13
      src/main/java/com/palnet/biz/api/acnt/cstmr/model/AcntCstmrRsModel.java
  15. 9
      src/main/java/com/palnet/biz/api/acnt/cstmr/model/AnctCstmrTermsModel.java
  16. 187
      src/main/java/com/palnet/biz/api/acnt/cstmr/service/AcntCstmrService.java
  17. 137
      src/main/java/com/palnet/biz/api/acnt/jwt/controller/JwtAuthenticationController.java
  18. 25
      src/main/java/com/palnet/biz/api/acnt/jwt/filter/JwtAuthenticationEntryPoint.java
  19. 96
      src/main/java/com/palnet/biz/api/acnt/jwt/filter/JwtRequestFilter.java
  20. 17
      src/main/java/com/palnet/biz/api/acnt/jwt/model/JwtProfileRsModel.java
  21. 20
      src/main/java/com/palnet/biz/api/acnt/jwt/model/JwtRqModel.java
  22. 21
      src/main/java/com/palnet/biz/api/acnt/jwt/model/JwtRsModel.java
  23. 95
      src/main/java/com/palnet/biz/api/acnt/jwt/model/JwtUserModel.java
  24. 237
      src/main/java/com/palnet/biz/api/acnt/jwt/service/JwtService.java
  25. 41
      src/main/java/com/palnet/biz/api/acnt/jwt/service/JwtUserDetailsService.java
  26. 104
      src/main/java/com/palnet/biz/api/acnt/jwt/utils/JwtTokenUtil.java
  27. 69
      src/main/java/com/palnet/biz/api/acnt/terms/controller/AcntTermsController.java
  28. 11
      src/main/java/com/palnet/biz/api/acnt/terms/model/AcntTermsRqModel.java
  29. 26
      src/main/java/com/palnet/biz/api/acnt/terms/model/AcntTermsRsModel.java
  30. 35
      src/main/java/com/palnet/biz/api/acnt/terms/service/AcntTermsService.java
  31. 102
      src/main/java/com/palnet/biz/api/anls/hstry/controller/AnlsHstryController.java
  32. 47
      src/main/java/com/palnet/biz/api/anls/hstry/model/AnlsHstryDetailModel.java
  33. 79
      src/main/java/com/palnet/biz/api/anls/hstry/model/AnlsHstryModel.java
  34. 10
      src/main/java/com/palnet/biz/api/anls/hstry/model/AnlsHstryRqModel.java
  35. 66
      src/main/java/com/palnet/biz/api/anls/hstry/service/AnlsHstryService.java
  36. 143
      src/main/java/com/palnet/biz/api/anls/smlt/controller/AnlsSmltController.java
  37. 60
      src/main/java/com/palnet/biz/api/anls/smlt/model/AnlsSmltDetailModel.java
  38. 46
      src/main/java/com/palnet/biz/api/anls/smlt/model/AnlsSmltHistModel.java
  39. 10
      src/main/java/com/palnet/biz/api/anls/smlt/model/AnlsSmltRqModel.java
  40. 28
      src/main/java/com/palnet/biz/api/anls/smlt/model/AnlsSmltStcsModel.java
  41. 149
      src/main/java/com/palnet/biz/api/anls/smlt/service/AnlsSmltService.java
  42. 289
      src/main/java/com/palnet/biz/api/bas/dron/controller/BasDronController.java
  43. 71
      src/main/java/com/palnet/biz/api/bas/dron/model/BasDronModel.java
  44. 21
      src/main/java/com/palnet/biz/api/bas/dron/model/BasDronRqModel.java
  45. 22
      src/main/java/com/palnet/biz/api/bas/dron/model/BasIdntfModel.java
  46. 14
      src/main/java/com/palnet/biz/api/bas/dron/model/BasIdntfRqModel.java
  47. 30
      src/main/java/com/palnet/biz/api/bas/dron/model/BasOwnerModel.java
  48. 421
      src/main/java/com/palnet/biz/api/bas/dron/service/BasDronService.java
  49. 97
      src/main/java/com/palnet/biz/api/bas/group/controller/BasGroupAprvController.java
  50. 240
      src/main/java/com/palnet/biz/api/bas/group/controller/BasGroupController.java
  51. 108
      src/main/java/com/palnet/biz/api/bas/group/controller/BasGroupJoinController.java
  52. 91
      src/main/java/com/palnet/biz/api/bas/group/controller/BasGroupUserController.java
  53. 37
      src/main/java/com/palnet/biz/api/bas/group/model/BasGroupAprvModel.java
  54. 19
      src/main/java/com/palnet/biz/api/bas/group/model/BasGroupAprvRqModel.java
  55. 34
      src/main/java/com/palnet/biz/api/bas/group/model/BasGroupJoinModel.java
  56. 16
      src/main/java/com/palnet/biz/api/bas/group/model/BasGroupJoinRqModel.java
  57. 22
      src/main/java/com/palnet/biz/api/bas/group/model/BasGroupModel.java
  58. 14
      src/main/java/com/palnet/biz/api/bas/group/model/BasGroupRqModel.java
  59. 32
      src/main/java/com/palnet/biz/api/bas/group/model/BasGroupUserModel.java
  60. 19
      src/main/java/com/palnet/biz/api/bas/group/model/BasGroupUserRqModel.java
  61. 73
      src/main/java/com/palnet/biz/api/bas/group/service/BasGroupAprvService.java
  62. 113
      src/main/java/com/palnet/biz/api/bas/group/service/BasGroupJoinService.java
  63. 217
      src/main/java/com/palnet/biz/api/bas/group/service/BasGroupService.java
  64. 90
      src/main/java/com/palnet/biz/api/bas/group/service/BasGroupUserService.java
  65. 15
      src/main/java/com/palnet/biz/api/comn/model/ComnRqModel.java
  66. 5
      src/main/java/com/palnet/biz/api/comn/response/BasicResponse.java
  67. 27
      src/main/java/com/palnet/biz/api/comn/response/ErrorResponse.java
  68. 23
      src/main/java/com/palnet/biz/api/comn/response/SuccessResponse.java
  69. 112
      src/main/java/com/palnet/biz/api/ctr/cntrl/controller/CtrCntrlController.java
  70. 13
      src/main/java/com/palnet/biz/api/ctr/cntrl/controller/PingController.java
  71. 31
      src/main/java/com/palnet/biz/api/ctr/cntrl/model/CtrCntrlDtlModel.java
  72. 21
      src/main/java/com/palnet/biz/api/ctr/cntrl/model/CtrCntrlEndModel.java
  73. 123
      src/main/java/com/palnet/biz/api/ctr/cntrl/model/CtrCntrlModel.java
  74. 108
      src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java
  75. 157
      src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java
  76. 17
      src/main/java/com/palnet/biz/api/main/dash/model/MainDashListModel.java
  77. 13
      src/main/java/com/palnet/biz/api/main/dash/model/MainDashStcsModel.java
  78. 103
      src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java
  79. 68
      src/main/java/com/palnet/biz/config/DatabaseJpaConfig.java
  80. 44
      src/main/java/com/palnet/biz/config/JsonConfig.java
  81. 19
      src/main/java/com/palnet/biz/config/QuerydslConfiguration.java
  82. 150
      src/main/java/com/palnet/biz/config/WebMvcConfig.java
  83. 80
      src/main/java/com/palnet/biz/config/WebSecurityConfig.java
  84. 89
      src/main/java/com/palnet/biz/jpa/entity/ComArcrftBas.java
  85. 134
      src/main/java/com/palnet/biz/jpa/entity/ComArcrftOwner.java
  86. 124
      src/main/java/com/palnet/biz/jpa/entity/ComAuthBas.java
  87. 122
      src/main/java/com/palnet/biz/jpa/entity/ComCdBas.java
  88. 57
      src/main/java/com/palnet/biz/jpa/entity/ComCdBasPK.java
  89. 113
      src/main/java/com/palnet/biz/jpa/entity/ComCdGroupBas.java
  90. 101
      src/main/java/com/palnet/biz/jpa/entity/ComCdLangCtg.java
  91. 68
      src/main/java/com/palnet/biz/jpa/entity/ComCdLangCtgPK.java
  92. 79
      src/main/java/com/palnet/biz/jpa/entity/ComIdntfBas.java
  93. 124
      src/main/java/com/palnet/biz/jpa/entity/ComSiteBas.java
  94. 123
      src/main/java/com/palnet/biz/jpa/entity/ComTrmnlBas.java
  95. 90
      src/main/java/com/palnet/biz/jpa/entity/CtrCntrlBas.java
  96. 273
      src/main/java/com/palnet/biz/jpa/entity/CtrCntrlHstry.java
  97. 211
      src/main/java/com/palnet/biz/jpa/entity/CtrCntrlHstryArea.java
  98. 52
      src/main/java/com/palnet/biz/jpa/entity/PtyCrtfyhpBas.java
  99. 67
      src/main/java/com/palnet/biz/jpa/entity/PtyCstmrBas.java
  100. 89
      src/main/java/com/palnet/biz/jpa/entity/PtyCstmrConectHist.java
  101. Some files were not shown because too many files have changed in this diff Show More

33
.gitignore vendored

@ -0,0 +1,33 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/

117
.mvn/wrapper/MavenWrapperDownloader.java vendored

@ -0,0 +1,117 @@
/*
* Copyright 2007-present the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.net.*;
import java.io.*;
import java.nio.channels.*;
import java.util.Properties;
public class MavenWrapperDownloader {
private static final String WRAPPER_VERSION = "0.5.6";
/**
* Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
*/
private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
+ WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
/**
* Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
* use instead of the default one.
*/
private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
".mvn/wrapper/maven-wrapper.properties";
/**
* Path where the maven-wrapper.jar will be saved to.
*/
private static final String MAVEN_WRAPPER_JAR_PATH =
".mvn/wrapper/maven-wrapper.jar";
/**
* Name of the property which should be used to override the default download url for the wrapper.
*/
private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
public static void main(String args[]) {
System.out.println("- Downloader started");
File baseDirectory = new File(args[0]);
System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
// If the maven-wrapper.properties exists, read it and check if it contains a custom
// wrapperUrl parameter.
File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
String url = DEFAULT_DOWNLOAD_URL;
if(mavenWrapperPropertyFile.exists()) {
FileInputStream mavenWrapperPropertyFileInputStream = null;
try {
mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
Properties mavenWrapperProperties = new Properties();
mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
} catch (IOException e) {
System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
} finally {
try {
if(mavenWrapperPropertyFileInputStream != null) {
mavenWrapperPropertyFileInputStream.close();
}
} catch (IOException e) {
// Ignore ...
}
}
}
System.out.println("- Downloading from: " + url);
File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
if(!outputFile.getParentFile().exists()) {
if(!outputFile.getParentFile().mkdirs()) {
System.out.println(
"- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
}
}
System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
try {
downloadFileFromURL(url, outputFile);
System.out.println("Done");
System.exit(0);
} catch (Throwable e) {
System.out.println("- Error downloading");
e.printStackTrace();
System.exit(1);
}
}
private static void downloadFileFromURL(String urlString, File destination) throws Exception {
if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
String username = System.getenv("MVNW_USERNAME");
char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
}
URL website = new URL(urlString);
ReadableByteChannel rbc;
rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream(destination);
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close();
rbc.close();
}
}

BIN
.mvn/wrapper/maven-wrapper.jar vendored

Binary file not shown.

2
.mvn/wrapper/maven-wrapper.properties vendored

@ -0,0 +1,2 @@
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

BIN
lib/opensky-api-1.3.0.jar

Binary file not shown.

310
mvnw vendored

@ -0,0 +1,310 @@
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Maven Start Up Batch script
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
# M2_HOME - location of maven2's installed home dir
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if [ -z "$MAVEN_SKIP_RC" ] ; then
if [ -f /etc/mavenrc ] ; then
. /etc/mavenrc
fi
if [ -f "$HOME/.mavenrc" ] ; then
. "$HOME/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
CYGWIN*) cygwin=true ;;
MINGW*) mingw=true;;
Darwin*) darwin=true
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
if [ -z "$JAVA_HOME" ]; then
if [ -x "/usr/libexec/java_home" ]; then
export JAVA_HOME="`/usr/libexec/java_home`"
else
export JAVA_HOME="/Library/Java/Home"
fi
fi
;;
esac
if [ -z "$JAVA_HOME" ] ; then
if [ -r /etc/gentoo-release ] ; then
JAVA_HOME=`java-config --jre-home`
fi
fi
if [ -z "$M2_HOME" ] ; then
## resolve links - $0 may be a link to maven's home
PRG="$0"
# need this for relative symlinks
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG="`dirname "$PRG"`/$link"
fi
done
saveddir=`pwd`
M2_HOME=`dirname "$PRG"`/..
# make it fully qualified
M2_HOME=`cd "$M2_HOME" && pwd`
cd "$saveddir"
# echo Using m2 at $M2_HOME
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --unix "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
[ -n "$M2_HOME" ] &&
M2_HOME="`(cd "$M2_HOME"; pwd)`"
[ -n "$JAVA_HOME" ] &&
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
fi
if [ -z "$JAVA_HOME" ]; then
javaExecutable="`which javac`"
if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
# readlink(1) is not available as standard on Solaris 10.
readLink=`which readlink`
if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
if $darwin ; then
javaHome="`dirname \"$javaExecutable\"`"
javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
else
javaExecutable="`readlink -f \"$javaExecutable\"`"
fi
javaHome="`dirname \"$javaExecutable\"`"
javaHome=`expr "$javaHome" : '\(.*\)/bin'`
JAVA_HOME="$javaHome"
export JAVA_HOME
fi
fi
fi
if [ -z "$JAVACMD" ] ; then
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
else
JAVACMD="`which java`"
fi
fi
if [ ! -x "$JAVACMD" ] ; then
echo "Error: JAVA_HOME is not defined correctly." >&2
echo " We cannot execute $JAVACMD" >&2
exit 1
fi
if [ -z "$JAVA_HOME" ] ; then
echo "Warning: JAVA_HOME environment variable is not set."
fi
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
if [ -z "$1" ]
then
echo "Path not specified to find_maven_basedir"
return 1
fi
basedir="$1"
wdir="$1"
while [ "$wdir" != '/' ] ; do
if [ -d "$wdir"/.mvn ] ; then
basedir=$wdir
break
fi
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
if [ -d "${wdir}" ]; then
wdir=`cd "$wdir/.."; pwd`
fi
# end of workaround
done
echo "${basedir}"
}
# concatenates all lines of a file
concat_lines() {
if [ -f "$1" ]; then
echo "$(tr -s '\n' ' ' < "$1")"
fi
}
BASE_DIR=`find_maven_basedir "$(pwd)"`
if [ -z "$BASE_DIR" ]; then
exit 1;
fi
##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found .mvn/wrapper/maven-wrapper.jar"
fi
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
fi
if [ -n "$MVNW_REPOURL" ]; then
jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
else
jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
fi
while IFS="=" read key value; do
case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
esac
done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
if [ "$MVNW_VERBOSE" = true ]; then
echo "Downloading from: $jarUrl"
fi
wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
if $cygwin; then
wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
fi
if command -v wget > /dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found wget ... using wget"
fi
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
wget "$jarUrl" -O "$wrapperJarPath"
else
wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
fi
elif command -v curl > /dev/null; then
if [ "$MVNW_VERBOSE" = true ]; then
echo "Found curl ... using curl"
fi
if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
curl -o "$wrapperJarPath" "$jarUrl" -f
else
curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
fi
else
if [ "$MVNW_VERBOSE" = true ]; then
echo "Falling back to using Java to download"
fi
javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
# For Cygwin, switch paths to Windows format before running javac
if $cygwin; then
javaClass=`cygpath --path --windows "$javaClass"`
fi
if [ -e "$javaClass" ]; then
if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Compiling MavenWrapperDownloader.java ..."
fi
# Compiling the Java class
("$JAVA_HOME/bin/javac" "$javaClass")
fi
if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
# Running the downloader
if [ "$MVNW_VERBOSE" = true ]; then
echo " - Running MavenWrapperDownloader.java ..."
fi
("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
fi
fi
fi
fi
##########################################################################################
# End of extension
##########################################################################################
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
if [ "$MVNW_VERBOSE" = true ]; then
echo $MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
[ -n "$M2_HOME" ] &&
M2_HOME=`cygpath --path --windows "$M2_HOME"`
[ -n "$JAVA_HOME" ] &&
JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
[ -n "$CLASSPATH" ] &&
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
[ -n "$MAVEN_PROJECTBASEDIR" ] &&
MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
fi
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
exec "$JAVACMD" \
$MAVEN_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

182
mvnw.cmd vendored

@ -0,0 +1,182 @@
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
if "%MVNW_VERBOSE%" == "true" (
echo Found %WRAPPER_JAR%
)
) else (
if not "%MVNW_REPOURL%" == "" (
SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
)
if "%MVNW_VERBOSE%" == "true" (
echo Couldn't find %WRAPPER_JAR%, downloading it ...
echo Downloading from: %DOWNLOAD_URL%
)
powershell -Command "&{"^
"$webclient = new-object System.Net.WebClient;"^
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
"}"^
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
"}"
if "%MVNW_VERBOSE%" == "true" (
echo Finished downloading %WRAPPER_JAR%
)
)
@REM End of extension
@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
exit /B %ERROR_CODE%

164
pom.xml

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.palnet</groupId>
<artifactId>control-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>control-server</name>
<description>Control Server</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-context</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-autoconfigure</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.9.Final</version>
</dependency>
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr353</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient -->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processors>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</processors>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

15
src/main/java/com/palnet/ControlServerApplication.java

@ -0,0 +1,15 @@
package com.palnet;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class ControlServerApplication {
public static void main(String[] args) {
SpringApplication.run(ControlServerApplication.class, args);
}
}

110
src/main/java/com/palnet/biz/api/acnt/crtfyhp/controller/AcntCrtfyhpController.java

@ -0,0 +1,110 @@
package com.palnet.biz.api.acnt.crtfyhp.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.acnt.crtfyhp.service.AcntCrtfyhpService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.biz.jpa.repository.pty.PtyCstmrQueryRepository;
import com.palnet.comn.code.RSErrorCode;
import com.palnet.comn.utils.EncryptUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@Log4j2
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/acnt/crtfyhp", produces = {MediaType.APPLICATION_JSON_VALUE})
public class AcntCrtfyhpController {
@Autowired
private final AcntCrtfyhpService service;
@Autowired
private PtyCstmrQueryRepository ptyCstmrQueryRepository;
@GetMapping(value = "/register/send")
public ResponseEntity<? extends BasicResponse> send(String hpno) {
Map<String , Object> resultMap = new HashMap<String,Object>();
try {
if(hpno == null) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
//회원정보에 동일한 휴대폰 번호가 있는지 확인 , 암호화 해서 검색
String encHpno = EncryptUtils.encrypt(hpno);
boolean isHpno = ptyCstmrQueryRepository.findCstmrByHpno(encHpno);
if(isHpno) {
resultMap.put("result" , false);
resultMap.put("code" , -1); // 동일한 휴대폰 번호 존재
}else {
boolean result = service.registerSend(hpno);
resultMap.put("result" , result);
}
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
@GetMapping(value = "/register/confirm")
public ResponseEntity<? extends BasicResponse> confirm(String hpno , String crtfyNo) {
Map<String , Boolean> resultMap = new HashMap<String,Boolean>();
if(hpno == null || crtfyNo == null) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
boolean result = service.registerConfirm(hpno, crtfyNo);
resultMap.put("result" , result);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
}

177
src/main/java/com/palnet/biz/api/acnt/crtfyhp/service/AcntCrtfyhpService.java

@ -0,0 +1,177 @@
package com.palnet.biz.api.acnt.crtfyhp.service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrRqModel;
import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrRsModel;
import com.palnet.biz.api.acnt.cstmr.model.AnctCstmrTermsModel;
import com.palnet.biz.api.acnt.terms.model.AcntTermsRqModel;
import com.palnet.biz.api.acnt.terms.model.AcntTermsRsModel;
import com.palnet.biz.jpa.entity.PtyCrtfyhpBas;
import com.palnet.biz.jpa.entity.PtyCstmrBas;
import com.palnet.biz.jpa.entity.PtyCstmrDtl;
import com.palnet.biz.jpa.entity.PtyTermsAgreeTxn;
import com.palnet.biz.jpa.entity.SuredataEntity;
import com.palnet.biz.jpa.repository.pty.PtyCrtfyhpBasQueryRepository;
import com.palnet.biz.jpa.repository.pty.PtyCrtfyhpBasRepository;
import com.palnet.biz.jpa.repository.pty.PtyCstmrBasRepository;
import com.palnet.biz.jpa.repository.pty.PtyCstmrDtlRepository;
import com.palnet.biz.jpa.repository.pty.PtyCstmrQueryRepository;
import com.palnet.biz.jpa.repository.pty.PtyTermsAgreeTxnRepository;
import com.palnet.biz.jpa.repository.pty.PtyTermsQueryRepository;
import com.palnet.biz.jpa.repository.pty.SuredataRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.DateUtils;
import com.palnet.comn.utils.EncryptUtils;
import com.palnet.comn.utils.HttpUtils;
@Service
public class AcntCrtfyhpService {
private Logger logger = LoggerFactory.getLogger(getClass());
@Value("${sms.usercode}")
private String USER_CODE;
@Value("${sms.deptcode}")
private String DEPT_CODE;
@Value("${sms.reqname}")
private String REQ_NAME;
@Value("${sms.reqphone}")
private String REQ_PHONE;
@Value("${sms.result}")
private String RESULT;
@Value("${sms.reqtime}")
private String REQ_TIME;
@Value("${sms.kind}")
private String KIND;
@Value("${sms.subject.certify}")
private String SUBJECT_CETIFY;
@Value("${sms.callname.certify}")
private String CALLNAME_CERTIFY;
@Autowired
private PtyCrtfyhpBasQueryRepository query;
@Autowired
private PtyCrtfyhpBasRepository ptyCrtfyhpBasRepository;
@Autowired
private SuredataRepository sureDataRepository;
/**
*
* @param rq
* @return
*/
public boolean registerSend(String hpno) throws Exception{
//인증번호 만들기 ( 6자리)
String certifyNo = numberGen(6, 2);
//메시지 만들기
String msg = "인증번호 [" + certifyNo + "] 를 입력해 주세요.";
//기존 인증 내역 삭제
// String encHpno = EncryptUtils.encrypt(hpno);
ptyCrtfyhpBasRepository.prevCrtfyhpYnBlock(hpno);
//인증 테이블 입력
PtyCrtfyhpBas ptyEntity = new PtyCrtfyhpBas();
ptyEntity.setHpno(hpno);
ptyEntity.setCrtfyhpNo(certifyNo);
ptyEntity.setCrtfyhpYn("N");
ptyCrtfyhpBasRepository.save(ptyEntity);
//발송 테이블 입력
SuredataEntity entity = new SuredataEntity();
entity.setCallphone(hpno);
entity.setMsg(msg);
entity.setSubject(SUBJECT_CETIFY);
entity.setCallname(CALLNAME_CERTIFY);
entity.setUsercode(USER_CODE);
entity.setDeptcode(DEPT_CODE);
entity.setReqphone(REQ_PHONE);
entity.setReqname(REQ_NAME);
entity.setReqtime(REQ_TIME);
entity.setResult(RESULT);
entity.setKind(KIND);
SuredataEntity result = sureDataRepository.save(entity);
if(result == null) {
return false;
}
return true;
}
public boolean registerConfirm(String hpno , String crtfyNo ) throws Exception{
hpno = EncryptUtils.encrypt(hpno); //암호화 해서 검색
List<PtyCrtfyhpBas> entity = query.confirmSms(hpno , crtfyNo);
return entity.size() == 0 ? false : true;
}
public static String numberGen(int len, int dupCd){
Random rand = new Random();
String numStr = ""; //난수가 저장될 변수
for(int i = 0; i < len; i++){
//0~9 까지 난수 생성
String ran = Integer.toString(rand.nextInt(10));
if(dupCd == 1){
//중복 허용시 numStr에 append
numStr += ran;
}else if(dupCd == 2){
//중복을 허용하지 않을시 중복된 값이 있는지 검사한다
if(!numStr.contains(ran)){
//중복된 값이 없으면 numStr에 append
numStr += ran;
}else{
//생성된 난수가 중복되면 루틴을 다시 실행한다
i -= 1;
}
}
}
return numStr;
}
}

70
src/main/java/com/palnet/biz/api/acnt/cstmr/controller/AcntCstmrController.java

@ -0,0 +1,70 @@
package com.palnet.biz.api.acnt.cstmr.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrRqModel;
import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrRsModel;
import com.palnet.biz.api.acnt.cstmr.service.AcntCstmrService;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryDetailModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel;
import com.palnet.biz.api.anls.hstry.service.AnlsHstryService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.biz.api.ctr.cntrl.service.CtrCntrlService;
import com.palnet.biz.sample.entity.SampleEntity;
import com.palnet.biz.sample.service.SampleService;
import com.palnet.comn.model.GPHistoryModel;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@Log4j2
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/acnt/cstmr", produces = {MediaType.APPLICATION_JSON_VALUE})
public class AcntCstmrController {
@Autowired
private final AcntCstmrService service;
@PostMapping(value = "/register")
public ResponseEntity<? extends BasicResponse> register(@RequestBody AcntCstmrRqModel rq) {
AcntCstmrRsModel result;
log.debug("RQ>>>>>>>>" , rq.toString());
try {
// result = service.list(rq);
result = service.register(rq);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<AcntCstmrRsModel>(result));
}
}

46
src/main/java/com/palnet/biz/api/acnt/cstmr/model/AcntCstmrRqModel.java

@ -0,0 +1,46 @@
package com.palnet.biz.api.acnt.cstmr.model;
import lombok.Data;
@Data
public class AcntCstmrRqModel{
private String cstrmDivCd;
private String cstrmStatusCd;
private String userId;
private String authId;
private String siteCode;
private String memberDivCd;
private String userPswd;
private String ipinDi;
private String ipinCi;
private String joinCrtfyCd;
private String cntryCd;
private String genderCd;
private String memberName;
private String brthdyDate;
private String email;
private String hpno;
private String clncd;
private AnctCstmrTermsModel[] terms;
}

13
src/main/java/com/palnet/biz/api/acnt/cstmr/model/AcntCstmrRsModel.java

@ -0,0 +1,13 @@
package com.palnet.biz.api.acnt.cstmr.model;
import lombok.Data;
@Data
public class AcntCstmrRsModel{
private int errCode; // 1 : 성공 , -1 : 가입된 ID 존재 , -2 : 동일한 이메일 존재 , -3 동일한 휴대폰번호 존재
private String loginId; // 가입 성공된 ID 전달
}

9
src/main/java/com/palnet/biz/api/acnt/cstmr/model/AnctCstmrTermsModel.java

@ -0,0 +1,9 @@
package com.palnet.biz.api.acnt.cstmr.model;
import lombok.Data;
@Data
public class AnctCstmrTermsModel {
private int termsSno;
private String agreeYn;
}

187
src/main/java/com/palnet/biz/api/acnt/cstmr/service/AcntCstmrService.java

@ -0,0 +1,187 @@
package com.palnet.biz.api.acnt.cstmr.service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import com.palnet.biz.api.acnt.cstmr.controller.AcntCstmrController;
import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrRqModel;
import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrRsModel;
import com.palnet.biz.api.acnt.cstmr.model.AnctCstmrTermsModel;
import com.palnet.biz.api.acnt.terms.model.AcntTermsRqModel;
import com.palnet.biz.api.acnt.terms.model.AcntTermsRsModel;
import com.palnet.biz.jpa.entity.PtyCstmrBas;
import com.palnet.biz.jpa.entity.PtyCstmrDtl;
import com.palnet.biz.jpa.entity.PtyTermsAgreeTxn;
import com.palnet.biz.jpa.repository.pty.PtyCstmrBasRepository;
import com.palnet.biz.jpa.repository.pty.PtyCstmrDtlRepository;
import com.palnet.biz.jpa.repository.pty.PtyCstmrQueryRepository;
import com.palnet.biz.jpa.repository.pty.PtyTermsAgreeTxnRepository;
import com.palnet.biz.jpa.repository.pty.PtyTermsQueryRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.DateUtils;
import com.palnet.comn.utils.EncryptUtils;
import com.palnet.comn.utils.HttpUtils;
import com.palnet.comn.utils.JsonUtils;
import lombok.extern.log4j.Log4j2;
@Service
@Log4j2
public class AcntCstmrService {
private Logger logger = LoggerFactory.getLogger(getClass());
// @Autowired
// private CtrCntrlBasRepository ctrCntrlBasRepository;
@Autowired
private PtyCstmrQueryRepository query;
@Autowired
private PtyCstmrBasRepository ptyCstmrBasRepository;
@Autowired
private PtyCstmrDtlRepository ptyCstmrDtlRepository;
@Autowired
private PtyTermsAgreeTxnRepository ptyTermsAgreeTxnRepository;
@Autowired
private EntityManagerFactory emf;
/**
*
*
* @param rq
* @return
*/
@Transactional
public AcntCstmrRsModel register(AcntCstmrRqModel rq) throws Exception{
// logger.debug("ddddddd>>>>" + JsonUtils.toJson(rq));
// logger.debug("ddddddd>>>>" + rq.getBrthdyDate());
AcntCstmrRsModel rs = new AcntCstmrRsModel();
boolean isUserIdFind = false;
try {
//사전 체크. 동일한 ID 존재 여부 확인
isUserIdFind = query.findCstmrByUserId(rq.getUserId());
if(isUserIdFind) {
rs.setErrCode(-1);
return rs;
}
rq.setHpno(rq.getHpno().replaceAll("-", ""));
//처리 1. 민감정보 암호화 처리(비밀번호 , 이름 , 휴대폰번호 , 이메일)
rq.setUserPswd(EncryptUtils.sha256Encrypt(rq.getUserPswd()));
rq.setMemberName(EncryptUtils.encrypt(rq.getMemberName()));
rq.setHpno(EncryptUtils.encrypt(rq.getHpno()));
rq.setEmail(EncryptUtils.encrypt(rq.getEmail()));
rq.setBrthdyDate(rq.getBrthdyDate().replaceAll("-", ""));
//처리 2. 마스터 정보 저장
PtyCstmrBas basEntity = this.savePtyCstmrBas(rq);
if(basEntity == null) {
throw new CustomException(ErrorCode.INTERNAL_SERVER_ERROR);
}
//처리 3. 상세 정보 저장
this.savePtyCstmrDtl(rq ,basEntity );
//처리 4. 약관 동의 정보 저장
if(rq.getTerms() != null && rq.getTerms().length > 0) {
for(AnctCstmrTermsModel agree : rq.getTerms()) {
this.savePtyTermsAgreeTxn(agree , basEntity);
}
}
//성공 파람 담기
if(basEntity != null) {
rs.setErrCode(1);
rs.setLoginId(basEntity.getUserId());
}
}catch(Exception e) {
log.error("IGNORE : {}", e);
rs.setErrCode(-2);
return rs;
}
return rs;
}
public PtyCstmrBas savePtyCstmrBas(AcntCstmrRqModel rq) throws Exception{
PtyCstmrBas basEntity = new PtyCstmrBas();
basEntity.setCstmrDivCd(rq.getCstrmDivCd());
basEntity.setCstmrStatusCd(rq.getCstrmStatusCd());
basEntity.setUserId(rq.getUserId());
basEntity.setAuthId(rq.getAuthId());
basEntity.setSiteCode(rq.getSiteCode());
basEntity.setMemberDivCd(rq.getMemberDivCd());
basEntity.setUserPswd(rq.getUserPswd());
basEntity.setJoinDt(DateUtils.nowDate());
basEntity.setJoinIp(HttpUtils.getRequestIp());
return ptyCstmrBasRepository.save(basEntity);
}
public PtyCstmrDtl savePtyCstmrDtl(AcntCstmrRqModel rq , PtyCstmrBas basEntity) throws Exception{
PtyCstmrDtl dtlEntity = new PtyCstmrDtl();
dtlEntity.setCstmrSno(basEntity.getCstmrSno());
dtlEntity.setIpinCi(rq.getIpinCi());
dtlEntity.setIpinDi(rq.getIpinDi());
dtlEntity.setJoinCrtfyCd(rq.getJoinCrtfyCd());
dtlEntity.setCntryCd(rq.getCntryCd());
dtlEntity.setGenderCd(rq.getGenderCd());
dtlEntity.setMemberName(rq.getMemberName());
dtlEntity.setBrthdyDate(DateUtils.stringToDate(rq.getBrthdyDate()));
dtlEntity.setEmail(rq.getEmail());
dtlEntity.setHpno(rq.getHpno());
dtlEntity.setClncd(rq.getClncd());
dtlEntity.setUpdateDt(DateUtils.nowDate());
dtlEntity.setUpdateUserId(rq.getUserId());
return ptyCstmrDtlRepository.save(dtlEntity);
}
public PtyTermsAgreeTxn savePtyTermsAgreeTxn(AnctCstmrTermsModel agree , PtyCstmrBas basEntity) throws Exception{
PtyTermsAgreeTxn agreeEntity = new PtyTermsAgreeTxn();
agreeEntity.setCstmrSno(basEntity.getCstmrSno());
agreeEntity.setProcIp(HttpUtils.getRequestIp());
agreeEntity.setTermsSno(agree.getTermsSno());
agreeEntity.setUpdateDt(DateUtils.nowDate());
agreeEntity.setUpdateUserId(basEntity.getUserId());
agreeEntity.setAgreeYn(agree.getAgreeYn());
if(agree.getAgreeYn().equals("Y")) {
agreeEntity.setAgreeDt(DateUtils.nowDate());
}
return ptyTermsAgreeTxnRepository.save(agreeEntity);
}
}

137
src/main/java/com/palnet/biz/api/acnt/jwt/controller/JwtAuthenticationController.java

@ -0,0 +1,137 @@
package com.palnet.biz.api.acnt.jwt.controller;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.userdetails.UserDetails;
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.RequestAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.acnt.jwt.model.JwtProfileRsModel;
import com.palnet.biz.api.acnt.jwt.model.JwtRqModel;
import com.palnet.biz.api.acnt.jwt.model.JwtRsModel;
import com.palnet.biz.api.acnt.jwt.model.JwtUserModel;
import com.palnet.biz.api.acnt.jwt.service.JwtService;
import com.palnet.biz.api.acnt.jwt.service.JwtUserDetailsService;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.biz.jpa.entity.PtyCstmrBas;
import com.palnet.comn.code.RSErrorCode;
import com.palnet.comn.utils.EncryptUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@RestController
@RequiredArgsConstructor
@Log4j2
@RequestMapping(value = "/api/acnt/jwt", produces = {MediaType.APPLICATION_JSON_VALUE})
public class JwtAuthenticationController {
@Autowired
private JwtTokenUtil jwtTokenUtil;
@Autowired
private JwtUserDetailsService userDetailsService;
@Autowired
private JwtService service;
@PostMapping(value = "/login")
public ResponseEntity<? extends BasicResponse> createAuthenticationToken(@RequestBody JwtRqModel authenticationRequest) throws Exception {
Map<String , Object> resultMap = service.loginProcess(authenticationRequest);
int loginError = (int) resultMap.get("loginError");
if(loginError < 0) {
String errorMessage = (String) resultMap.get("errorMessage");
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(errorMessage, loginError + "")); // 계정 사용하지 못함
}else {
JwtRsModel result = (JwtRsModel) resultMap.get("result");
return ResponseEntity.ok().body(new SuccessResponse<JwtRsModel>(result));
}
}
@GetMapping(value = "/profile/{cstmrSno}")
public ResponseEntity<? extends BasicResponse> proflie(@PathVariable int cstmrSno) throws Exception{
JwtProfileRsModel result = service.profile(cstmrSno);
if(result == null) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.DATA_NOTFOUNT));
}
return ResponseEntity.ok().body(new SuccessResponse<JwtProfileRsModel>(result));
}
@PostMapping(value = "/refresh")
// public ResponseEntity<? extends BasicResponse> refresh(@RequestParam("cstmrSno") int cstmrSno , @RequestParam("refreshToken") String refreshToken) throws Exception{
public ResponseEntity<? extends BasicResponse> refresh(@RequestBody Map body) throws Exception{
//입력값 검증
if(body.get("cstmrSno") == null || body.get("refreshToken") == null || !(body.get("cstmrSno") instanceof Integer)) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
int cstmrSno = (int)body.get("cstmrSno");
String refreshToken = (String)body.get("refreshToken");
JwtRsModel result = service.findRefreshtoken(cstmrSno, refreshToken);
// JwtRsModel result = null;
if(result ==null) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.DATA_NOTFOUNT));
}
return ResponseEntity.ok().body(new SuccessResponse<JwtRsModel>(result));
}
@GetMapping(value = "/logout/{cstmrSno}")
public ResponseEntity<? extends BasicResponse> logout(@PathVariable int cstmrSno) throws Exception{
// if(cstmrSno == null || !(body.get("cstmrSno") instanceof Integer)) {
// return ResponseEntity.status(HttpStatus.OK)
// .body(new ErrorResponse(RSErrorCode.ER_PARAM));
// }
// int cstmrSno = (int)body.get("cstmrSno");
PtyCstmrBas bas = service.logoutProcess(cstmrSno);
if(bas == null) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.DATA_NOTFOUNT));
}
return ResponseEntity.ok().body(new SuccessResponse<RSErrorCode>(RSErrorCode.SUCCESS));
}
}

25
src/main/java/com/palnet/biz/api/acnt/jwt/filter/JwtAuthenticationEntryPoint.java

@ -0,0 +1,25 @@
package com.palnet.biz.api.acnt.jwt.filter;
import java.io.IOException;
import java.io.Serializable;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component;
//허가되지 않은 사용자라면, 접근 불가 메세지를 띄워 리소스 정보획득을 못하게 막아줍니다.
@Component
public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint, Serializable {
private static final long serialVersionUID = -7858869558953243875L;
@Override
public void commence(HttpServletRequest request, HttpServletResponse response,
AuthenticationException authException) throws IOException {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized");
}
}

96
src/main/java/com/palnet/biz/api/acnt/jwt/filter/JwtRequestFilter.java

@ -0,0 +1,96 @@
package com.palnet.biz.api.acnt.jwt.filter;
import java.io.IOException;
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.beans.factory.annotation.Value;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import com.palnet.biz.api.acnt.jwt.service.JwtUserDetailsService;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import io.jsonwebtoken.ExpiredJwtException;
import lombok.extern.log4j.Log4j2;
//프론트엔드에서 매순간 request를 요청 할 때마다 이 필터를 먼저 거침
@Component
@Log4j2
public class JwtRequestFilter extends OncePerRequestFilter {
@Autowired
private JwtUserDetailsService jwtUserDetailsService;
@Autowired
private JwtTokenUtil jwtTokenUtil;
@Value("${spring.jwt.prefix}")
private String JWT_PREFIX;
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
throws ServletException, IOException {
logger.info("access request uri :: " + request.getRequestURI());
logger.info("access remote host :: " + request.getRemoteHost());
final String requestTokenHeader = request.getHeader("Authorization");
String username = null;
String jwtToken = null;
// JWT Token is in the form "Bearer token". Remove Bearer word and get
// only the Token
log.debug("==============================================================================");
log.debug(requestTokenHeader);
log.debug("==============================================================================");
if (requestTokenHeader != null && requestTokenHeader.startsWith(JWT_PREFIX)) {
jwtToken = requestTokenHeader.substring(7);
try {
username = jwtTokenUtil.getUsernameFromToken(jwtToken);
} catch (IllegalArgumentException e) {
log.warn("Unable to get JWT Token");
} catch (ExpiredJwtException e) {
log.warn("JWT Token has expired");
}
} else {
logger.debug(">>>" + requestTokenHeader);
logger.warn("JWT Token is Error ");
logger.warn(">>>" + request.getRequestURI());
}
log.debug(">>>>>>>>>>" + username);
// Once we get the token validate it.
if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) {
UserDetails userDetails = this.jwtUserDetailsService.loadUserByUsername(username);
// if token is valid configure Spring Security to manually set
// authentication
if (jwtTokenUtil.validateToken(jwtToken, userDetails)) {
UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(
userDetails, null, userDetails.getAuthorities());
usernamePasswordAuthenticationToken
.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
// After setting the Authentication in the context, we specify
// that the current user is authenticated. So it passes the
// Spring Security Configurations successfully.
SecurityContextHolder.getContext().setAuthentication(usernamePasswordAuthenticationToken);
}
}
chain.doFilter(request, response);
}
}

17
src/main/java/com/palnet/biz/api/acnt/jwt/model/JwtProfileRsModel.java

@ -0,0 +1,17 @@
package com.palnet.biz.api.acnt.jwt.model;
import lombok.Data;
@Data
public class JwtProfileRsModel {
private int cstmrSno;
private String authId;
private String siteCode;
private String userId;
private String memberName;
}

20
src/main/java/com/palnet/biz/api/acnt/jwt/model/JwtRqModel.java

@ -0,0 +1,20 @@
package com.palnet.biz.api.acnt.jwt.model;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@NoArgsConstructor
@AllArgsConstructor
@Data
public class JwtRqModel implements Serializable {
private static final long serialVersionUID = 5926468583005150707L;
private String userId;
private String userPswd;
}

21
src/main/java/com/palnet/biz/api/acnt/jwt/model/JwtRsModel.java

@ -0,0 +1,21 @@
package com.palnet.biz.api.acnt.jwt.model;
import java.io.Serializable;
import lombok.Data;
@Data
public class JwtRsModel implements Serializable {
private String accessToken ;
private String refreshToken;
private String userId;
private Integer cstmrSno;
private String auth;
}

95
src/main/java/com/palnet/biz/api/acnt/jwt/model/JwtUserModel.java

@ -0,0 +1,95 @@
package com.palnet.biz.api.acnt.jwt.model;
import lombok.*;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import javax.persistence.*;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class JwtUserModel implements UserDetails {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name = "CSTMR_SNO", unique = true)
private Integer cstmrSno;
@Column(name = "USER_ID", unique = true)
private String userId;
@Column(name = "USER_PSWD")
private String userPswd;
@Column(name = "SITE_CODE")
private String siteCode;
@Column(name = "AUTH_ID")
private String auth;
@Column(name = "CSTMR_STATUS_CD")
private String cstmrStatusCd;
// 사용자의 권한을 콜렉션 형태로 반환
// 단, 클래스 자료형은 GrantedAuthority를 구현해야함
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
Set<GrantedAuthority> roles = new HashSet<>();
for (String role : auth.split(",")) {
roles.add(new SimpleGrantedAuthority(role));
}
return roles;
}
// 사용자의 id를 반환 (unique한 값)
@Override
public String getUsername() {
return userId;
}
// 사용자의 password를 반환
@Override
public String getPassword() {
return userPswd;
}
// 계정 만료 여부 반환
@Override
public boolean isAccountNonExpired() {
// 만료되었는지 확인하는 로직
return true; // true -> 만료되지 않았음
}
// 계정 잠금 여부 반환
@Override
public boolean isAccountNonLocked() {
// 계정 잠금되었는지 확인하는 로직
if(cstmrStatusCd.equals("A"))
return true;
else
return false;
// return true; // true -> 잠금되지 않았음
}
// 패스워드의 만료 여부 반환
@Override
public boolean isCredentialsNonExpired() {
// 패스워드가 만료되었는지 확인하는 로직
return true; // true -> 만료되지 않았음
}
// 계정 사용 가능 여부 반환
@Override
public boolean isEnabled() {
// 계정이 사용 가능한지 확인하는 로직
return true; // true -> 사용 가능
}
}

237
src/main/java/com/palnet/biz/api/acnt/jwt/service/JwtService.java

@ -0,0 +1,237 @@
package com.palnet.biz.api.acnt.jwt.service;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.acnt.cstmr.service.AcntCstmrService;
import com.palnet.biz.api.acnt.jwt.model.JwtProfileRsModel;
import com.palnet.biz.api.acnt.jwt.model.JwtRqModel;
import com.palnet.biz.api.acnt.jwt.model.JwtRsModel;
import com.palnet.biz.api.acnt.jwt.model.JwtUserModel;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.biz.jpa.entity.CtrCntrlBas;
import com.palnet.biz.jpa.entity.PtyCstmrBas;
import com.palnet.biz.jpa.entity.PtyCstmrConectHist;
import com.palnet.biz.jpa.repository.pty.PtyCstmrBasRepository;
import com.palnet.biz.jpa.repository.pty.PtyCstmrConectHistRepository;
import com.palnet.biz.jpa.repository.pty.PtyCstmrQueryRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.DateUtils;
import com.palnet.comn.utils.EncryptUtils;
import com.palnet.comn.utils.HttpUtils;
import lombok.extern.log4j.Log4j2;
@Service
@Log4j2
public class JwtService {
@Autowired
private PtyCstmrBasRepository ptyCstmrBasRepository;
@Autowired
private PtyCstmrConectHistRepository ptyCstmrConectHistRepository;
@Autowired
private JwtUserDetailsService userDetailsService;
@Autowired
private PtyCstmrQueryRepository query ;
@Autowired
private JwtTokenUtil jwtTokenUtil;
/**
* 로그인 처리
* @param rq
* @return
*/
public Map<String , Object> loginProcess(JwtRqModel rq) throws Exception{
int loginError = 1; // -100 : 아이디/비밀번호가 없습니다 , -101 : 계정정보를 찾을수 없습니다 , -102 : 비밀번호가 잘못 되었습니다 , -103 : 계정을 사용할수 없습니다.
Map<String , Object> resultMap = new HashMap<String , Object>();
//입력값 검증 처리
if(StringUtils.isEmpty(rq.getUserId()) || StringUtils.isEmpty(rq.getUserPswd())) {
loginError = -100;
}
JwtUserModel userDetails = (JwtUserModel)userDetailsService
.loadUserByUsername(rq.getUserId());
//계정이 없는경우
if(userDetails == null) {
loginError = -101;
}else{
String password = EncryptUtils.sha256Encrypt(rq.getUserPswd());
//비밀번호 검증 처리
if (!userDetails.getPassword().equals(password)) {
loginError = -102;
}
//계정 검증로직
if(!userDetails.isAccountNonLocked() || !userDetails.isAccountNonExpired() || !userDetails.isEnabled() || !userDetails.isCredentialsNonExpired()) {
loginError = -103;
}
}
if(loginError < 0) {
String errorMessage = "";
if(loginError == -100) {
errorMessage = "Please parameter Check";
}else if(loginError == -101) {
errorMessage = "Account not found";
}else if(loginError == -102) {
errorMessage = "Password does not match";
}else if(loginError == -103) {
errorMessage = "Account is unavailable";
}
//실패 이력 저장
//cstmrSno , String loginYn , String errorCode
if(userDetails != null) {
this.historySave(userDetails.getCstmrSno(), "N", loginError+"");
}
resultMap.put("loginError", loginError);
resultMap.put("errorMessage", errorMessage);
return resultMap;
}else {
String accessToken = jwtTokenUtil.generateToken(userDetails);
String refreshToken = jwtTokenUtil.generateRefreshToken(userDetails);
JwtRsModel result = new JwtRsModel();
result.setAccessToken(accessToken);
result.setRefreshToken(refreshToken);
result.setAuth(userDetails.getAuth());
result.setUserId(userDetails.getUserId());
result.setCstmrSno(userDetails.getCstmrSno());
//토큰 저장 처리
log.debug("========= refresh>>>>" + refreshToken);
this.refreshTokenSave(userDetails.getCstmrSno(), refreshToken);
//성공이력 저장
this.historySave(userDetails.getCstmrSno(), "Y", loginError+"");
resultMap.put("loginError", loginError);
resultMap.put("errorMessage", "");
resultMap.put("result", result);
return resultMap;
}
}
public PtyCstmrBas logoutProcess(int cstmrSno) throws Exception{
Optional<PtyCstmrBas> optional = ptyCstmrBasRepository.findById(cstmrSno);
if (optional.isPresent()) {
PtyCstmrBas entity = optional.get();
entity.setRfrshToken("");
return ptyCstmrBasRepository.save(entity);
}else {
return null;
}
}
/**
* 로그인 이력 저장
* @param cstmrSno
* @param loginYn
* @param errorCode
* @return
* @throws Exception
*/
public PtyCstmrConectHist historySave(int cstmrSno , String loginYn , String errorCode) throws Exception{
String conectIp = HttpUtils.getRequestIp();
PtyCstmrConectHist entity = new PtyCstmrConectHist();
entity.setCstmrSno(cstmrSno);
entity.setConectSucesYn(loginYn);
entity.setConectErrorCd(errorCode);
entity.setConectIp(conectIp);
entity.setConectDt(DateUtils.nowDate());
return ptyCstmrConectHistRepository.save(entity);
}
/**
* refresh Token 저장 처리
* @param cstmrSno
* @param refreshToken
* @return
* @throws Exception
*/
public PtyCstmrBas refreshTokenSave(int cstmrSno , String refreshToken) throws Exception{
Optional<PtyCstmrBas> optional = ptyCstmrBasRepository.findById(cstmrSno);
if (!optional.isPresent()) {
throw new CustomException(ErrorCode.DATA_NOTFIND);
}
PtyCstmrBas entity = optional.get();
entity.setRfrshToken(refreshToken);
return ptyCstmrBasRepository.save(entity);
}
/**
* 프로필 조회
* @param cstmrSno
* @return
* @throws Exception
*/
public JwtProfileRsModel profile(int cstmrSno) throws Exception{
JwtProfileRsModel model = query.findUserProfile(cstmrSno);
model.setMemberName(EncryptUtils.decrypt(model.getMemberName()));
return model;
}
/**
* token 만료시 refresh 토큰으로 재검색
* @param cstmrSno
* @param refreshToken
* @return
*/
public JwtRsModel findRefreshtoken(int cstmrSno , String refreshToken) {
JwtUserModel userDetails = query.findRefreshtoken(cstmrSno, refreshToken);
if(userDetails == null) {
return null;
}
String accessToken = jwtTokenUtil.generateToken(userDetails);
JwtRsModel result = new JwtRsModel();
result.setAccessToken(accessToken);
result.setRefreshToken(refreshToken);
result.setAuth(userDetails.getAuth());
result.setUserId(userDetails.getUserId());
result.setCstmrSno(userDetails.getCstmrSno());
return result;
}
}

41
src/main/java/com/palnet/biz/api/acnt/jwt/service/JwtUserDetailsService.java

@ -0,0 +1,41 @@
package com.palnet.biz.api.acnt.jwt.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.acnt.jwt.model.JwtUserModel;
import com.palnet.biz.jpa.repository.pty.PtyCstmrBasRepository;
import com.palnet.biz.jpa.repository.pty.PtyCstmrQueryRepository;
import com.palnet.comn.utils.JsonUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@Service
@RequiredArgsConstructor
@Log4j2
public class JwtUserDetailsService implements UserDetailsService{
@Autowired
private PtyCstmrQueryRepository query ;
@Autowired
private PtyCstmrBasRepository repository;
@Override
public JwtUserModel loadUserByUsername(String username){
JwtUserModel model = query.findUserPassword(username);
log.debug("jwtUser>>>>" + JsonUtils.toJson(model));
if(model == null) {
return null;
}else {
return model;
}
}
}

104
src/main/java/com/palnet/biz/api/acnt/jwt/utils/JwtTokenUtil.java

@ -0,0 +1,104 @@
package com.palnet.biz.api.acnt.jwt.utils;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Component;
import com.palnet.biz.api.acnt.jwt.model.JwtUserModel;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.extern.log4j.Log4j2;
@Component
@Log4j2
public class JwtTokenUtil implements Serializable {
private static final long serialVersionUID = -2550185165626007488L;
public static final long JWT_TOKEN_VALIDITY = 5 * 60 * 60; // 5시간
// public static final long JWT_TOKEN_VALIDITY = 10; // 10초
public static final long JWT_REFRESH_TOKEN_VALIDTY = 21* 24 * 60 * 60; //21일
@Value("${spring.jwt.secret}")
private String secret;
//retrieve username from jwt token
// jwt token으로부터 username을 획득한다.
public String getUsernameFromToken(String token) {
return getClaimFromToken(token, Claims::getSubject);
}
//retrieve expiration date from jwt token
// jwt token으로부터 만료일자를 알려준다.
public Date getExpirationDateFromToken(String token) {
return getClaimFromToken(token, Claims::getExpiration);
}
public <T> T getClaimFromToken(String token, Function<Claims, T> claimsResolver) {
final Claims claims = getAllClaimsFromToken(token);
return claimsResolver.apply(claims);
}
//for retrieveing any information from token we will need the secret key
private Claims getAllClaimsFromToken(String token) {
return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();
}
//check if the token has expired
// 토큰이 만료되었는지 확인한다.
private Boolean isTokenExpired(String token) {
final Date expiration = getExpirationDateFromToken(token);
log.debug(">>>" + expiration);
return expiration.before(new Date());
}
//generate token for user
// 유저를 위한 토큰을 발급해준다.
public String generateToken(JwtUserModel userDetails) {
Map<String, Object> claims = new HashMap<>();
claims.put("userId", userDetails.getUserId());
claims.put("cstmrSno", userDetails.getCstmrSno());
return doGenerateToken(claims, userDetails.getUsername());
}
public String generateRefreshToken(JwtUserModel userDetails) {
Map<String, Object> claims = new HashMap<>();
claims.put("userId", userDetails.getUserId());
claims.put("cstmrSno", userDetails.getCstmrSno());
return doGenerateRefreshToken(claims, userDetails.getUsername());
}
//while creating the token -
//1. Define claims of the token, like Issuer, Expiration, Subject, and the ID
//2. Sign the JWT using the HS512 algorithm and secret key.
//3. According to JWS Compact Serialization(https://tools.ietf.org/html/draft-ietf-jose-json-web-signature-41#section-3.1)
// compaction of the JWT to a URL-safe string
private String doGenerateToken(Map<String, Object> claims, String subject) {
return Jwts.builder().setClaims(claims).setSubject(subject).setIssuedAt(new Date(System.currentTimeMillis()))
.setExpiration(new Date(System.currentTimeMillis() + JWT_TOKEN_VALIDITY * 1000))
.signWith(SignatureAlgorithm.HS512, secret).compact();
}
private String doGenerateRefreshToken(Map<String , Object> claims , String subject) {
return Jwts.builder().setClaims(claims).setSubject(subject).setIssuedAt(new Date(System.currentTimeMillis()))
.setExpiration(new Date(System.currentTimeMillis() + JWT_REFRESH_TOKEN_VALIDTY * 1000))
.signWith(SignatureAlgorithm.HS512, secret).compact();
}
//validate token
public Boolean validateToken(String token, UserDetails userDetails) {
final String username = getUsernameFromToken(token);
return (username.equals(userDetails.getUsername()) && !isTokenExpired(token));
}
}

69
src/main/java/com/palnet/biz/api/acnt/terms/controller/AcntTermsController.java

@ -0,0 +1,69 @@
package com.palnet.biz.api.acnt.terms.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.acnt.terms.model.AcntTermsRqModel;
import com.palnet.biz.api.acnt.terms.model.AcntTermsRsModel;
import com.palnet.biz.api.acnt.terms.service.AcntTermsService;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryDetailModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel;
import com.palnet.biz.api.anls.hstry.service.AnlsHstryService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.biz.api.ctr.cntrl.service.CtrCntrlService;
import com.palnet.biz.sample.entity.SampleEntity;
import com.palnet.biz.sample.service.SampleService;
import com.palnet.comn.model.GPHistoryModel;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@Log4j2
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/acnt/terms", produces = {MediaType.APPLICATION_JSON_VALUE})
public class AcntTermsController {
@Autowired
private final AcntTermsService service;
@GetMapping(value = "/list")
public ResponseEntity<? extends BasicResponse> list(AcntTermsRqModel rq) {
List<AcntTermsRsModel> result = null;
log.debug("RQ>>>>>>>>" , rq.toString());
try {
result = service.list(rq);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
}

11
src/main/java/com/palnet/biz/api/acnt/terms/model/AcntTermsRqModel.java

@ -0,0 +1,11 @@
package com.palnet.biz.api.acnt.terms.model;
import lombok.Data;
@Data
public class AcntTermsRqModel{
private String siteCd;
private String langDivCd;
}

26
src/main/java/com/palnet/biz/api/acnt/terms/model/AcntTermsRsModel.java

@ -0,0 +1,26 @@
package com.palnet.biz.api.acnt.terms.model;
import java.util.Date;
import lombok.Data;
@Data
public class AcntTermsRsModel{
private int termsSno ;
private String siteCd;
private Date estbshDate;
private String termsCtgryCd;
private String langDivCd;
private String termsTitleNm;
private String termsCn;
private String simpleCn;
}

35
src/main/java/com/palnet/biz/api/acnt/terms/service/AcntTermsService.java

@ -0,0 +1,35 @@
package com.palnet.biz.api.acnt.terms.service;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.acnt.terms.model.AcntTermsRqModel;
import com.palnet.biz.api.acnt.terms.model.AcntTermsRsModel;
import com.palnet.biz.jpa.repository.pty.PtyTermsQueryRepository;
@Service
public class AcntTermsService {
private Logger logger = LoggerFactory.getLogger(getClass());
// @Autowired
// private CtrCntrlBasRepository ctrCntrlBasRepository;
@Autowired
private PtyTermsQueryRepository query;
public List<AcntTermsRsModel> list(AcntTermsRqModel rq){
List<AcntTermsRsModel> resultList = query.list(rq);
return resultList;
}
}

102
src/main/java/com/palnet/biz/api/anls/hstry/controller/AnlsHstryController.java

@ -0,0 +1,102 @@
package com.palnet.biz.api.anls.hstry.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryDetailModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel;
import com.palnet.biz.api.anls.hstry.service.AnlsHstryService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.comn.code.RSErrorCode;
import com.palnet.comn.utils.JsonUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@Log4j2
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/anls/hstry", produces = {MediaType.APPLICATION_JSON_VALUE})
public class AnlsHstryController {
@Autowired
private final AnlsHstryService service;
@GetMapping(value = "/list")
public ResponseEntity<? extends BasicResponse> list(AnlsHstryRqModel rq) {
List<AnlsHstryModel> result = null;
log.debug("JSON>>>>>>>>" , JsonUtils.toJson(rq));
log.debug("Param" + rq.getStDate() + "::" + rq.getEndDate());
//입력값 검증
if(rq.getStDate() == null || !(rq.getStDate().length() == 10) || rq.getEndDate() ==null || !(rq.getEndDate().length() == 10) ) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
result = service.list(rq);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
@GetMapping(value = "/detail/{id}")
public ResponseEntity<? extends BasicResponse> detail(@PathVariable String id) {
AnlsHstryModel result = null;
try {
result = service.detail(id);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<AnlsHstryModel>(result));
}
@GetMapping(value = "/log/{id}")
public ResponseEntity<? extends BasicResponse> log(@PathVariable String id) {
List<AnlsHstryDetailModel> result = null;
try {
result = service.hstryList(id);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
}

47
src/main/java/com/palnet/biz/api/anls/hstry/model/AnlsHstryDetailModel.java

@ -0,0 +1,47 @@
package com.palnet.biz.api.anls.hstry.model;
import java.util.Date;
import lombok.Data;
@Data
public class AnlsHstryDetailModel{
private int hstrySno;
private String cntrlId;
private String idntfNum;
private String trmnlId;
private String mssgTypeCd;
private String statusCd;
private Double lat;
private Double lon;
private Double speed;
private String speedType;
private Double heading;
private Double elev;
private String elevType;
private Double mvDstnc;
private Double bttrLvl;
private Double bttrVltg;
private Date trmnlRcvDt;
private Date srvrRcvDt;
}

79
src/main/java/com/palnet/biz/api/anls/hstry/model/AnlsHstryModel.java

@ -0,0 +1,79 @@
package com.palnet.biz.api.anls.hstry.model;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.persistence.Column;
import javax.persistence.Id;
import com.palnet.comn.utils.DateUtils;
import io.netty.util.internal.StringUtil;
import lombok.Data;
@Data
public class AnlsHstryModel{
private String cntrlId;
private String idntfNum;
private String statusCd;
private String objectTypeCd;
private Date flghtStDt;
private Date flghtEndDt;
private Date cntrlStDt;
private Date cntrlEndDt;
private Double ttlTime= 0.0;
private String ttlTimeType;
private Double ttlDstnc= 0.0;
private String ttlDstncType;
private Double avrgSpeed = 0.0;
private String avrgSpeedType;
private Double bttrCnsmptn= 0.0;
private String endTypeCd;
private String actnType;
private String area1 = "";
private String area2 = "";
private String area3 = "";
private String zipCd = "";
private String landNm = "";
private String landNum = "";
private String areaType = "";
private String areaNm = "";
private String stArea = "";
private String endArea = "";
private Date createDt;
private Date updateDt;
}

10
src/main/java/com/palnet/biz/api/anls/hstry/model/AnlsHstryRqModel.java

@ -0,0 +1,10 @@
package com.palnet.biz.api.anls.hstry.model;
import com.palnet.biz.api.comn.model.ComnRqModel;
import lombok.Data;
@Data
public class AnlsHstryRqModel extends ComnRqModel{
}

66
src/main/java/com/palnet/biz/api/anls/hstry/service/AnlsHstryService.java

@ -0,0 +1,66 @@
package com.palnet.biz.api.anls.hstry.service;
import java.util.List;
import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryDetailModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel;
import com.palnet.biz.jpa.entity.CtrCntrlBas;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
@Service
public class AnlsHstryService {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private CtrCntrlBasRepository ctrCntrlBasRepository;
@Autowired
private CtrCntrlQueryRepository query;
public List<AnlsHstryModel> list(AnlsHstryRqModel rq){
List<AnlsHstryModel> resultList = query.listCntrlBas(rq);
return resultList;
}
public AnlsHstryModel detail(String cntrlId) throws Exception{
AnlsHstryModel model = new AnlsHstryModel();
Optional<CtrCntrlBas> optional = ctrCntrlBasRepository.findById(cntrlId);
if (!optional.isPresent()) {
throw new CustomException(ErrorCode.DATA_NOTFIND);
}
CtrCntrlBas entity = optional.get();
BeanUtils.copyProperties(entity , model);
return model;
}
public List<AnlsHstryDetailModel> hstryList(String cntrlId) {
List<AnlsHstryDetailModel> resultList = query.listCntrlHstry(cntrlId);
return resultList;
}
}

143
src/main/java/com/palnet/biz/api/anls/smlt/controller/AnlsSmltController.java

@ -0,0 +1,143 @@
package com.palnet.biz.api.anls.smlt.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryDetailModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel;
import com.palnet.biz.api.anls.smlt.model.AnlsSmltDetailModel;
import com.palnet.biz.api.anls.smlt.model.AnlsSmltStcsModel;
import com.palnet.biz.api.anls.smlt.service.AnlsSmltService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.comn.code.RSErrorCode;
import com.palnet.comn.utils.JsonUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@Log4j2
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/anls/smlt", produces = {MediaType.APPLICATION_JSON_VALUE})
public class AnlsSmltController {
@Autowired
private final AnlsSmltService service;
/**
* 비행 현황 목록
* @param rq
* @return
*/
@GetMapping(value = "/list")
public ResponseEntity<? extends BasicResponse> list(AnlsHstryRqModel rq) {
List<AnlsHstryModel> result = null;
log.debug("JSON>>>>>>>>" , JsonUtils.toJson(rq));
log.debug("Param" + rq.getStDate() + "::" + rq.getEndDate());
//입력값 검증
if(rq.getStDate() == null || !(rq.getStDate().length() == 10) || rq.getEndDate() ==null || !(rq.getEndDate().length() == 10) ) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
result = service.list(rq);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
/**
* 비행 이력 데이터 조회
* @param rq
* @return
*/
@GetMapping(value = "/hist/{id}")
public ResponseEntity<? extends BasicResponse> histList(@PathVariable String id) {
List<AnlsHstryDetailModel> result = null;
try {
// result = service.list(rq);
result = service.histList(id);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
/**
* 통계 데이터 조회
* @param rq
* @return
*/
@GetMapping(value = "/stcs/{id}")
public ResponseEntity<? extends BasicResponse> stcsList(@PathVariable String id) {
List<AnlsSmltStcsModel> result = null;
try {
result = service.stcsList(id);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
/**
* 비행 상세정보 조회
* @param id
* @return
*/
@GetMapping(value = "/detail/{id}")
public ResponseEntity<? extends BasicResponse> detail(@PathVariable String id) {
AnlsSmltDetailModel result = null;
try {
result = service.detail(id);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<AnlsSmltDetailModel>(result));
}
}

60
src/main/java/com/palnet/biz/api/anls/smlt/model/AnlsSmltDetailModel.java

@ -0,0 +1,60 @@
package com.palnet.biz.api.anls.smlt.model;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.persistence.Column;
import javax.persistence.Id;
import com.palnet.comn.utils.DateUtils;
import io.netty.util.internal.StringUtil;
import lombok.Data;
@Data
public class AnlsSmltDetailModel{
private String cntrlId;
private String idntfNum;
private Date flghtStDt;
private Date flghtEndDt;
private Date cntrlStDt;
private Date cntrlEndDt;
private Double ttlTime= 0.0;
private String ttlTimeType;
private Double ttlDstnc= 0.0;
private String ttlDstncType;
private Double avrgSpeed = 0.0;
private String avrgSpeedType;
private Double bttrCnsmptn= 0.0;
private String stArea = "";
private String endArea = "";
private String arcrftTypeCd = "";
private String prdctNum = "";
private String arcrftModelNm = "";
private String imageUrl = "";
}

46
src/main/java/com/palnet/biz/api/anls/smlt/model/AnlsSmltHistModel.java

@ -0,0 +1,46 @@
package com.palnet.biz.api.anls.smlt.model;
import java.util.Date;
import lombok.Data;
@Data
public class AnlsSmltHistModel{
private int hstrySno;
private String cntrlId;
private String trmnlId;
private String mssgTypeCd;
private String statusCd;
private double lat;
private double lon;
private double speed;
private String speedType;
private double heading;
private double elev;
private String elevType;
private double mvDstnc;
private String mvDstncType;
private double bttrLvl;
private double bttrVltg;
private Date trmnlRcvDt;
private Date srvrRcvDt;
}

10
src/main/java/com/palnet/biz/api/anls/smlt/model/AnlsSmltRqModel.java

@ -0,0 +1,10 @@
package com.palnet.biz.api.anls.smlt.model;
import com.palnet.biz.api.comn.model.ComnRqModel;
import lombok.Data;
@Data
public class AnlsSmltRqModel extends ComnRqModel{
}

28
src/main/java/com/palnet/biz/api/anls/smlt/model/AnlsSmltStcsModel.java

@ -0,0 +1,28 @@
package com.palnet.biz.api.anls.smlt.model;
import lombok.Data;
@Data
public class AnlsSmltStcsModel{
private String dateCd;
private String timeCd;
private Double avrgSpeed;
private String speedType;
private Double avrgElev;
private String elevType;
private Double avrgMvDstnc;
private String mvDstncType;
private Double minBttrLvl;
private Double maxBttrLvl;
}

149
src/main/java/com/palnet/biz/api/anls/smlt/service/AnlsSmltService.java

@ -0,0 +1,149 @@
package com.palnet.biz.api.anls.smlt.service;
import java.util.Collections;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryDetailModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel;
import com.palnet.biz.api.anls.smlt.model.AnlsSmltDetailModel;
import com.palnet.biz.api.anls.smlt.model.AnlsSmltStcsModel;
import com.palnet.biz.jpa.entity.CtrCntrlHstryArea;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository;
import com.palnet.comn.utils.NumberUtils;
@Service
public class AnlsSmltService {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private CtrCntrlBasRepository ctrCntrlBasRepository;
@Autowired
private CtrCntrlQueryRepository query;
/**
* 비행 현황 목록
* @param rq
* @return
*/
public List<AnlsHstryModel> list(AnlsHstryRqModel rq){
List<AnlsHstryModel> resultList = query.listCntrlBas(rq);
return resultList;
}
/**
*
* @param rq비행 이력 데이터 조회
* @return
*/
public List<AnlsHstryDetailModel> histList(String id){
List<AnlsHstryDetailModel> resultList = query.listCntrlHstry(id);
//정렬 순서 뒤집기 처리
Collections.reverse(resultList);
return resultList;
}
/**
* 통계 데이터 조회
* @param rq
* @return
*/
public List<AnlsSmltStcsModel> stcsList(String id){
List<AnlsSmltStcsModel> result = query.anlsSmltStcs(id);
//통계 데이터 가공 처리
//소수점 자리 1자리로 컷트
for(AnlsSmltStcsModel model : result) {
model.setAvrgElev(NumberUtils.formatZero2(model.getAvrgElev()));
model.setAvrgMvDstnc(NumberUtils.formatZero2(model.getAvrgMvDstnc()));
model.setAvrgSpeed(NumberUtils.formatZero2(model.getAvrgSpeed()));
}
return result;
}
/**
* 비행 상세정보 조회
* @param cntrlId
* @return
* @throws Exception
*/
public AnlsSmltDetailModel detail(String cntrlId) throws Exception{
AnlsSmltDetailModel result = new AnlsSmltDetailModel();
result = query.anlsSmltDetail(cntrlId);
// Optional<CtrCntrlBas> optional = ctrCntrlBasRepository.findById(cntrlId);
//
// if (!optional.isPresent()) {
// throw new CustomException(ErrorCode.DATA_NOTFIND);
// }
//
// CtrCntrlBas entity = optional.get();
//
// BeanUtils.copyProperties(entity , result);
List<CtrCntrlHstryArea> areaList = query.detailArea(cntrlId);
for(CtrCntrlHstryArea area : areaList) {
if(area != null) {
String areaNm = "";
if(!StringUtils.isEmpty(area.getArea1())) {
areaNm = areaNm + " " + area.getArea1();
}
if(!StringUtils.isEmpty(area.getArea2())) {
areaNm = areaNm + " " + area.getArea2();
}
if(!StringUtils.isEmpty(area.getArea3())) {
areaNm = areaNm + " " + area.getArea3();
}
if(!StringUtils.isEmpty(area.getLandNm())) {
areaNm = areaNm + " " + area.getLandNm();
}
if(!StringUtils.isEmpty(area.getLandNum())) {
areaNm = areaNm + " " + area.getLandNum();
}
if(area.getActnType().equals("01")) {
result.setStArea(areaNm);
}else if(area.getActnType().equals("99")) {
result.setEndArea(areaNm);
}
}
}
return result;
}
}

289
src/main/java/com/palnet/biz/api/bas/dron/controller/BasDronController.java

@ -0,0 +1,289 @@
package com.palnet.biz.api.bas.dron.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.palnet.biz.api.bas.dron.model.BasDronModel;
import com.palnet.biz.api.bas.dron.model.BasDronRqModel;
import com.palnet.biz.api.bas.dron.model.BasIdntfModel;
import com.palnet.biz.api.bas.dron.model.BasIdntfRqModel;
import com.palnet.biz.api.bas.dron.service.BasDronService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.comn.code.RSErrorCode;
import com.palnet.comn.exception.CustomException;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@Log4j2
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/bas/dron", produces = {MediaType.APPLICATION_JSON_VALUE})
public class BasDronController {
@Autowired
private final BasDronService service;
/**
* 목록 조회
* @param rq
* @return
*/
@GetMapping(value = "/list")
public ResponseEntity<? extends BasicResponse> list(BasDronRqModel rq) {
List<BasDronModel> result = null;
//입력값 검증
if(StringUtils.isEmpty(rq.getGroupId())) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
result = service.list(rq);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
/**
* 식별정보 조회
* @param rq
* @return
*/
@GetMapping(value = "/idntf/list/{id}")
public ResponseEntity<? extends BasicResponse> mylist(@PathVariable Integer id) {
List<BasIdntfModel> result = null;
//입력값 검증
if(StringUtils.isEmpty(id)) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
result = service.listIdntf(id);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
/**
* 상세 조회
* @param id
* @return
*/
@GetMapping(value = "/detail/{id}")
public ResponseEntity<? extends BasicResponse> detail(@PathVariable Integer id) {
BasDronModel result = null;
try {
//입력값 검증
if(StringUtils.isEmpty(id)) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
result = service.detail(id);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<BasDronModel>(result));
}
/**
* 생성
* @return
*/
@PostMapping(value = "/create")
public ResponseEntity<? extends BasicResponse> create(@RequestBody BasDronModel rq) {
Map<String , Object> resultMap = new HashMap<String,Object>();
try {
boolean result = service.create(rq);
resultMap.put("result", result);
}catch(CustomException e2) {
log.error("IGNORE : {}", e2);
resultMap.put("result", false);
resultMap.put("errorCode", e2.getErrorCode());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
/**
* 생성
* @return
*/
@PostMapping(value = "/idntf/create")
public ResponseEntity<? extends BasicResponse> createIdntf(@RequestBody BasIdntfRqModel rq) {
Map<String , Object> resultMap = new HashMap<String,Object>();
try {
// boolean result = service.create(rq);
boolean result = service.createIdntf(rq);
resultMap.put("result", result);
}catch(CustomException e2) {
log.error("IGNORE : {}", e2);
resultMap.put("result", false);
resultMap.put("errorCode", e2.getErrorCode());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
/**
* 수정
* @return
*/
@PutMapping(value = "/update")
public ResponseEntity<? extends BasicResponse> update(@RequestBody BasDronModel rq) {
Map<String , Object> resultMap = new HashMap<String,Object>();
try {
boolean result = service.update(rq);
resultMap.put("result", result);
}
catch(CustomException e2) {
log.error("IGNORE : {}", e2);
resultMap.put("result", false);
resultMap.put("errorCode", e2.getErrorCode());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
/**
* 삭제
* @param id
* @return
*/
@DeleteMapping(value = "/delete/{id}")
public ResponseEntity<? extends BasicResponse> delete(@PathVariable Integer id) {
Map<String , Object> resultMap = new HashMap<String,Object>();
try {
//입력값 검증
if(StringUtils.isEmpty(id)) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
boolean result = service.delete(id);
resultMap.put("result", result);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
/**
* 식별장치 삭제
* @param id
* @return
*/
@DeleteMapping(value = "/idntf/delete/{id}")
public ResponseEntity<? extends BasicResponse> deleteIdntf(@PathVariable String id) {
Map<String , Object> resultMap = new HashMap<String,Object>();
try {
//입력값 검증
if(StringUtils.isEmpty(id)) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
boolean result = service.deleteIdntf(id);
resultMap.put("result", result);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
}

71
src/main/java/com/palnet/biz/api/bas/dron/model/BasDronModel.java

@ -0,0 +1,71 @@
package com.palnet.biz.api.bas.dron.model;
import java.util.Date;
import lombok.Data;
@Data
public class BasDronModel {
private String groupId;
private int arcrftSno;
private double arcrftHght;
private double arcrftLngth;
private String arcrftModelNm;
private String arcrftTypeCd;
private double arcrftWdth;
private double arcrftWght;
private String cameraYn;
private Date createDt;
private String createUserId;
private String insrncYn;
private String prdctCmpnNm;
private Date prdctDate;
private String prdctNum;
private double takeoffWght;
private Date updateDt;
private String updateUserId;
private String imageUrl;
private String wghtTypeCd;
//식별 번호 정보
private String idntfNum;
private String newIdntfNum; //변경된 식별 정보
private String idntfTypeCd;
// 운영자 정보
private int ownerSno;
private String ownerNm;
private String hpno;
private String telno;
private String useYn;
}

21
src/main/java/com/palnet/biz/api/bas/dron/model/BasDronRqModel.java

@ -0,0 +1,21 @@
package com.palnet.biz.api.bas.dron.model;
import java.util.Date;
import lombok.Data;
@Data
public class BasDronRqModel {
private String groupId;
private String arcrftModelNm;
private String arcrftTypeCd;
private String idntfNum;
private String ownerNm;
}

22
src/main/java/com/palnet/biz/api/bas/dron/model/BasIdntfModel.java

@ -0,0 +1,22 @@
package com.palnet.biz.api.bas.dron.model;
import java.util.Date;
import lombok.Data;
@Data
public class BasIdntfModel {
//식별 번호 정보
private String idntfNum;
private int arcrftSno;
private String idntfTypeCd;
private Date updateDt;
private Date createDt;
}

14
src/main/java/com/palnet/biz/api/bas/dron/model/BasIdntfRqModel.java

@ -0,0 +1,14 @@
package com.palnet.biz.api.bas.dron.model;
import java.util.List;
import lombok.Data;
@Data
public class BasIdntfRqModel {
private List<BasIdntfModel> data;
private int arcrftSno;
}

30
src/main/java/com/palnet/biz/api/bas/dron/model/BasOwnerModel.java

@ -0,0 +1,30 @@
package com.palnet.biz.api.bas.dron.model;
import java.util.Date;
import lombok.Data;
@Data
public class BasOwnerModel {
private int ownerSno;
private int arcrftSno;
private String ownerNm;
private String hpno;
private String telno;
private String useYn;
private Date createDt;
private String createUserId;
private Date updateDt;
private String updateUserId;
}

421
src/main/java/com/palnet/biz/api/bas/dron/service/BasDronService.java

@ -0,0 +1,421 @@
package com.palnet.biz.api.bas.dron.service;
import java.util.List;
import java.util.Optional;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.palnet.biz.api.bas.dron.model.BasDronModel;
import com.palnet.biz.api.bas.dron.model.BasDronRqModel;
import com.palnet.biz.api.bas.dron.model.BasIdntfModel;
import com.palnet.biz.api.bas.dron.model.BasIdntfRqModel;
import com.palnet.biz.jpa.entity.ComArcrftBas;
import com.palnet.biz.jpa.entity.ComArcrftOwner;
import com.palnet.biz.jpa.entity.ComIdntfBas;
import com.palnet.biz.jpa.entity.PtyGroupArcrft;
import com.palnet.biz.jpa.repository.com.ComArcrftBasRepository;
import com.palnet.biz.jpa.repository.com.ComArcrftOwnerRepository;
import com.palnet.biz.jpa.repository.com.ComIdntBasRepository;
import com.palnet.biz.jpa.repository.pty.PtyDronQueryRepository;
import com.palnet.biz.jpa.repository.pty.PtyGroupArcrftRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.DateUtils;
import com.palnet.comn.utils.EncryptUtils;
import lombok.extern.log4j.Log4j2;
@Service
@Log4j2
public class BasDronService {
@Autowired
private PtyDronQueryRepository query;
@Autowired
private ComArcrftBasRepository comArcrftBasRepository;
@Autowired
private ComArcrftOwnerRepository comArcrftOwnerRepository;
@Autowired
private ComIdntBasRepository comIdntBasRepository;
@Autowired
private PtyGroupArcrftRepository ptyGroupArcrftRepository;
/**
* 드론 목록
* @param rq
* @return
*/
public List<BasDronModel> list(BasDronRqModel rq){
List<BasDronModel> resultList = query.list(rq);
return resultList;
}
/**
* 식별장치 목록
* @param arcrftSno
* @return
*/
public List<BasIdntfModel> listIdntf(int arcrftSno){
List<BasIdntfModel> resultList = query.idntfList(arcrftSno);
return resultList;
}
/**
* 상세 조회
* @param cntrlId
* @return
* @throws Exception
*/
public BasDronModel detail(int arcrftSno) throws Exception{
BasDronModel model = query.detail(arcrftSno);
if (model == null ) {
throw new CustomException(ErrorCode.DATA_NOTFIND);
}
return model;
}
/**
* 생성
* @param
* @return
* @throws Exception
*/
@Transactional
public boolean create(BasDronModel rq) throws Exception{
// 사전 체크 , 동일한 ID 존재 여부 확인
if(!query.isNotPrdctNum(rq.getPrdctNum() , 0)) {
throw new CustomException(ErrorCode.DATA_DUPLICATE);
}
// 민감정보 암호화 처리
if(!StringUtils.isEmpty(rq.getHpno())) {
rq.setHpno(EncryptUtils.encrypt(rq.getHpno()));
}
if(!StringUtils.isEmpty(rq.getOwnerNm())) {
rq.setOwnerNm(EncryptUtils.encrypt(rq.getOwnerNm()));
}
if(!StringUtils.isEmpty(rq.getTelno())) {
rq.setTelno(EncryptUtils.encrypt(rq.getTelno()));
}
//1. 드론 기본 정보 등록
ComArcrftBas comArcrftBas = this.insertComArcrftBas(rq);
if(comArcrftBas == null) {
throw new CustomException(ErrorCode.DB_ERROR);
}
log.debug("===========================>" + comArcrftBas.getArcrftSno());
rq.setArcrftSno(comArcrftBas.getArcrftSno()); // KEY 넣기
//2. 드론 운영자 정보 등록
ComArcrftOwner comArcrftOwner = this.insertComArcrftOwner(rq);
if(comArcrftOwner == null) {
throw new CustomException(ErrorCode.DB_ERROR);
}
// //3. 드론 식별 정보 등록
// ComIdntfBas comIdntfBas = this.insertComIdntfBas(rq);
// if(comIdntfBas == null) {
// throw new CustomException(ErrorCode.DB_ERROR);
// }
//4. 드론 그룹에 연결 등록
PtyGroupArcrft ptyGroupArcrft = this.insertPtyGroupArcrft(rq);
if(ptyGroupArcrft == null) {
throw new CustomException(ErrorCode.DB_ERROR);
}
return true;
}
/**
* 식밸장치 생성
* @param
* @return
* @throws Exception
*/
@Transactional
public boolean createIdntf(BasIdntfRqModel rq) throws Exception{
if( rq == null && rq.getData().size() == 0)
throw new CustomException(ErrorCode.DATA_NOTFIND);
for(BasIdntfModel model : rq.getData() ) {
Optional<ComIdntfBas> optional = comIdntBasRepository.findById(model.getIdntfNum());
if (optional.isPresent()) {
throw new CustomException(ErrorCode.DATA_DUPLICATE);
}
ComIdntfBas entity = new ComIdntfBas();
BeanUtils.copyProperties(model , entity);
entity.setArcrftSno(rq.getArcrftSno());
entity.setCreateDt(DateUtils.nowDate());
entity.setUpdateDt(DateUtils.nowDate());
log.debug(entity.toString());
if( comIdntBasRepository.save(entity) == null ) return false;
}
return true;
}
public boolean deleteIdntf(String idntfNum) {
Optional<ComIdntfBas> optional = comIdntBasRepository.findById(idntfNum);
if (!optional.isPresent()) {
throw new CustomException(ErrorCode.DATA_NOTFIND);
}
ComIdntfBas entity = optional.get();
comIdntBasRepository.delete(entity);
return true;
}
public ComArcrftBas insertComArcrftBas(BasDronModel model) throws Exception{
ComArcrftBas basEntity = new ComArcrftBas();
BeanUtils.copyProperties(model , basEntity);
basEntity.setCreateDt(DateUtils.nowDate());
basEntity.setUpdateDt(DateUtils.nowDate());
basEntity.setUseYn("Y");
log.debug(basEntity.toString());
return comArcrftBasRepository.save(basEntity);
}
public ComArcrftOwner insertComArcrftOwner(BasDronModel model) throws Exception{
ComArcrftOwner entity = new ComArcrftOwner();
BeanUtils.copyProperties(model , entity);
entity.setCreateDt(DateUtils.nowDate());
entity.setUpdateDt(DateUtils.nowDate());
entity.setUseYn("Y");
log.debug(entity.toString());
return comArcrftOwnerRepository.save(entity);
}
public ComIdntfBas insertComIdntfBas(BasDronModel model) throws Exception{
ComIdntfBas entity = new ComIdntfBas();
BeanUtils.copyProperties(model , entity);
entity.setCreateDt(DateUtils.nowDate());
entity.setUpdateDt(DateUtils.nowDate());
log.debug(entity.toString());
return comIdntBasRepository.save(entity);
}
public PtyGroupArcrft insertPtyGroupArcrft(BasDronModel model) throws Exception{
PtyGroupArcrft entity = new PtyGroupArcrft();
BeanUtils.copyProperties(model , entity);
entity.setCreateDt(DateUtils.nowDate());
entity.setUpdateDt(DateUtils.nowDate());
entity.setUseYn("Y");
log.debug(entity.toString());
return ptyGroupArcrftRepository.save(entity);
}
/**
* 수정
* @param
* @return
* @throws Exception
*/
@Transactional
public boolean update(BasDronModel rq) throws Exception{
// 사전 체크 , 동일한 ID 존재 여부 확인
if(!query.isNotPrdctNum(rq.getPrdctNum() , rq.getArcrftSno())) {
throw new CustomException(ErrorCode.DATA_DUPLICATE);
}
//1. 기체 정보 수정
ComArcrftBas comArcrftBas = this.updateComArcrftBas(rq);
if(comArcrftBas == null) {
throw new CustomException(ErrorCode.DB_ERROR);
}
//2-1. 식별장치 수정 필요 여부 체크 newIdnfnum -> idnftNum 비교후 다르면
// if(!rq.getNewIdntfNum().equals(rq.getIdntfNum())) {
// //2-2 식별번호 중복 체크
// if(!query.isNotIdntNum(rq.getNewIdntfNum())) {
// throw new CustomException(ErrorCode.DATA_DUPLICATE);
// }
//
// //2-3식별정보 수정
// ComIdntfBas comIdntfBas = this.updateComIdntfBas(rq);
//
// if(comIdntfBas == null) {
// throw new CustomException(ErrorCode.DB_ERROR);
// }
// }
//민감 정보 암호화 처리
// 민감정보 암호화 처리
if(!StringUtils.isEmpty(rq.getHpno())) {
rq.setHpno(EncryptUtils.encrypt(rq.getHpno()));
}
if(!StringUtils.isEmpty(rq.getOwnerNm())) {
rq.setOwnerNm(EncryptUtils.encrypt(rq.getOwnerNm()));
}
if(!StringUtils.isEmpty(rq.getTelno())) {
rq.setTelno(EncryptUtils.encrypt(rq.getTelno()));
}
//3. 운영자 정보 수정
ComArcrftOwner comArcrftOwner = this.updateComArcrftOwner(rq);
if(comArcrftOwner == null) {
throw new CustomException(ErrorCode.DB_ERROR);
}
return true;
}
public ComArcrftBas updateComArcrftBas(BasDronModel model) throws Exception{
Optional<ComArcrftBas> optional = comArcrftBasRepository.findById(model.getArcrftSno());
if (!optional.isPresent()) {
throw new CustomException(ErrorCode.DATA_NOTFIND);
}
ComArcrftBas entity = optional.get();
entity.setArcrftHght(model.getArcrftHght());
entity.setArcrftLngth(model.getArcrftLngth());
entity.setArcrftModelNm(model.getArcrftModelNm());
entity.setArcrftTypeCd(model.getArcrftTypeCd());
entity.setArcrftWdth(model.getArcrftWdth());
entity.setArcrftWght(model.getArcrftWght());
entity.setCameraYn(model.getCameraYn());
entity.setImageUrl(model.getImageUrl());
entity.setInsrncYn(model.getInsrncYn());
entity.setPrdctCmpnNm(model.getPrdctCmpnNm());
entity.setPrdctDate(model.getPrdctDate());
entity.setPrdctNum(model.getPrdctNum());
entity.setTakeoffWght(model.getTakeoffWght());
entity.setUpdateUserId(model.getUpdateUserId());
entity.setUpdateDt(DateUtils.nowDate());
return comArcrftBasRepository.save(entity);
}
public ComArcrftOwner updateComArcrftOwner(BasDronModel model) throws Exception{
Optional<ComArcrftOwner> optional = comArcrftOwnerRepository.findById(model.getOwnerSno());
if (!optional.isPresent()) {
throw new CustomException(ErrorCode.DATA_NOTFIND);
}
ComArcrftOwner entity = optional.get();
entity.setUpdateDt(DateUtils.nowDate());
entity.setUpdateUserId(model.getUpdateUserId());
entity.setOwnerNm(model.getOwnerNm());
entity.setHpno(model.getHpno());
entity.setTelno(model.getTelno());
log.debug(entity.toString());
return comArcrftOwnerRepository.save(entity);
}
public ComIdntfBas updateComIdntfBas(BasDronModel model) throws Exception{
Optional<ComIdntfBas> optional = comIdntBasRepository.findById(model.getIdntfNum());
if (optional.isPresent()) {
ComIdntfBas entity = optional.get();
comIdntBasRepository.delete(entity);
}
model.setIdntfNum(model.getNewIdntfNum());
return this.insertComIdntfBas(model);
}
/**
* 삭제
* @param
* @return
* @throws Exception
*/
@Transactional
public boolean delete(int arcrftSno) throws Exception{
try {
//1. 기체 정보 사용여부 N 으로 체크
Optional<ComArcrftBas> optional = comArcrftBasRepository.findById(arcrftSno);
if (optional.isPresent()) {
ComArcrftBas comArcrftBas = optional.get();
comArcrftBas.setUseYn("N");
comArcrftBasRepository.save(comArcrftBas);
}
//2. 식별 정보 삭제 처리
comIdntBasRepository.deleteByArcrftSno(arcrftSno);
//3. 기체 소유자정보 사용여부 N 처리
comArcrftOwnerRepository.deleteByArcrftSno(arcrftSno);
//4. 그룹기체 정보 사용여부 N 처리
ptyGroupArcrftRepository.deleteByArcrftSno(arcrftSno);
return true;
}catch(Exception e) {
log.error("IGNORE : {}", e);
throw new CustomException(ErrorCode.DB_ERROR);
}
}
}

97
src/main/java/com/palnet/biz/api/bas/group/controller/BasGroupAprvController.java

@ -0,0 +1,97 @@
package com.palnet.biz.api.bas.group.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.bas.group.model.BasGroupAprvModel;
import com.palnet.biz.api.bas.group.model.BasGroupAprvRqModel;
import com.palnet.biz.api.bas.group.service.BasGroupAprvService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.comn.code.RSErrorCode;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@Log4j2
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/bas/group/aprv", produces = {MediaType.APPLICATION_JSON_VALUE})
public class BasGroupAprvController {
@Autowired
private final BasGroupAprvService service;
/**
* 승인요청 조회
* @param rq
* @return
*/
@GetMapping(value = "/list")
public ResponseEntity<? extends BasicResponse> list(BasGroupAprvRqModel rq) {
List<BasGroupAprvModel> result = null;
log.debug(">>>>" + rq.toString());
if(StringUtils.isEmpty(rq.getCstmrSno())) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
result = service.mylist(rq);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
/**
* 승인처리 / 승인취소 처리
* @return
*/
@PutMapping(value = "/update")
public ResponseEntity<? extends BasicResponse> update(@RequestBody BasGroupAprvModel rq) {
Map<String , Object> resultMap = new HashMap<String,Object>();
if(StringUtils.isEmpty(rq.getCstmrGroupSno())) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
boolean result = service.update(rq);
resultMap.put("result", result);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
}

240
src/main/java/com/palnet/biz/api/bas/group/controller/BasGroupController.java

@ -0,0 +1,240 @@
package com.palnet.biz.api.bas.group.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.bas.group.model.BasGroupJoinModel;
import com.palnet.biz.api.bas.group.model.BasGroupModel;
import com.palnet.biz.api.bas.group.model.BasGroupRqModel;
import com.palnet.biz.api.bas.group.service.BasGroupService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.comn.code.RSErrorCode;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@Log4j2
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/bas/group", produces = {MediaType.APPLICATION_JSON_VALUE})
public class BasGroupController {
@Autowired
private final BasGroupService service;
@GetMapping(value = "/createid")
public ResponseEntity<? extends BasicResponse> createid() {
Map<String , Object> resultMap = new HashMap<String,Object>();
try {
String result = service.createid();
resultMap.put("result", result);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
/**
* 나의 그룹 목록 조회
* @param rq
* @return
*/
@GetMapping(value = "/mylist")
public ResponseEntity<? extends BasicResponse> mylist(Integer cstmrSno) {
List<BasGroupModel> result = null;
log.debug("Param : " + cstmrSno);
//입력값 검증
if(StringUtils.isEmpty(cstmrSno)) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
result = service.mylist(cstmrSno);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
/**
* 참여 그룹 목록 조회
* @param rq
* @return
*/
@GetMapping(value = "/joinlist")
public ResponseEntity<? extends BasicResponse> joinList(Integer cstmrSno) {
List<BasGroupJoinModel> result = null;
//입력값 검증
if(StringUtils.isEmpty(cstmrSno)) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
result = service.joinList(cstmrSno);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
/**
* 전체 그룹 목록 조회
* @param rq
* @return
*/
@GetMapping(value = "/list")
public ResponseEntity<? extends BasicResponse> list(BasGroupRqModel rq) {
List<BasGroupModel> result = null;
try {
result = service.list(rq);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
/**
* 그룹 상세 조회
* @param id
* @return
*/
@GetMapping(value = "/detail/{id}")
public ResponseEntity<? extends BasicResponse> detail(@PathVariable String id) {
BasGroupModel result = null;
try {
result = service.detail(id);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<BasGroupModel>(result));
}
/**
* 그룹 생성
* @return
*/
@PostMapping(value = "/create")
public ResponseEntity<? extends BasicResponse> create(@RequestBody BasGroupModel rq) {
Map<String , Object> resultMap = new HashMap<String,Object>();
try {
boolean result = service.create(rq);
resultMap.put("result", result);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
/**
* 그룹 수정
* @return
*/
@PutMapping(value = "/update")
public ResponseEntity<? extends BasicResponse> update(@RequestBody BasGroupModel rq) {
Map<String , Object> resultMap = new HashMap<String,Object>();
try {
boolean result = service.update(rq);
resultMap.put("result", result);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
/**
* 그룹 삭제
* @param id
* @return
*/
@DeleteMapping(value = "/delete/{id}")
public ResponseEntity<? extends BasicResponse> delete(@PathVariable String id) {
Map<String , Object> resultMap = new HashMap<String,Object>();
try {
boolean result = service.delete(id);
resultMap.put("result", result);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
}

108
src/main/java/com/palnet/biz/api/bas/group/controller/BasGroupJoinController.java

@ -0,0 +1,108 @@
package com.palnet.biz.api.bas.group.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.bas.group.model.BasGroupJoinModel;
import com.palnet.biz.api.bas.group.model.BasGroupJoinRqModel;
import com.palnet.biz.api.bas.group.service.BasGroupJoinService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.comn.code.RSErrorCode;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@Log4j2
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/bas/group/join", produces = {MediaType.APPLICATION_JSON_VALUE})
public class BasGroupJoinController {
@Autowired
private final BasGroupJoinService service;
@GetMapping(value = "/list")
public ResponseEntity<? extends BasicResponse> list(BasGroupJoinRqModel rq) {
List<BasGroupJoinModel> result = null;
if(StringUtils.isEmpty(rq.getCstmrSno())) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
result = service.joinFullList(rq);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
@PostMapping(value = "/create")
public ResponseEntity<? extends BasicResponse> create(@RequestBody BasGroupJoinModel rq) {
Map<String , Object> resultMap = new HashMap<String,Object>();
try {
boolean result = service.create(rq);
resultMap.put("result", result);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
@PutMapping(value = "/update")
public ResponseEntity<? extends BasicResponse> update(@RequestBody BasGroupJoinModel rq) {
Map<String , Object> resultMap = new HashMap<String,Object>();
if(StringUtils.isEmpty(rq.getCstmrGroupSno())) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
boolean result = service.update(rq);
resultMap.put("result", result);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
}

91
src/main/java/com/palnet/biz/api/bas/group/controller/BasGroupUserController.java

@ -0,0 +1,91 @@
package com.palnet.biz.api.bas.group.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryDetailModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel;
import com.palnet.biz.api.anls.hstry.service.AnlsHstryService;
import com.palnet.biz.api.bas.group.model.BasGroupUserModel;
import com.palnet.biz.api.bas.group.model.BasGroupUserRqModel;
import com.palnet.biz.api.bas.group.service.BasGroupUserService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.comn.code.RSErrorCode;
import com.palnet.comn.utils.JsonUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@Log4j2
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/bas/group/user", produces = {MediaType.APPLICATION_JSON_VALUE})
public class BasGroupUserController {
@Autowired
private final BasGroupUserService service;
@GetMapping(value = "/list")
public ResponseEntity<? extends BasicResponse> list(BasGroupUserRqModel rq) {
List<BasGroupUserModel> result = null;
if(StringUtils.isEmpty(rq.getCstmrSno())) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
result = service.list(rq);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
@PutMapping(value = "/update")
public ResponseEntity<? extends BasicResponse> update(@RequestBody BasGroupUserModel rq) {
Map<String , Object> resultMap = new HashMap<String,Object>();
try {
boolean result = service.update(rq);
resultMap.put("result", result);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
}

37
src/main/java/com/palnet/biz/api/bas/group/model/BasGroupAprvModel.java

@ -0,0 +1,37 @@
package com.palnet.biz.api.bas.group.model;
import java.util.Date;
import lombok.Data;
@Data
public class BasGroupAprvModel {
private Integer cstmrGroupSno;
private String groupId;
private String groupNm;
private String groupTypeCd;
private Integer cstmrSno;
private String aprvlYn;
private String joinYn;
private String memberName;
private String userId;
private Date aprvlDt;
private Date joinDt;
private String groupAuthCd;
private String aprvlUserId;
}

19
src/main/java/com/palnet/biz/api/bas/group/model/BasGroupAprvRqModel.java

@ -0,0 +1,19 @@
package com.palnet.biz.api.bas.group.model;
import com.palnet.biz.api.comn.model.ComnRqModel;
import lombok.Data;
@Data
public class BasGroupAprvRqModel extends ComnRqModel{
private String groupNm;
private String memberName;
private String aprvYn;
private Integer cstmrSno;
}

34
src/main/java/com/palnet/biz/api/bas/group/model/BasGroupJoinModel.java

@ -0,0 +1,34 @@
package com.palnet.biz.api.bas.group.model;
import java.util.Date;
import lombok.Data;
@Data
public class BasGroupJoinModel {
private Integer cstmrGroupSno;
private String groupId;
private String groupNm;
private String groupTypeCd;
private Integer cstmrSno;
private String aprvlYn = "N";
private String joinYn = "N";
private Date joinDt;
private Date aprvlDt;
private String groupAuthCd;
private Date createDt;
private Date updateDt;
}

16
src/main/java/com/palnet/biz/api/bas/group/model/BasGroupJoinRqModel.java

@ -0,0 +1,16 @@
package com.palnet.biz.api.bas.group.model;
import com.palnet.biz.api.comn.model.ComnRqModel;
import lombok.Data;
@Data
public class BasGroupJoinRqModel extends ComnRqModel{
private String groupNm;
private String groupId;
private Integer cstmrSno;
}

22
src/main/java/com/palnet/biz/api/bas/group/model/BasGroupModel.java

@ -0,0 +1,22 @@
package com.palnet.biz.api.bas.group.model;
import java.util.Date;
import lombok.Data;
@Data
public class BasGroupModel {
private String groupId;
private String groupNm;
private String groupTypeCd;
private int cstmrSno;
private Date createDt;
private Date updateDt;
}

14
src/main/java/com/palnet/biz/api/bas/group/model/BasGroupRqModel.java

@ -0,0 +1,14 @@
package com.palnet.biz.api.bas.group.model;
import com.palnet.biz.api.comn.model.ComnRqModel;
import lombok.Data;
@Data
public class BasGroupRqModel extends ComnRqModel{
private String groupNm;
private String groupId;
}

32
src/main/java/com/palnet/biz/api/bas/group/model/BasGroupUserModel.java

@ -0,0 +1,32 @@
package com.palnet.biz.api.bas.group.model;
import java.util.Date;
import lombok.Data;
@Data
public class BasGroupUserModel {
private Integer cstmrGroupSno;
private String groupId;
private String groupNm;
private String groupTypeCd;
private Integer cstmrSno;
private String memberName;
private String userId;
private Date aprvlDt;
private Date joinDt;
private String joinYn;
private String groupAuthCd;
}

19
src/main/java/com/palnet/biz/api/bas/group/model/BasGroupUserRqModel.java

@ -0,0 +1,19 @@
package com.palnet.biz.api.bas.group.model;
import com.palnet.biz.api.comn.model.ComnRqModel;
import lombok.Data;
@Data
public class BasGroupUserRqModel extends ComnRqModel{
private String groupNm;
private String memberName;
private String groupAuthCd;
private Integer cstmrSno;
}

73
src/main/java/com/palnet/biz/api/bas/group/service/BasGroupAprvService.java

@ -0,0 +1,73 @@
package com.palnet.biz.api.bas.group.service;
import java.util.List;
import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.bas.group.model.BasGroupAprvModel;
import com.palnet.biz.api.bas.group.model.BasGroupAprvRqModel;
import com.palnet.biz.jpa.entity.PtyCstmrGroup;
import com.palnet.biz.jpa.repository.pty.PtyCstmrGroupRepository;
import com.palnet.biz.jpa.repository.pty.PtyGroupQueryRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.DateUtils;
@Service
public class BasGroupAprvService {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private PtyGroupQueryRepository query;
@Autowired
private PtyCstmrGroupRepository ptyCstmrGroupRepository;
/**
* 승인요청 조회
* @param rq
* @return
*/
public List<BasGroupAprvModel> mylist(BasGroupAprvRqModel rq){
List<BasGroupAprvModel> resultList = query.aprvList(rq);
return resultList;
}
/**
* Y : 가입 , N : 탈퇴 , B : 블럭처리 , A: 가입신청 , C : 가입신청 취소
* 승인처리 / 승인취소 처리
* @param
* @return
* @throws Exception
*/
public boolean update(BasGroupAprvModel rq) throws Exception{
Optional<PtyCstmrGroup> optional = ptyCstmrGroupRepository.findById(rq.getCstmrGroupSno());
if (!optional.isPresent()) {
throw new CustomException(ErrorCode.DATA_NOTFIND);
}
PtyCstmrGroup entity = optional.get();
if(rq.getAprvlYn().equals("Y")){
entity.setAprvlDt(DateUtils.nowDate());
entity.setAprvlUserId(rq.getAprvlUserId());
}
entity.setAprvlYn(rq.getAprvlYn());
if(ptyCstmrGroupRepository.save(entity) == null)
throw new CustomException(ErrorCode.FAIL);
return true;
}
}

113
src/main/java/com/palnet/biz/api/bas/group/service/BasGroupJoinService.java

@ -0,0 +1,113 @@
package com.palnet.biz.api.bas.group.service;
import java.util.List;
import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.bas.group.model.BasGroupJoinModel;
import com.palnet.biz.api.bas.group.model.BasGroupJoinRqModel;
import com.palnet.biz.api.bas.group.model.BasGroupModel;
import com.palnet.biz.jpa.entity.PtyCstmrGroup;
import com.palnet.biz.jpa.entity.PtyGroupBas;
import com.palnet.biz.jpa.repository.pty.PtyCstmrGroupRepository;
import com.palnet.biz.jpa.repository.pty.PtyGroupBasRepository;
import com.palnet.biz.jpa.repository.pty.PtyGroupQueryRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.DateUtils;
@Service
public class BasGroupJoinService {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private PtyGroupQueryRepository query;
@Autowired
private PtyGroupBasRepository ptyGroupBasRepository;
@Autowired
private PtyCstmrGroupRepository ptyCstmrGroupRepository;
/**
* 참여할 목록 조회
* @param rq
* @return
*/
public List<BasGroupJoinModel> joinFullList(BasGroupJoinRqModel rq){
List<BasGroupJoinModel> resultList = query.joinFullList(rq);
return resultList;
}
/**
* 가입요청 처리
* @param
* @return
* @throws Exception
*/
public boolean create(BasGroupJoinModel rq) throws Exception{
boolean isNotJoin = query.isNotJoin(rq.getCstmrSno(), rq.getGroupId());
if(!isNotJoin) {
throw new CustomException(ErrorCode.DATA_DUPLICATE);
}
//참여 정보 입력 하기
PtyCstmrGroup entity2 = new PtyCstmrGroup();
entity2.setGroupId(rq.getGroupId());
entity2.setGroupAuthCd(rq.getGroupAuthCd()); //생성한 사람은 최고 권한 부여 (CREATER , ADMIN , USER) 로 구분 하여 사용
entity2.setCstmrSno(rq.getCstmrSno());
entity2.setJoinYn("Y");
entity2.setJoinDt(DateUtils.nowDate());
entity2.setAprvlYn("N");
if(ptyCstmrGroupRepository.save(entity2) == null)
throw new CustomException(ErrorCode.FAIL);
return true;
}
/**
* Y : 가입 , N : 탈퇴 , B : 블럭처리 , A: 가입신청 , C : 가입신청 취소
* 가입취소 / 탈퇴 처리
* @param
* @return
* @throws Exception
*/
public boolean update(BasGroupJoinModel rq) throws Exception{
Optional<PtyCstmrGroup> optional = ptyCstmrGroupRepository.findById(rq.getCstmrGroupSno());
if (!optional.isPresent()) {
throw new CustomException(ErrorCode.DATA_NOTFIND);
}
PtyCstmrGroup entity = optional.get();
if(rq.getJoinYn().equals("N")) {
entity.setAprvlYn("N");
entity.setAprvlUserId("");
entity.setGroupAuthCd("");
entity.setWthdrwDt(DateUtils.nowDate());
}
entity.setJoinYn(rq.getJoinYn());
if(ptyCstmrGroupRepository.save(entity) == null)
throw new CustomException(ErrorCode.FAIL);
return true;
}
}

217
src/main/java/com/palnet/biz/api/bas/group/service/BasGroupService.java

@ -0,0 +1,217 @@
package com.palnet.biz.api.bas.group.service;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel;
import com.palnet.biz.api.bas.group.model.BasGroupJoinModel;
import com.palnet.biz.api.bas.group.model.BasGroupModel;
import com.palnet.biz.api.bas.group.model.BasGroupRqModel;
import com.palnet.biz.jpa.entity.CtrCntrlBas;
import com.palnet.biz.jpa.entity.PtyCstmrGroup;
import com.palnet.biz.jpa.entity.PtyGroupBas;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository;
import com.palnet.biz.jpa.repository.pty.PtyCstmrGroupRepository;
import com.palnet.biz.jpa.repository.pty.PtyGroupBasRepository;
import com.palnet.biz.jpa.repository.pty.PtyGroupQueryRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.DateUtils;
@Service
public class BasGroupService {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private PtyGroupQueryRepository query;
@Autowired
private PtyGroupBasRepository ptyGroupBasRepository;
@Autowired
private PtyCstmrGroupRepository ptyCstmrGroupRepository;
public String createid() {
String groupId = "";
while(true) {
groupId = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase().substring(0, 6);
Optional<PtyGroupBas> optional = ptyGroupBasRepository.findById(groupId);
if(!optional.isPresent()) {
break;
}
}
return groupId;
}
/**
* 나의 그룹 목록
* @param rq
* @return
*/
public List<BasGroupModel> mylist(int cstmrSno){
List<BasGroupModel> resultList = query.mylist(cstmrSno);
return resultList;
}
/**
* 참여 그룹 목록
* @param rq
* @return
*/
public List<BasGroupJoinModel> joinList(int cstmrSno){
List<BasGroupJoinModel> resultList = query.joinList(cstmrSno);
return resultList;
}
/**
* 전체 그룹 목록
* @param rq
* @return
*/
public List<BasGroupModel> list(BasGroupRqModel rq){
List<BasGroupModel> resultList = query.list(rq);
return resultList;
}
/**
* 그룹 상세 조회
* @param cntrlId
* @return
* @throws Exception
*/
public BasGroupModel detail(String groupId) throws Exception{
BasGroupModel model = new BasGroupModel();
Optional<PtyGroupBas> optional = ptyGroupBasRepository.findById(groupId);
if (!optional.isPresent()) {
throw new CustomException(ErrorCode.DATA_NOTFIND);
}
PtyGroupBas entity = optional.get();
BeanUtils.copyProperties(entity , model);
return model;
}
/**
* 그룹 생성
* @param
* @return
* @throws Exception
*/
public boolean create(BasGroupModel rq) throws Exception{
Optional<PtyGroupBas> optional = ptyGroupBasRepository.findById(rq.getGroupId());
if (optional.isPresent()) {
throw new CustomException(ErrorCode.DATA_DUPLICATE);
}
PtyGroupBas entity = new PtyGroupBas();
BeanUtils.copyProperties(rq , entity);
entity.setUpdateDt(DateUtils.nowDate());
entity.setUseYn("Y");
entity.setCreateDt(DateUtils.nowDate());
//참여 정보 입력 하기
PtyCstmrGroup entity2 = new PtyCstmrGroup();
entity2.setGroupId(rq.getGroupId());
entity2.setGroupAuthCd("CREATER"); //생성한 사람은 최고 권한 부여 (CREATER , ADMIN , USER) 로 구분 하여 사용
entity2.setAprvlYn("Y"); //자동 승인 처리 함
entity2.setAprvlDt(DateUtils.nowDate());
entity2.setCstmrSno(rq.getCstmrSno());
entity2.setJoinYn("Y");
entity2.setJoinDt(DateUtils.nowDate());
if( ptyGroupBasRepository.save(entity) == null)
throw new CustomException(ErrorCode.FAIL);
if(ptyCstmrGroupRepository.save(entity2) == null)
throw new CustomException(ErrorCode.FAIL);
return true;
}
/**
* 그룹 수정
* @param
* @return
* @throws Exception
*/
public boolean update(BasGroupModel rq) throws Exception{
Optional<PtyGroupBas> optional = ptyGroupBasRepository.findById(rq.getGroupId());
if (!optional.isPresent()) {
throw new CustomException(ErrorCode.DATA_NOTFIND);
}
PtyGroupBas entity = optional.get();
entity.setGroupNm(rq.getGroupNm());
entity.setGroupTypeCd(rq.getGroupTypeCd());
entity.setUpdateDt(DateUtils.nowDate());
if(ptyGroupBasRepository.save(entity) == null)
throw new CustomException(ErrorCode.FAIL);
return true;
}
/**
* 그룹 삭제
* @param
* @return
* @throws Exception
*/
public boolean delete(String groupId) throws Exception{
Optional<PtyGroupBas> optional = ptyGroupBasRepository.findById(groupId);
if (!optional.isPresent()) {
throw new CustomException(ErrorCode.DATA_NOTFIND);
}
PtyGroupBas entity = optional.get();
entity.setUseYn("N");
entity.setUpdateDt(DateUtils.nowDate());
if(ptyGroupBasRepository.save(entity) == null)
throw new CustomException(ErrorCode.FAIL);
return true;
}
}

90
src/main/java/com/palnet/biz/api/bas/group/service/BasGroupUserService.java

@ -0,0 +1,90 @@
package com.palnet.biz.api.bas.group.service;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel;
import com.palnet.biz.api.bas.group.model.BasGroupJoinModel;
import com.palnet.biz.api.bas.group.model.BasGroupModel;
import com.palnet.biz.api.bas.group.model.BasGroupRqModel;
import com.palnet.biz.api.bas.group.model.BasGroupUserModel;
import com.palnet.biz.api.bas.group.model.BasGroupUserRqModel;
import com.palnet.biz.jpa.entity.CtrCntrlBas;
import com.palnet.biz.jpa.entity.PtyCstmrGroup;
import com.palnet.biz.jpa.entity.PtyGroupBas;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository;
import com.palnet.biz.jpa.repository.pty.PtyCstmrGroupRepository;
import com.palnet.biz.jpa.repository.pty.PtyGroupBasRepository;
import com.palnet.biz.jpa.repository.pty.PtyGroupQueryRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.DateUtils;
@Service
public class BasGroupUserService {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private PtyGroupQueryRepository query;
@Autowired
private PtyGroupBasRepository ptyGroupBasRepository;
@Autowired
private PtyCstmrGroupRepository ptyCstmrGroupRepository;
/**
* 그룹 사용자 조회
* @param rq
* @return
*/
public List<BasGroupUserModel> list(BasGroupUserRqModel rq){
List<BasGroupUserModel> resultList = query.userList(rq);
return resultList;
}
/**
* 그룹사용자 권한수정 / 블럭 처리
* @param
* @return
* @throws Exception
*/
public boolean update(BasGroupUserModel rq) throws Exception{
Optional<PtyCstmrGroup> optional = ptyCstmrGroupRepository.findById(rq.getCstmrGroupSno());
if (!optional.isPresent()) {
throw new CustomException(ErrorCode.DATA_NOTFIND);
}
PtyCstmrGroup entity = optional.get();
entity.setGroupAuthCd(rq.getGroupAuthCd());
entity.setJoinYn(rq.getJoinYn());
if(ptyCstmrGroupRepository.save(entity) == null)
throw new CustomException(ErrorCode.FAIL);
return true;
}
}

15
src/main/java/com/palnet/biz/api/comn/model/ComnRqModel.java

@ -0,0 +1,15 @@
package com.palnet.biz.api.comn.model;
import lombok.Data;
@Data
public class ComnRqModel {
private String stDate;
private String endDate;
private String search1;
private String searchType1;
}

5
src/main/java/com/palnet/biz/api/comn/response/BasicResponse.java

@ -0,0 +1,5 @@
package com.palnet.biz.api.comn.response;
public abstract class BasicResponse {
}

27
src/main/java/com/palnet/biz/api/comn/response/ErrorResponse.java

@ -0,0 +1,27 @@
package com.palnet.biz.api.comn.response;
import com.palnet.comn.code.RSErrorCode;
import lombok.Data;
@Data
public class ErrorResponse extends BasicResponse{
private String errorMessage;
private String errorCode;
public ErrorResponse(String errorMessage) {
this.errorMessage = errorMessage;
this.errorCode = "404";
}
public ErrorResponse(RSErrorCode code) {
this.errorMessage = code.message();
this.errorCode = code.code();
}
public ErrorResponse(String errorMessage, String errorCode) {
this.errorMessage = errorMessage;
this.errorCode = errorCode;
}
}

23
src/main/java/com/palnet/biz/api/comn/response/SuccessResponse.java

@ -0,0 +1,23 @@
package com.palnet.biz.api.comn.response;
import java.util.List;
import lombok.Data;
@Data
public class SuccessResponse<T> extends BasicResponse {
private int count;
private T data;
public SuccessResponse(T data) {
this.data = data;
if(data instanceof List) {
this.count = ((List<?>)data).size();
} else {
this.count = 1;
}
}
}

112
src/main/java/com/palnet/biz/api/ctr/cntrl/controller/CtrCntrlController.java

@ -0,0 +1,112 @@
package com.palnet.biz.api.ctr.cntrl.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlDtlModel;
import com.palnet.biz.api.ctr.cntrl.service.CtrCntrlService;
import com.palnet.biz.sample.entity.SampleEntity;
import com.palnet.biz.sample.service.SampleService;
import com.palnet.comn.model.GPHistoryModel;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@Log4j2
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/ctr/cntrl", produces = {MediaType.APPLICATION_JSON_VALUE})
public class CtrCntrlController {
@Autowired
private final CtrCntrlService service;
@Autowired
private final SampleService sampleService;
@GetMapping(value = "/history/{id}")
public ResponseEntity<? extends BasicResponse> historyList(@PathVariable String id) {
List<GPHistoryModel> result = null;
try {
result = service.getListHistory(id);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
@GetMapping(value = "/detail/{id}")
public ResponseEntity<? extends BasicResponse> detail(@PathVariable String id) {
CtrCntrlDtlModel result = null;
try {
result = service.getDetail(id);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<CtrCntrlDtlModel>(result));
}
@GetMapping(value = "/sample")
public ResponseEntity<? extends BasicResponse> sample() {
List<SampleEntity> result = null;
try {
result = sampleService.find();
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
// @GetMapping(value = "/status")
// public ResponseEntity<? extends BasicResponse> status() {
// Map<GroundPositionInfoModel> result;
//
// try {
// result =
//
// } catch (Exception e) {
// log.error("IGNORE : {}", e);
// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
// .body(new ErrorResponse("Server Error", "-1"));
//
// }
// return ResponseEntity.ok().body(new SuccessResponse<Map>(result));
//
// }
}

13
src/main/java/com/palnet/biz/api/ctr/cntrl/controller/PingController.java

@ -0,0 +1,13 @@
package com.palnet.biz.api.ctr.cntrl.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PingController {
@GetMapping("/ping")
public String ping(){
return "SUCCESS";
}
}

31
src/main/java/com/palnet/biz/api/ctr/cntrl/model/CtrCntrlDtlModel.java

@ -0,0 +1,31 @@
package com.palnet.biz.api.ctr.cntrl.model;
import java.util.Date;
import lombok.Data;
@Data
public class CtrCntrlDtlModel {
private String messageTypeCd;
private String cntrlId;
private Date cntrlStDt;
private Date cntrlEndDt;
private int arcrftSno;
private String prdctNum;
private String arcrftTypeCd;
private String arcrftModelNm;
private String prdctCmpnNm;
private String wghtTypeCd;
private String imageUrl;
private String cameraYn;
private String insrncYn;
private String ownerNm;
private String hpno;
private String telno;
private String stAreaNm;
}

21
src/main/java/com/palnet/biz/api/ctr/cntrl/model/CtrCntrlEndModel.java

@ -0,0 +1,21 @@
package com.palnet.biz.api.ctr.cntrl.model;
import java.util.Date;
import lombok.Data;
@Data
public class CtrCntrlEndModel {
private String cntrlId;
private Date cntrlStdt;
private Date cntrlEndDt;
private String statusCd;
private Date srvrRcvDt;
}

123
src/main/java/com/palnet/biz/api/ctr/cntrl/model/CtrCntrlModel.java

@ -0,0 +1,123 @@
package com.palnet.biz.api.ctr.cntrl.model;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import com.palnet.comn.utils.DateUtils;
import io.netty.util.internal.StringUtil;
import lombok.Data;
@Data
public class CtrCntrlModel implements Comparable<CtrCntrlModel>{
private String messageTypeCd;
private String controlId;
private String objectTypeCd;
private String objectId;
private Double lat;
private Double lng;
private String elevType;
private Double elev;
private String speedType;
private Double speed;
private Double betteryLevel;
private Double betteryVoltage;
private String takeOffPositon;
private String dronStatus;
private Double heading;
private String terminalRcvDt;
private String serverRcvDt;
private String controlStartDt;
private Double moveDistance;
private String moveDistanceType;
// 환경센서 필드
private Double sensorCo;
private Double sensorSo2;
private Double sensorNo2;
private Double sensorO3;
private Double sensorDust;
private List<Map<String , Double>> lastHistory;
@Override
public int compareTo(CtrCntrlModel o) {
if(!StringUtil.isNullOrEmpty(o.getControlStartDt()) && !StringUtil.isNullOrEmpty(controlStartDt)) {
long targetStartDt = Long.parseLong(o.getControlStartDt());
long startDt = Long.parseLong(controlStartDt);
if(startDt == targetStartDt) {
return 0;
}else if(startDt > targetStartDt) {
return 1;
}else if(startDt < targetStartDt) {
return -1;
}
}
return 0;
}
public static void main(String [] args) {
List<CtrCntrlModel> list = new ArrayList<CtrCntrlModel>();
try {
for(int i = 0 ; i < 5 ; i++) {
Thread.sleep(1000);
System.out.println(">>>" + DateUtils.getCurrentTime());
CtrCntrlModel model = new CtrCntrlModel();
model.setControlStartDt(DateUtils.getCurrentTime());
list.add(model);
}
list.sort(Comparator.naturalOrder());
System.out.println("오름차순 정렬");
for(CtrCntrlModel data :list) {
System.out.println(data.getControlStartDt());
}
list.sort(Comparator.reverseOrder());
System.out.println("내림차순 정렬");
for(CtrCntrlModel data :list) {
System.out.println(data.getControlStartDt());
}
}catch(Exception e) {
e.printStackTrace();
}
}
}

108
src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java

@ -0,0 +1,108 @@
package com.palnet.biz.api.ctr.cntrl.service;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlDtlModel;
import com.palnet.biz.jpa.entity.CtrCntrlHstryArea;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository;
import com.palnet.comn.collection.GPCollection;
import com.palnet.comn.collection.GPDatabaseCollection;
import com.palnet.comn.model.GPHistoryModel;
import lombok.extern.log4j.Log4j2;
@Service
@Log4j2
public class CtrCntrlService {
GPCollection cic = new GPCollection();
GPDatabaseCollection gpdc = new GPDatabaseCollection();
@Autowired
private CtrCntrlQueryRepository query;
private Logger logger = LoggerFactory.getLogger(getClass());
@Value("${gp.remove.time}")
private long GP_REMOVE_TIME;
@Value("${gp.insert.count}")
private long GP_INSERT_COUNT;
public List<GPHistoryModel> getListHistory(String objectId){
List<GPHistoryModel> resultList = new ArrayList<GPHistoryModel>();
List<GPHistoryModel> filterList = new ArrayList<GPHistoryModel>();
if(cic.getHistoryData(objectId).size() > 0) {
resultList = cic.getHistoryData(objectId);
//위경도 좌표 가 정상적인 값만 표출
for(GPHistoryModel model : resultList) {
if(model.getLat() > 0 && model.getLng() > 0 ) {
filterList.add(model);
}
}
}
return filterList;
}
public CtrCntrlDtlModel getDetail(String controlId) {
CtrCntrlDtlModel result = new CtrCntrlDtlModel();
result = query.detailCntrl(controlId);
List<CtrCntrlHstryArea> areaList = query.detailArea(controlId);
String stAreaNm = "";
// log.debug(">>>>" + areaList );
for(CtrCntrlHstryArea data : areaList) {
if(data.getActnType().equals("01")) {
if(!StringUtils.isEmpty(data.getArea1())) {
stAreaNm = stAreaNm + " " + data.getArea1();
}
if(!StringUtils.isEmpty(data.getArea2())) {
stAreaNm = stAreaNm + " " + data.getArea2();
}
if(!StringUtils.isEmpty(data.getArea3())) {
stAreaNm = stAreaNm + " " + data.getArea3();
}
if(!StringUtils.isEmpty(data.getLandNm())) {
stAreaNm = stAreaNm + " " + data.getLandNm();
}
if(!StringUtils.isEmpty(data.getLandNum())) {
stAreaNm = stAreaNm + " " + data.getLandNum();
}
}
// log.debug("data>>" + data.toString());
}
result.setStAreaNm(stAreaNm);
return result;
}
}

157
src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java

@ -0,0 +1,157 @@
package com.palnet.biz.api.main.dash.controller;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryDetailModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel;
import com.palnet.biz.api.anls.smlt.model.AnlsSmltDetailModel;
import com.palnet.biz.api.anls.smlt.model.AnlsSmltStcsModel;
import com.palnet.biz.api.anls.smlt.service.AnlsSmltService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.biz.api.main.dash.model.MainDashListModel;
import com.palnet.biz.api.main.dash.model.MainDashStcsModel;
import com.palnet.biz.api.main.dash.service.MainDashService;
import com.palnet.comn.code.RSErrorCode;
import com.palnet.comn.utils.JsonUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@Log4j2
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/main/dash", produces = {MediaType.APPLICATION_JSON_VALUE})
public class MainDashController {
@Autowired
private final MainDashService service;
/**
* @param rq
* @return
*/
@GetMapping(value = "/stcs/day")
public ResponseEntity<? extends BasicResponse> stcsDay(String yyyymm) {
List<MainDashStcsModel> result = null;
log.debug(yyyymm);
//입력값 검증
if(yyyymm == null || !(yyyymm.length() == 7) ) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
result = service.mainDashStcsDay(yyyymm);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
/**
* @param rq
* @return
*/
@GetMapping(value = "/stcs/area")
public ResponseEntity<? extends BasicResponse> stcsArea(String yyyymm) {
List<MainDashStcsModel> result = null;
log.debug(yyyymm);
if(yyyymm == null || !(yyyymm.length() == 7) ) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
result = service.mainDashStcsArea(yyyymm);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
/**
* @param rq
* @return
*/
@GetMapping(value = "/group/list")
public ResponseEntity<? extends BasicResponse> groupList(Integer cstmrSno) {
List<Map> result = null;
//입력값 검증
if(cstmrSno == null) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
result = service.mainDashGroupList(cstmrSno);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
@GetMapping(value = "/arcrft/list")
public ResponseEntity<? extends BasicResponse> arcrftList(Integer cstmrSno) {
List<MainDashListModel> result = null;
//입력값 검증
if(cstmrSno == null) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
result = service.mainDashDronList(cstmrSno);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
}

17
src/main/java/com/palnet/biz/api/main/dash/model/MainDashListModel.java

@ -0,0 +1,17 @@
package com.palnet.biz.api.main.dash.model;
import java.util.Date;
import lombok.Data;
@Data
public class MainDashListModel {
private String arcrftModelNm = "";
private String prdctNum = "";
private Date createDt;
}

13
src/main/java/com/palnet/biz/api/main/dash/model/MainDashStcsModel.java

@ -0,0 +1,13 @@
package com.palnet.biz.api.main.dash.model;
import lombok.Data;
@Data
public class MainDashStcsModel {
private String typeCd = "";
private long count = 0 ;
}

103
src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java

@ -0,0 +1,103 @@
package com.palnet.biz.api.main.dash.service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.bas.group.model.BasGroupJoinModel;
import com.palnet.biz.api.main.dash.model.MainDashListModel;
import com.palnet.biz.api.main.dash.model.MainDashStcsModel;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository;
import com.palnet.biz.jpa.repository.pty.PtyDronQueryRepository;
import com.palnet.biz.jpa.repository.pty.PtyGroupQueryRepository;
@Service
public class MainDashService {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private CtrCntrlBasRepository ctrCntrlBasRepository;
@Autowired
private PtyDronQueryRepository ptyDronQueryRepository;
@Autowired
private PtyGroupQueryRepository ptyGroupQueryRepository;
@Autowired
private CtrCntrlQueryRepository query;
/**
* 일별 비행횟수 통계
* @param rq
* @return
*/
public List<MainDashStcsModel> mainDashStcsDay(String yyyymm){
List<MainDashStcsModel> resultList = query.mainDashStcsDay(yyyymm);
return resultList;
}
/**
* Top5 지역별 비행횟수 통계
* @param rq
* @return
*/
public List<MainDashStcsModel> mainDashStcsArea(String yyyymm){
List<MainDashStcsModel> resultList = query.mainDashStcsArea(yyyymm);
return resultList;
}
/**
* TOP3 가입 그룹 리스트 표출
*/
public List<Map> mainDashGroupList(int cstmrSno){
List<BasGroupJoinModel> queryList = ptyGroupQueryRepository.joinList(cstmrSno);
List<Map> resultList = new ArrayList<Map>();
int cnt = 0;
for(BasGroupJoinModel model : queryList) {
if(cnt == 3) {
break;
}
Map<String , Object> data = new HashMap<String , Object>();
data.put("groupId", model.getGroupId());
data.put("groupNm", model.getGroupNm());
data.put("createDt", model.getCreateDt());
data.put("joinDt" , model.getJoinDt());
resultList.add(data);
}
return resultList;
}
/**
* Top3 기체 정보 리스트 표출
*/
public List<MainDashListModel> mainDashDronList(int cstmrSno){
List<MainDashListModel> resultList = ptyDronQueryRepository.dronTop3(cstmrSno);
return resultList;
}
}

68
src/main/java/com/palnet/biz/config/DatabaseJpaConfig.java

@ -0,0 +1,68 @@
package com.palnet.biz.config;
import java.util.Map;
import java.util.Objects;
import javax.sql.DataSource;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateProperties;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateSettings;
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "controlJpaEntityManagerFactory", transactionManagerRef = "controlJpaTransactionManager", basePackages = {
"com.palnet" })
@EnableTransactionManagement
public class DatabaseJpaConfig {
private final JpaProperties jpaProperties;
private final HibernateProperties hibernateProperties;
public DatabaseJpaConfig(JpaProperties jpaProperties, HibernateProperties hibernateProperties) {
this.jpaProperties = jpaProperties;
this.hibernateProperties = hibernateProperties;
}
@Bean(name = "dataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.control")
public DataSource dataSource() {
return DataSourceBuilder
.create()
.type(HikariDataSource.class)
.build();
}
@Bean(name = "controlJpaEntityManagerFactory")
@Primary
public LocalContainerEntityManagerFactoryBean ndcJpaEntityManagerFactory(EntityManagerFactoryBuilder builder) {
Map<String, Object> prop = hibernateProperties.determineHibernateProperties(jpaProperties.getProperties(),
new HibernateSettings());
return builder.dataSource(dataSource())
.properties(prop)
.packages("com.palnet")
.persistenceUnit("biz")
.build();
}
@Bean(name = "controlJpaTransactionManager")
@Primary
public PlatformTransactionManager ndcJpaTransactionManager(EntityManagerFactoryBuilder builder) {
return new JpaTransactionManager(Objects.requireNonNull(ndcJpaEntityManagerFactory(builder).getObject()));
}
}

44
src/main/java/com/palnet/biz/config/JsonConfig.java

@ -0,0 +1,44 @@
package com.palnet.biz.config;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.format.DateTimeFormatter;
import java.util.TimeZone;
@Configuration
public class JsonConfig {
private static final String dateFormat = "yyyy-MM-dd";
private static final String timeFormat = "HH:mm:ss";
private static final String dateTimeFormat = "yyyy-MM-dd HH:mm:ss";
@Bean
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
return builder -> {
// builder.timeZone(TimeZone.getTimeZone("UTC"));
builder.simpleDateFormat(dateTimeFormat);
builder.serializers(new LocalTimeSerializer(DateTimeFormatter.ofPattern(timeFormat)));
builder.serializers(new LocalDateSerializer(DateTimeFormatter.ofPattern(dateFormat)));
builder.serializers(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateTimeFormat)));
builder.deserializers(new LocalTimeDeserializer(DateTimeFormatter.ofPattern(timeFormat)));
builder.deserializers(new LocalDateDeserializer(DateTimeFormatter.ofPattern(dateFormat)));
builder.deserializers(new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(dateTimeFormat)));
builder.featuresToDisable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
builder.featuresToDisable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
builder.featuresToDisable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
};
}
}

19
src/main/java/com/palnet/biz/config/QuerydslConfiguration.java

@ -0,0 +1,19 @@
package com.palnet.biz.config;
import com.querydsl.jpa.impl.JPAQueryFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Configuration
public class QuerydslConfiguration {
@PersistenceContext
private EntityManager entityManager;
@Bean
public JPAQueryFactory jpaQueryFactory() {
return new JPAQueryFactory(entityManager);
}
}

150
src/main/java/com/palnet/biz/config/WebMvcConfig.java

@ -0,0 +1,150 @@
package com.palnet.biz.config;
import java.time.format.DateTimeFormatter;
import java.util.List;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.format.datetime.standard.DateTimeFormatterRegistrar;
import org.springframework.http.HttpMethod;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer{
private static final String dateFormat = "yyyy-MM-dd";
private static final String timeFormat = "HH:mm:ss";
private static final String dateTimeFormat = "yyyy-MM-dd HH:mm:ss";
/*@Autowired
AccsUUIDcheckInterceptor accsUUIDcheckInterceptor;*/
/*@Autowired
LogincheckInterceptor logincheckInterceptor;
@Autowired
QrcodecheckInterceptor qrcodecheckInterceptor;
@Autowired
DomainCheckInterceptor domainCheckInterceptor;*/
//
// @Override
// public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
// converters.add(escapingConverter());
// }
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
/*registry.addResourceHandler("/web/**").addResourceLocations("/web/")
.setCacheControl(CacheControl.maxAge(10, TimeUnit.DAYS)).resourceChain(true)
// .setCacheControl(CacheControl.noStore()).resourceChain(true)
.addResolver(new VersionResourceResolver()
.addContentVersionStrategy("/**"))
.addTransformer(new AppCacheManifestTransformer());*/
// html 가능 하게 설정
/*registry.addResourceHandler("/**").addResourceLocations("/web/hcws/html/");*/
}
@Bean
public ResourceUrlEncodingFilter resourceUrlEncodingFilter() {
return new ResourceUrlEncodingFilter();
}
@Override
public void addCorsMappings(CorsRegistry registry) {
//임시로 크로스오리진 전체를 품
registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST","PUT", "DELETE");
}
//
// @Bean
// public HttpMessageConverter escapingConverter() {
// Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
// builder.simpleDateFormat(dateTimeFormat);
// builder.serializers(new LocalTimeSerializer(DateTimeFormatter.ofPattern(timeFormat)));
// builder.serializers(new LocalDateSerializer(DateTimeFormatter.ofPattern(dateFormat)));
// builder.serializers(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateTimeFormat)));
//
// builder.deserializers(new LocalTimeDeserializer(DateTimeFormatter.ofPattern(timeFormat)));
// builder.deserializers(new LocalDateDeserializer(DateTimeFormatter.ofPattern(dateFormat)));
// builder.deserializers(new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(dateTimeFormat)));
// builder.featuresToDisable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
// builder.featuresToDisable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
// builder.featuresToDisable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
//
// ObjectMapper objectMapper = builder.build();
//// objectMapper.getFactory().setCharacterEscapes(new HTMLCharacterEscapes());
// MappingJackson2HttpMessageConverter escapingConverter = new MappingJackson2HttpMessageConverter();
// escapingConverter.setObjectMapper(objectMapper);
//
// return escapingConverter;
// }
@Override
public void addFormatters(FormatterRegistry registry) {
// json
DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar();
registrar.setDateFormatter(DateTimeFormatter.ofPattern(dateFormat));
registrar.setDateTimeFormatter(DateTimeFormatter.ofPattern(dateTimeFormat));
registrar.registerFormatters(registry);
/* ISO 타입.
registrar.setUseIsoFormat(true);
registrar.registerFormatters(registry);
*/
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
//접근고유ID 체크 Interceptor
/*registry.addInterceptor(accsUUIDcheckInterceptor)
.addPathPatterns("/sendbox/")
.addPathPatterns("/sendbox/index");*/
// //로그인 체크 Interceptor
/* registry.addInterceptor(logincheckInterceptor)
.addPathPatterns("/front/pass/**")
.excludePathPatterns("/front/pass/check"); //추후 삭제
// .excludePathPatterns("/front/login/certifyhp") //추후 삭제
// .excludePathPatterns("/front/login/index");
//
// //QRCODE 체크 Interceptor
registry.addInterceptor(qrcodecheckInterceptor)
// .addPathPatterns("/front/login/**")
// .addPathPatterns("/front/join/**")
.addPathPatterns("/front/pass/**")
// .addPathPatterns("/front/prreg/**")//추후 추가
// .excludePathPatterns("/")
// .excludePathPatterns("/front/login/certifyhp") //추후 삭제
.excludePathPatterns("/front/pass/list"); //추후 삭제
// .excludePathPatterns("/front/pass/check"); //추후 삭제
// .excludePathPatterns("/front/login/cookieDelete");
registry.addInterceptor(domainCheckInterceptor)
.addPathPatterns("/","/**")
.excludePathPatterns("/web/**")
.excludePathPatterns("/rest/**");
*/
}
}

80
src/main/java/com/palnet/biz/config/WebSecurityConfig.java

@ -0,0 +1,80 @@
package com.palnet.biz.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import com.palnet.biz.api.acnt.jwt.filter.JwtAuthenticationEntryPoint;
import com.palnet.biz.api.acnt.jwt.filter.JwtRequestFilter;
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint;
@Autowired
private UserDetailsService jwtUserDetailsService;
@Autowired
private JwtRequestFilter jwtRequestFilter;
private final String[] PERMITTED_URL = {"/api/acnt/**"};
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
// configure AuthenticationManager so that it knows from where to load
// user for matching credentials
// Use BCryptPasswordEncoder
auth.userDetailsService(jwtUserDetailsService).passwordEncoder(passwordEncoder());
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
// We don't need CSRF for this example
httpSecurity.csrf().disable()
// dont authenticate this particular request
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS,"/api/**").permitAll()
.antMatchers(HttpMethod.GET,"/ping").permitAll()
.antMatchers(PERMITTED_URL).permitAll()
// all other requests need to be authenticated
.anyRequest().authenticated().and()
// make sure we use stateless session; session won't be used to
// store user's state.
.exceptionHandling().authenticationEntryPoint(jwtAuthenticationEntryPoint).and().sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
// Add a filter to validate the tokens with every request
httpSecurity.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);
}
}

89
src/main/java/com/palnet/biz/jpa/entity/ComArcrftBas.java

@ -0,0 +1,89 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* The persistent class for the COM_ARCRFT_BAS database table.
*
*/
@Entity
@Table(name="COM_ARCRFT_BAS")
@Data
@NamedQuery(name="ComArcrftBas.findAll", query="SELECT c FROM ComArcrftBas c")
public class ComArcrftBas implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="ARCRFT_SNO")
private int arcrftSno;
@Column(name="ARCRFT_HGHT")
private double arcrftHght;
@Column(name="ARCRFT_LNGTH")
private double arcrftLngth;
@Column(name="ARCRFT_MODEL_NM")
private String arcrftModelNm;
@Column(name="ARCRFT_TYPE_CD")
private String arcrftTypeCd;
@Column(name="ARCRFT_WDTH")
private double arcrftWdth;
@Column(name="ARCRFT_WGHT")
private double arcrftWght;
@Column(name="CAMERA_YN")
private String cameraYn;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CREATE_DT")
private Date createDt;
@Column(name="CREATE_USER_ID")
private String createUserId;
@Column(name="INSRNC_YN")
private String insrncYn;
@Column(name="PRDCT_CMPN_NM")
private String prdctCmpnNm;
@Temporal(TemporalType.DATE)
@Column(name="PRDCT_DATE")
private Date prdctDate;
@Column(name="PRDCT_NUM")
private String prdctNum;
@Column(name="TAKEOFF_WGHT")
private double takeoffWght;
@Column(name="USE_YN")
private String useYn;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="UPDATE_DT")
private Date updateDt;
@Column(name="UPDATE_USER_ID")
private String updateUserId;
@Column(name="IMAGE_URL")
private String imageUrl;
@Column(name="WGHT_TYPE_CD")
private String wghtTypeCd;
}

134
src/main/java/com/palnet/biz/jpa/entity/ComArcrftOwner.java

@ -0,0 +1,134 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
/**
* The persistent class for the COM_ARCRFT_OWNER database table.
*
*/
@Entity
@Table(name="COM_ARCRFT_OWNER")
@NamedQuery(name="ComArcrftOwner.findAll", query="SELECT c FROM ComArcrftOwner c")
public class ComArcrftOwner implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="OWNER_SNO")
private int ownerSno;
@Column(name="ARCRFT_SNO")
private int arcrftSno;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CREATE_DT")
private Date createDt;
@Column(name="CREATE_USER_ID")
private String createUserId;
@Column(name="HPNO")
private String hpno;
@Column(name="OWNER_NM")
private String ownerNm;
@Column(name="TELNO")
private String telno;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="UPDATE_DT")
private Date updateDt;
@Column(name="UPDATE_USER_ID")
private String updateUserId;
@Column(name="USE_YN")
private String useYn;
public ComArcrftOwner() {
}
public int getOwnerSno() {
return this.ownerSno;
}
public void setOwnerSno(int ownerSno) {
this.ownerSno = ownerSno;
}
public int getArcrftSno() {
return this.arcrftSno;
}
public void setArcrftSno(int arcrftSno) {
this.arcrftSno = arcrftSno;
}
public Date getCreateDt() {
return this.createDt;
}
public void setCreateDt(Date createDt) {
this.createDt = createDt;
}
public String getCreateUserId() {
return this.createUserId;
}
public void setCreateUserId(String createUserId) {
this.createUserId = createUserId;
}
public String getHpno() {
return this.hpno;
}
public void setHpno(String hpno) {
this.hpno = hpno;
}
public String getOwnerNm() {
return this.ownerNm;
}
public void setOwnerNm(String ownerNm) {
this.ownerNm = ownerNm;
}
public String getTelno() {
return this.telno;
}
public void setTelno(String telno) {
this.telno = telno;
}
public Date getUpdateDt() {
return this.updateDt;
}
public void setUpdateDt(Date updateDt) {
this.updateDt = updateDt;
}
public String getUpdateUserId() {
return this.updateUserId;
}
public void setUpdateUserId(String updateUserId) {
this.updateUserId = updateUserId;
}
public String getUseYn() {
return this.useYn;
}
public void setUseYn(String useYn) {
this.useYn = useYn;
}
}

124
src/main/java/com/palnet/biz/jpa/entity/ComAuthBas.java

@ -0,0 +1,124 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
/**
* The persistent class for the COM_AUTH_BAS database table.
*
*/
@Entity
@Table(name="COM_AUTH_BAS")
@NamedQuery(name="ComAuthBas.findAll", query="SELECT c FROM ComAuthBas c")
public class ComAuthBas implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="AUTH_ID")
private String authId;
@Column(name="AUTH_NM")
private String authNm;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CREATE_DT")
private Date createDt;
@Column(name="CREATE_USER_ID")
private String createUserId;
@Lob
@Column(name="RM")
private String rm;
@Column(name="SITE_CD")
private String siteCd;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="UPDATE_DT")
private Date updateDt;
@Column(name="UPDATE_USER_ID")
private String updateUserId;
@Column(name="USE_YN")
private String useYn;
public ComAuthBas() {
}
public String getAuthId() {
return this.authId;
}
public void setAuthId(String authId) {
this.authId = authId;
}
public String getAuthNm() {
return this.authNm;
}
public void setAuthNm(String authNm) {
this.authNm = authNm;
}
public Date getCreateDt() {
return this.createDt;
}
public void setCreateDt(Date createDt) {
this.createDt = createDt;
}
public String getCreateUserId() {
return this.createUserId;
}
public void setCreateUserId(String createUserId) {
this.createUserId = createUserId;
}
public String getRm() {
return this.rm;
}
public void setRm(String rm) {
this.rm = rm;
}
public String getSiteCd() {
return this.siteCd;
}
public void setSiteCd(String siteCd) {
this.siteCd = siteCd;
}
public Date getUpdateDt() {
return this.updateDt;
}
public void setUpdateDt(Date updateDt) {
this.updateDt = updateDt;
}
public String getUpdateUserId() {
return this.updateUserId;
}
public void setUpdateUserId(String updateUserId) {
this.updateUserId = updateUserId;
}
public String getUseYn() {
return this.useYn;
}
public void setUseYn(String useYn) {
this.useYn = useYn;
}
}

122
src/main/java/com/palnet/biz/jpa/entity/ComCdBas.java

@ -0,0 +1,122 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
/**
* The persistent class for the COM_CD_BAS database table.
*
*/
@Entity
@Table(name="COM_CD_BAS")
@NamedQuery(name="ComCdBas.findAll", query="SELECT c FROM ComCdBas c")
public class ComCdBas implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private ComCdBasPK id;
@Column(name="ADD_INFO_VALUE")
private String addInfoValue;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CREATE_DT")
private Date createDt;
@Column(name="CREATE_USER_ID")
private String createUserId;
@Column(name="SORT_ORDR")
private byte sortOrdr;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="UPDTE_DT")
private Date updteDt;
@Column(name="UPDTE_USER_ID")
private String updteUserId;
@Column(name="UPPER_CD")
private String upperCd;
@Column(name="USE_YN")
private String useYn;
public ComCdBas() {
}
public ComCdBasPK getId() {
return this.id;
}
public void setId(ComCdBasPK id) {
this.id = id;
}
public String getAddInfoValue() {
return this.addInfoValue;
}
public void setAddInfoValue(String addInfoValue) {
this.addInfoValue = addInfoValue;
}
public Date getCreateDt() {
return this.createDt;
}
public void setCreateDt(Date createDt) {
this.createDt = createDt;
}
public String getCreateUserId() {
return this.createUserId;
}
public void setCreateUserId(String createUserId) {
this.createUserId = createUserId;
}
public byte getSortOrdr() {
return this.sortOrdr;
}
public void setSortOrdr(byte sortOrdr) {
this.sortOrdr = sortOrdr;
}
public Date getUpdteDt() {
return this.updteDt;
}
public void setUpdteDt(Date updteDt) {
this.updteDt = updteDt;
}
public String getUpdteUserId() {
return this.updteUserId;
}
public void setUpdteUserId(String updteUserId) {
this.updteUserId = updteUserId;
}
public String getUpperCd() {
return this.upperCd;
}
public void setUpperCd(String upperCd) {
this.upperCd = upperCd;
}
public String getUseYn() {
return this.useYn;
}
public void setUseYn(String useYn) {
this.useYn = useYn;
}
}

57
src/main/java/com/palnet/biz/jpa/entity/ComCdBasPK.java

@ -0,0 +1,57 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
/**
* The primary key class for the COM_CD_BAS database table.
*
*/
@Embeddable
public class ComCdBasPK implements Serializable {
//default serial version id, required for serializable classes.
private static final long serialVersionUID = 1L;
@Column(name="CD_ID")
private String cdId;
@Column(name="GROUP_CD")
private String groupCd;
public ComCdBasPK() {
}
public String getCdId() {
return this.cdId;
}
public void setCdId(String cdId) {
this.cdId = cdId;
}
public String getGroupCd() {
return this.groupCd;
}
public void setGroupCd(String groupCd) {
this.groupCd = groupCd;
}
public boolean equals(Object other) {
if (this == other) {
return true;
}
if (!(other instanceof ComCdBasPK)) {
return false;
}
ComCdBasPK castOther = (ComCdBasPK)other;
return
this.cdId.equals(castOther.cdId)
&& this.groupCd.equals(castOther.groupCd);
}
public int hashCode() {
final int prime = 31;
int hash = 17;
hash = hash * prime + this.cdId.hashCode();
hash = hash * prime + this.groupCd.hashCode();
return hash;
}
}

113
src/main/java/com/palnet/biz/jpa/entity/ComCdGroupBas.java

@ -0,0 +1,113 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
/**
* The persistent class for the COM_CD_GROUP_BAS database table.
*
*/
@Entity
@Table(name="COM_CD_GROUP_BAS")
@NamedQuery(name="ComCdGroupBas.findAll", query="SELECT c FROM ComCdGroupBas c")
public class ComCdGroupBas implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="GROUP_CD")
private String groupCd;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CREATE_DT")
private Date createDt;
@Column(name="CREATE_USER_ID")
private String createUserId;
@Column(name="GROUP_CD_NM")
private String groupCdNm;
@Lob
@Column(name="RM")
private String rm;
@Column(name="SITE_CD")
private String siteCd;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="UPDTE_DT")
private Date updteDt;
@Column(name="UPDTE_USER_ID")
private String updteUserId;
public ComCdGroupBas() {
}
public String getGroupCd() {
return this.groupCd;
}
public void setGroupCd(String groupCd) {
this.groupCd = groupCd;
}
public Date getCreateDt() {
return this.createDt;
}
public void setCreateDt(Date createDt) {
this.createDt = createDt;
}
public String getCreateUserId() {
return this.createUserId;
}
public void setCreateUserId(String createUserId) {
this.createUserId = createUserId;
}
public String getGroupCdNm() {
return this.groupCdNm;
}
public void setGroupCdNm(String groupCdNm) {
this.groupCdNm = groupCdNm;
}
public String getRm() {
return this.rm;
}
public void setRm(String rm) {
this.rm = rm;
}
public String getSiteCd() {
return this.siteCd;
}
public void setSiteCd(String siteCd) {
this.siteCd = siteCd;
}
public Date getUpdteDt() {
return this.updteDt;
}
public void setUpdteDt(Date updteDt) {
this.updteDt = updteDt;
}
public String getUpdteUserId() {
return this.updteUserId;
}
public void setUpdteUserId(String updteUserId) {
this.updteUserId = updteUserId;
}
}

101
src/main/java/com/palnet/biz/jpa/entity/ComCdLangCtg.java

@ -0,0 +1,101 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
/**
* The persistent class for the COM_CD_LANG_CTG database table.
*
*/
@Entity
@Table(name="COM_CD_LANG_CTG")
@NamedQuery(name="ComCdLangCtg.findAll", query="SELECT c FROM ComCdLangCtg c")
public class ComCdLangCtg implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private ComCdLangCtgPK id;
@Column(name="CD_NM")
private String cdNm;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CREATE_DT")
private Date createDt;
@Column(name="CREATE_USER_ID")
private String createUserId;
@Lob
@Column(name="RM")
private String rm;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="UPDTE_DT")
private Date updteDt;
@Column(name="UPDTE_USER_ID")
private String updteUserId;
public ComCdLangCtg() {
}
public ComCdLangCtgPK getId() {
return this.id;
}
public void setId(ComCdLangCtgPK id) {
this.id = id;
}
public String getCdNm() {
return this.cdNm;
}
public void setCdNm(String cdNm) {
this.cdNm = cdNm;
}
public Date getCreateDt() {
return this.createDt;
}
public void setCreateDt(Date createDt) {
this.createDt = createDt;
}
public String getCreateUserId() {
return this.createUserId;
}
public void setCreateUserId(String createUserId) {
this.createUserId = createUserId;
}
public String getRm() {
return this.rm;
}
public void setRm(String rm) {
this.rm = rm;
}
public Date getUpdteDt() {
return this.updteDt;
}
public void setUpdteDt(Date updteDt) {
this.updteDt = updteDt;
}
public String getUpdteUserId() {
return this.updteUserId;
}
public void setUpdteUserId(String updteUserId) {
this.updteUserId = updteUserId;
}
}

68
src/main/java/com/palnet/biz/jpa/entity/ComCdLangCtgPK.java

@ -0,0 +1,68 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
/**
* The primary key class for the COM_CD_LANG_CTG database table.
*
*/
@Embeddable
public class ComCdLangCtgPK implements Serializable {
//default serial version id, required for serializable classes.
private static final long serialVersionUID = 1L;
@Column(name="CD_ID")
private String cdId;
@Column(name="GROUP_CD")
private String groupCd;
@Column(name="LANG_DIV_CD")
private String langDivCd;
public ComCdLangCtgPK() {
}
public String getCdId() {
return this.cdId;
}
public void setCdId(String cdId) {
this.cdId = cdId;
}
public String getGroupCd() {
return this.groupCd;
}
public void setGroupCd(String groupCd) {
this.groupCd = groupCd;
}
public String getLangDivCd() {
return this.langDivCd;
}
public void setLangDivCd(String langDivCd) {
this.langDivCd = langDivCd;
}
public boolean equals(Object other) {
if (this == other) {
return true;
}
if (!(other instanceof ComCdLangCtgPK)) {
return false;
}
ComCdLangCtgPK castOther = (ComCdLangCtgPK)other;
return
this.cdId.equals(castOther.cdId)
&& this.groupCd.equals(castOther.groupCd)
&& this.langDivCd.equals(castOther.langDivCd);
}
public int hashCode() {
final int prime = 31;
int hash = 17;
hash = hash * prime + this.cdId.hashCode();
hash = hash * prime + this.groupCd.hashCode();
hash = hash * prime + this.langDivCd.hashCode();
return hash;
}
}

79
src/main/java/com/palnet/biz/jpa/entity/ComIdntfBas.java

@ -0,0 +1,79 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
/**
* The persistent class for the COM_IDNTF_BAS database table.
*
*/
@Entity
@Table(name="COM_IDNTF_BAS")
@NamedQuery(name="ComIdntfBas.findAll", query="SELECT c FROM ComIdntfBas c")
public class ComIdntfBas implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="IDNTF_NUM")
private String idntfNum;
@Column(name="ARCRFT_SNO")
private int arcrftSno;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CREATE_DT")
private Date createDt;
@Column(name="IDNTF_TYPE_CD")
private String idntfTypeCd;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="UPDATE_DT")
private Date updateDt;
public ComIdntfBas() {
}
public String getIdntfNum() {
return this.idntfNum;
}
public void setIdntfNum(String idntfNum) {
this.idntfNum = idntfNum;
}
public int getArcrftSno() {
return this.arcrftSno;
}
public void setArcrftSno(int arcrftSno) {
this.arcrftSno = arcrftSno;
}
public Date getCreateDt() {
return this.createDt;
}
public void setCreateDt(Date createDt) {
this.createDt = createDt;
}
public String getIdntfTypeCd() {
return this.idntfTypeCd;
}
public void setIdntfTypeCd(String idntfTypeCd) {
this.idntfTypeCd = idntfTypeCd;
}
public Date getUpdateDt() {
return this.updateDt;
}
public void setUpdateDt(Date updateDt) {
this.updateDt = updateDt;
}
}

124
src/main/java/com/palnet/biz/jpa/entity/ComSiteBas.java

@ -0,0 +1,124 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
/**
* The persistent class for the COM_SITE_BAS database table.
*
*/
@Entity
@Table(name="COM_SITE_BAS")
@NamedQuery(name="ComSiteBas.findAll", query="SELECT c FROM ComSiteBas c")
public class ComSiteBas implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="SITE_CD")
private String siteCd;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CREATE_DT")
private Date createDt;
@Column(name="CREATE_USER_ID")
private String createUserId;
@Lob
@Column(name="SITE_DESC")
private String siteDesc;
@Column(name="SITE_NM")
private String siteNm;
@Column(name="SITE_URL")
private String siteUrl;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="UPDATE_DT")
private Date updateDt;
@Column(name="UPDATE_USER_ID")
private String updateUserId;
@Column(name="USE_YN")
private String useYn;
public ComSiteBas() {
}
public String getSiteCd() {
return this.siteCd;
}
public void setSiteCd(String siteCd) {
this.siteCd = siteCd;
}
public Date getCreateDt() {
return this.createDt;
}
public void setCreateDt(Date createDt) {
this.createDt = createDt;
}
public String getCreateUserId() {
return this.createUserId;
}
public void setCreateUserId(String createUserId) {
this.createUserId = createUserId;
}
public String getSiteDesc() {
return this.siteDesc;
}
public void setSiteDesc(String siteDesc) {
this.siteDesc = siteDesc;
}
public String getSiteNm() {
return this.siteNm;
}
public void setSiteNm(String siteNm) {
this.siteNm = siteNm;
}
public String getSiteUrl() {
return this.siteUrl;
}
public void setSiteUrl(String siteUrl) {
this.siteUrl = siteUrl;
}
public Date getUpdateDt() {
return this.updateDt;
}
public void setUpdateDt(Date updateDt) {
this.updateDt = updateDt;
}
public String getUpdateUserId() {
return this.updateUserId;
}
public void setUpdateUserId(String updateUserId) {
this.updateUserId = updateUserId;
}
public String getUseYn() {
return this.useYn;
}
public void setUseYn(String useYn) {
this.useYn = useYn;
}
}

123
src/main/java/com/palnet/biz/jpa/entity/ComTrmnlBas.java

@ -0,0 +1,123 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
/**
* The persistent class for the COM_TRMNL_BAS database table.
*
*/
@Entity
@Table(name="COM_TRMNL_BAS")
@NamedQuery(name="ComTrmnlBas.findAll", query="SELECT c FROM ComTrmnlBas c")
public class ComTrmnlBas implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="TRMNL_ID")
private String trmnlId;
@Column(name="AUTH_KEY")
private String authKey;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CREATE_DT")
private Date createDt;
@Column(name="CREATE_USER_ID")
private String createUserId;
@Column(name="DESC_SN")
private String descSn;
@Column(name="TRMNL_NM")
private String trmnlNm;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="UPDATE_DATE")
private Date updateDate;
@Column(name="UPDATE_USER_ID")
private String updateUserId;
@Column(name="USE_YN")
private String useYn;
public ComTrmnlBas() {
}
public String getTrmnlId() {
return this.trmnlId;
}
public void setTrmnlId(String trmnlId) {
this.trmnlId = trmnlId;
}
public String getAuthKey() {
return this.authKey;
}
public void setAuthKey(String authKey) {
this.authKey = authKey;
}
public Date getCreateDt() {
return this.createDt;
}
public void setCreateDt(Date createDt) {
this.createDt = createDt;
}
public String getCreateUserId() {
return this.createUserId;
}
public void setCreateUserId(String createUserId) {
this.createUserId = createUserId;
}
public String getDescSn() {
return this.descSn;
}
public void setDescSn(String descSn) {
this.descSn = descSn;
}
public String getTrmnlNm() {
return this.trmnlNm;
}
public void setTrmnlNm(String trmnlNm) {
this.trmnlNm = trmnlNm;
}
public Date getUpdateDate() {
return this.updateDate;
}
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
public String getUpdateUserId() {
return this.updateUserId;
}
public void setUpdateUserId(String updateUserId) {
this.updateUserId = updateUserId;
}
public String getUseYn() {
return this.useYn;
}
public void setUseYn(String useYn) {
this.useYn = useYn;
}
}

90
src/main/java/com/palnet/biz/jpa/entity/CtrCntrlBas.java

@ -0,0 +1,90 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
import lombok.Data;
import java.util.Date;
/**
* The persistent class for the CTR_CNTRL_BAS database table.
*
*/
@Entity
@Table(name="CTR_CNTRL_BAS")
@Data
@NamedQuery(name="CtrCntrlBas.findAll", query="SELECT c FROM CtrCntrlBas c")
public class CtrCntrlBas implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="CNTRL_ID")
private String cntrlId;
@Column(name="OBJECT_ID")
private String objectId;
@Column(name="AVRG_SPEED")
private Double avrgSpeed = 0.0;
@Column(name="AVRG_SPEED_TYPE")
private String avrgSpeedType;
@Column(name="BTTR_CNSMPTN")
private Double bttrCnsmptn = 0.0;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CNTRL_END_DT")
private Date cntrlEndDt;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CNTRL_ST_DT")
private Date cntrlStDt;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CREATE_DT")
private Date createDt;
@Column(name="END_TYPE_CD")
private String endTypeCd;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="FLGHT_END_DT")
private Date flghtEndDt;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="FLGHT_ST_DT")
private Date flghtStDt;
@Column(name="IDNTF_NUM")
private String idntfNum;
@Column(name="OBJECT_TYPE_CD")
private String objectTypeCd;
@Column(name="STATUS_CD")
private String statusCd;
@Column(name="PROC_STATUS_YN")
private String procStatusYn;
@Column(name="TTL_DSTNC")
private Double ttlDstnc = 0.0;
@Column(name="TTL_DSTNC_TYPE")
private String ttlDstncType;
@Column(name="TTL_TIME")
private Double ttlTime = 0.0;
@Column(name="TTL_TIME_TYPE")
private String ttlTimeType;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="UPDATE_DT")
private Date updateDt;
}

273
src/main/java/com/palnet/biz/jpa/entity/CtrCntrlHstry.java

@ -0,0 +1,273 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
/**
* The persistent class for the CTR_CNTRL_HSTRY database table.
*
*/
@Entity
@Table(name="CTR_CNTRL_HSTRY")
@NamedQuery(name="CtrCntrlHstry.findAll", query="SELECT c FROM CtrCntrlHstry c")
public class CtrCntrlHstry implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="HSTRY_SNO")
private int hstrySno;
@Column(name="BTTR_LVL")
private Double bttrLvl;
@Column(name="BTTR_VLTG")
private Double bttrVltg;
@Column(name="CNTRL_ID")
private String cntrlId;
@Column(name="ELEV")
private Double elev;
@Column(name="ELEV_TYPE")
private String elevType;
@Column(name="HEADING")
private Double heading;
@Column(name="LAT")
private Double lat;
@Column(name="LON")
private Double lon;
@Column(name="MSSG_TYPE_CD")
private String mssgTypeCd;
@Column(name="MV_DSTNC")
private Double mvDstnc;
@Column(name="MV_DSTNC_TYPE")
private String mvDstncType;
@Column(name="SPEED")
private Double speed;
@Column(name="SPEED_TYPE")
private String speedType;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="SRVR_RCV_DT")
private Date srvrRcvDt;
@Column(name="STATUS_CD")
private String statusCd;
@Column(name="TRMNL_ID")
private String trmnlId;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="TRMNL_RCV_DT")
private Date trmnlRcvDt;
// 환경센서 필드
@Column(name="SENSOR_CO")
private Double sensorCo;
@Column(name="SENSOR_SO2")
private Double sensorSo2;
@Column(name="SENSOR_NO2")
private Double sensorNo2;
@Column(name="SENSOR_O3")
private Double sensorO3;
@Column(name="SENSOR_DUST")
private Double sensorDust;
public CtrCntrlHstry() {
}
public int getHstrySno() {
return this.hstrySno;
}
public void setHstrySno(int hstrySno) {
this.hstrySno = hstrySno;
}
public double getBttrLvl() {
return this.bttrLvl;
}
public void setBttrLvl(double bttrLvl) {
this.bttrLvl = bttrLvl;
}
public double getBttrVltg() {
return this.bttrVltg;
}
public void setBttrVltg(double bttrVltg) {
this.bttrVltg = bttrVltg;
}
public String getCntrlId() {
return this.cntrlId;
}
public void setCntrlId(String cntrlId) {
this.cntrlId = cntrlId;
}
public double getElev() {
return this.elev;
}
public void setElev(double elev) {
this.elev = elev;
}
public String getElevType() {
return this.elevType;
}
public void setElevType(String elevType) {
this.elevType = elevType;
}
public double getHeading() {
return this.heading;
}
public void setHeading(double heading) {
this.heading = heading;
}
public double getLat() {
return this.lat;
}
public void setLat(double lat) {
this.lat = lat;
}
public double getLon() {
return this.lon;
}
public void setLon(double lon) {
this.lon = lon;
}
public String getMssgTypeCd() {
return this.mssgTypeCd;
}
public void setMssgTypeCd(String mssgTypeCd) {
this.mssgTypeCd = mssgTypeCd;
}
public double getMvDstnc() {
return this.mvDstnc;
}
public void setMvDstnc(double mvDstnc) {
this.mvDstnc = mvDstnc;
}
public String getMvDstncType() {
return this.mvDstncType;
}
public void setMvDstncType(String mvDstncType) {
this.mvDstncType = mvDstncType;
}
public double getSpeed() {
return this.speed;
}
public void setSpeed(double speed) {
this.speed = speed;
}
public String getSpeedType() {
return this.speedType;
}
public void setSpeedType(String speedType) {
this.speedType = speedType;
}
public Date getSrvrRcvDt() {
return this.srvrRcvDt;
}
public void setSrvrRcvDt(Date srvrRcvDt) {
this.srvrRcvDt = srvrRcvDt;
}
public String getStatusCd() {
return this.statusCd;
}
public void setStatusCd(String statusCd) {
this.statusCd = statusCd;
}
public String getTrmnlId() {
return this.trmnlId;
}
public void setTrmnlId(String trmnlId) {
this.trmnlId = trmnlId;
}
public Date getTrmnlRcvDt() {
return this.trmnlRcvDt;
}
public void setTrmnlRcvDt(Date trmnlRcvDt) {
this.trmnlRcvDt = trmnlRcvDt;
}
public Double getSensorCo(){
return sensorCo;
}
public void setSensorCo(Double sensorCo){
this.sensorCo = sensorCo;
}
public Double getSensorSo2(){
return sensorSo2;
}
public void setSensorSo2(Double sensorSo2){
this.sensorSo2 = sensorSo2;
}
public Double getSensorNo2(){
return sensorNo2;
}
public void setSensorNo2(Double sensorNo2){
this.sensorNo2 = sensorNo2;
}
public Double getSensorO3(){
return sensorO3;
}
public void setSensorO3(Double sensorO3){
this.sensorO3 = sensorO3;
}
public Double getSensorDust(){
return sensorDust;
}
public void setSensorDust(Double sensorDust){
this.sensorDust = sensorDust;
}
}

211
src/main/java/com/palnet/biz/jpa/entity/CtrCntrlHstryArea.java

@ -0,0 +1,211 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
/**
* The persistent class for the CTR_CNTRL_HSTRY_AREA database table.
*
*/
@Entity
@Table(name="CTR_CNTRL_HSTRY_AREA")
@NamedQuery(name="CtrCntrlHstryArea.findAll", query="SELECT c FROM CtrCntrlHstryArea c")
public class CtrCntrlHstryArea implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="HSTRY_AREA_SNO")
private int hstryAreaSno;
@Column(name="ACTN_TYPE")
private String actnType;
@Column(name="AREA_NM")
private String areaNm;
@Column(name="AREA_TYPE")
private String areaType;
@Column(name="AREA1")
private String area1;
@Column(name="AREA2")
private String area2;
@Column(name="AREA3")
private String area3;
@Column(name="CNTRL_ID")
private String cntrlId;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CREATE_DT")
private Date createDt;
@Column(name="HSTRY_SNO")
private int hstrySno;
@Column(name="LAND_NM")
private String landNm;
@Column(name="LAND_NUM")
private String landNum;
@Column(name="LAT")
private double lat;
@Column(name="LON")
private double lon;
@Column(name="PRCS_YN")
private String prcsYn;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="UPDATE_DT")
private Date updateDt;
@Column(name="ZIP_CD")
private String zipCd;
public CtrCntrlHstryArea() {
}
public int getHstryAreaSno() {
return this.hstryAreaSno;
}
public void setHstryAreaSno(int hstryAreaSno) {
this.hstryAreaSno = hstryAreaSno;
}
public String getActnType() {
return this.actnType;
}
public void setActnType(String actnType) {
this.actnType = actnType;
}
public String getAreaNm() {
return this.areaNm;
}
public void setAreaNm(String areaNm) {
this.areaNm = areaNm;
}
public String getAreaType() {
return this.areaType;
}
public void setAreaType(String areaType) {
this.areaType = areaType;
}
public String getArea1() {
return this.area1;
}
public void setArea1(String area1) {
this.area1 = area1;
}
public String getArea2() {
return this.area2;
}
public void setArea2(String area2) {
this.area2 = area2;
}
public String getArea3() {
return this.area3;
}
public void setArea3(String area3) {
this.area3 = area3;
}
public String getCntrlId() {
return this.cntrlId;
}
public void setCntrlId(String cntrlId) {
this.cntrlId = cntrlId;
}
public Date getCreateDt() {
return this.createDt;
}
public void setCreateDt(Date createDt) {
this.createDt = createDt;
}
public int getHstrySno() {
return this.hstrySno;
}
public void setHstrySno(int hstrySno) {
this.hstrySno = hstrySno;
}
public String getLandNm() {
return this.landNm;
}
public void setLandNm(String landNm) {
this.landNm = landNm;
}
public String getLandNum() {
return this.landNum;
}
public void setLandNum(String landNum) {
this.landNum = landNum;
}
public double getLat() {
return this.lat;
}
public void setLat(double lat) {
this.lat = lat;
}
public double getLon() {
return this.lon;
}
public void setLon(double lon) {
this.lon = lon;
}
public String getPrcsYn() {
return this.prcsYn;
}
public void setPrcsYn(String prcsYn) {
this.prcsYn = prcsYn;
}
public Date getUpdateDt() {
return this.updateDt;
}
public void setUpdateDt(Date updateDt) {
this.updateDt = updateDt;
}
public String getZipCd() {
return this.zipCd;
}
public void setZipCd(String zipCd) {
this.zipCd = zipCd;
}
}

52
src/main/java/com/palnet/biz/jpa/entity/PtyCrtfyhpBas.java

@ -0,0 +1,52 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.CreationTimestamp;
import lombok.Data;
/**
* The persistent class for the PTY_CRTFYHP_BAS database table.
*
*/
@Entity
@Table(name="PTY_CRTFYHP_BAS")
@NamedQuery(name="PtyCrtfyhpBas.findAll", query="SELECT p FROM PtyCrtfyhpBas p")
@Data
public class PtyCrtfyhpBas implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="CRTFYHP_SNO")
private int crtfyhpSno;
@CreationTimestamp
@Column(name="CREATE_DT")
private LocalDateTime createDt;
@Column(name="CRTFYHP_NO")
private String crtfyhpNo;
@Column(name="CRTFYHP_YN")
private String crtfyhpYn;
@Column(name="HPNO")
private String hpno;
}

67
src/main/java/com/palnet/biz/jpa/entity/PtyCstmrBas.java

@ -0,0 +1,67 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
import lombok.Data;
import java.util.Date;
/**
* The persistent class for the PTY_CSTMR_BAS database table.
*
*/
@Entity
@Table(name="PTY_CSTMR_BAS")
@NamedQuery(name="PtyCstmrBas.findAll", query="SELECT p FROM PtyCstmrBas p")
@Data
public class PtyCstmrBas implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="CSTMR_SNO")
private Integer cstmrSno;
@Column(name="AUTH_ID")
private String authId;
@Column(name="CSTMR_DIV_CD")
private String cstmrDivCd;
@Column(name="CSTMR_STATUS_CD")
private String cstmrStatusCd;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CSTMR_STATUS_CNG_DT")
private Date cstmrStatusCngDt;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="JOIN_DT")
private Date joinDt;
@Column(name="JOIN_IP")
private String joinIp;
@Column(name="MEMBER_DIV_CD")
private String memberDivCd;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="PSWD_UPDT_DT")
private Date pswdUpdtDt;
@Column(name="SITE_CODE")
private String siteCode;
@Column(name="USER_ID")
private String userId;
@Column(name="USER_PSWD")
private String userPswd;
@Column(name="RFRSH_TOKEN")
private String rfrshToken;
}

89
src/main/java/com/palnet/biz/jpa/entity/PtyCstmrConectHist.java

@ -0,0 +1,89 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import javax.persistence.*;
import java.util.Date;
/**
* The persistent class for the PTY_CSTMR_CONECT_HIST database table.
*
*/
@Entity
@Table(name="PTY_CSTMR_CONECT_HIST")
@NamedQuery(name="PtyCstmrConectHist.findAll", query="SELECT p FROM PtyCstmrConectHist p")
public class PtyCstmrConectHist implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="CSTMR_CONECT_HIST_SNO")
private int cstmrConectHistSno;
@Temporal(TemporalType.TIMESTAMP)
@Column(name="CONECT_DT")
private Date conectDt;
@Column(name="CONECT_ERROR_CD")
private String conectErrorCd;
@Column(name="CONECT_IP")
private String conectIp;
@Column(name="CONECT_SUCES_YN")
private String conectSucesYn;
@Column(name="CSTMR_SNO")
private int cstmrSno;
public PtyCstmrConectHist() {
}
public int getCstmrConectHistSno() {
return this.cstmrConectHistSno;
}
public void setCstmrConectHistSno(int cstmrConectHistSno) {
this.cstmrConectHistSno = cstmrConectHistSno;
}
public Date getConectDt() {
return this.conectDt;
}
public void setConectDt(Date conectDt) {
this.conectDt = conectDt;
}
public String getConectErrorCd() {
return this.conectErrorCd;
}
public void setConectErrorCd(String conectErrorCd) {
this.conectErrorCd = conectErrorCd;
}
public String getConectIp() {
return this.conectIp;
}
public void setConectIp(String conectIp) {
this.conectIp = conectIp;
}
public String getConectSucesYn() {
return this.conectSucesYn;
}
public void setConectSucesYn(String conectSucesYn) {
this.conectSucesYn = conectSucesYn;
}
public int getCstmrSno() {
return this.cstmrSno;
}
public void setCstmrSno(int cstmrSno) {
this.cstmrSno = cstmrSno;
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save