修改了psm上的bug
diff --git a/src/main/java/com/supwisdom/dlpay/framework/filter/ValidateCodeFilter.java b/src/main/java/com/supwisdom/dlpay/framework/filter/ValidateCodeFilter.java
index 77242b9..491a2e0 100755
--- a/src/main/java/com/supwisdom/dlpay/framework/filter/ValidateCodeFilter.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/filter/ValidateCodeFilter.java
@@ -43,16 +43,28 @@
 	protected void doFilterInternal(HttpServletRequest request,

 																	HttpServletResponse response, FilterChain filterChain)

 			throws ServletException, IOException {

-		if (StringUtil.equals("/login/form", request.getRequestURI())

+		String context = request.getContextPath();

+		if (context == null || "" == context.trim()) {

+			context = "/";

+		}

+		if (request.getRequestURI().isEmpty()) {

+			filterChain.doFilter(request, response);

+			return;

+		}

+		String url = request.getRequestURI();

+		if (!"/".equals(context)) {

+			url = url.replace(context, "");

+		}

+		if (StringUtil.equals("/login/form", url)

 				&& StringUtil.equalsIgnoreCase(request.getMethod(), "post")) {

 			try {

 				validate(request);

 			} catch (ValidateCodeException e) {

-				response.setStatus(HttpStatus.OK.value());

-				response.setContentType("application/json;charset=UTF-8");

-				response.getWriter().write(objectMapper.writeValueAsString(JsonResult.error(400, e.getMessage())));

+				//response.setStatus(HttpStatus.OK.value());

+				//response.setContentType("application/json;charset=UTF-8");

+				//response.getWriter().write(objectMapper.writeValueAsString(JsonResult.error(400, e.getMessage())));

 				//response.sendError(HttpStatus.UNAUTHORIZED.value(),e.getMessage());

-				//myAuthenticationFailureHandler.onAuthenticationFailure(request, response, e);

+				myAuthenticationFailureHandler.onAuthenticationFailure(request, response, e);

 				return;

 			}

 		}

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 ad25aee..0081395 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/util/ShortURLUtil.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/ShortURLUtil.java
@@ -11,15 +11,10 @@
 public class ShortURLUtil {
 
     public static String doGetSinaShortUrl(String longUrl) {
-        String shortUrlService = "http://www.mynb8.com/api/sina"; //新浪服务网址
-        String sinaAppkey = "2223392143"; //注册申请
         String result = "";
         BufferedReader in = null;
         try {
-            String encLongUrl = URLEncoder.encode(longUrl, "UTF-8");
-            String sign = MD5.encodeByMD5(sinaAppkey.trim() + MD5.encodeByMD5(encLongUrl).toLowerCase()).toLowerCase(); //md5(appkey+md5(long_url)) 小写
             //http://www.mynb8.com/api/sina?appkey=APPKEY&sign=SIGN&long_url=LONG_URL
-            String serviceUrl = shortUrlService + "?appkey=" + sinaAppkey + "&sign=" + sign + "&long_url=" + encLongUrl;
             String address = "http://api.t.sina.com.cn/short_url/shorten.json?source=2223392143";
             address += "&url_long=" + URLEncoder.encode(longUrl, "UTF-8");
             URL url = new URL(address);
@@ -36,7 +31,6 @@
             JSONObject json = JSONObject.fromObject(result);
             if (json.getInt("type") != 0) {
 //                logger.error("[" + longUrl + "]短地址生成错误:" + json.getString("rs_msg"));
-                System.out.println("短地址生成错误");
                 return null;
             }
             return json.getString("url_short");
diff --git a/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtl.java b/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtl.java
index bff8cb7..cf68fd4 100644
--- a/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtl.java
@@ -26,7 +26,6 @@
   private String deviceno;
 
   @Column(length = 32)
-  @NotNull
   private String userid;
 
   @Column(name = "bankcardno", length = 32)
@@ -52,7 +51,7 @@
   @Column(name = "accdate", length = 8)
   private String accdate;
 
-  @Column(name = "billno", length = 32)
+  @Column(name = "refno", length = 32)
   private String refno;
 
   @Column(name = "accstatus", length = 10)
diff --git a/src/main/java/com/supwisdom/dlpay/water/service/DeviceService.java b/src/main/java/com/supwisdom/dlpay/water/service/DeviceService.java
index 854ba68..4e87205 100644
--- a/src/main/java/com/supwisdom/dlpay/water/service/DeviceService.java
+++ b/src/main/java/com/supwisdom/dlpay/water/service/DeviceService.java
@@ -36,7 +36,7 @@
     @Transactional
     Map<String,Object> deviceLogin(DeviceLoginParam param);
     @Transactional
-    boolean lineCheck(DeviceLineCheckParam param);
+    TDevice lineCheck(DeviceLineCheckParam param);
     @Transactional
     TFeeConfig queryTFeeConfigByDeviceno(String deviceno);
 }
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 276dab0..6334cce 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
@@ -187,6 +187,11 @@
         Map<String, Object> result = new HashMap<>();
         TDevice device = deviceDao.findByDeviceno(param.getDeviceno());
         if (device != null) {
+            if (device.getDeviceStatus().equals("closed")) {
+                result.put("flag", false);
+                result.put("errorMsg", "本设备已注销,签到失败");
+                return result;
+            }
             device.setSoftVer(param.getHwVer());
             deviceDao.save(device);
             result.put("flag", true);
@@ -195,19 +200,20 @@
             return result;
         }
         result.put("flag", false);
+        result.put("errorMsg", "没有编号为" + param.getDeviceno() + "的设备");
         return result;
     }
 
     @Override
-    public boolean lineCheck(DeviceLineCheckParam param) {
+    public TDevice lineCheck(DeviceLineCheckParam param) {
         TDevice device = deviceDao.findByDeviceno(param.getDeviceno());
         if (device != null) {
             String deviceLineCheck = param.getTermdate() + param.getTermtime();
             device.setDeviceLineCheck(deviceLineCheck);
             deviceDao.save(device);
-            return true;
+            return device;
         }
-        return false;
+        return null;
     }
 
     @Override
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt b/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt
index ec0f698..8acd715 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt
@@ -141,7 +141,7 @@
     var transtime: String = ""
 
     @Sign
-    var refno: String = ""
+    var billno: String = ""
 
     @Sign
     var amount: Int = 0
@@ -168,13 +168,13 @@
 class UserAuthRequest : APIRequestParam() {
 
     @Sign
-    var refno: String = ""
+    var billno: String = ""
 
     @Sign
     var userid: String = ""
 
     override fun checkParam(): Boolean {
-        if (refno.length != 20 || refno.any { it !in '0'..'9' }) {
+        if (billno.length != 20 || billno.any { it !in '0'..'9' }) {
             throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "流水号长度不符")
         }
         return true
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 714586f..21ff75a 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
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.water.controller
 
 import com.supwisdom.dlpay.framework.ResponseBodyBuilder
+import com.supwisdom.dlpay.framework.dao.BusinessparaDao
 import com.supwisdom.dlpay.framework.service.SystemUtilService
 import com.supwisdom.dlpay.framework.util.ShortURLUtil
 import com.supwisdom.dlpay.framework.util.TradeDict
@@ -32,6 +33,9 @@
     @Autowired
     private lateinit var transdtlService: TransdtlService
 
+    @Autowired
+    private lateinit var businessparaDao: BusinessparaDao
+
     @GetMapping("/devicelogin")
     fun deviceLogin(@RequestBody param: DeviceLoginParam): ResponseEntity<Any> {
         try {
@@ -44,7 +48,7 @@
                         .success())
             }
             return ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "没有编号为" + param.deviceno + "的设备"))
+                    .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, result["errorMsg"].toString()))
         } catch (ex: Exception) {
             return ResponseEntity.ok(ResponseBodyBuilder.create()
                     .exception(WaterErrorCode.PROCESS_ERROR, ex, "系统出错"))
@@ -55,14 +59,14 @@
     @RequestMapping("/linecheck", method = [RequestMethod.GET, RequestMethod.POST])
     fun deviceLineCheck(@RequestBody param: DeviceLineCheckParam): ResponseEntity<Any> {
         try {
-            if (deviceService.lineCheck(param)) {
-                return ResponseEntity.ok(ResponseBodyBuilder.create()
-                        .data("sysdate", systemUtilService.sysdatetime.hostdate)
-                        .data("systemTime", systemUtilService.sysdatetime.hosttime)
-                        .success())
-            }
+            val device = deviceService.lineCheck(param)
+                    ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
+                            .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "没有编号为${param.deviceno}的设备"))
             return ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "没有编号为${param.deviceno}的设备"))
+                    .data("sysdate", systemUtilService.sysdatetime.hostdate)
+                    .data("systime", systemUtilService.sysdatetime.hosttime)
+                    .data("status", device.deviceStatus)
+                    .success())
         } catch (ex: Exception) {
             return ResponseEntity.ok(ResponseBodyBuilder.create()
                     .exception(WaterErrorCode.PROCESS_ERROR, ex, "系统出错"))
@@ -127,7 +131,7 @@
             //2.将流水号及认证地址返回给终端
             //将认证url转为短码
             val url = ShortURLUtil.doGetSinaShortUrl(
-                    "http://172.28.43.20:8080/water/api/confirm?billno=" + savedTrans.billno)
+                    businessparaDao.findByParakey("water_auth_url").paraval + savedTrans.billno)
             return ResponseEntity.ok(ResponseBodyBuilder.create()
                     .data("billno", savedTrans.billno)
                     .data("url", url)
@@ -141,13 +145,10 @@
 
     @GetMapping("/qrcode/query")
     fun qrcodeQuery(@RequestBody param: QrcodeQueryRequest): ResponseEntity<Any> {
-        try {
             val feeConfig = deviceService.queryTFeeConfigByDeviceno(param.deviceno)
                     ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
                             .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "未查询到该设备的费率信息"))
             val trans = transdtlService.queryTrans(param)
-                    ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
-                            .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "未查询到该流水号"))
             return ResponseEntity.ok(ResponseBodyBuilder.create()
                     .data("billno", trans.billno)
                     .data("authstatus", trans.authStatus)
@@ -156,10 +157,6 @@
                     .data("feeunit", 0)
                     .data("paidAmount", 0)
                     .success())
-        } catch (ex: Exception) {
-            return ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .exception(WaterErrorCode.PROCESS_ERROR, ex, "系统出错"))
-        }
     }
 
     @GetMapping("/confirm")
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/service/transdtl_service.kt b/src/main/kotlin/com/supwisdom/dlpay/water/service/transdtl_service.kt
index e0645b4..240f03e 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/service/transdtl_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/service/transdtl_service.kt
@@ -22,7 +22,7 @@
     }
 
     override fun saveDeviceDtlData(record: UploadRecordRequest): TTransdtl {
-        val dtl = transdtlDao.findByBillnoForUpdate(record.refno)
+        val dtl = transdtlDao.findByBillnoForUpdate(record.billno)
                 ?: throw TransactionProcessException(WaterErrorCode.DATA_NOTFOUND_ERROR,
                         "交易订单号不存在")
         if (record.transtatus == "2") {
@@ -40,10 +40,12 @@
 
     override fun queryTrans(param: QrcodeQueryRequest): TTransdtl {
         return transdtlDao.findByBillnoAndDeviceno(param.billno, param.deviceno)
+            ?: throw TransactionProcessException(WaterErrorCode.DATA_NOTFOUND_ERROR,
+                    "交易订单号不存在")
     }
 
     override fun userAuth(param: UserAuthRequest): TTransdtl {
-        val dtl = transdtlDao.findById(param.refno).orElse(null)
+        val dtl = transdtlDao.findById(param.billno).orElse(null)
                 ?: throw TransactionProcessException(WaterErrorCode.DATA_NOTFOUND_ERROR,
                         "交易订单号不存在")
         dtl.userid = param.userid
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index eee881b..1dcc5e1 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -102,11 +102,9 @@
 
 
 INSERT INTO "tb_devicefeeconfig"("deviceid", "feecfgversion", "feeconfig") VALUES (1, NULL, 1);
-
 INSERT INTO "tb_feeconfig"("id", "amount", "max_water_litre", "cfg_version") VALUES (1, 1, 50, NULL);
-
 INSERT INTO "tb_person_identity"("third_uid", "createtime", "lockflag", "lossflag", "status", "userid") VALUES ('1', NULL, 0, 0, '1', 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-
 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, NULL, '1', NULL, NULL);
+INSERT INTO "tb_businesspara"("parakey", "paraval") VALUES ('water_auth_url', 'http://172.28.43.20:8080/water/api/confirm?billno=');
 
 commit;
\ No newline at end of file
diff --git a/src/main/resources/templates/system/confirm/confirm.html b/src/main/resources/templates/system/confirm/confirm.html
index 062ffb0..5b0452a 100644
--- a/src/main/resources/templates/system/confirm/confirm.html
+++ b/src/main/resources/templates/system/confirm/confirm.html
@@ -26,7 +26,7 @@
         return "d1yctWs5+ks0iQN3m9bUvRHus6HbKbrs"
     }
     var allData = {
-        refno:GetUrlRefnoPara(),
+        billno:GetUrlRefnoPara(),
         userid:GetUserid()
     }
     $("#button-auth").click(function () {