haogh 7 месяцев назад
Родитель
Сommit
9f5e24f9fe

+ 4 - 0
WebRoot/ymbk/routes/std/reg/std_reg.js

@@ -401,6 +401,10 @@ app.controller('StdRegCtrl', [ '$rootScope', '$scope', '$http', '$timeout', '$st
 	}
 
 	let bizToken = sessionStorage.getItem("biz_token");
+	// 找不到取最新的bizToken
+	if (!bizToken) {
+		bizToken = $scope.StdReg.biz_token;
+	}
 	if (bizToken) {
 		$scope.showLiveCheckLoading = true;
 		$rootScope.ajaxRequest(

+ 4 - 0
WebRoot/ymfz/routes/std/reg/std_reg.js

@@ -460,6 +460,10 @@ app.controller("StdRegCtrl", [
     // };
 
     let bizToken = sessionStorage.getItem("biz_token");
+    // 找不到取最新的bizToken
+    if (!bizToken) {
+        bizToken = $scope.StdReg.biz_token;
+    }
     if (bizToken) {
       $scope.showLiveCheckLoading = true;
       $rootScope.ajaxRequest(

+ 10 - 1
src/cn/hmsoft/art/data/model/std/StdReg.java

@@ -103,6 +103,9 @@ public class StdReg implements Serializable {
 	
 	private String std_political; //政治面貌
 	private String email; //电子邮箱
+
+	//最新的活体识别token
+	private String biz_token;
 	
 	
 	/*********************
@@ -863,6 +866,12 @@ public class StdReg implements Serializable {
 	public void setSchool_city_id(String school_city_id) {
 		this.school_city_id = school_city_id;
 	}
-	
 
+	public String getBiz_token() {
+		return biz_token;
+	}
+
+	public void setBiz_token(String biz_token) {
+		this.biz_token = biz_token;
+	}
 }

+ 7 - 0
src/cn/hmsoft/art/enrol/control/tencent/LiveRecognitionControl.java

@@ -2,6 +2,7 @@ package cn.hmsoft.art.enrol.control.tencent;
 
 import cn.hmsoft.application.web.AjaxControl;
 import cn.hmsoft.art.constants.Constants;
+import cn.hmsoft.art.data.model.live.TxStdLiveLog;
 import cn.hmsoft.art.data.model.std.StdReg;
 import cn.hmsoft.art.data.response.live.DetectAuthBean;
 import cn.hmsoft.art.data.response.live.DetectInfoResult;
@@ -73,6 +74,12 @@ public class LiveRecognitionControl extends AjaxControl {
             throw new BusinessException(Constants.SYSTEM_BUSY);
         }
 
+        // 判断是否已经拉取
+        TxStdLiveLog log = liveRecognitionService.getStdLiveLog(bizToken);
+        if (log != null && log.getPull_flag() != null && log.getPull_flag().equals(Constants.TRUE_FLAG)) {
+            return new DetectInfoResult();
+        }
+
         //请求参数封装
         DetectInfoVO detectInfoVO = new DetectInfoVO();
         detectInfoVO.setBizToken(bizToken);

+ 15 - 1
src/cn/hmsoft/art/service/live/LiveRecognitionService.java

@@ -229,6 +229,7 @@ public class LiveRecognitionService extends ArtService {
         return detectInfoResult;
     }
 
+    @Transactional
     public void saveDetectAuth(StdReg stdReg, DetectAuthBean bean, DetectAuthVO detectAuthVO) {
         //保存token
         TxStdLiveLog log = new TxStdLiveLog();
@@ -237,6 +238,10 @@ public class LiveRecognitionService extends ArtService {
         log.setCreate_time(LocalDateTime.now());
         log.setPull_flag(Constants.FALSE_FLAG);
         txStdLiveLogDao.insert(log);
+
+        //更新biz_token
+        stdReg.setBiz_token(bean.getBizToken());
+        stdRegDao.update(stdReg);
     }
 
     public StdReg findStdRegByCertAndName(DetectAuthVO detectAuthVO) {
@@ -249,7 +254,7 @@ public class LiveRecognitionService extends ArtService {
         String max = CollectionHelper.getParamValue(ArtParamHelper.GobalParamMap, "EnrolNoCrownPhotoNumber", "3");
         StdRes res = stdResDao.findRes(stdReg.getStd_id(), StdResType.LIVE.toString());
         if (res != null && res.getRes_number() != null && res.getRes_date() != null && res.getRes_date().isEqual(LocalDate.now())
-                && res.getRes_number() >= Integer.parseInt(max)) {
+                && res.getRes_number() > Integer.parseInt(max)) {
             log.warn("[findStdRegByCertAndName] 活体识别次数超限,std_id: {}", stdReg.getStd_id());
             throw new BusinessException("该微信号本日使用活体识别次数超限,请明日再试!");
         }
@@ -275,4 +280,13 @@ public class LiveRecognitionService extends ArtService {
             saveDetectResult(bizToken, result);
         }
     }
+
+    public TxStdLiveLog getStdLiveLog(String bizToken) {
+        List<TxStdLiveLog> stdLiveLogList = txStdLiveLogDao.list("biz_token", bizToken,
+                new QueryOrder("create_time", QueryOrder.QueryOrderType.DESC));
+        if (stdLiveLogList == null || stdLiveLogList.isEmpty()) {
+            return null;
+        }
+        return stdLiveLogList.get(0);
+    }
 }