Sfoglia il codice sorgente

证件号识别修改

wks 3 anni fa
parent
commit
368dac587b

+ 4 - 2
src/main/java/com/ydtech/modules/order/controller/IdentifyController.java

@@ -10,6 +10,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.Map;
+
 @RestController
 @RequestMapping("/order/identify")
 @Api(tags = "识别")
@@ -24,13 +26,13 @@ public class IdentifyController {
 
     @PostMapping("/idCard")
     @ApiOperation(value = "身份证正反面识别")
-    public HttpResult idCard(MultipartFile image1, MultipartFile image2) {
+    public HttpResult<Map<String, Object>> idCard(MultipartFile image1, MultipartFile image2) {
         return identifyService.idCard(image1, image2);
     }
 
     @PostMapping("/drivingPermit")
     @ApiOperation(value = "行驶证正反面识别")
-    public HttpResult drivingPermit(MultipartFile image1, MultipartFile image2) {
+    public HttpResult<Map<String, Object>> drivingPermit(MultipartFile image1, MultipartFile image2) {
         return identifyService.drivingPermit(image1, image2);
     }
 

+ 4 - 2
src/main/java/com/ydtech/modules/order/service/IdentifyService.java

@@ -3,6 +3,8 @@ package com.ydtech.modules.order.service;
 import com.ydtech.core.page.HttpResult;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.Map;
+
 public interface IdentifyService {
 
     /**
@@ -11,7 +13,7 @@ public interface IdentifyService {
      * @param image2 反面
      * @return
      */
-    HttpResult idCard(MultipartFile image1, MultipartFile image2);
+    HttpResult<Map<String, Object>> idCard(MultipartFile image1, MultipartFile image2);
 
 
     /**
@@ -20,6 +22,6 @@ public interface IdentifyService {
      * @param image2 反面
      * @return
      */
-    HttpResult drivingPermit(MultipartFile image1, MultipartFile image2);
+    HttpResult<Map<String, Object>> drivingPermit(MultipartFile image1, MultipartFile image2);
 
 }

+ 9 - 33
src/main/java/com/ydtech/modules/order/service/impl/IdentifyServiceImpl.java

@@ -5,6 +5,7 @@ import com.ydtech.exception.SystemException;
 import com.ydtech.modules.ins.model.CardUserInfo;
 import com.ydtech.modules.ins.model.CustomerInfoVO;
 import com.ydtech.modules.order.service.IdentifyService;
+import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.utils.ImageCompressionUtils;
 import com.ydtech.utils.baidu.Idcard;
 import com.ydtech.utils.baidu.MultiObjectDetect;
@@ -27,58 +28,33 @@ import java.util.Map;
 public class IdentifyServiceImpl implements IdentifyService {
 
     @Override
-    public HttpResult idCard(MultipartFile image1, MultipartFile image2) {
+    public HttpResult<Map<String, Object>> idCard(MultipartFile image1, MultipartFile image2) {
         Map<String, Object> map = new HashMap<>();
         CustomerInfoVO customerInfoVO = new CustomerInfoVO();
 
         String s1 = byteToBase64(image1);
-        CustomerInfoVO idCardFront = Idcard.getIdCardFront(s1);
-        if (!ObjectUtils.isEmpty(idCardFront)) {
-            customerInfoVO.setName(idCardFront.getName());
-            customerInfoVO.setIdentifyNumber(idCardFront.getIdentifyNumber());
-            customerInfoVO.setAddr(idCardFront.getAddr());
-            customerInfoVO.setIdentifyType(idCardFront.getIdentifyType());
-            customerInfoVO.setIdentifyIssuedCom(idCardFront.getIdentifyIssuedCom());
-        }
+        Idcard.getIdCardFront(s1, customerInfoVO);
 
         String s2 = byteToBase64(image2);
-        CustomerInfoVO idCardBack = Idcard.getIdCardBack(s2);
-        if (!ObjectUtils.isEmpty(idCardBack)) {
-            customerInfoVO.setIdentifyValidDate(idCardBack.getIdentifyValidDate());
-            customerInfoVO.setIdentifyValidEndDate(idCardBack.getIdentifyValidEndDate());
-        }
+        Idcard.getIdCardBack(s2, customerInfoVO);
 
+        AssertionUtils.isEmpty(customerInfoVO, "身份证识别失败");
         map.put("customerInfo", customerInfoVO);
         return HttpResult.ok("success", map);
     }
 
     @Override
-    public HttpResult drivingPermit(MultipartFile image1, MultipartFile image2) {
+    public HttpResult<Map<String, Object>> drivingPermit(MultipartFile image1, MultipartFile image2) {
         Map<String, Object> map = new HashMap<>();
         CardUserInfo cardUserInfo = new CardUserInfo();
 
         String s1 = byteToBase64(image1);
-        CardUserInfo drivingPermitFront = MultiObjectDetect.drivingPermitFront(s1);
-        if (!ObjectUtils.isEmpty(drivingPermitFront)) {
-            cardUserInfo.setvIN(drivingPermitFront.getvIN());
-            cardUserInfo.setIssueDate(drivingPermitFront.getIssueDate());
-            cardUserInfo.setPlateType(drivingPermitFront.getPlateType());
-            cardUserInfo.setMotorUsageTypeCode(drivingPermitFront.getMotorUsageTypeCode());
-            cardUserInfo.setMotorTypeCode(drivingPermitFront.getMotorTypeCode());
-            cardUserInfo.setRegisterDate(drivingPermitFront.getRegisterDate());
-            cardUserInfo.setEngine(drivingPermitFront.getEngine());
-            cardUserInfo.setPlateNo(drivingPermitFront.getPlateNo());
-            cardUserInfo.setBackOcrID(drivingPermitFront.getBackOcrID());
-        }
+        MultiObjectDetect.drivingPermitFront(s1, cardUserInfo);
 
         String s2 = byteToBase64(image2);
-        CardUserInfo drivingPermitBack = MultiObjectDetect.drivingPermitBack(s2);
-        if (!ObjectUtils.isEmpty(drivingPermitBack)) {
-            cardUserInfo.setGrossMass(drivingPermitBack.getGrossMass());
-            cardUserInfo.setApprovedPassengersCapacity(drivingPermitBack.getApprovedPassengersCapacity());
-            cardUserInfo.setUnladenMass(drivingPermitBack.getUnladenMass());
-        }
+        MultiObjectDetect.drivingPermitBack(s2, cardUserInfo);
 
+        AssertionUtils.isEmpty(cardUserInfo, "身份证识别失败");
         map.put("carInfo", cardUserInfo);
         return HttpResult.ok("success", map);
     }

+ 20 - 5
src/main/java/com/ydtech/modules/protocol/utils/AssertionUtils.java

@@ -1,6 +1,8 @@
 package com.ydtech.modules.protocol.utils;
 
 import com.ydtech.exception.SystemException;
+import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
 
 /**
  * 断言工具类
@@ -9,16 +11,29 @@ import com.ydtech.exception.SystemException;
  */
 public class AssertionUtils {
 
-    public static void isSucceed(int b, String message) {
-        if (b <= 0) {
+    private AssertionUtils() {
+        throw new IllegalStateException("AssertionUtils class");
+    }
+
+
+    private static void assertion(boolean b, String message){
+        if (b) {
             throw new SystemException(message);
         }
     }
 
+
+    public static void isSucceed(int b, String message) {
+        assertion(b <= 0, message);
+    }
+
     public static void isSucceed(boolean b, String message) {
-        if (!b) {
-            throw new SystemException(message);
-        }
+        assertion(!b, message);
     }
 
+    public static void isEmpty(Object o, String message){
+        assertion(ObjectUtils.isEmpty(o), message);
+    }
+
+
 }

+ 4 - 11
src/main/java/com/ydtech/utils/baidu/Idcard.java

@@ -88,12 +88,11 @@ public class Idcard {
      * @param images
      * @return
      */
-    public static CustomerInfoVO getIdCardFront(String images) {
+    public static void getIdCardFront(String images, CustomerInfoVO customerInfo) {
         if (StringUtils.isEmpty(images)) {
-            return null;
+            return;
         }
 
-        CustomerInfoVO customerInfo = new CustomerInfoVO();
         try {
             JSONObject jb = request(images, "front");
             customerInfo.setName(JSON.parseObject(jb.getString("姓名")).getString("words"));
@@ -101,29 +100,23 @@ public class Idcard {
             customerInfo.setAddr(JSON.parseObject(jb.getString("住址")).getString("words"));
             customerInfo.setIdentifyType("01");
             customerInfo.setIdentifyIssuedCom(JSON.parseObject(jb.getString("性别")).getString("words"));
-            return customerInfo;
         } catch (Exception e) {
             e.printStackTrace();
         }
-
-        return null;
     }
 
-    public static CustomerInfoVO getIdCardBack(String images) {
+    public static void getIdCardBack(String images, CustomerInfoVO customerInfo) {
         if (StringUtils.isEmpty(images)) {
-            return null;
+            return;
         }
 
         try {
-            CustomerInfoVO customerInfo = new CustomerInfoVO();
             JSONObject jb = request(images, "back");
             customerInfo.setIdentifyValidDate(JSON.parseObject(jb.getString("签发日期")).getString("words"));
             customerInfo.setIdentifyValidEndDate(JSON.parseObject(jb.getString("失效日期")).getString("words"));
-            return customerInfo;
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return null;
     }
 
 

+ 4 - 10
src/main/java/com/ydtech/utils/baidu/MultiObjectDetect.java

@@ -96,12 +96,11 @@ public class MultiObjectDetect {
         return new JSONObject();
     }
 
-    public static CardUserInfo drivingPermitFront(String images) {
+    public static void drivingPermitFront(String images, CardUserInfo cardUserInfo) {
         if (StringUtils.isEmpty(images)) {
-            return null;
+            return;
         }
 
-        CardUserInfo cardUserInfo = new CardUserInfo();
         try {
             JSONObject jb = request(images, "front");
             cardUserInfo.setvIN(JSON.parseObject(jb.getString("车辆识别代号")).getString("words").toString());
@@ -124,11 +123,9 @@ public class MultiObjectDetect {
             cardUserInfo.setEngine(JSON.parseObject(jb.getString("发动机号码")).getString("words"));
             cardUserInfo.setPlateNo(JSON.parseObject(jb.getString("号牌号码")).getString("words"));
             cardUserInfo.setBackOcrID(JSON.parseObject(jb.getString("品牌型号")).getString("words"));
-            return cardUserInfo;
         } catch (Exception e) {
             e.printStackTrace();
         }
-        return null;
     }
 
 
@@ -138,22 +135,19 @@ public class MultiObjectDetect {
      * @param images
      * @return
      */
-    public static CardUserInfo drivingPermitBack(String images) {
+    public static void drivingPermitBack(String images, CardUserInfo cardUserInfo) {
         if (StringUtils.isEmpty(images)) {
-            return null;
+            return;
         }
 
-        CardUserInfo cardUserInfo = new CardUserInfo();
         try {
             JSONObject jb = request(images, "back");
             cardUserInfo.setGrossMass(JSON.parseObject(jb.getString("总质量")).getString("words").replace("kg", ""));
             cardUserInfo.setApprovedPassengersCapacity(JSON.parseObject(jb.getString("核定载人数")).getString("words").replace("人", ""));
             cardUserInfo.setUnladenMass(JSON.parseObject(jb.getString("整备质量")).getString("words").replace("kg", ""));
-            return cardUserInfo;
         } catch (Exception e) {
             e.printStackTrace();
         }
 
-        return null;
     }
 }