将业务参数存入库中并做了缓存,修改了paysdk的版本
diff --git a/build.gradle b/build.gradle
index 471af3a..a2789f4 100644
--- a/build.gradle
+++ b/build.gradle
@@ -92,7 +92,7 @@
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
     
-    compile 'com.supwisdom:payapi-sdk:e4bf762'
+    compile 'com.supwisdom:payapi-sdk:b5eceda'
     
 //    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
     testImplementation 'org.springframework.boot:spring-boot-starter-test'
diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index 37c08c2..03f3806 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -10,10 +10,9 @@
 spring.datasource.username=watermanager
 spring.datasource.password=123456
 # Redis settings
-redis.server=172.28.201.101
-redis.port=16379
-redis.password=kingstar
-redis.database=0
+spring.redis.host=172.28.201.101
+spring.redis.port=16379
+spring.redis.password=kingstar
 # jwt settings
 jwt.secret=Zj5taLomEbrM0lk+NMQZbHfSxaDU1wekjT+kiC3YzDw=
 # timeout seconds
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TBusinesspara.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TBusinesspara.java
index 4a697c6..e6dd9d4 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TBusinesspara.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TBusinesspara.java
@@ -4,11 +4,12 @@
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
-import javax.validation.constraints.NotNull;
+import java.io.Serializable;
 
 @Entity
 @Table(name = "TB_BUSINESSPARA")
-public class TBusinesspara {
+public class TBusinesspara implements Serializable {
+  private static final long serialVersionUID = 2100555481864398666L;
   @Id
   @Column(name="PARAKEY", nullable = false, length = 60)
   private String parakey;
diff --git a/src/main/java/com/supwisdom/dlpay/framework/service/BusinessparaService.java b/src/main/java/com/supwisdom/dlpay/framework/service/BusinessparaService.java
new file mode 100644
index 0000000..d53716f
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/service/BusinessparaService.java
@@ -0,0 +1,8 @@
+package com.supwisdom.dlpay.framework.service;
+
+import com.supwisdom.dlpay.framework.domain.TBusinesspara;
+
+public interface BusinessparaService {
+    TBusinesspara findByParakey(String paraKey);
+    TBusinesspara saveOrUpdatePara(TBusinesspara para);
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/service/impl/BusinessparaServiceImpl.java b/src/main/java/com/supwisdom/dlpay/framework/service/impl/BusinessparaServiceImpl.java
new file mode 100644
index 0000000..eba5c9c
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/service/impl/BusinessparaServiceImpl.java
@@ -0,0 +1,33 @@
+package com.supwisdom.dlpay.framework.service.impl;
+
+import com.supwisdom.dlpay.framework.dao.BusinessparaDao;
+import com.supwisdom.dlpay.framework.domain.TBusinesspara;
+import com.supwisdom.dlpay.framework.service.BusinessparaService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+
+@Service
+public class BusinessparaServiceImpl implements BusinessparaService {
+
+    @Autowired
+    private BusinessparaDao businessparaDao;
+
+    @Override
+    @Cacheable(cacheNames = "businesspara_cache", key = "#p0")
+    public TBusinesspara findByParakey(String paraKey) {
+        TBusinesspara tb = businessparaDao.findByParakey(paraKey);
+        if (null == tb) {
+            throw new RuntimeException("未找到业务参数" + paraKey + "对应的值");
+        }
+        return tb;
+    }
+
+    @Override
+    @CacheEvict(cacheNames = "businesspara_cache", key = "#para.parakey")
+    public TBusinesspara saveOrUpdatePara(TBusinesspara para) {
+        return businessparaDao.save(para);
+    }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/ShortURLUtil.java b/src/main/java/com/supwisdom/dlpay/framework/util/ShortURLUtil.java
index 0081395..f4ed735 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/util/ShortURLUtil.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/ShortURLUtil.java
@@ -1,6 +1,9 @@
 package com.supwisdom.dlpay.framework.util;
 
+import com.supwisdom.dlpay.framework.service.BusinessparaService;
 import net.sf.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
@@ -8,14 +11,17 @@
 import java.net.URL;
 import java.net.URLEncoder;
 
+@Component
 public class ShortURLUtil {
 
-    public static String doGetSinaShortUrl(String longUrl) {
+    @Autowired
+    private BusinessparaService businessparaService;
+
+    public String doGetSinaShortUrl(String longUrl) {
         String result = "";
         BufferedReader in = null;
         try {
-            //http://www.mynb8.com/api/sina?appkey=APPKEY&sign=SIGN&long_url=LONG_URL
-            String address = "http://api.t.sina.com.cn/short_url/shorten.json?source=2223392143";
+            String address = businessparaService.findByParakey(WaterBudinessConstants.waterSinaShortUrl).getParaval();
             address += "&url_long=" + URLEncoder.encode(longUrl, "UTF-8");
             URL url = new URL(address);
             HttpURLConnection conn = (HttpURLConnection) url.openConnection();
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/WaterBudinessConstants.java b/src/main/java/com/supwisdom/dlpay/framework/util/WaterBudinessConstants.java
new file mode 100644
index 0000000..1f24d3d
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/WaterBudinessConstants.java
@@ -0,0 +1,7 @@
+package com.supwisdom.dlpay.framework.util;
+
+public class WaterBudinessConstants {
+    public final static String waterAuthUrl = "water_auth_url";
+    public final static String waterSinaShortUrl = "water_sina_shorturl";
+    public final static String waterDeviceStatus = "device_status";
+}
diff --git a/src/main/java/com/supwisdom/dlpay/water/init/PayInit.java b/src/main/java/com/supwisdom/dlpay/water/init/PayInit.java
new file mode 100644
index 0000000..1389880
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/water/init/PayInit.java
@@ -0,0 +1,28 @@
+package com.supwisdom.dlpay.water.init;
+
+import com.supwisdom.dlpay.paysdk.ApiLoginHelper;
+import com.supwisdom.dlpay.paysdk.proxy.ApiLoginProxy;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Component
+@EnableFeignClients(basePackages = "com.supwisdom.dlpay.paysdk")
+@ComponentScan(basePackages = {"com.supwisdom.dlpay.paysdk"})
+public class PayInit {
+
+    private final static String appid = "700001";
+    private final static String secret = "5f788ce433ec44f299351cdf7f137e81";
+
+    @Autowired
+    private ApiLoginProxy apiLoginProxy;
+
+//    @PostConstruct
+//    public void login() {
+//        ApiLoginHelper helper = new ApiLoginHelper(apiLoginProxy);
+//        helper.login(appid,secret);
+//    }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java b/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java
index 4e34676..5df271b 100644
--- a/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java
@@ -4,6 +4,7 @@
 import com.supwisdom.dlpay.framework.domain.TDictionary;
 import com.supwisdom.dlpay.framework.util.PageResult;
 import com.supwisdom.dlpay.framework.util.StringUtil;
+import com.supwisdom.dlpay.framework.util.WaterBudinessConstants;
 import com.supwisdom.dlpay.framework.util.WaterDeviceParam;
 import com.supwisdom.dlpay.water.DeviceLineCheckParam;
 import com.supwisdom.dlpay.water.DeviceLoginParam;
@@ -163,7 +164,7 @@
 
     @Override
     public List<TDictionary> groupStatus() {
-        return dictionaryDao.findAllByDicttype("device_status");
+        return dictionaryDao.findAllByDicttype(WaterBudinessConstants.waterDeviceStatus);
     }
 
     @Override
diff --git a/src/main/kotlin/com/supwisdom/dlpay/WaterManagerApplication.kt b/src/main/kotlin/com/supwisdom/dlpay/WaterManagerApplication.kt
index 73c71d8..a182b93 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/WaterManagerApplication.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/WaterManagerApplication.kt
@@ -1,9 +1,13 @@
 package com.supwisdom.dlpay
 
 import io.lettuce.core.ReadFrom
+import org.bouncycastle.crypto.tls.ConnectionEnd.server
+import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.beans.factory.annotation.Value
 import org.springframework.boot.autoconfigure.SpringBootApplication
+import org.springframework.boot.autoconfigure.data.redis.RedisProperties
 import org.springframework.boot.runApplication
+import org.springframework.cache.annotation.EnableCaching
 import org.springframework.context.annotation.Bean
 import org.springframework.context.annotation.Configuration
 import org.springframework.data.redis.connection.RedisConnectionFactory
@@ -22,28 +26,19 @@
 @EnableRedisRepositories
 class AppConfig {
 
-    @Value("\${redis.server}")
-    lateinit var server: String
-
-    @Value("\${redis.port}")
-    var port: Int = 0
-
-    @Value("\${redis.database}")
-    var database: Int = 0
-
-    @Value("\${redis.password}")
-    lateinit var password: String
+    @Autowired
+    private lateinit var redisProperties: RedisProperties
 
     @Bean
     fun redisConnectionFactory(): RedisConnectionFactory {
         val clientConfig = LettuceClientConfiguration.builder()
                 .readFrom(ReadFrom.SLAVE_PREFERRED)
                 .build()
-        val serverConfig = RedisStandaloneConfiguration(server, port)
-        if (password.isNotEmpty()) {
-            serverConfig.password = RedisPassword.of(password)
+        val serverConfig = RedisStandaloneConfiguration(redisProperties.host, redisProperties.port)
+        if (redisProperties.password.isNotEmpty()) {
+            serverConfig.password = RedisPassword.of(redisProperties.password)
         }
-        serverConfig.database = database
+        serverConfig.database = redisProperties.database
 
         return LettuceConnectionFactory(serverConfig, clientConfig)
     }
@@ -67,6 +62,7 @@
 
 @SpringBootApplication
 @EnableScheduling
+@EnableCaching
 class WaterManagerApplication
 
 fun main(args: Array<String>) {
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
index 364cc95..55772db 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
@@ -2,11 +2,9 @@
 
 import com.supwisdom.dlpay.framework.ResponseBodyBuilder
 import com.supwisdom.dlpay.framework.dao.BusinessparaDao
+import com.supwisdom.dlpay.framework.service.BusinessparaService
 import com.supwisdom.dlpay.framework.service.SystemUtilService
-import com.supwisdom.dlpay.framework.util.ShortURLUtil
-import com.supwisdom.dlpay.framework.util.TradeDict
-import com.supwisdom.dlpay.framework.util.WaterDeviceParam
-import com.supwisdom.dlpay.framework.util.WaterErrorCode
+import com.supwisdom.dlpay.framework.util.*
 import com.supwisdom.dlpay.system.service.UserDataService
 import com.supwisdom.dlpay.water.*
 import com.supwisdom.dlpay.water.domain.TTransdtl
@@ -35,7 +33,10 @@
     private lateinit var transdtlService: TransdtlService
 
     @Autowired
-    private lateinit var businessparaDao: BusinessparaDao
+    private lateinit var shortURLUtil: ShortURLUtil
+
+    @Autowired
+    private lateinit var businessparaService: BusinessparaService
 
     @PostMapping("/devicelogin")
     fun deviceLogin(param: DeviceLoginParam): ResponseEntity<Any> {
@@ -71,7 +72,7 @@
                     .success())
         } catch (ex: Exception) {
             return ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .exception(WaterErrorCode.PROCESS_ERROR, ex, "系统出错"))
+                    .exception(WaterErrorCode.PROCESS_ERROR, ex, ex.message))
         }
     }
 
@@ -138,8 +139,8 @@
             val savedTrans = transdtlService.createNewTransdtl(trans)
             //2.将流水号及认证地址返回给终端
             //将认证url转为短码
-            val url = ShortURLUtil.doGetSinaShortUrl(
-                    businessparaDao.findByParakey("water_auth_url").paraval + savedTrans.billno)
+            val url = shortURLUtil.doGetSinaShortUrl(
+                    businessparaService.findByParakey(WaterBudinessConstants.waterAuthUrl).paraval + savedTrans.billno)
             return ResponseEntity.ok(ResponseBodyBuilder.create()
                     .data(WaterDeviceParam.billNo, savedTrans.billno)
                     .data(WaterDeviceParam.url, url)
@@ -153,19 +154,28 @@
 
     @PostMapping("/qrcode/query")
     fun qrcodeQuery(param: QrcodeQueryRequest): ResponseEntity<Any> {
-        val deviceParam = deviceService.getParaMapByDeviceno(param.deviceno)
-        val trans = transdtlService.queryTrans(param)
-        return ResponseEntity.ok(ResponseBodyBuilder.create()
-                .data(WaterDeviceParam.billNo, trans.billno)
-                .data(WaterDeviceParam.authStatus, trans.authStatus)
-                //2为代扣模式
-                .data(WaterDeviceParam.payStatus, 2)
-                .data(WaterDeviceParam.feeAmount, deviceParam[WaterDeviceParam.feeAmount]!!)
-                .data(WaterDeviceParam.feestart, deviceParam[WaterDeviceParam.feestart]!!)
-                .data(WaterDeviceParam.feeUnit, deviceParam[WaterDeviceParam.feeUnit]!!)
-                //  如果订单为已支付状态,支付金额多少
-                .data(WaterDeviceParam.paidAmount, 0)
-                .success())
+        try {
+            val deviceParam = deviceService.getParaMapByDeviceno(param.deviceno)
+            val trans = transdtlService.queryTrans(param)
+            var authStatus = 0
+            if (trans.authStatus) {
+                authStatus = 1
+            }
+            return ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .data(WaterDeviceParam.billNo, trans.billno)
+                    .data(WaterDeviceParam.authStatus, authStatus)
+                    //2为代扣模式
+                    .data(WaterDeviceParam.payStatus, 2)
+                    .data(WaterDeviceParam.feeAmount, deviceParam[WaterDeviceParam.feeAmount]!!)
+                    .data(WaterDeviceParam.feestart, deviceParam[WaterDeviceParam.feestart]!!)
+                    .data(WaterDeviceParam.feeUnit, deviceParam[WaterDeviceParam.feeUnit]!!)
+                    //  如果订单为已支付状态,支付金额多少
+                    .data(WaterDeviceParam.paidAmount, 0)
+                    .success())
+        } catch (ex: Exception) {
+            return ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .exception(WaterErrorCode.PROCESS_ERROR, ex, ex.message))
+        }
     }
 
     @GetMapping("/confirm")
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 4efcdb1..992c6c6 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -8,6 +8,7 @@
 # logging
 logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
 logging.level.org.hibernate.SQL=debug
+spring.redis.database=1
 #################### JSP PAGE ####################
 #spring.mvc.view.prefix=/pages/
 #spring.mvc.view.suffix=.jsp
@@ -24,3 +25,4 @@
 ################################################
 # user password
 auth.password.bcrypt.length=10
+payapi.url=http://localhost:9000/payapi
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index aa3d4e9..79bc39c 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -112,6 +112,8 @@
 INSERT INTO "tb_person_identity"("third_uid", "createtime", "lockflag", "lossflag", "status", "userid", "cardphyid") VALUES ('000000000000000000000000', NULL, 0, 0, '1', 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '6655ec27');
 INSERT INTO "tb_person"("userid", "addr", "country", "email", "idno", "idtype", "lastsaved", "mobile", "name", "nation", "sex", "status", "tel", "zipcode") VALUES ('d1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '王富贵', NULL, NULL, '1', NULL, NULL);
 INSERT INTO "tb_businesspara"("parakey", "paraval") VALUES ('water_auth_url', 'http://172.28.43.20:8080/water/api/device/confirm?billno=');
+INSERT INTO "tb_businesspara"("parakey", "paraval") VALUES ('water_sina_shorturl', 'http://api.t.sina.com.cn/short_url/shorten.json?source=2223392143');
+
 
 INSERT INTO "tb_dictionary"("dictval", "dicttype", "dictcaption", "dicttypename") VALUES ('正常', 'device_status', 'normal', '设备状态');
 INSERT INTO "tb_dictionary"("dictval", "dicttype", "dictcaption", "dicttypename") VALUES ('注销', 'device_status', 'closed', '设备状态');
diff --git a/src/main/resources/templates/system/confirm/confirm.html b/src/main/resources/templates/system/confirm/confirm.html
index 5b0452a..6562948 100644
--- a/src/main/resources/templates/system/confirm/confirm.html
+++ b/src/main/resources/templates/system/confirm/confirm.html
@@ -31,7 +31,7 @@
     }
     $("#button-auth").click(function () {
         $.ajax({
-            url: "[[@{/api/auth}]]",
+            url: "[[@{/api/device/auth}]]",
             type:"POST",
             contentType:"application/json;charset=UTF-8",
             data:JSON.stringify(allData),