增加docker镜像
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..06f93da
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,10 @@
+FROM openjdk:8
+
+COPY backend/build/libs/portal-1.0.jar /opt/portal/portal.jar
+COPY frontend/dist /opt/portal/dist/
+
+EXPOSE 8080
+
+WORKDIR /opt/portal
+
+CMD ["java" , "-jar", "portal.jar"]
\ No newline at end of file
diff --git a/backend/build.gradle b/backend/build.gradle
index d9047cc..dd3c0ca 100644
--- a/backend/build.gradle
+++ b/backend/build.gradle
@@ -5,10 +5,20 @@
     id 'org.jetbrains.kotlin.plugin.spring'
     id 'org.jetbrains.kotlin.plugin.jpa' version '1.3.31'
     id 'io.spring.dependency-management'
+    id 'com.palantir.docker' version '0.22.1'
 }
 
+docker {
+    name 'harbor.supwisdom.com/dali/portal:' + version
+    println(jar.archivePath)
+    files jar.archivePath
+}
+
+docker.dependsOn(jar)
+
+archivesBaseName = 'portal'
 group 'com.supwisdom.dlpay'
-version '1.0-SNAPSHOT'
+version '1.0'
 
 sourceCompatibility = 1.8
 
diff --git a/backend/src/main/java/com/supwisdom/dlpay/framework/jpa/Finder.java b/backend/src/main/java/com/supwisdom/dlpay/framework/jpa/Finder.java
index a344ce8..c6dfcc5 100644
--- a/backend/src/main/java/com/supwisdom/dlpay/framework/jpa/Finder.java
+++ b/backend/src/main/java/com/supwisdom/dlpay/framework/jpa/Finder.java
@@ -278,10 +278,10 @@
 	public static final String ORDER_BY = "order by";
 	public static final String GROUP_BY = "group by";
 
-	public static void main(String[] args) {
-		Finder find = Finder
-				.create("select distinct p FROM BookType join fetch p");
-		System.out.println(find.getRowCountHql());
-		System.out.println(find.getOrigHql());
-	}
+//	public static void main(String[] args) {
+//		Finder find = Finder
+//				.create("select distinct p FROM BookType join fetch p");
+//		System.out.println(find.getRowCountHql());
+//		System.out.println(find.getOrigHql());
+//	}
 }
\ No newline at end of file
diff --git a/backend/src/main/java/com/supwisdom/dlpay/portal/util/SecurityConfig.java b/backend/src/main/java/com/supwisdom/dlpay/portal/util/SecurityConfig.java
new file mode 100644
index 0000000..3229dd0
--- /dev/null
+++ b/backend/src/main/java/com/supwisdom/dlpay/portal/util/SecurityConfig.java
@@ -0,0 +1,21 @@
+package com.supwisdom.dlpay.portal.util;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class SecurityConfig implements WebMvcConfigurer  {
+
+  @Bean
+  public WebMvcConfigurer forwordToIndex() {
+    return new WebMvcConfigurer() {
+      @Override
+      public void addViewControllers(ViewControllerRegistry registry) {
+        registry.addViewController("/pages").setViewName("forward:/pages/index.html");
+        registry.addViewController("/pages/").setViewName("forward:/pages/index.html");
+      }
+    };
+  }
+}
diff --git a/backend/src/main/java/com/supwisdom/dlpay/util/RSAKeysGenerate.java b/backend/src/main/java/com/supwisdom/dlpay/util/RSAKeysGenerate.java
index 82d2b82..f040c44 100644
--- a/backend/src/main/java/com/supwisdom/dlpay/util/RSAKeysGenerate.java
+++ b/backend/src/main/java/com/supwisdom/dlpay/util/RSAKeysGenerate.java
@@ -33,18 +33,18 @@
   private static final int MAX_DECRYPT_BLOCK = 128;
   /** 默认的安全服务提供者 */
   private static final Provider DEFAULT_PROVIDER = new BouncyCastleProvider();
-  public static void main(String[] args) {
-    Map<String, Object> keyMap;
-    try {
-      keyMap = initKey();
-      String publicKey = getPublicKey(keyMap);
-      System.out.println(publicKey);
-      String privateKey = getPrivateKey(keyMap);
-      System.out.println(privateKey);
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-  }
+//  public static void main(String[] args) {
+//    Map<String, Object> keyMap;
+//    try {
+//      keyMap = initKey();
+//      String publicKey = getPublicKey(keyMap);
+//      System.out.println(publicKey);
+//      String privateKey = getPrivateKey(keyMap);
+//      System.out.println(privateKey);
+//    } catch (Exception e) {
+//      e.printStackTrace();
+//    }
+//  }
 
   public static String getPublicKey(Map<String, Object> keyMap) throws Exception {
     Key key = (Key) keyMap.get(PUBLIC_KEY);
diff --git a/backend/src/main/java/com/supwisdom/dlpay/util/TOTP.java b/backend/src/main/java/com/supwisdom/dlpay/util/TOTP.java
index bcab4d3..ea4bbcc 100644
--- a/backend/src/main/java/com/supwisdom/dlpay/util/TOTP.java
+++ b/backend/src/main/java/com/supwisdom/dlpay/util/TOTP.java
@@ -182,20 +182,20 @@
 		return result;
 	}
 
-	public static void main(String[] args) {
-		long X = 30;
-		long T0 = 0;
-		String steps = "0";
-		long time = System.currentTimeMillis() / 1000;
-		System.out.println(time);
-		long T = (time - T0) / X;
-		steps = Long.toHexString(T).toUpperCase();
-		while (steps.length() < 16) {
-			steps = "0" + steps;
-		}
-		String seed = "9e8bb3d2df73741c041aef39e37ee015fc98233720a1350fcd67d5c3027896ac";
-		String totp = TOTP.generateTOTP(seed, steps, "8", "HmacSHA256");
-		System.out.println(totp);
+//	public static void main(String[] args) {
+//		long X = 30;
+//		long T0 = 0;
+//		String steps = "0";
+//		long time = System.currentTimeMillis() / 1000;
+//		System.out.println(time);
+//		long T = (time - T0) / X;
+//		steps = Long.toHexString(T).toUpperCase();
+//		while (steps.length() < 16) {
+//			steps = "0" + steps;
+//		}
+//		String seed = "9e8bb3d2df73741c041aef39e37ee015fc98233720a1350fcd67d5c3027896ac";
+//		String totp = TOTP.generateTOTP(seed, steps, "8", "HmacSHA256");
+//		System.out.println(totp);
 
 		/*
 
@@ -260,5 +260,5 @@
 		}
 
 		*/
-	}
+//	}
 }
\ No newline at end of file
diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties
index ffe72fb..d757f8f 100644
--- a/backend/src/main/resources/application.properties
+++ b/backend/src/main/resources/application.properties
@@ -7,7 +7,6 @@
 spring.jpa.show-sql=true
 spring.datasource.hikari.connection-timeout=60000
 spring.datasource.hikari.maximum-pool-size=5
-spring.jpa.hibernate.ddl-auto=update
 # logging
 logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
 logging.level.org.hibernate.SQL=debug
@@ -15,10 +14,9 @@
 #spring.mvc.view.prefix=/pages/
 #spring.mvc.view.suffix=.jsp
 server.servlet.context-path=/portal
-server.port=8089
 #################### thymeleaf ####################
-spring.mvc.static-path-pattern=/static/**
-spring.thymeleaf.prefix=classpath:/templates/
+spring.mvc.static-path-pattern=/pages/**
+spring.resources.static-locations=file:/opt/portal/dist/
 spring.thymeleaf.suffix=.html
 spring.thymeleaf.encoding=UTF-8
 spring.thymeleaf.mode=HTML5
@@ -31,7 +29,6 @@
 server.tomcat.uri-encoding=UTF-8
 ##################################################
 ## quartz task scheduler
-shopbalance.updater.cron=*/10 * * * * ?
 dayend.settletask.cron=0 3/30 2-3 * * ?
 query.third.transdtl.result.cron=7 0/1 * * * ?
 payapi.sourcetype.checker.scheduler=7 3/10 * * * ?
@@ -41,5 +38,4 @@
 # user password
 auth.password.bcrypt.length=10
 ###################################################
-spring.redis.database=0
 multi-tenant.datasource.base-package=com.supwisdom.dlpay
\ No newline at end of file
diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index 53d2f04..664084c 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -17,6 +17,8 @@
 spring.redis.port=6379
 spring.redis.password=
 spring.redis.database=2
+#port
+server.port=8089
 # jwt settings
 jwt.secret=Zj5taLomEbrM0lk+NMQZbHfSxaDU1wekjT+kiC3YzDw=
 # timeout seconds
diff --git a/frontend/.env.production b/frontend/.env.production
index 80c8103..144e79a 100644
--- a/frontend/.env.production
+++ b/frontend/.env.production
@@ -2,5 +2,5 @@
 ENV = 'production'
 
 # base api
-VUE_APP_BASE_API = '/prod-api'
+VUE_APP_BASE_API = '/portal/portalapi'
 
diff --git a/frontend/vue.config.js b/frontend/vue.config.js
index dfe2483..19b8cb8 100644
--- a/frontend/vue.config.js
+++ b/frontend/vue.config.js
@@ -14,7 +14,12 @@
 // You can change the port by the following method:
 // port = 9527 npm run dev OR npm run dev --port = 9527
 const port = process.env.port || process.env.npm_config_port || 9527 // dev port
-
+var publicPath = 'portal'
+if (process.env.NODE_ENV === 'development') {
+  publicPath = '/portal'
+} else if (process.env.NODE_ENV === 'production') {
+  publicPath = '/portal/pages'
+}
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {
   /**
@@ -24,7 +29,7 @@
    * In most cases please use '/' !!!
    * Detail: https://cli.vuejs.org/config/#publicpath
    */
-  publicPath: '/portal',
+  publicPath: publicPath,
   outputDir: 'dist',
   assetsDir: 'static',
   lintOnSave: process.env.NODE_ENV === 'development',