he2802 4 years ago
parent
commit
a58eaa3e80

+ 4 - 1
zhongzheng-api/src/main/java/com/zhongzheng/controller/face/FaceController.java

@@ -33,6 +33,8 @@ public class FaceController extends BaseController {
 
     private final IFaceService iFaceService;
 
+    private final WxTokenService wxTokenService;
+
     @ApiOperation("获取识别凭证")
     @GetMapping("/certification/BizToken")
     public AjaxResult<FaceVo> getBizToken() throws Exception {
@@ -43,7 +45,8 @@ public class FaceController extends BaseController {
     @ApiOperation("获取识别结果")
     @GetMapping("/certification/DetectInfo/{bizToken}")
     public AjaxResult getDetectInfo(@PathVariable("bizToken") String bizToken) throws Exception {
-        iFaceService.getDetectInfo(bizToken);
+        ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
+        iFaceService.getDetectInfo(bizToken,loginUser.getUser().getUserId());
         return AjaxResult.success();
     }
 

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/service/OssService.java

@@ -18,4 +18,6 @@ public interface OssService {
     Boolean upload(OssRequest base) throws Exception;
 
     String uploadBase64(String fileStr);
+
+    void closeClient();
 }

+ 13 - 12
zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/service/impl/OssServiceImpl.java

@@ -7,10 +7,7 @@ import com.aliyun.oss.OSS;
 import com.aliyun.oss.OSSClient;
 import com.aliyun.oss.common.utils.BinaryUtil;
 import com.aliyun.oss.internal.OSSUtils;
-import com.aliyun.oss.model.MatchMode;
-import com.aliyun.oss.model.PolicyConditions;
-import com.aliyun.oss.model.PutObjectRequest;
-import com.aliyun.oss.model.PutObjectResult;
+import com.aliyun.oss.model.*;
 import com.zhongzheng.common.constant.Constants;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.exception.CustomException;
@@ -36,10 +33,7 @@ import java.awt.*;
 import java.io.*;
 import java.sql.SQLException;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.Map;
-import java.util.Random;
+import java.util.*;
 
 @Service
 public class OssServiceImpl implements OssService {
@@ -183,6 +177,11 @@ public class OssServiceImpl implements OssService {
         }
     }
 
+    @Override
+    public void closeClient(){
+        ossClient.shutdown();
+    }
+
     @Override
     public String uploadBase64(String fileStr) {
         try{
@@ -192,10 +191,12 @@ public class OssServiceImpl implements OssService {
             InputStream binaryStream = serialBlob.getBinaryStream();
             OssRequest ossRequest = new OssRequest();
             ossRequest.setImageStatus(1);
-            String fileName = generateRandomFilename(ossRequest);
-            PutObjectResult putObjectResult = ossClient.putObject(ALIYUN_OSS_BUCKET_NAME, fileName, binaryStream);
-            ossClient.shutdown();
-            return fileName;
+            String fileName = ALIYUN_OSS_DIR_PREFIX+generateRandomFilename(ossRequest);
+            ObjectMetadata metadata = new ObjectMetadata();
+            metadata.setHeader("Content-Type","image/jpeg");
+            PutObjectResult putObjectResult = ossClient.putObject(ALIYUN_OSS_BUCKET_NAME, fileName, binaryStream, metadata);
+    //        ossClient.shutdown();
+            return ALIYUN_OSS_DIR_PREFIX+fileName;
         }catch (SerialException throwables) {
             throwables.printStackTrace();
         } catch (SQLException throwables) {

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/face/service/IFaceService.java

@@ -7,6 +7,6 @@ public interface IFaceService {
 
     FaceVo getFaceDetectAuth();
 
-    void getDetectInfo(String bizToken);
+    void getDetectInfo(String bizToken,Long userId);
 
 }

+ 58 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/face/service/impl/FaceServiceImpl.java

@@ -12,15 +12,24 @@ import com.tencentcloudapi.faceid.v20180301.models.DetectAuthRequest;
 import com.tencentcloudapi.faceid.v20180301.models.DetectAuthResponse;
 import com.tencentcloudapi.faceid.v20180301.models.GetDetectInfoRequest;
 import com.tencentcloudapi.faceid.v20180301.models.GetDetectInfoResponse;
+import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.modules.alioss.service.OssService;
 import com.zhongzheng.modules.course.mapper.CourseMapper;
 import com.zhongzheng.modules.exam.domain.ExamArrangementGuide;
 import com.zhongzheng.modules.face.bo.FaceVo;
 import com.zhongzheng.modules.face.service.IFaceService;
+import com.zhongzheng.modules.user.bo.UserEditBo;
+import com.zhongzheng.modules.user.bo.UserOcrAddBo;
+import com.zhongzheng.modules.user.domain.User;
+import com.zhongzheng.modules.user.mapper.UserMapper;
+import com.zhongzheng.modules.user.service.IUserOcrService;
+import com.zhongzheng.modules.user.service.IUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.util.Map;
+
 @Service
 public class FaceServiceImpl implements IFaceService {
 
@@ -33,6 +42,12 @@ public class FaceServiceImpl implements IFaceService {
     @Autowired
     private OssService ossService;
 
+    @Autowired
+    private IUserOcrService iUserOcrService;
+
+    @Autowired
+    private UserMapper userMapper;
+
     @Override
     public FaceVo getFaceDetectAuth() {
         try{
@@ -57,7 +72,7 @@ public class FaceServiceImpl implements IFaceService {
     }
 
     @Override
-    public void getDetectInfo(String bizToken) {
+    public void getDetectInfo(String bizToken,Long userId) {
         try{
             Credential cred = new Credential(SecretId, SecretKey);
 
@@ -73,8 +88,48 @@ public class FaceServiceImpl implements IFaceService {
             req.setBizToken(bizToken);
             req.setRuleId("0");
             GetDetectInfoResponse resp = client.GetDetectInfo(req);
-            JSONObject resultObject = JSONObject.parseObject(GetDetectInfoResponse.toJsonString(resp));
-            System.out.println(GetDetectInfoResponse.toJsonString(resp));
+            JSONObject resultObject = JSONObject.parseObject(resp.getDetectInfo());
+            if (resultObject.containsKey("Text")){
+                Map entry = (Map)resultObject.get("Text");
+                int ErrCode = ((Integer)entry.get("ErrCode"));
+                if(ErrCode==0){ //0为成功
+                    String IdCard = ((String)entry.get("IdCard"));
+                    String Name = ((String)entry.get("Name"));
+                    //照片
+                    Map IdCardData = (Map)resultObject.get("IdCardData");
+                    String OcrFront = ((String)IdCardData.get("OcrFront"));
+                    String OcrFrontFileName = ossService.uploadBase64(OcrFront);
+                    String OcrBack = ((String)IdCardData.get("OcrBack"));
+                    String OcrBackFileName = ossService.uploadBase64(OcrBack);
+                    //视频最佳帧截图
+                    Map BestFrame = (Map)resultObject.get("BestFrame");
+                    String imgBestFrame = ((String)BestFrame.get("BestFrame"));
+                    String imgBestFrameFileName = ossService.uploadBase64(imgBestFrame);
+
+                    User user = new User();
+                    user.setUserId(userId);
+                    user.setIdCardImg1(OcrFrontFileName);
+                    user.setIdCardImg2(OcrBackFileName);
+                    user.setRealname(Name);
+                    user.setIdCard(IdCard);
+                    user.setCertified(1);
+                    user.setCertifiedTime(DateUtils.getNowTime());
+                    user.setUpdateTime(DateUtils.getNowTime());
+                    userMapper.updateById(user);
+
+                    UserOcrAddBo bo = new UserOcrAddBo();
+                    bo.setBestFrame(imgBestFrameFileName);
+                    bo.setOcrFront(OcrFrontFileName);
+                    bo.setOcrBack(OcrBackFileName);
+                    bo.setUserId(userId);
+                    bo.setOcrInfo(JSONObject.toJSONString(entry));
+                    bo.setStatus(1);
+                    iUserOcrService.insertByAddBo(bo);
+                    ossService.closeClient();
+                }
+
+            }
+
         } catch (TencentCloudSDKException e) {
             System.out.println(e.toString());
         }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/bo/UserOcrAddBo.java

@@ -39,4 +39,6 @@ public class UserOcrAddBo {
     /** 状态 1正常 0关闭 */
     @ApiModelProperty("状态 1正常 0关闭")
     private Integer status;
+    @ApiModelProperty("用户ID")
+    private Long userId;
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/UserOcr.java

@@ -51,4 +51,7 @@ private static final long serialVersionUID=1L;
     /** 状态 1正常 0关闭 */
     private Integer status;
 
+    private Long userId;
+
+
 }

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/UserVo.java

@@ -151,6 +151,8 @@ public class UserVo {
 		if(this.getTelphone()!=null){
 			this.setTelphone(TelPhoneUtils.hideTelPhone(this.getTelphone()));
 		}
-
+		if(this.getIdCard()!=null){
+			this.setIdCard(TelPhoneUtils.hideTelPhone(this.getIdCard()));
+		}
 	}
 }

+ 1 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/UserOcrMapper.xml

@@ -13,6 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="createTime" column="create_time"/>
         <result property="updateTime" column="update_time"/>
         <result property="status" column="status"/>
+        <result property="userId" column="user_id"/>
     </resultMap>