浏览代码

卡号问题 2023-04-11

donggaosheng 2 年之前
父节点
当前提交
580adc8872

+ 34 - 0
zd-modules/zd-base/src/main/java/com/zd/base/app/HexStrUtils.java

@@ -0,0 +1,34 @@
+package com.zd.base.app;
+
+import java.io.ByteArrayOutputStream;
+
+/**
+ * hex 转换
+ * @author dgs
+ * @time 2023-04-11
+ */
+public class HexStrUtils {
+
+    private static String hexString = "0123456789ABCDEFabcdef";
+
+    public static String encode(String str) {
+        byte[] bytes = str.getBytes();
+        StringBuilder sb = new StringBuilder(bytes.length * 2);
+        //转换hex编码
+        for (byte b : bytes) {
+            sb.append(Integer.toHexString(b + 0x800).substring(1));
+        }
+        str = sb.toString();
+        return str;
+    }
+
+    //把hex编码转换为string
+    public static String decode(String bytes) {
+        bytes = bytes.toUpperCase();
+        ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length() / 2);
+        // 将每2位16进制整数组装成一个字节
+        for (int i = 0; i < bytes.length(); i += 2)
+            baos.write((hexString.indexOf(bytes.charAt(i)) << 4 | hexString.indexOf(bytes.charAt(i + 1))));
+        return new String(baos.toByteArray());
+    }
+}

+ 13 - 1
zd-modules/zd-base/src/main/java/com/zd/base/app/controller/LabBoardApi.java

@@ -3,6 +3,7 @@ package com.zd.base.app.controller;
 import com.zd.algorithm.api.face.feign.FaceCompare;
 import com.zd.algorithm.api.face.feign.RemoteFaceService;
 import com.zd.algorithm.api.xxp.feign.RemoteXxpService;
+import com.zd.base.app.HexStrUtils;
 import com.zd.base.app.domain.board.DutyPersonVo;
 import com.zd.base.app.domain.board.LabXxpSubjectVo;
 import com.zd.common.core.utils.DateUtils;
@@ -404,6 +405,12 @@ public class LabBoardApi {
     @ApiOperation(value = "刷卡是否可以开门禁")
     @GetMapping(value = "/getCardIsOpen")
     public ResultData getCardIsOpen(@RequestParam("labId") Long labId,@RequestParam("cardNum") String cardNum) {
+        if(StringUtils.isNull(cardNum) || StringUtils.isEmpty(cardNum)){
+            return ResultData.fail("未识别到身份信息,请联系管理人员录入卡号信息");
+        }
+        logger.info("转换前cardNum:"+cardNum);
+        cardNum= HexStrUtils.decode(cardNum);
+        logger.info("转换后cardNum:"+cardNum);
         ResultData resultData=remoteDutyService.securityNumList(labId,cardNum);
         if(resultData==null && resultData.getCode()!=HttpStatus.SUCCESS){
             return ResultData.fail("未识别到身份信息,请联系管理人员录入卡号信息");
@@ -424,7 +431,12 @@ public class LabBoardApi {
     @ApiOperation(value = "刷卡验证")
     @GetMapping(value = "/cardValidate")
     public ResultData cardValidate(@RequestParam("labId") Long labId,@RequestParam("cardNum") String cardNum) {
-        logger.info("实验室编号:"+labId+"刷卡卡号:"+cardNum);
+        logger.info("转换前cardNum:"+cardNum);
+        if(StringUtils.isNull(cardNum) || StringUtils.isEmpty(cardNum)){
+            return ResultData.fail("未识别到身份信息,请联系管理人员录入卡号信息");
+        }
+        cardNum= HexStrUtils.decode(cardNum);
+        logger.info("转换后cardNum:"+cardNum);
         ResultData resultData=remoteDutyService.securityNumList(labId,cardNum);
         if(resultData==null && resultData.getCode()!=HttpStatus.SUCCESS){
             return ResultData.fail("未识别到身份信息,请联系管理人员录入卡号信息");