From 931ea9dcdf62ea348f1811b9faf95d07ab1c1ac8 Mon Sep 17 00:00:00 2001
From: 罗元桥 <2376770955@qq.com>
Date: 星期日, 26 九月 2021 14:22:22 +0800
Subject: [PATCH] Merge branch 'test' into 'test_bak'

---
 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/IdentityAuthApi.java |  206 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 206 insertions(+), 0 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/IdentityAuthApi.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/IdentityAuthApi.java
new file mode 100644
index 0000000..bef5581
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/IdentityAuthApi.java
@@ -0,0 +1,206 @@
+package com.panzhihua.service_community.api;
+
+import static com.panzhihua.common.enums.IdentityAuthMethodEnum.FACE_AUTH;
+import static com.panzhihua.common.enums.IdentityAuthTypeEnum.ELDER_AUTH;
+import static com.panzhihua.common.enums.IdentityAuthTypeEnum.PENSION_AUTH;
+import static java.util.Objects.nonNull;
+import static org.apache.commons.lang3.StringUtils.isBlank;
+
+import javax.annotation.Resource;
+
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.panzhihua.common.model.dtos.community.AddIdentityAuthDTO;
+import com.panzhihua.common.model.dtos.community.GetIdentityEidTokenDTO;
+import com.panzhihua.common.model.dtos.community.PageIdentityAuthRecordDTO;
+import com.panzhihua.common.model.helper.AESUtil;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.SysConfVO;
+import com.panzhihua.common.utlis.TencentUtils;
+import com.panzhihua.service_community.dao.ComElderAuthElderliesDAO;
+import com.panzhihua.service_community.dao.ComPensionAuthPensionerDAO;
+import com.panzhihua.service_community.dao.SysConfMapper;
+import com.panzhihua.service_community.model.dos.ComElderAuthElderliesDO;
+import com.panzhihua.service_community.model.dos.ComPensionAuthPensionerDO;
+import com.panzhihua.service_community.model.dos.SysConfDO;
+import com.panzhihua.service_community.service.ComElderAuthRecordsService;
+import com.panzhihua.service_community.service.ComPensionAuthRecordService;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @title: IdentityAuthApi
+ * @projectName: 成都呐喊信息技术有限公司-智慧社区项目
+ * @description: 身份认证相关api
+ * @author: hans
+ * @date: 2021/09/01 18:06
+ */
+@Slf4j
+@RestController
+@RequestMapping("/identity-auth")
+public class IdentityAuthApi {
+
+    private static final String ELDER_AUTH_TYPE_PREFIX = "ELDER_AUTH_TYPE_";
+    private static final String PENSION_AUTH_TYPE_PREFIX = "PENSION_AUTH_TYPE_";
+
+    @Resource
+    private ComElderAuthRecordsService comElderAuthRecordsService;
+    @Resource
+    private ComPensionAuthRecordService comPensionAuthRecordService;
+    @Resource
+    private SysConfMapper sysConfDao;
+    @Resource
+    private ComElderAuthElderliesDAO comElderAuthElderliesDAO;
+    @Resource
+    private ComPensionAuthPensionerDAO comPensionAuthPensionerDAO;
+
+    @Value("${domain.aesKey:}")
+    private String aesKey;
+
+    /**
+     * 新增身份认证
+     * @param addIdentityAuthDTO 新增身份认证请求参数
+     * @return 新增结果
+     */
+    @PostMapping("/add")
+    public R addIdentityAuth(@RequestBody AddIdentityAuthDTO addIdentityAuthDTO) {
+        String eidToken = addIdentityAuthDTO.getEidToken();
+        boolean isEidTokenBlank = isBlank(eidToken);
+        if (!Boolean.logicalXor(isEidTokenBlank, isBlank(addIdentityAuthDTO.getAuthVideo()))) {
+            return R.fail("缺少认证参数");
+        }
+        if (!isEidTokenBlank) {
+            String result = TencentUtils.getEidResult(eidToken);
+            JSONObject object = JSON.parseObject(result);
+            if (object == null) {
+                return R.fail("人脸信息与所填信息不符,请检查所填写信息");
+            }
+            JSONObject textObject = object.getJSONObject("Text");
+            String code = textObject.getString("ErrCode");
+            if (!code.equals("0")) {
+                log.error("人脸核验失败,错误原因:" + textObject.toJSONString());
+                return R.fail("人脸信息与所填信息不符,请检查所填写信息");
+            }
+            addIdentityAuthDTO.setAuthMethod(FACE_AUTH.getMethod());
+            addIdentityAuthDTO.setVerificationResult(object.toJSONString());
+        }
+        int authType = addIdentityAuthDTO.getAuthType().intValue();
+        if (authType == ELDER_AUTH.getType()) {
+            return comElderAuthRecordsService.addElderAuth(addIdentityAuthDTO);
+        } else if (authType == PENSION_AUTH.getType()) {
+            return comPensionAuthRecordService.addPensionAuth(addIdentityAuthDTO);
+        } else {
+            return R.fail("请核对需要认证的类型");
+        }
+    }
+
+    /**
+     * 分页查询身份认证记录
+     * @param pageIdentityAuthRecordDTO 分页查询身份认证记录参数
+     * @return 身份认证记录列表
+     */
+    @PostMapping("/record/page")
+    public R queryRecordWithPage(@RequestBody PageIdentityAuthRecordDTO pageIdentityAuthRecordDTO) {
+        int authType = pageIdentityAuthRecordDTO.getAuthType().intValue();
+        if (authType == ELDER_AUTH.getType()) {
+            return comElderAuthRecordsService.queryRecordWithPage(pageIdentityAuthRecordDTO);
+        } else if (authType == PENSION_AUTH.getType()) {
+            return comPensionAuthRecordService.queryRecordWithPage(pageIdentityAuthRecordDTO);
+        } else {
+            return R.fail("请核对需要查询的身份认证类型");
+        }
+    }
+
+    /**
+     * 获取身份认证详情
+     * @param authType 认证类型
+     * @param identityAuthId 认证id
+     * @return 认证记录详情
+     */
+    @GetMapping("/detail")
+    public R retrieveIdentityAuthDetail(@RequestParam("authType") Integer authType,
+                                        @RequestParam("identityAuthId") Long identityAuthId) {
+        if (authType.intValue() == ELDER_AUTH.getType()) {
+            return comElderAuthRecordsService.retrieveElderAuthDetail(identityAuthId);
+        } else if (authType.intValue() == PENSION_AUTH.getType()) {
+            return comPensionAuthRecordService.retrievePensionAuthDetail(identityAuthId);
+        } else {
+            return R.fail("请核对认证类型");
+        }
+    }
+
+    /**
+     * 获取身份认证方式
+     * @param communityId
+     * @param identityAuthType
+     * @return 认证方式
+     */
+    @GetMapping("/mode")
+    public R getIdentityAuthMode(@RequestParam(value = "communityId") Long communityId,
+                                 @RequestParam(value = "identityAuthType") Integer identityAuthType) {
+        String identityCode;
+        if (identityAuthType.intValue() == ELDER_AUTH.getType()) {
+            //高龄认证
+            identityCode = ELDER_AUTH_TYPE_PREFIX + communityId;
+        } else if (identityAuthType.intValue() == PENSION_AUTH.getType()) {
+            //养老认证
+            identityCode = PENSION_AUTH_TYPE_PREFIX + communityId;
+        } else {
+            return R.fail("身份认证类型错误");
+        }
+        SysConfDO sysConfDO = sysConfDao.selectOne(new QueryWrapper<SysConfDO>()
+                .lambda().eq(SysConfDO::getCode, identityCode).eq(SysConfDO::getCommunityId, communityId));
+        if (nonNull(sysConfDO)) {
+            SysConfVO sysConfVO = new SysConfVO();
+            BeanUtils.copyProperties(sysConfDO, sysConfVO);
+            return R.ok(sysConfVO.getValue());
+        }
+        return R.fail("获取失败!");
+    }
+
+    /**
+     * 获取身份认证人脸核验token
+     * @param getIdentityEidTokenDTO
+     * @return token
+     */
+    @PostMapping("/getEidToken")
+    public R getEidToken(@RequestBody GetIdentityEidTokenDTO getIdentityEidTokenDTO) {
+        int isExist;
+        String idCard;
+        try {
+            idCard = AESUtil.encrypt128(getIdentityEidTokenDTO.getIdCard(), aesKey);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("加密失败【{}】", e.getMessage());
+            return R.fail("认证失败,请重新尝试");
+        }
+        if (getIdentityEidTokenDTO.getAuthType().intValue() == ELDER_AUTH.getType()) {
+            //高龄认证
+            isExist = comElderAuthElderliesDAO.selectCount(new QueryWrapper<ComElderAuthElderliesDO>()
+                    .lambda().eq(ComElderAuthElderliesDO::getName, getIdentityEidTokenDTO.getName())
+                    .eq(ComElderAuthElderliesDO::getIdCard, idCard));
+        } else if (getIdentityEidTokenDTO.getAuthType().intValue() == PENSION_AUTH.getType()) {
+            //养老认证
+            isExist = comPensionAuthPensionerDAO.selectCount(new QueryWrapper<ComPensionAuthPensionerDO>()
+                    .lambda().eq(ComPensionAuthPensionerDO::getName, getIdentityEidTokenDTO.getName())
+                    .eq(ComPensionAuthPensionerDO::getIdCard, idCard));
+        } else {
+            return R.fail("请核对身份认证类型");
+        }
+        if (isExist <= 0) {
+            return R.fail("该人员未在社区报道无法认证");
+        }
+        // 获取EidToken
+        return R.ok(TencentUtils.getEidToken(getIdentityEidTokenDTO.getName(), getIdentityEidTokenDTO.getIdCard()));
+    }
+}

--
Gitblit v1.7.1