tongfeng пре 2 година
родитељ
комит
12b84b511f

+ 6 - 5
eladmin-system/src/main/java/me/zhengjie/application/admin/controller/AdminOrderController.java

@@ -5,17 +5,14 @@ import com.alibaba.fastjson.JSONObject;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import me.zhengjie.annotation.rest.AnonymousGetMapping;
 import me.zhengjie.annotation.rest.AnonymousPostMapping;
 import me.zhengjie.application.admin.controller.vo.*;
 import me.zhengjie.application.admin.service.AdminOrderService;
 import me.zhengjie.application.admin.service.dto.CompareImageDto;
-import me.zhengjie.base.AppBaseResponse;
-import me.zhengjie.base.AppResultData;
-import me.zhengjie.base.ResponseDTO;
-import me.zhengjie.base.ResultCode;
+import me.zhengjie.base.*;
 import me.zhengjie.base.util.BeanCopyUtils;
 import me.zhengjie.base.util.TencentServiceUtil;
+import me.zhengjie.dao.mybatis.entity.ThirdPartyInterfaceEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -253,5 +250,9 @@ public class AdminOrderController {
 		return adminOrderService.faceCompare(BeanCopyUtils.convertObj(compareImageVo, CompareImageDto.class));
 	}
 
+	@RequestMapping("/getFaceCompareList")
+	public AppBaseResponse<List<ThirdPartyInterfaceEntity>> getFaceCompareList(@RequestBody FaceCompareReq thirdPartyReq){
+		return adminOrderService.getThird(thirdPartyReq);
+	}
 
 }

+ 11 - 0
eladmin-system/src/main/java/me/zhengjie/application/admin/controller/vo/FaceCompareReq.java

@@ -0,0 +1,11 @@
+package me.zhengjie.application.admin.controller.vo;
+
+import lombok.Data;
+import me.zhengjie.base.BaseRequest;
+
+@Data
+public class FaceCompareReq extends BaseRequest {
+    private String idCard;
+    private String name;
+    private Integer result;
+}

+ 18 - 0
eladmin-system/src/main/java/me/zhengjie/application/admin/controller/vo/FaceCompareRsp.java

@@ -0,0 +1,18 @@
+package me.zhengjie.application.admin.controller.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FaceCompareRsp {
+    private Long id;
+    private String businessNo;
+    private String message;
+    private Integer result;
+    private String score;
+    private String name;
+    private String idCard;
+    private String url;
+    private Date createTime;
+}

+ 3 - 6
eladmin-system/src/main/java/me/zhengjie/application/admin/service/AdminOrderService.java

@@ -2,13 +2,8 @@ package me.zhengjie.application.admin.service;
 
 import me.zhengjie.application.admin.controller.vo.*;
 import me.zhengjie.application.admin.service.dto.CompareImageDto;
-import me.zhengjie.application.bank.controller.vo.CompareImageVo;
-import me.zhengjie.application.bank.controller.vo.ImageUploadVO;
 import me.zhengjie.base.AppBaseResponse;
-import me.zhengjie.dao.mybatis.entity.BorrowerEntity;
-import me.zhengjie.dao.mybatis.entity.FileInfoEntity;
-import me.zhengjie.dao.mybatis.entity.GuaranteeEntity;
-import me.zhengjie.dao.mybatis.entity.MortgageEntity;
+import me.zhengjie.dao.mybatis.entity.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -80,6 +75,8 @@ public interface AdminOrderService {
      * @return
      */
     AppBaseResponse faceCompare(CompareImageDto compareImageDto);
+
+    AppBaseResponse<List<ThirdPartyInterfaceEntity>> getThird(FaceCompareReq thirdPartyReq);
 //
 //    /**
 //     * 查询全部

+ 33 - 2
eladmin-system/src/main/java/me/zhengjie/application/admin/service/impl/AdminOrderServiceImpl.java

@@ -10,7 +10,6 @@ import me.zhengjie.application.admin.service.DictDetailService;
 import me.zhengjie.application.admin.service.OrderCochainService;
 import me.zhengjie.application.admin.service.SmsTemplateService;
 import me.zhengjie.application.admin.service.dto.CompareImageDto;
-import me.zhengjie.application.bank.controller.vo.ImageUploadVO;
 import me.zhengjie.application.bank.service.BankOrderService;
 import me.zhengjie.application.bank.service.FileInfoService;
 import me.zhengjie.base.AppBaseResponse;
@@ -22,6 +21,7 @@ import me.zhengjie.base.util.StatusEnum.NotaryStatusEnum;
 import me.zhengjie.dao.mybatis.ContractOrderRepository;
 import me.zhengjie.dao.mybatis.ModelRepository;
 import me.zhengjie.dao.mybatis.OrderFileRepository;
+import me.zhengjie.dao.mybatis.ThirdPartyInterfaceRepository;
 import me.zhengjie.dao.mybatis.entity.*;
 import me.zhengjie.dao.mybatis.mapper.*;
 import me.zhengjie.domain.img.CompareImageDomain;
@@ -32,6 +32,7 @@ import me.zhengjie.domain.order.OrderBizCodeMessage;
 import me.zhengjie.domain.order.OrderConstant;
 import me.zhengjie.domain.user.UserDomain;
 import me.zhengjie.utils.FileUtil;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -40,6 +41,7 @@ import org.springframework.util.StringUtils;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -111,13 +113,15 @@ public class AdminOrderServiceImpl implements AdminOrderService {
     private NotaryDomain notaryDomain;
     @Autowired
     private DictDetailService dictDetailService;
+    @Autowired
+    private ThirdPartyInterfaceRepository thirdPartyInterfaceRepository;
 
 
     @Override
     public AppBaseResponse<List<NotaryOrderQueryRsp>> query(NotaryOrderQueryReq req) {
         AppBaseResponse<List<NotaryOrderQueryRsp>> response = new AppBaseResponse<>();
         IPage<ContractOrderEntity> page = new Page<>(req.getIndex(), req.getSize());
-        QueryWrapper<ContractOrderEntity> qw = getQueryWrapper(req);
+        QueryWrapper<ContractOrderEntity> qw = new QueryWrapper<>();
         if (qw == null) {
             response.fail(ResultCode.PERMISSION_UNAUTHENTICATED);
             return response;
@@ -381,6 +385,33 @@ public class AdminOrderServiceImpl implements AdminOrderService {
     }
 
     @Override
+    public AppBaseResponse getThird(FaceCompareReq req) {
+        AppBaseResponse<List<FaceCompareRsp>> response = new AppBaseResponse<>();
+        IPage<ThirdPartyInterfaceEntity> page = new Page<>(req.getIndex(), req.getSize());
+        QueryWrapper<ThirdPartyInterfaceEntity> qw = new QueryWrapper<>();
+        Integer result = req.getResult();
+        String idCard = req.getIdCard();
+        String name = req.getName();
+        qw.eq("type","face_compare");
+        if (!ObjectUtils.isEmpty(result)){
+            qw.eq("result",result);
+        }
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(idCard)){
+            qw.like("id_card",idCard);
+        }
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(name)){
+            qw.like("party_name",name);
+        }
+        String format = DateFormatUtils.format(new Date());
+        qw.between("create_time",format+" 00:00:00",format+" 23:59:59");
+
+        List<FaceCompareRsp> faceCompareRspList = thirdPartyInterfaceRepository.page(page,qw);
+
+        response.setData(new AppResultData<List<FaceCompareRsp>>(faceCompareRspList,new me.zhengjie.base.Page(req.getIndex(), req.getSize(), (int) page.getTotal())));
+        return response;
+    }
+
+    @Override
     public AppBaseResponse orderReject(NotaryOrderQueryReq req) {
         AppBaseResponse response = new AppBaseResponse();
         ContractOrderEntity contractOrderEntity = contractOrderRepository

+ 32 - 9
eladmin-system/src/main/java/me/zhengjie/base/util/JuheServiceUtil.java

@@ -12,6 +12,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 
+import me.zhengjie.dao.mybatis.entity.ThirdPartyInterfaceEntity;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpException;
 import org.apache.commons.httpclient.HttpStatus;
@@ -21,6 +22,7 @@ import org.apache.commons.httpclient.params.HttpMethodParams;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+
 public class JuheServiceUtil {
     private static final Logger logger = LoggerFactory.getLogger(HttpRequestUtil.class);
 
@@ -30,6 +32,7 @@ public class JuheServiceUtil {
 
     private static final String KEY_CODE = "6db21a71bee88af1eac38480c1574e2a";
 
+
     private static final String SUCCESS_CODE = "1";
 
     private static MultiThreadedHttpConnectionManager connectionManager = null;
@@ -43,6 +46,7 @@ public class JuheServiceUtil {
     private static int maxTotalConnections = 500;
 
 
+
     private static HttpClient client;
 
     static {
@@ -60,7 +64,11 @@ public class JuheServiceUtil {
      * @param params 业务参数
      * @return String response
      */
-    public static boolean URLPost(String idCard,String realName,String base64) {
+    public static ThirdPartyInterfaceEntity URLPost(String idCard, String realName, String base64) {
+        ThirdPartyInterfaceEntity thirdPartyInterfaceEntity = new ThirdPartyInterfaceEntity();
+        thirdPartyInterfaceEntity.setType("face_compare");
+        thirdPartyInterfaceEntity.setName(realName);
+        thirdPartyInterfaceEntity.setIdCard(idCard);
         String response = EMPTY;
         PostMethod postMethod = null;
         try {
@@ -76,15 +84,30 @@ public class JuheServiceUtil {
             if (statusCode == HttpStatus.SC_OK) {
                 response = postMethod.getResponseBodyAsString();
                 JSONObject jsonObj = JSON.parseObject(response);
+                //设置结果 可能成功也可能失败
+                String reason = jsonObj.getString("reason");
                 JSONObject result = jsonObj.getJSONObject("result");
+                if (! "成功".equals(reason)){
+                    thirdPartyInterfaceEntity.setMessage("人脸比对次数不足");
+                    thirdPartyInterfaceEntity.setResult(0);
+                    return thirdPartyInterfaceEntity;
+                }
                 String res = result.getString("res");
-                String score = result.getString("score");
-                if (!SUCCESS_CODE.equals(res) || Integer.parseInt(score) < 45) {
-                    return false;
+                if (!SUCCESS_CODE.equals(res)){
+                    thirdPartyInterfaceEntity.setMessage(result.getString("message"));
+                    thirdPartyInterfaceEntity.setResult(0);
+                    return thirdPartyInterfaceEntity;
                 }
-                if (SUCCESS_CODE.equals(res) && Integer.parseInt(score) >= 45) {
-                    return true;
+                String score = result.getString("score");
+                if (Integer.parseInt(score) < 45) {
+                    thirdPartyInterfaceEntity.setScore(score);
+                    thirdPartyInterfaceEntity.setMessage("比对分值小于45");
+                    thirdPartyInterfaceEntity.setResult(0);
+                    return thirdPartyInterfaceEntity;
                 }
+                thirdPartyInterfaceEntity.setScore(score);
+                thirdPartyInterfaceEntity.setResult(1);
+                return thirdPartyInterfaceEntity;
             } else {
                 logger.error("响应状态码=" + postMethod.getStatusCode());
             }
@@ -98,7 +121,7 @@ public class JuheServiceUtil {
                 postMethod = null;
             }
         }
-        return false;
+        return thirdPartyInterfaceEntity;
     }
 
     public static void main(String[] args) throws Exception {
@@ -119,8 +142,8 @@ public class JuheServiceUtil {
             params.put("realname", realName);
             params.put("image", base64);
             params.put("key", KEY_CODE);
-            boolean isMatch = JuheServiceUtil.URLPost(idCard,realName,base64);
-            System.out.println(isMatch);
+            ThirdPartyInterfaceEntity thirdPartyInterfaceEntity = JuheServiceUtil.URLPost(idCard,realName,base64);
+            System.out.println(thirdPartyInterfaceEntity);
         } catch (Exception e) {
             e.printStackTrace();
         } finally {

+ 76 - 0
eladmin-system/src/main/java/me/zhengjie/dao/mybatis/ThirdPartyInterfaceRepository.java

@@ -0,0 +1,76 @@
+package me.zhengjie.dao.mybatis;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.RequiredArgsConstructor;
+import me.zhengjie.application.admin.controller.vo.FaceCompareRsp;
+import me.zhengjie.base.ResultCode;
+import me.zhengjie.base.file.FaceMinioFileHandle;
+import me.zhengjie.base.util.BeanCopyUtils;
+import me.zhengjie.dao.mybatis.entity.ContractOrderEntity;
+import me.zhengjie.dao.mybatis.entity.FileInfoEntity;
+import me.zhengjie.dao.mybatis.entity.ThirdPartyInterfaceEntity;
+import me.zhengjie.dao.mybatis.mapper.ContractOrderMapper;
+import me.zhengjie.dao.mybatis.mapper.FileInfoMapper;
+import me.zhengjie.dao.mybatis.mapper.ThirdPartyInterfaceMapper;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@RequiredArgsConstructor
+@Component
+public class ThirdPartyInterfaceRepository {
+    private final ThirdPartyInterfaceMapper thirdPartyInterfaceMapper;
+    private final ContractOrderMapper contractOrderMapper;
+    private final FileInfoMapper fileInfoMapper;
+    private final FaceMinioFileHandle minioFileHandle;
+
+
+
+    public void insert(ThirdPartyInterfaceEntity thirdPartyInterfaceEntity){
+        //里面如果能查到用户和idcard的信息 就不会用银行经理查询 反之 则用银行经理查询
+        QueryWrapper<ContractOrderEntity> contractOrderEntityQueryWrapper = new QueryWrapper<>();
+        String partyName = thirdPartyInterfaceEntity.getName();
+        String idCard = thirdPartyInterfaceEntity.getIdCard();
+        contractOrderEntityQueryWrapper.eq("id_card",idCard).eq("name",partyName);
+        ContractOrderEntity contractOrder = contractOrderMapper.selectOne(contractOrderEntityQueryWrapper);
+        String businessNo = null;
+        if (!ObjectUtils.isEmpty(contractOrder)){
+            businessNo = contractOrder.getBusinessNo();
+        }else {
+            QueryWrapper<ContractOrderEntity> contractOrderQuery = new QueryWrapper<>();
+            //客户经理最近的一个订单 当作做人脸核身的订单
+            contractOrderQuery.eq("customer_name",partyName).orderByDesc("update_time");
+            List<ContractOrderEntity> contractOrderEntities = contractOrderMapper.selectList(contractOrderQuery);
+            ContractOrderEntity contractOrderEntity = contractOrderEntities.get(0);
+            businessNo=contractOrderEntity.getBusinessNo();
+        }
+        thirdPartyInterfaceEntity.setBusinessNo(businessNo);
+        thirdPartyInterfaceEntity.setCreateTime(new Date());
+        thirdPartyInterfaceMapper.insert(thirdPartyInterfaceEntity);
+    }
+
+    public List<FaceCompareRsp> page(IPage<ThirdPartyInterfaceEntity> page, QueryWrapper<ThirdPartyInterfaceEntity> qw) {
+        IPage<ThirdPartyInterfaceEntity> thirdPartyInterfaceEntityIPage = thirdPartyInterfaceMapper.selectPage(page,qw);
+        List<FaceCompareRsp> faceCompareRspList = new ArrayList<>();
+        for (ThirdPartyInterfaceEntity thirdPartyInterfaceEntity:thirdPartyInterfaceEntityIPage.getRecords()){
+            FaceCompareRsp faceCompareRsp = BeanCopyUtils.convertObj(thirdPartyInterfaceEntity, FaceCompareRsp.class);
+            String fileId = thirdPartyInterfaceEntity.getFileId();
+            FileInfoEntity fileInfoEntity = fileInfoMapper.selectById(fileId);
+            String previewUrl = null;
+            try {
+                previewUrl = minioFileHandle.getPreviewUrl(fileInfoEntity.getPath());
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+            faceCompareRsp.setUrl(previewUrl);
+            faceCompareRspList.add(faceCompareRsp);
+        }
+        return faceCompareRspList;
+    }
+}

+ 37 - 0
eladmin-system/src/main/java/me/zhengjie/dao/mybatis/entity/ThirdPartyInterfaceEntity.java

@@ -0,0 +1,37 @@
+package me.zhengjie.dao.mybatis.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.*;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@TableName("third_party_interface")
+public class ThirdPartyInterfaceEntity {
+    @TableId(value = "id",type = IdType.AUTO)
+    private Long id;
+    @TableField("business_no")
+    private String businessNo;
+    @TableField("message")
+    private String message;
+    @TableField("result")
+    private Integer result;
+    @TableField("score")
+    private String score;
+    @TableField("name")
+    private String name;
+    @TableField("id_card")
+    private String idCard;
+    @TableField("type")
+    private String type;
+    @TableField("file_id")
+    private String fileId;
+    @TableField(value = "create_time",fill = FieldFill.INSERT)
+    private Date createTime;
+}

+ 23 - 0
eladmin-system/src/main/java/me/zhengjie/dao/mybatis/mapper/ThirdPartyInterfaceMapper.java

@@ -0,0 +1,23 @@
+package me.zhengjie.dao.mybatis.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import me.zhengjie.dao.mybatis.entity.BankEntity;
+import me.zhengjie.dao.mybatis.entity.ThirdPartyInterfaceEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 第三方接口信息 接口
+ * </p>
+ *
+ * @author <a href="https://www.fengwenyi.com?code">Erwin Feng</a>
+ * @since 2022-03-28
+ */
+@Mapper
+public interface ThirdPartyInterfaceMapper extends BaseMapper<ThirdPartyInterfaceEntity> {
+
+
+}

+ 97 - 19
eladmin-system/src/main/java/me/zhengjie/domain/notary/impl/NotaryDomainImpl.java

@@ -14,8 +14,10 @@ import me.zhengjie.base.file.FileHandleVo;
 import me.zhengjie.base.file.MinioFileHandle;
 import me.zhengjie.base.util.JuheServiceUtil;
 import me.zhengjie.base.util.tencent.utils.Img2Base64Util;
+import me.zhengjie.dao.mybatis.ThirdPartyInterfaceRepository;
 import me.zhengjie.dao.mybatis.entity.FileInfoEntity;
 import me.zhengjie.dao.mybatis.entity.SysUserEntity;
+import me.zhengjie.dao.mybatis.entity.ThirdPartyInterfaceEntity;
 import me.zhengjie.dao.mybatis.entity.UserAXQInfoEntity;
 import me.zhengjie.dao.mybatis.mapper.FileInfoMapper;
 import me.zhengjie.dao.mybatis.mapper.SysUserMapper;
@@ -23,6 +25,7 @@ import me.zhengjie.dao.mybatis.mapper.UserAXQInfoMapper;
 import me.zhengjie.domain.img.CompareImageDomain;
 import me.zhengjie.domain.notary.NotaryDomain;
 import me.zhengjie.utils.RedisUtils;
+import me.zhengjie.utils.StringUtils;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
 
@@ -44,15 +47,87 @@ public class NotaryDomainImpl implements NotaryDomain {
     private final FaceMinioFileHandle minioFileHandle;
     private final FileInfoMapper fileInfoMapper;
     private final RedisUtils redis;
+
+    private final ThirdPartyInterfaceRepository thirdPartyInterfaceRepository;
+
     //以下为测试部署环境
-    private static final String APPID = "6F5JVsCCeSEbBSLSXWVwPki71yK5Y4Jf7oUjA4Y3mLtu";
-    private static final String SDKKEY = "5qKM4a9oNSXNhXdwd7Ycrvnxdw2JXjcyeccYmb4zND7S";
-    private static final String LIBPATH = "/home/tom/nt-test/lib/so";
+//    private static final String APPID = "6F5JVsCCeSEbBSLSXWVwPki71yK5Y4Jf7oUjA4Y3mLtu";
+//    private static final String SDKKEY = "5qKM4a9oNSXNhXdwd7Ycrvnxdw2JXjcyeccYmb4zND7S";
+//    private static final String LIBPATH = "/home/tom/nt-test/lib/so";
 
     //以下为本地测试
-//    private static final String APPID = "H6Er8ksqAcKc7Dk4Yum9Rkz4g9Gm77ZXAEMgvenjkTQQ";
-//    private static final String SDKKEY = "Abd9D8xZQUqG8vDtU2a1tEkdfThkK1tZppjXzydGwEd6";
-//    private static final String LIBPATH = "D:\\arcsoft_lib";
+    private static final String APPID = "H6Er8ksqAcKc7Dk4Yum9Rkz4g9Gm77ZXAEMgvenjkTQQ";
+    private static final String SDKKEY = "Abd9D8xZQUqG8vDtU2a1tEkdfThkK1tZppjXzydGwEd6";
+    private static final String LIBPATH = "D:\\arcsoft_lib";
+
+
+    /**
+     * 获取base64取消文件头
+     * @param base64
+     * @return
+     */
+    public String getBase64(String base64){
+        String[] base64s = base64.split("base64");
+        if (base64s!=null && base64s.length>1){
+            base64 = base64s[1];
+        }
+        return base64;
+    }
+
+
+
+    /**
+     * app端的人脸核身
+     * @param compareImageDomain
+     * @return
+     */
+    public ResultCode appCompareFace(CompareImageDomain compareImageDomain){
+        String base64 = compareImageDomain.getBase64();
+        if (base64==null){
+            return ResultCode.PARAM_IS_BLANK;
+        }
+        base64 = getBase64(base64);
+        String idCard = compareImageDomain.getIdCard();
+        String nickName = compareImageDomain.getName();
+        //当事人的人脸核身
+        QueryWrapper<UserAXQInfoEntity> userAXQInfoEntityQueryWrapper = new QueryWrapper<>();
+        userAXQInfoEntityQueryWrapper.eq("id_card",idCard).eq("nick_name",nickName);
+        UserAXQInfoEntity userAXQInfoEntity = userAXQInfoMapper.selectOne(userAXQInfoEntityQueryWrapper);
+        if (ObjectUtils.isEmpty(userAXQInfoEntity)){
+            return ResultCode.PARAM_IS_INVALID;
+        }
+        //做过安心签的用户 直接人脸核身 保存图片
+
+        ThirdPartyInterfaceEntity thirdPartyInterfaceEntity = JuheServiceUtil.URLPost(idCard, nickName, base64);
+        File base = null;
+        try {
+            base = File.createTempFile("compare", ".jpeg");
+            base.deleteOnExit();
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        if (!Img2Base64Util.generateImage(base64, base.getPath())) {
+            log.info("base64转图片异常");
+            return ResultCode.FACEAUTH_FAIL;
+        }
+
+        FileInfoEntity fileInfo = saveCompareImage(base);
+        fileInfoMapper.insert(fileInfo);
+        thirdPartyInterfaceEntity.setFileId(fileInfo.getId()+"");
+        if (StringUtils.isNotBlank(thirdPartyInterfaceEntity.getMessage())){
+            //没有message说明人脸核身成功
+            UserAXQInfoEntity userAxq = new UserAXQInfoEntity();
+            userAxq.setId(userAXQInfoEntity.getId());
+            userAxq.setCompareImgId(fileInfo.getId());
+            userAXQInfoMapper.updateById(userAxq);
+            log.info("当事人人脸核身通过");
+            thirdPartyInterfaceRepository.insert(thirdPartyInterfaceEntity);
+            return ResultCode.SUCCESS;
+        }
+        thirdPartyInterfaceRepository.insert(thirdPartyInterfaceEntity);
+        return ResultCode.LIVE_VIDEO_INVALID;
+    }
+
 
     /**
      * 照片比对
@@ -65,10 +140,7 @@ public class NotaryDomainImpl implements NotaryDomain {
         if (base64==null){
             return ResultCode.PARAM_IS_BLANK;
         }
-        String[] base64s = base64.split("base64");
-        if (base64s!=null && base64s.length>1){
-            base64 = base64s[1];
-        }
+        base64 = getBase64(base64);
         //先判断是银行客户经理还是当事人
         String roleId = compareImageDomain.getRoleId();
         SysUserEntity sysUserEntity = null;
@@ -100,7 +172,7 @@ public class NotaryDomainImpl implements NotaryDomain {
         //将base64转成图片
         File base = null;
         try {
-            base = File.createTempFile("compare", ".JPEG");
+            base = File.createTempFile("compare", ".jpeg");
             base.deleteOnExit();
         } catch (IOException e) {
             throw new RuntimeException(e);
@@ -109,44 +181,50 @@ public class NotaryDomainImpl implements NotaryDomain {
             log.info("base64转图片异常");
             return ResultCode.FACEAUTH_FAIL;
         }
+        FileInfoEntity fileInfo = saveCompareImage(base);
+        fileInfoMapper.insert(fileInfo);
+
         boolean redisFlag = (count != null && count >= 2);
         if (flag) {
             //说明是客户经理
             if (sysUserEntity.getCompareImgId() == null || redisFlag) {
                 //说明客户经理需要做人脸核身
-                System.err.println(idCard+nickName);
-                if (JuheServiceUtil.URLPost(idCard, nickName, base64)) {
+                ThirdPartyInterfaceEntity thirdPartyInterfaceEntity = JuheServiceUtil.URLPost(idCard, nickName, base64);
+                thirdPartyInterfaceEntity.setFileId(fileInfo.getId()+"");
+                if (StringUtils.isNotBlank(thirdPartyInterfaceEntity.getMessage())){
                     //上传图片到minio FileInfo
-                    FileInfoEntity fileInfo = saveCompareImage(base);
-                    fileInfoMapper.insert(fileInfo);
                     SysUserEntity bank = new SysUserEntity();
                     bank.setUserId(sysUserEntity.getUserId());
                     bank.setCompareImgId(fileInfo.getId());
                     userMapper.updateById(bank);
                     log.info("银行客户经理人脸核身通过");
                     redis.del(redisCount);
+                    thirdPartyInterfaceRepository.insert(thirdPartyInterfaceEntity);
                     return ResultCode.SUCCESS;
                 }
                 log.info("客户经理人脸核身失败");
+                thirdPartyInterfaceRepository.insert(thirdPartyInterfaceEntity);
                 return ResultCode.LIVE_VIDEO_INVALID;
             }
         } else {
             //说明是当事人
             if (userAXQInfoEntity.getCompareImgId() == null || redisFlag) {
                 //说明当事人需要做人脸核身
-                if (JuheServiceUtil.URLPost(idCard, nickName, base64)) {
+                ThirdPartyInterfaceEntity thirdPartyInterfaceEntity = JuheServiceUtil.URLPost(idCard, nickName, base64);
+                thirdPartyInterfaceEntity.setFileId(fileInfo.getId()+"");
+                if (thirdPartyInterfaceEntity.getResult()==1){
                     //上传图片到minio FileInfo
-                    FileInfoEntity fileInfo = saveCompareImage(base);
-                    fileInfoMapper.insert(fileInfo);
                     UserAXQInfoEntity userAxq = new UserAXQInfoEntity();
                     userAxq.setId(userAXQInfoEntity.getId());
                     userAxq.setCompareImgId(fileInfo.getId());
                     userAXQInfoMapper.updateById(userAxq);
                     log.info("当事人人脸核身通过");
                     redis.del(redisCount);
+                    thirdPartyInterfaceRepository.insert(thirdPartyInterfaceEntity);
                     return ResultCode.SUCCESS;
                 }
                 log.info("当事人人脸核身失败");
+                thirdPartyInterfaceRepository.insert(thirdPartyInterfaceEntity);
                 return ResultCode.LIVE_VIDEO_INVALID;
             }
         }
@@ -277,7 +355,7 @@ public class NotaryDomainImpl implements NotaryDomain {
         FileHandleVo fileHandleVo = new FileHandleVo();
         fileHandleVo.setFilePath(base.getPath());
         fileHandleVo.setSourceFilePath("/face/" + base.getName());
-        fileHandleVo.setContentType("JPEG");
+        fileHandleVo.setContentType("image/jpeg");
         try {
             minioFileHandle.uploadfilePath(fileHandleVo);
         } catch (Exception e) {

+ 5 - 0
eladmin-system/src/main/resources/mapper/ThirdPartyInterfaceMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="me.zhengjie.dao.mybatis.mapper.ThirdPartyInterfaceMapper">
+
+</mapper>