Explorar o código

Batch 모듈 추가

gagamel %!s(int64=5) %!d(string=hai) anos
pai
achega
b742b8363b
Modificáronse 41 ficheiros con 1467 adicións e 159 borrados
  1. 160 159
      pom.xml
  2. 45 0
      style24.batch/.classpath
  3. 42 0
      style24.batch/.project
  4. 13 0
      style24.batch/.settings/.jsdtscope
  5. 6 0
      style24.batch/.settings/org.eclipse.core.resources.prefs
  6. 12 0
      style24.batch/.settings/org.eclipse.jdt.core.prefs
  7. 4 0
      style24.batch/.settings/org.eclipse.m2e.core.prefs
  8. 10 0
      style24.batch/.settings/org.eclipse.wst.common.component
  9. 7 0
      style24.batch/.settings/org.eclipse.wst.common.project.facet.core.xml
  10. 1 0
      style24.batch/.settings/org.eclipse.wst.jsdt.ui.superType.container
  11. 1 0
      style24.batch/.settings/org.eclipse.wst.jsdt.ui.superType.name
  12. 2 0
      style24.batch/.settings/org.eclipse.wst.validation.prefs
  13. 2 0
      style24.batch/.settings/org.springframework.ide.eclipse.prefs
  14. 70 0
      style24.batch/pom.xml
  15. 67 0
      style24.batch/src/main/java/com/style24/batch/biz/dao/TsbMonitoringDao.java
  16. 150 0
      style24.batch/src/main/java/com/style24/batch/biz/job/TsbAbstractJob.java
  17. 84 0
      style24.batch/src/main/java/com/style24/batch/biz/job/monitoring/TsbHourMonitoringJob.java
  18. 96 0
      style24.batch/src/main/java/com/style24/batch/biz/service/TsbMonitoringService.java
  19. 30 0
      style24.batch/src/main/java/com/style24/batch/biz/task/TsbHealthCheckTask.java
  20. 48 0
      style24.batch/src/main/java/com/style24/batch/biz/task/TsbMonitoringTask.java
  21. 48 0
      style24.batch/src/main/java/com/style24/batch/support/config/TsbMybatisShopConfig.java
  22. 39 0
      style24.batch/src/main/java/com/style24/batch/support/config/TsbWebMvcConfig.java
  23. 34 0
      style24.batch/src/main/java/com/style24/batch/support/env/TsbConstants.java
  24. 56 0
      style24.batch/src/main/java/com/style24/batch/support/startup/TsbApplication.java
  25. 19 0
      style24.batch/src/main/java/com/style24/batch/support/startup/TsbServletInitializer.java
  26. 80 0
      style24.batch/src/main/java/com/style24/persistence/mybatis/shop/TsbMonitoring.xml
  27. 7 0
      style24.batch/src/main/resources/banner.txt
  28. 17 0
      style24.batch/src/main/resources/config/application-dev.yml
  29. 41 0
      style24.batch/src/main/resources/config/application-locd.yml
  30. 18 0
      style24.batch/src/main/resources/config/application-locp.yml
  31. 17 0
      style24.batch/src/main/resources/config/application-run.yml
  32. 14 0
      style24.batch/src/main/resources/config/application.yml
  33. 43 0
      style24.batch/src/main/resources/log/logback-dev.xml
  34. 59 0
      style24.batch/src/main/resources/log/logback-locd.xml
  35. 59 0
      style24.batch/src/main/resources/log/logback-locp.xml
  36. 43 0
      style24.batch/src/main/resources/log/logback-run.xml
  37. 23 0
      style24.batch/src/main/resources/persistence/mybatis-shop-config.xml
  38. BIN=BIN
      style24.batch/src/main/webapp/WEB-INF/lib/gagaframework-web-core-1.7.1-RELEASE.jar
  39. BIN=BIN
      style24.batch/src/main/webapp/WEB-INF/lib/gagaframework-web-parameter-1.7-RELEASE.jar
  40. BIN=BIN
      style24.batch/src/main/webapp/WEB-INF/lib/gagaframework-web-rest-1.7-RELEASE.jar
  41. BIN=BIN
      style24.batch/src/main/webapp/WEB-INF/lib/gagaframework-web-util-1.7-RELEASE.jar

+ 160 - 159
pom.xml

@@ -1,160 +1,161 @@
-<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.3.3.RELEASE</version>
-		<relativePath/> <!-- lookup parent from repository -->
-	</parent>
-	<groupId>com.style24</groupId>
-	<artifactId>root</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
-	<packaging>pom</packaging>
-	<name>com.style24.root</name>
-	<description>STYLE24 ROOT</description>
-	<modules>
-		<module>style24.core</module>
-		<module>style24.admin</module>
-		<module>style24.scm</module>
-	</modules>
-	
-	<properties>
-		<java.version>1.8</java.version>
-		<skipTests>true</skipTests>
-	</properties>
-	
-	<dependencyManagement>
-		<dependencies>
-			<dependency>
-				<groupId>com.style24.core</groupId>
-				<artifactId>style24.core</artifactId>
-				<version>1.0.0</version>
-				<type>jar</type>
-				<scope>compile</scope>
-			</dependency>
-		</dependencies>
-	</dependencyManagement>
-
-	<dependencies>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-cache</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-jdbc</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-validation</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-web</artifactId>
-			<exclusions>
-				<exclusion>
-					<groupId>org.springframework.boot</groupId>
-					<artifactId>spring-boot-starter-tomcat</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-web-services</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.data</groupId>
-			<artifactId>spring-data-commons</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.mybatis.spring.boot</groupId>
-			<artifactId>mybatis-spring-boot-starter</artifactId>
-			<version>2.1.3</version>
-		</dependency>
-		<dependency>
-			<groupId>org.projectlombok</groupId>
-			<artifactId>lombok</artifactId>
-			<optional>true</optional>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-tomcat</artifactId>
-			<scope>provided</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-test</artifactId>
-			<scope>test</scope>
-			<exclusions>
-				<exclusion>
-					<groupId>org.junit.vintage</groupId>
-					<artifactId>junit-vintage-engine</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.commons</groupId>
-			<artifactId>commons-lang3</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.httpcomponents</groupId>
-			<artifactId>httpclient</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.googlecode.json-simple</groupId>
-			<artifactId>json-simple</artifactId>
-			<version>1.1.1</version>
-		</dependency>
-		
-		<!-- /// Redis -->
-		<dependency>
-			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-data-redis</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.springframework.session</groupId>
-			<artifactId>spring-session-data-redis</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.commons</groupId>
-			<artifactId>commons-pool2</artifactId>
-		</dependency>
-		<!-- \\\ Redis -->
-		
-		<!-- /// Excel POI -->
-		<dependency>
-			<groupId>org.apache.poi</groupId>
-			<artifactId>poi</artifactId>
-			<version>3.17</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.poi</groupId>
-			<artifactId>poi-ooxml</artifactId>
-			<version>3.17</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.poi</groupId>
-			<artifactId>poi-ooxml-schemas</artifactId>
-			<version>3.17</version>
-		</dependency>
-		<!-- \\\ Excel POI -->
-		
-	</dependencies>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.springframework.boot</groupId>
-				<artifactId>spring-boot-maven-plugin</artifactId>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-surefire-plugin</artifactId>
-				<configuration>
-					<skipTests>${skipTests}</skipTests>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
+<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.3.3.RELEASE</version>
+		<relativePath/> <!-- lookup parent from repository -->
+	</parent>
+	<groupId>com.style24</groupId>
+	<artifactId>root</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<packaging>pom</packaging>
+	<name>com.style24.root</name>
+	<description>STYLE24 ROOT</description>
+	<modules>
+		<module>style24.core</module>
+		<module>style24.admin</module>
+		<module>style24.scm</module>
+		<module>style24.batch</module>
+	</modules>
+	
+	<properties>
+		<java.version>1.8</java.version>
+		<skipTests>true</skipTests>
+	</properties>
+	
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>com.style24.core</groupId>
+				<artifactId>style24.core</artifactId>
+				<version>1.0.0</version>
+				<type>jar</type>
+				<scope>compile</scope>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-cache</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-jdbc</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-validation</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+			<exclusions>
+				<exclusion>
+					<groupId>org.springframework.boot</groupId>
+					<artifactId>spring-boot-starter-tomcat</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web-services</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.data</groupId>
+			<artifactId>spring-data-commons</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.mybatis.spring.boot</groupId>
+			<artifactId>mybatis-spring-boot-starter</artifactId>
+			<version>2.1.3</version>
+		</dependency>
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+			<optional>true</optional>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-tomcat</artifactId>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-test</artifactId>
+			<scope>test</scope>
+			<exclusions>
+				<exclusion>
+					<groupId>org.junit.vintage</groupId>
+					<artifactId>junit-vintage-engine</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>commons-lang3</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpclient</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.googlecode.json-simple</groupId>
+			<artifactId>json-simple</artifactId>
+			<version>1.1.1</version>
+		</dependency>
+		
+		<!-- /// Redis -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-redis</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.session</groupId>
+			<artifactId>spring-session-data-redis</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.commons</groupId>
+			<artifactId>commons-pool2</artifactId>
+		</dependency>
+		<!-- \\\ Redis -->
+		
+		<!-- /// Excel POI -->
+		<dependency>
+			<groupId>org.apache.poi</groupId>
+			<artifactId>poi</artifactId>
+			<version>3.17</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.poi</groupId>
+			<artifactId>poi-ooxml</artifactId>
+			<version>3.17</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.poi</groupId>
+			<artifactId>poi-ooxml-schemas</artifactId>
+			<version>3.17</version>
+		</dependency>
+		<!-- \\\ Excel POI -->
+		
+	</dependencies>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<configuration>
+					<skipTests>${skipTests}</skipTests>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
 </project>

+ 45 - 0
style24.batch/.classpath

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry including="**/*.java" kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="test" value="true"/>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+		<attributes>
+			<attribute name="test" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v9.0.22"/>
+	<classpathentry kind="lib" path="/style24.core/target/classes">
+		<attributes>
+			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/classes"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

+ 42 - 0
style24.batch/.project

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>style24.batch</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.common.project.facet.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.wst.validation.validationbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.springframework.ide.eclipse.boot.validation.springbootbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+		<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
+	</natures>
+</projectDescription>

+ 13 - 0
style24.batch/.settings/.jsdtscope

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry excluding="**/bower_components/*|**/node_modules/*|**/*.min.js" kind="src" path="src/main/webapp"/>
+	<classpathentry kind="src" path="target/m2e-wtp/web-resources"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.WebProject">
+		<attributes>
+			<attribute name="hide" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary"/>
+	<classpathentry kind="output" path=""/>
+</classpath>

+ 6 - 0
style24.batch/.settings/org.eclipse.core.resources.prefs

@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+encoding//src/main/java=UTF-8
+encoding//src/main/resources=UTF-8
+encoding//src/test/java=UTF-8
+encoding//src/test/resources=UTF-8
+encoding/<project>=UTF-8

+ 12 - 0
style24.batch/.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8

+ 4 - 0
style24.batch/.settings/org.eclipse.m2e.core.prefs

@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1

+ 10 - 0
style24.batch/.settings/org.eclipse.wst.common.component

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
+    <wb-module deploy-name="style24.batch">
+        <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
+        <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
+        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
+        <property name="context-root" value="style24.batch"/>
+        <property name="java-output-path" value="/style24.batch/target/classes"/>
+    </wb-module>
+</project-modules>

+ 7 - 0
style24.batch/.settings/org.eclipse.wst.common.project.facet.core.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+  <fixed facet="wst.jsdt.web"/>
+  <installed facet="java" version="1.8"/>
+  <installed facet="jst.web" version="4.0"/>
+  <installed facet="wst.jsdt.web" version="1.0"/>
+</faceted-project>

+ 1 - 0
style24.batch/.settings/org.eclipse.wst.jsdt.ui.superType.container

@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary

+ 1 - 0
style24.batch/.settings/org.eclipse.wst.jsdt.ui.superType.name

@@ -0,0 +1 @@
+Window

+ 2 - 0
style24.batch/.settings/org.eclipse.wst.validation.prefs

@@ -0,0 +1,2 @@
+disabled=06target
+eclipse.preferences.version=1

+ 2 - 0
style24.batch/.settings/org.springframework.ide.eclipse.prefs

@@ -0,0 +1,2 @@
+boot.validation.initialized=true
+eclipse.preferences.version=1

+ 70 - 0
style24.batch/pom.xml

@@ -0,0 +1,70 @@
+<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>com.style24</groupId>
+		<artifactId>root</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+	<groupId>com.style24.batch</groupId>
+	<artifactId>style24.batch</artifactId>
+	<packaging>war</packaging>
+	<name>style24.batch</name>
+	<description>STYLE24 Batch</description>
+	
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-batch</artifactId>
+		</dependency>
+
+		<!-- /// WEB-INF lib -->
+		<dependency>
+			<groupId>com.gagaframework</groupId>
+			<artifactId>gagaframework-web-core</artifactId>
+			<version>1.7.1-RELEASE</version>
+			<scope>system</scope>
+			<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/gagaframework-web-core-1.7.1-RELEASE.jar</systemPath>
+		</dependency>
+		<dependency>
+			<groupId>com.gagaframework</groupId>
+			<artifactId>gagaframework-web-parameter</artifactId>
+			<version>1.7-RELEASE</version>
+			<scope>system</scope>
+			<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/gagaframework-web-parameter-1.7-RELEASE.jar</systemPath>
+		</dependency>
+		<dependency>
+			<groupId>com.gagaframework</groupId>
+			<artifactId>gagaframework-web-rest</artifactId>
+			<version>1.7.1-RELEASE</version>
+			<scope>system</scope>
+			<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/gagaframework-web-rest-1.7-RELEASE.jar</systemPath>
+		</dependency>
+		<dependency>
+			<groupId>com.gagaframework</groupId>
+			<artifactId>gagaframework-web-util</artifactId>
+			<version>1.7-RELEASE</version>
+			<scope>system</scope>
+			<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/gagaframework-web-util-1.7-RELEASE.jar</systemPath>
+		</dependency>
+		<!-- \\\ WEB-INF lib -->
+	</dependencies>
+	
+	<build>
+		<finalName>${project.name}</finalName>
+		<resources>
+			<resource>
+				<directory>src/main/java</directory>
+				<includes>
+					<include>**/*.xml</include>
+				</includes>
+			</resource>
+			<resource>
+				<directory>src/main/resources</directory>
+				<includes>
+					<include>**/*</include>
+				</includes>
+			</resource>
+		</resources>
+	</build>
+</project>

+ 67 - 0
style24.batch/src/main/java/com/style24/batch/biz/dao/TsbMonitoringDao.java

@@ -0,0 +1,67 @@
+package com.style24.batch.biz.dao;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.persistence.domain.Alarm;
+
+/**
+ * 모니터링 Dao
+ * 
+ * @author gagamel
+ * @since 2020. 11. 13
+ */
+@ShopDs
+public interface TsbMonitoringDao {
+
+	/**
+	 * 알람SMS 생성
+	 * @param alarm - 알람 정보
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 13
+	 */
+	void createAlarmSms(Alarm alarm);
+
+	/**
+	 * 1일내 회원가입건수 조회
+	 * @param siteCd - 사이트코드
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 13
+	 */
+	int getJoinCountWithinOneDay(String siteCd);
+
+	/**
+	 * 1시간내 로그인건수 조회
+	 * @param siteCd - 사이트코드
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 13
+	 */
+	int getLoginCountWithinOneHour(String siteCd);
+
+	/**
+	 * 1시간내 유입건수 조회
+	 * @param siteCd - 사이트코드
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 13
+	 */
+	int getInthrowCountWithinOneHour(String siteCd);
+
+	/**
+	 * 2시간내 결제건수 조회
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 13
+	 */
+	int getPayCountWithinTwoHour();
+
+	/**
+	 * 1일내 외부몰주문수집건수 조회
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 13
+	 */
+	int getExtmallOrderCollectionCountWithinOneDay();
+
+}

+ 150 - 0
style24.batch/src/main/java/com/style24/batch/biz/job/TsbAbstractJob.java

@@ -0,0 +1,150 @@
+package com.style24.batch.biz.job;
+
+import java.sql.Timestamp;
+import java.util.Collection;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * Batch Abastract Class
+ * 
+ * @author gagamel
+ * @since 2020. 11. 13
+ */
+@Slf4j
+public abstract class TsbAbstractJob<I, O, R> {
+
+	private long startTime = 0L;
+	private long endTime = 0L;
+
+	protected String batchName;
+
+	private I readItem = null;
+	private O convertedItem = null;
+	private R resultItem = null;
+
+	public int totalCount = 0;
+
+	/**
+	 * Batch Job 시작 로그를 출력한다.
+	 */
+	protected void printStart() {
+		startTime = System.currentTimeMillis();
+
+		log.info("################################################################################");
+		log.info("{} Start!!!\n", batchName);
+	}
+
+	/**
+	 * Batch Job 결과 건수 로그를 출력한다.
+	 */
+	@SuppressWarnings("rawtypes")
+	protected void printResult(int successCount, int failureCount) {
+		if (readItem instanceof Collection) {
+			totalCount = ((Collection)readItem).size();
+
+			log.info("--------------------------------------------------------------------------------");
+			log.info("배치: {}, 대상: {}건 중 성공: {}건, 실패: {}건", batchName, totalCount, successCount, failureCount);
+			log.info("--------------------------------------------------------------------------------");
+		}
+	}
+
+	/**
+	 * Batch Job 결과 건수 로그를 출력한다.
+	 */
+	@SuppressWarnings("rawtypes")
+	protected void printResult(int totalCount, int successCount, int failureCount) {
+		log.info("--------------------------------------------------------------------------------");
+		log.info("배치: {}, 대상: {}건 중 성공: {}건, 실패: {}건", batchName, totalCount, successCount, failureCount);
+		log.info("--------------------------------------------------------------------------------");
+	}
+
+	/**
+	 * Batch Job 종료 로그를 출력한다.
+	 */
+	protected void printEnd() {
+		endTime = System.currentTimeMillis();
+
+		log.info("Start Time: {}", new Timestamp(startTime));
+		log.info("End Time: {}", new Timestamp(endTime));
+		log.info("Processing Time: {} seconds\n", ((endTime - startTime) / 1000.0));
+		log.info("{} End!!!", batchName);
+		log.info("################################################################################\n\n");
+	}
+
+	/**
+	 * 배치를 실행한다.
+	 * @param batchName - 배치명
+	 * @throws Exception
+	 */
+	public void run(String batchName) throws Exception {
+		this.batchName = batchName;
+
+		this.printStart();
+
+		readItem = this.read();
+
+		if (readItem != null) {
+			convertedItem = this.process(readItem);
+
+			resultItem = this.write(convertedItem);
+
+			this.notify(resultItem);
+		} else { // 배치 처리할 대상 데이터가 없으면 종료
+			log.info("처리할 데이터가 없습니다.\n");
+		}
+
+		this.printEnd();
+	}
+
+//	/**
+//	 * 데이터 로그를 출력한다.
+//	 * @param dataMap - 데이터
+//	 */
+//	protected void printRowValue(GagaMap dataMap) {
+//		Iterator<Entry<Object, Object>> itr = dataMap.entrySet().iterator();
+//
+//		StringBuilder sb = new StringBuilder();
+//		while (itr.hasNext()) {
+//			Entry<Object, Object> entry = itr.next();
+//			sb.append(" | ").append(entry.getValue());
+//		}
+//
+//		String value = "";
+//		if (StringUtils.hasLength(sb.toString())) {
+//			value += "[" + sb.toString().substring(2) + "]";
+//			logger.info(value);
+//		}
+//	}
+
+	/**
+	 * 배치 처리할 항목을 조회한다.
+	 * @return 배치 처리를 위해 조회한 항목
+	 * @throws Exception
+	 */
+	public abstract I read() throws Exception;
+
+	/**
+	 * 조회한 항목을 실제 데이터 처리를 위해 변환한다. 변환할 데이터가 없으면 아무 처리 하지 않아도 된다.
+	 * @param readItem - 조회한 항목
+	 * @return 변환된 항목
+	 * @throws Exception
+	 */
+	public abstract O process(I readItem) throws Exception;
+
+	/**
+	 * 변환된 항목으로 배치를 처리하고, 그 결과를 조회한다.
+	 * @param convertedItem - 변환된 항목
+	 * @return 처리결과 항목
+	 * @throws Exception
+	 */
+	public abstract R write(O convertedItem) throws Exception;
+
+	/**
+	 * 배치처리결과를 노티한다.
+	 * @param resultItem - 배치처리결과 항목
+	 * @throws Exception
+	 */
+	public abstract void notify(R resultItem) throws Exception;
+
+}

+ 84 - 0
style24.batch/src/main/java/com/style24/batch/biz/job/monitoring/TsbHourMonitoringJob.java

@@ -0,0 +1,84 @@
+package com.style24.batch.biz.job.monitoring;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.style24.batch.biz.job.TsbAbstractJob;
+import com.style24.batch.biz.service.TsbMonitoringService;
+import com.style24.batch.support.env.TsbConstants;
+import com.style24.core.support.env.TscConstants;
+
+import lombok.extern.slf4j.Slf4j;
+
+import com.gagaframework.web.parameter.GagaMap;
+
+/**
+ * 시간 모니터링
+ * 
+ * @author gagamel
+ * @since 2020. 11. 13
+ */
+@Component
+@Slf4j
+public class TsbHourMonitoringJob extends TsbAbstractJob<Collection<GagaMap>, Collection<GagaMap>, Collection<GagaMap>> {
+
+	@Autowired
+	private TsbMonitoringService monitoringService;
+
+	@Override
+	public Collection<GagaMap> read() throws Exception {
+		Collection<GagaMap> dataList = new ArrayList<>();
+
+		GagaMap data = new GagaMap();
+
+		// 1시간내 로그인건수
+		data.setString("alarmType", TsbConstants.Monitoring.LOGIN_CNT.value());
+		data.setInt("readCnt", monitoringService.getLoginCountWithinOneHour(TscConstants.Site.STYLE24.value()));
+		dataList.add(data);
+
+		// 1시간내 유입건수
+		data = new GagaMap();
+		data.setString("alarmType", TsbConstants.Monitoring.INFLOW_CNT.value());
+		data.setInt("readCnt", monitoringService.getInthrowCountWithinOneHour(TscConstants.Site.STYLE24.value()));
+		dataList.add(data);
+
+		// 2시간내 결제건수
+		data = new GagaMap();
+		data.setString("alarmType", TsbConstants.Monitoring.PAY_CNT.value());
+		data.setInt("readCnt", monitoringService.getPayCountWithinTwoHour());
+		dataList.add(data);
+
+		return dataList;
+	}
+
+	@Override
+	public Collection<GagaMap> process(Collection<GagaMap> dataList) throws Exception {
+		if (dataList == null || dataList.isEmpty()) {
+			log.info("처리할 데이터가 없습니다.");
+			return null;
+		}
+
+		for (GagaMap data : dataList) {
+			log.info("Alarm type: {} - readCnt: {}", data.getString("alarmType"), data.getInt("readCnt"));
+			if (data.getInt("readCnt") == 0) {
+				monitoringService.createSystemAlarmSms(data.getString("alarmType"));
+			}
+		}
+
+		return null;
+	}
+
+	@Override
+	public Collection<GagaMap> write(Collection<GagaMap> dataList) throws Exception {
+		return dataList;
+	}
+
+	@Override
+	public void notify(Collection<GagaMap> dataList) throws Exception {
+		// Do nothing
+	}
+
+}

+ 96 - 0
style24.batch/src/main/java/com/style24/batch/biz/service/TsbMonitoringService.java

@@ -0,0 +1,96 @@
+package com.style24.batch.biz.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.style24.batch.biz.dao.TsbMonitoringDao;
+import com.style24.batch.support.env.TsbConstants;
+import com.style24.core.support.env.TscConstants;
+import com.style24.persistence.domain.Alarm;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 모니터링 Service
+ * 
+ * @author gagamel
+ * @since 2020. 11. 13
+ */
+@Service
+@Slf4j
+public class TsbMonitoringService {
+
+	@Autowired
+	private TsbMonitoringDao monitoringDao;
+
+	/**
+	 * 시스템알람SMS 생성
+	 * @param alarmId - 알람ID
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 11. 13
+	 */
+	@Transactional("shopTxnManager")
+	public void createSystemAlarmSms(String alarmId) {
+		Alarm params = new Alarm();
+		params.setAlarmId(alarmId);
+		params.setFuserid(TsbConstants.REG_ID);
+		params.setFcallback(TscConstants.CALLCENTER_TEL_NO);
+		monitoringDao.createAlarmSms(params);
+	}
+
+	/**
+	 * 1일내 회원가입건수 조회
+	 * @param siteCd - 사이트코드
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 5. 18
+	 */
+	public int getJoinCountWithinOneDay(String siteCd) {
+		return monitoringDao.getJoinCountWithinOneDay(siteCd);
+	}
+
+	/**
+	 * 1시간내 로그인건수 조회
+	 * @param siteCd - 사이트코드
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 5. 18
+	 */
+	public int getLoginCountWithinOneHour(String siteCd) {
+		return monitoringDao.getLoginCountWithinOneHour(siteCd);
+	}
+
+	/**
+	 * 1시간내 유입건수 조회
+	 * @param siteCd - 사이트코드
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 5. 18
+	 */
+	public int getInthrowCountWithinOneHour(String siteCd) {
+		return monitoringDao.getInthrowCountWithinOneHour(siteCd);
+	}
+
+	/**
+	 * 2시간내 결제건수 조회
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 5. 18
+	 */
+	public int getPayCountWithinTwoHour() {
+		return monitoringDao.getPayCountWithinTwoHour();
+	}
+
+	/**
+	 * 1일내 외부몰주문수집건수 조회
+	 * @return
+	 * @author gagamel
+	 * @since 2020. 5. 18
+	 */
+	public int getExtmallOrderCollectionCountWithinOneDay() {
+		return monitoringDao.getExtmallOrderCollectionCountWithinOneDay();
+	}
+
+}

+ 30 - 0
style24.batch/src/main/java/com/style24/batch/biz/task/TsbHealthCheckTask.java

@@ -0,0 +1,30 @@
+package com.style24.batch.biz.task;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * HealthCheck Task
+ * @author gagamel
+ * @since 2020. 11. 16
+ */
+@Component
+@Slf4j
+public class TsbHealthCheckTask {
+
+	/**
+	 * fixedDelay = 5000: 이전 수행이 종료되고, 5초 이후 해당 job을 수행함
+	 */
+	@Scheduled(fixedDelay = 5000)
+	@Async
+	public void printCurrentTime() throws Exception {
+		log.info("/// Current time is {}.", (new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")).format(new Date()));
+	}
+
+}

+ 48 - 0
style24.batch/src/main/java/com/style24/batch/biz/task/TsbMonitoringTask.java

@@ -0,0 +1,48 @@
+package com.style24.batch.biz.task;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import com.style24.batch.biz.job.monitoring.TsbHourMonitoringJob;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 모니터링 Task
+ * @author gagamel
+ * @since 2020. 11. 16
+ */
+@Component
+@Slf4j
+public class TsbMonitoringTask {
+
+	@Autowired
+	private TsbHourMonitoringJob hourMonitoringJob;
+
+	/**
+	 * 시간 모니터링
+	 * @throws
+	 * @author gagamel
+	 * @since 2020. 11. 16
+	 */
+	@Scheduled(cron = "${cron.monitoring.hourJob}")
+	@Async
+	public void runHourMonitoring() throws Exception {
+		hourMonitoringJob.run("시간 모니터링 Job");
+	}
+
+//	/**
+//	 * 일 모니터링
+//	 * @throws
+//	 * @author gagamel
+//	 * @since 2020. 5. 18
+//	 */
+//	@Scheduled(cron = "${cron.monitoring.dayJob}")
+//	@Async
+//	public void runDayMonitoring() throws Exception {
+//		dayMonitoringJob.run("일 모니터링 Job");
+//	}
+
+}

+ 48 - 0
style24.batch/src/main/java/com/style24/batch/support/config/TsbMybatisShopConfig.java

@@ -0,0 +1,48 @@
+package com.style24.batch.support.config;
+
+import javax.sql.DataSource;
+
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import com.style24.core.support.annotation.ShopDs;
+import com.style24.core.support.env.TscConstants;
+
+/**
+ * shopDs용 Mybatis Configuration
+ * 
+ * @author gagamel
+ * @since 2020. 11. 16
+ */
+@Configuration
+@MapperScan(basePackages = TscConstants.BASE_PACKAGE, annotationClass = ShopDs.class, sqlSessionFactoryRef = "shopSqlSessionFactory")
+public class TsbMybatisShopConfig {
+
+	@Autowired
+	private ApplicationContext applicationContext;
+
+	@Bean(name = "shopSqlSessionFactory")
+	public SqlSessionFactory shopSqlSessionFactory(@Qualifier("shopDataSource") DataSource dataSource) throws Exception {
+		SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
+
+		sessionFactoryBean.setDataSource(dataSource);
+		sessionFactoryBean.setTypeAliasesPackage(TscConstants.DOMAIN_PACKAGE);
+		sessionFactoryBean.setConfigLocation(applicationContext.getResource("classpath:persistence/mybatis-shop-config.xml"));
+		sessionFactoryBean.setMapperLocations(applicationContext.getResources(TscConstants.MAPPER_LOCATION_PATH + "/shop/*.xml"));
+
+		return sessionFactoryBean.getObject();
+	}
+
+	@Bean(name = "shopSqlSessionTemplate")
+	public SqlSessionTemplate shopSqlSessionTemplate(@Qualifier("shopSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
+		return new SqlSessionTemplate(sqlSessionFactory);
+	}
+
+}

+ 39 - 0
style24.batch/src/main/java/com/style24/batch/support/config/TsbWebMvcConfig.java

@@ -0,0 +1,39 @@
+package com.style24.batch.support.config;
+
+import java.nio.charset.Charset;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.springframework.http.converter.StringHttpMessageConverter;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * Web MVC Configuration
+ * 
+ * @author gagamel
+ * @since 2020. 11. 16
+ */
+@Configuration
+public class TsbWebMvcConfig implements WebMvcConfigurer {
+
+	/**
+	 * API 호출을 위한 RestTemplate 설정
+	 * @return
+	 */
+	@Bean
+	public RestTemplate restTemplate() {
+		HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
+		factory.setConnectTimeout(300000);
+		factory.setReadTimeout(300000);
+
+		RestTemplate restTemplate = new RestTemplate(factory);
+
+		// Convert the message to UTF-8
+		restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
+
+		return restTemplate;
+	}
+
+}

+ 34 - 0
style24.batch/src/main/java/com/style24/batch/support/env/TsbConstants.java

@@ -0,0 +1,34 @@
+package com.style24.batch.support.env;
+
+/**
+ * 변경될 소지가 있는 변수 값을 정의
+ * 공통 모듈은 style24.core의 TscConstants에 정의하고 Batch 모듈에서만 사용하는 것을 정의
+ *
+ * @author gagamel
+ * @since 2020. 11. 13
+ */
+public class TsbConstants {
+
+	// 등록자ID
+	public static final String REG_ID = "0";
+
+	// 모니터링
+	public enum Monitoring {
+		JOIN_CNT("A001"),			// 회원가입건수
+		LOGIN_CNT("A002"),			// 로그인건수
+		INFLOW_CNT("A003"),			// 유입건수
+		PAY_CNT("A004"),			// 결제건수
+		EXTMALL_ORD_CNT("A005");	// 외부몰 주문건수
+
+		private String value;
+
+		private Monitoring(String value) {
+			this.value = value;
+		}
+
+		public String value() {
+			return value;
+		}
+	}
+
+}

+ 56 - 0
style24.batch/src/main/java/com/style24/batch/support/startup/TsbApplication.java

@@ -0,0 +1,56 @@
+package com.style24.batch.support.startup;
+
+import java.io.IOException;
+import java.util.Arrays;
+
+import javax.annotation.PostConstruct;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+import com.style24.core.support.env.TscConstants;
+
+import lombok.extern.slf4j.Slf4j;
+
+import com.gagaframework.web.core.GagaConstants;
+
+/**
+ * Application
+ * 
+ * @author gagamel
+ * @since 2020. 11. 16
+ */
+@Configuration
+@EnableAutoConfiguration(exclude = {DataSourceTransactionManagerAutoConfiguration.class, DataSourceAutoConfiguration.class})
+@ComponentScan(basePackages = {GagaConstants.GAGA_PACKAGE, TscConstants.BASE_PACKAGE})
+@EnableScheduling
+@EnableAsync
+@Slf4j
+public class TsbApplication {
+
+	@Autowired
+	private Environment env;
+
+	@PostConstruct
+	public void initApplication() throws IOException {
+		log.info("Running with Spring Profiles: {}", Arrays.toString(env.getActiveProfiles()));
+		if (env.getActiveProfiles().length == 0) {
+			log.warn("No spring profile configured, running with default configuration.");
+		} else if (env.getActiveProfiles().length > 1) {
+			log.error("You have misconfigured your application! It should not run with both Spring Profiles at the same time.");
+		}
+	}
+
+	public static void main(String[] args) {
+		SpringApplication.run(TsbApplication.class, args);
+	}
+
+}

+ 19 - 0
style24.batch/src/main/java/com/style24/batch/support/startup/TsbServletInitializer.java

@@ -0,0 +1,19 @@
+package com.style24.batch.support.startup;
+
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+/**
+ * ServletInitializer
+ * 
+ * @author gagamel
+ * @since 2020. 11. 16
+ */
+public class TsbServletInitializer extends SpringBootServletInitializer {
+
+	@Override
+	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+		return application.sources(TsbApplication.class);
+	}
+
+}

+ 80 - 0
style24.batch/src/main/java/com/style24/persistence/mybatis/shop/TsbMonitoring.xml

@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.style24.batch.biz.dao.TsbMonitoringDao">
+	
+	<!-- 알람SMS 생성 -->
+	<insert id="createAlarmSms" parameterType="Alarm">
+		/* TsbMonitoring.createAlarmSms */
+		INSERT INTO SSG_SEND_TRAN_SMS (
+		       FSEQ
+		     , FUSERID
+		     , FSECTIONCODE
+		     , FCAMPCODE
+		     , FMSGTYPE
+		     , FMESSAGE
+		     , FSENDDATE
+		     , FDESTINE
+		     , FCALLBACK
+		)
+		SELECT NULL          AS FSEQ
+		     , #{fuserid}    AS FUSERID
+		     , ''            AS FSECTIONCODE
+		     , ''            AS FCAMPCODE
+		     , '0'           AS FMSGTYPE
+		     , A.ALARM_MSG   AS FMESSAGE
+		     , NOW()         AS FSENDDATE
+		     , AR.CELL_PHNNO AS FDESTINE
+		     , #{fcallback}  AS FCALLBACK
+		FROM   TB_ALARM A
+		     , TB_ALARM_RECEIVER AR
+		WHERE  A.ALARM_ID = AR.ALARM_ID
+		AND    A.ALARM_ID = #{alarmId}
+		AND    A.USE_YN = 'Y'
+		AND    AR.USE_YN = 'Y'
+	</insert>
+	
+	<!-- 1일내 회원가입건수 조회 -->
+	<select id="getJoinCountWithinOneDay" parameterType="String" resultType="int">
+		/* TsbMonitoring.getJoinCountWithinOneDay */
+		SELECT COUNT(*) AS CNT
+		FROM   TB_CUSTOMER
+		WHERE  JOIN_DT <![CDATA[>=]]> DATE_ADD(NOW(), INTERVAL -1 DAY) /*1일내*/
+		AND    SITE_CD = #{siteCd}
+	</select>
+	
+	<!-- 1시간내 로그인건수 조회 -->
+	<select id="getLoginCountWithinOneHour" parameterType="String" resultType="int">
+		/* TsbMonitoring.getLoginCountWithinOneHour */
+		SELECT COUNT(*) AS CNT
+		FROM   TB_LOGIN_HST
+		WHERE  SITE_CD = #{siteCd}
+		AND    LOGIN_DT <![CDATA[>]]> DATE_ADD(NOW(), INTERVAL -1 HOUR) /*1시간내*/
+	</select>
+	
+	<!-- 1시간내 유입건수 조회 -->
+	<select id="getInthrowCountWithinOneHour" parameterType="String" resultType="int">
+		/* TsbMonitoring.getInthrowCountWithinOneHour */
+		SELECT COUNT(*) AS CNT
+		FROM   TB_INFLOW_HST
+		WHERE  INFLOW_DT <![CDATA[>]]> DATE_ADD(NOW(), INTERVAL -1 HOUR) /*1시간내*/
+		AND    SITE_CD = #{siteCd}
+	</select>
+	
+	<!-- 2시간내 결제건수 조회 -->
+	<select id="getPayCountWithinTwoHour" resultType="int">
+		/* TsbMonitoring.getPayCountWithinTwoHour */
+		SELECT COUNT(*) AS CNT
+		FROM   TB_PAYMENT
+		WHERE  PAY_DT <![CDATA[>]]> DATE_ADD(NOW(), INTERVAL -2 HOUR) /*2시간내*/
+		AND    PAY_STAT IN ('00','20','30') --결제대기, 결제성공, 결제완료
+	</select>
+	
+	<!-- 1일내 외부몰주문수집건수 조회 -->
+	<select id="getExtmallOrderCollectionCountWithinOneDay" resultType="int">
+		/* TsbMonitoring.getExtmallOrderCollectionCountWithinOneDay */
+		SELECT COUNT(*) AS CNT
+		FROM   TB_EXTMALL_ORDER_UPLOAD
+		WHERE  REG_DT <![CDATA[>=]]> DATE_ADD(NOW(), INTERVAL -1 DAY) /*1일내*/
+	</select>
+	
+</mapper>

+ 7 - 0
style24.batch/src/main/resources/banner.txt

@@ -0,0 +1,7 @@
+   _____________  ____    _________  __ __     ____        __       __  
+  / ___/_  __/\ \/ / /   / ____/__ \/ // /    / __ )____ _/ /______/ /_ 
+  \__ \ / /    \  / /   / __/  __/ / // /_   / __  / __ `/ __/ ___/ __ \
+ ___/ // /     / / /___/ /___ / __/__  __/  / /_/ / /_/ / /_/ /__/ / / /
+/____//_/     /_/_____/_____//____/ /_/    /_____/\__,_/\__/\___/_/ /_/ 
+                                                                        
+:: (v1.0.0.RELEASE by tsinfotech.co.kr 2020) ::

+ 17 - 0
style24.batch/src/main/resources/config/application-dev.yml

@@ -0,0 +1,17 @@
+spring:
+    profiles:
+        active: dev
+    cache:
+        type: redis
+    redis:
+        lettuce:
+            pool:
+                max-active: 10
+                max-idle: 10
+                min-idle: 2
+        host: localhost
+        port: 6379
+        password: 
+
+logging:
+    config: classpath:log/logback-dev.xml

+ 41 - 0
style24.batch/src/main/resources/config/application-locd.yml

@@ -0,0 +1,41 @@
+spring:
+    profiles:
+        active: locd
+    cache:
+        type: redis
+    redis:
+        lettuce:
+            pool:
+                max-active: 10
+                max-idle: 10
+                min-idle: 2
+        host: localhost
+        port: 6379
+        password: 
+
+logging:
+    config: classpath:log/logback-locd.xml
+
+upload:
+    goods:
+        target.path: /WIDE/workspace/files/data/style24
+        max.size: 10
+        allow.extension: jpg|gif|jpeg|png
+        view: //image.wivismall.com/speedy_image-wivismall/goods
+
+# PG
+pg:
+    kcp:
+        cancel.url: http://locd.admin.wivismall.com/pg/nice/cancel
+        escrow.url: http://locd.admin.wivismall.com/pg/nice/escrow
+        merchantId: nictest00m
+        merchantKey: 33F49GnCMS1mFYlGXisbUDzVf2ATWCl9k3R++d5hDd3Frmuos/XLx8XhXpe+LDYAbpGKZYSwtlyyLOtS/8aD7A==
+        log.path: /WIDE/workspace/logs/wivis
+        account.cert.url: https://webapi.nicepay.co.kr/api/checkBankAccountAPI.jsp
+
+# Schedule
+cron:
+    #모니터링
+    monitoring:
+        dayJob: 2 22 2 29 2 ?
+        hourJob: 2 22 2 29 2 ?

+ 18 - 0
style24.batch/src/main/resources/config/application-locp.yml

@@ -0,0 +1,18 @@
+spring:
+    profiles:
+        active: locp
+    cache:
+        type: redis
+    redis:
+        lettuce:
+            pool:
+                max-active: 10
+                max-idle: 10
+                min-idle: 2
+        host: localhost
+        port: 6379
+        password: 
+
+logging:
+    config: classpath:log/logback-locp.xml
+

+ 17 - 0
style24.batch/src/main/resources/config/application-run.yml

@@ -0,0 +1,17 @@
+spring:
+    profiles:
+        active: run
+    cache:
+        type: redis
+    redis:
+        lettuce:
+            pool:
+                max-active: 10
+                max-idle: 10
+                min-idle: 2
+        host: localhost
+        port: 6379
+        password: 
+
+logging:
+    config: classpath:log/logback-run.xml

+ 14 - 0
style24.batch/src/main/resources/config/application.yml

@@ -0,0 +1,14 @@
+spring:
+    messages:
+        cache-duration: -1
+        basename: classpath:i18n/messages/message
+        encoding: UTF-8
+    quartz:
+        scheduler-name: ecmsbScheduler
+# quartz.job-store-type을 별도 지정하지 않으면 memory 기반으로 동작하며 어플리케이션 재시작 시 데이터는 사라진다.
+#        job-store-type: jdbc
+#        jdbc.initialize-schema: never
+    batch:
+        job:
+            enabled: false
+            names: ${job.name:NONE}

+ 43 - 0
style24.batch/src/main/resources/log/logback-dev.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration scan="true">
+	<property name="LOG_HOME" value="/home/app/logs/batch"/>
+	<property name="LOG_LEVEL" value="INFO"/>
+	
+	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<charset>utf-8</charset>
+			<pattern>[%d] [%thread] %-5level %logger{32} : %msg%n</pattern>
+		</encoder>
+	</appender>
+	
+	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${LOG_HOME}/style24_batch.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${LOG_HOME}/style24_batch.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
+			<!-- keep 60 days' worth of history -->
+			<maxHistory>60</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<charset>utf-8</charset>
+			<pattern>[%d] %-5level %logger{32} : %msg%n</pattern>
+		</encoder>
+	</appender>
+
+	<logger name="org.springframework" level="ERROR"/>
+	
+	<!-- SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다. -->
+	<logger name="jdbc.sqltiming" level="INFO" additivity="false">
+		<appender-ref ref="CONSOLE"/>
+	</logger>
+	
+	<!-- <logger name="com.wivismall.batch.biz" level="${LOG_LEVEL}" additivity="false">
+		<appender-ref ref="FILE"/>
+	</logger> -->
+	
+	<root level="${LOG_LEVEL}">
+		<appender-ref ref="CONSOLE"/>
+		<appender-ref ref="FILE"/>
+	</root>
+
+</configuration>

+ 59 - 0
style24.batch/src/main/resources/log/logback-locd.xml

@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration scan="true">
+	<property name="LOG_HOME" value="/WIDE/workspace/logs/style24"/>
+	<property name="LOG_LEVEL" value="INFO"/>
+	
+	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<charset>utf-8</charset>
+			<pattern>[%d] [%thread] %-5level %logger{32} : %msg%n</pattern>
+		</encoder>
+	</appender>
+	
+	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${LOG_HOME}/style24_batch.log</file>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${LOG_HOME}/style24_batch.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
+			<!-- keep 60 days' worth of history -->
+			<maxHistory>60</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<charset>utf-8</charset>
+			<pattern>[%d] %-5level %logger{32} : %msg%n</pattern>
+		</encoder>
+	</appender>
+	
+	<logger name="org.springframework" level="ERROR"/>
+	
+	<!-- SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다. -->
+	<logger name="jdbc.sqlonly" level="${LOG_LEVEL}">
+		<appender-ref ref="CONSOLE"/>
+	</logger>
+	
+	<!-- SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다. -->
+	<logger name="jdbc.sqltiming" level="${LOG_LEVEL}">
+		<appender-ref ref="CONSOLE"/>
+	</logger>
+	
+	<!-- ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다. -->
+	<!-- 많은 양의 로그가 생성되므로 특별히 JDBC 문제를 추적해야 할 필요가 있는 경우를 제외하고는 사용을 권장하지 않는다. -->
+	<!-- <logger name="jdbc.audit" level="ERROR">
+		<appender-ref ref="CONSOLE"/>
+	</logger> -->
+	
+	<!-- ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남기므로 매우 방대한 양의 로그가 생성된다. -->
+	<!-- <logger name="jdbc.resultset" level="ERROR">
+		<appender-ref ref="CONSOLE"/>
+	</logger> -->
+	
+	<!-- <logger name="com.wivismall.batch.biz" level="${LOG_LEVEL}" additivity="false">
+		<appender-ref ref="FILE"/>
+	</logger> -->
+
+	<root level="${LOG_LEVEL}">
+		<appender-ref ref="CONSOLE"/>
+		<appender-ref ref="FILE"/>
+	</root>
+
+</configuration>

+ 59 - 0
style24.batch/src/main/resources/log/logback-locp.xml

@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration scan="true">
+	<property name="LOG_HOME" value="/WIDE/workspace/logs/style24"/>
+	<property name="LOG_LEVEL" value="INFO"/>
+	
+	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<charset>utf-8</charset>
+			<pattern>[%d] [%thread] %-5level %logger{32} : %msg%n</pattern>
+		</encoder>
+	</appender>
+	
+	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${LOG_HOME}/style24_batch.log</file>
+		<encoder>
+			<charset>utf-8</charset>
+			<pattern>[%d] [%thread] %-5level %logger{32} : %msg%n</pattern>
+		</encoder>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${LOG_HOME}/style24_batch.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
+			<!-- keep 60 days' worth of history -->
+			<maxHistory>60</maxHistory>
+		</rollingPolicy>
+	</appender>
+	
+	<logger name="org.springframework" level="ERROR"/>
+	
+	<!-- SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다. -->
+	<!-- <logger name="jdbc.sqlonly" level="${LOG_LEVEL}">
+		<appender-ref ref="CONSOLE"/>
+	</logger> -->
+	
+	<!-- SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다. -->
+	<!-- <logger name="jdbc.sqltiming" level="${LOG_LEVEL}">
+		<appender-ref ref="CONSOLE"/>
+	</logger> -->
+	
+	<!-- ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다. -->
+	<!-- 많은 양의 로그가 생성되므로 특별히 JDBC 문제를 추적해야 할 필요가 있는 경우를 제외하고는 사용을 권장하지 않는다. -->
+	<!-- <logger name="jdbc.audit" level="ERROR">
+		<appender-ref ref="CONSOLE"/>
+	</logger> -->
+	
+	<!-- ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남기므로 매우 방대한 양의 로그가 생성된다. -->
+	<!-- <logger name="jdbc.resultset" level="ERROR">
+		<appender-ref ref="CONSOLE"/>
+	</logger> -->
+	
+	<!-- <logger name="com.wivismall.batch.biz" level="${LOG_LEVEL}" additivity="false">
+		<appender-ref ref="FILE"/>
+	</logger> -->
+
+	<root level="${LOG_LEVEL}">
+		<appender-ref ref="CONSOLE"/>
+		<appender-ref ref="FILE"/>
+	</root>
+
+</configuration>

+ 43 - 0
style24.batch/src/main/resources/log/logback-run.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration scan="true">
+	<property name="LOG_HOME" value="/home/app/logs/batch"/>
+	<property name="LOG_LEVEL" value="INFO"/>
+	
+	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<charset>utf-8</charset>
+			<pattern>[%d] [%thread] %-5level %logger{32} : %msg%n</pattern>
+		</encoder>
+	</appender>
+	
+	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${LOG_HOME}/style24_batch.log</file>
+		<encoder>
+			<charset>utf-8</charset>
+			<pattern>[%d] [%thread] %-5level %logger{32} : %msg%n</pattern>
+		</encoder>
+		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>${LOG_HOME}/style24_batch.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
+			<!-- keep 30 days' worth of history -->
+			<maxHistory>30</maxHistory>
+		</rollingPolicy>
+	</appender>
+
+	<logger name="org.springframework" level="ERROR"/>
+	
+	<!-- SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다. -->
+	<logger name="jdbc.sqltiming" level="INFO" additivity="false">
+		<appender-ref ref="CONSOLE"/>
+	</logger>
+	
+	<!-- <logger name="com.wivismall.batch.biz" level="${LOG_LEVEL}" additivity="false">
+		<appender-ref ref="FILE"/>
+	</logger> -->
+	
+	<root level="${LOG_LEVEL}">
+		<appender-ref ref="CONSOLE"/>
+		<appender-ref ref="FILE"/>
+	</root>
+
+</configuration>

+ 23 - 0
style24.batch/src/main/resources/persistence/mybatis-shop-config.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "HTTP://mybatis.org/dtd/mybatis-3-config.dtd">
+
+<configuration>
+
+	<settings>
+		<setting name="cacheEnabled" value="false" /> <!-- 설정에서 각 매퍼에 설정된 캐시를 전역적으로 사용할지 말지에 대한 여부 (default true)-->
+		<!-- <setting name="lazyLoadingEnabled" value="true" /> --> <!-- 지연로딩을 사용할지에 대한 여부. 사용하지 않는다면 모두 즉시 로딩 (default true) -->
+		<!-- <setting name="multipleResultSetsEnabled" value="true" /> --> <!-- 한개의 구문에서 여러개의 ResultSet을 허용할지의 여부 (default true) -->
+		<setting name="useGeneratedKeys" value="true" /> <!-- 생성키를 강제로 생성 (default false) -->
+		<setting name="defaultExecutorType" value="REUSE" /> <!-- 디폴트 실행자(executor) 설정. PreparedStatement를 재사용 (default SIMPLE)-->
+		<setting name="defaultStatementTimeout" value="25" /> <!-- 데이터베이스로의 응답을 얼마나 오래 기다릴지를 판단하는 타임아웃(초)를 설정 -->
+		<setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 데이터베이스 칼럼명 형태인 A_COLUMN을 CamelCase 형태의 자바 프로퍼티명 형태인 aColumn으로 자동으로 매핑하도록 함 (default false) -->
+		<setting name="logImpl" value="NO_LOGGING" /> <!-- 마이바티스가 사용할 로깅 구현체를 명시. 이 설정을 사용하지 않으면 마이바티스가 사용할 로깅 구현체를 자동으로 찾는다. -->
+		<setting name="jdbcTypeForNull" value="NULL"/> <!-- JDBC 타입을 파라미터에 제공하지 않을 때 null 값을 처리한 JDBC 타입을 명시 -->
+		<setting name="callSettersOnNulls" value="true"/> <!-- 가져온 값이 null일때 setter나 맵의 put 메소드를 호출할지를 명시 (default false) -->
+	</settings>
+	
+	<typeAliases>
+		<typeAlias alias="paramMap" type="com.gagaframework.web.parameter.GagaMap" />
+	</typeAliases>
+
+</configuration>

BIN=BIN
style24.batch/src/main/webapp/WEB-INF/lib/gagaframework-web-core-1.7.1-RELEASE.jar


BIN=BIN
style24.batch/src/main/webapp/WEB-INF/lib/gagaframework-web-parameter-1.7-RELEASE.jar


BIN=BIN
style24.batch/src/main/webapp/WEB-INF/lib/gagaframework-web-rest-1.7-RELEASE.jar


BIN=BIN
style24.batch/src/main/webapp/WEB-INF/lib/gagaframework-web-util-1.7-RELEASE.jar