将业务参数存入库中并做了缓存,修改了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),