Pārlūkot izejas kodu

Merge branch 'hotfix-20220823-eidresultduplicatedata' into temp-pre

# Conflicts:
#	hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java
lixuesong 2 gadi atpakaļ
vecāks
revīzija
d831a76742

+ 5 - 0
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/constant/CacheConstants.java

@@ -120,4 +120,9 @@ public interface CacheConstants {
 	 */
 	String OLADING_CERT_SEND_CHANNEL = "OLADING:CERT:SEND:CHANNEL:";
 
+	/**
+	 * E证通获取认证结果key
+	 */
+	String EID_RESULT_KEY = "EID:RESULT:KEY:";
+
 }

+ 4 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/config/UpmsConfig.java

@@ -48,5 +48,9 @@ public class UpmsConfig {
 
 	private Map<Integer, Long> custMeetingTimes;
 
+	/**
+	 * 端类型
+	 */
+	private String endType;
 
 }

+ 12 - 15
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -3999,12 +3999,13 @@ public class ApiController {
 	@GetMapping(value = "/eid")
 	public R<?> getEidToken(@RequestParam(value = "idCard") String idCard,
 							@RequestParam(value = "realName") String realName,
-							@RequestParam(value = "endType") String endType) {
+							@RequestParam(value = "endType", required = false) String endType){
 
+		endType = upmsConfig.getEndType();
 
 		String tokenUrl = upmsConfig.getGigServiceUrl() + "/gig/operation/eid?idCard={idCard}&realName={realName}&endType={endType}";
 
-		ResponseEntity<String> tokenResult = new RestTemplate().getForEntity(tokenUrl, String.class, idCard, realName, endType);
+		ResponseEntity<String> tokenResult = new RestTemplate().getForEntity(tokenUrl, String.class, idCard,realName, endType);
 
 		log.info("获取e-token:{}", tokenResult.getBody());
 
@@ -4024,8 +4025,9 @@ public class ApiController {
 	 */
 	@GetMapping(value = "/eid/result")
 	public R<?> getEidResult(@RequestParam(value = "token") String token,
-							 @RequestParam(value = "endType") String endType) {
+							 @RequestParam(value = "endType") String endType){
 
+		endType = upmsConfig.getEndType();
 
 		String tokenUrl = upmsConfig.getGigServiceUrl() + "/gig/operation/eid/result?token={token}&endType={endType}";
 
@@ -4039,18 +4041,13 @@ public class ApiController {
 			cn.hutool.json.JSONObject data = jsonObject.getJSONObject("data");
 			if (data != null) {
 				if (CommonConstants.SUCCESS.equals(data.getInt("compareCode"))) {
-					// 认证成功,则保存
-					SysUserExtRecord userExtRecord = new SysUserExtRecord();
-					userExtRecord.setRealName(data.getStr("realName"));
-					userExtRecord.setIdCardNumber(data.getStr("idCard"));
-					userExtRecord.setBestFrameBase64(data.getStr("bestFrameBase64"));
-					userExtRecord.setBestFrameUrl(data.getStr("bestFrameUrl"));
-					userExtRecord.setIdCardFrontBase64(data.getStr("idCardFrontBase64"));
-					userExtRecord.setIdCardBackBase64(data.getStr("idCardBackBase64"));
-					userExtRecord.setIdCardFrontUrl(data.getStr("idCardFrontUrl"));
-					userExtRecord.setIdCardBackUrl(data.getStr("idCardBackUrl"));
-					userExtRecord.setEtoken(data.getStr("etoken"));
-					sysUserExtRecordService.saveUserExtRecord(userExtRecord);
+
+					Boolean absent = redisTemplate.opsForValue()
+							.setIfAbsent(CacheConstants.EID_RESULT_KEY + token, tokenResult.getBody(), 30, TimeUnit.SECONDS);
+					if (absent) {
+						// 认证成功,则保存
+						sysUserExtRecordService.eidResultHandler(data);
+					}
 				}
 			}
 		}

+ 8 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/SysUserExtRecordService.java

@@ -1,5 +1,6 @@
 package com.qunzhixinxi.hnqz.admin.service;
 
+import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qunzhixinxi.hnqz.admin.entity.SysUserExtRecord;
@@ -25,4 +26,11 @@ public interface SysUserExtRecordService extends IService<SysUserExtRecord> {
 	 * @return
 	 */
 	boolean existUserExtRecord();
+
+	/**
+	 * 保存E证通认证结果
+	 *
+	 * @param data
+	 */
+	void eidResultHandler(JSONObject data);
 }

+ 25 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysUserExtRecordServiceImpl.java

@@ -1,15 +1,16 @@
 package com.qunzhixinxi.hnqz.admin.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qunzhixinxi.hnqz.admin.entity.SysUserExtRecord;
 import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 import com.qunzhixinxi.hnqz.admin.mapper.SysUserExtRecordMapper;
 import com.qunzhixinxi.hnqz.admin.service.SysUserExtRecordService;
-import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.security.service.HnqzUser;
 import com.qunzhixinxi.hnqz.common.security.util.SecurityUtils;
+import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -19,6 +20,7 @@ import java.time.LocalDateTime;
  * 用户认证相关的扩展信息服务
  */
 @Service
+@AllArgsConstructor
 public class SysUserExtRecordServiceImpl extends ServiceImpl<SysUserExtRecordMapper, SysUserExtRecord>
 		implements SysUserExtRecordService {
 
@@ -61,4 +63,26 @@ public class SysUserExtRecordServiceImpl extends ServiceImpl<SysUserExtRecordMap
 		return count > 0;
 	}
 
+	/**
+	 * 保存E证通认证结果
+	 *
+	 * @param data
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void eidResultHandler(JSONObject data) {
+		// 认证成功,则保存
+		SysUserExtRecord userExtRecord = new SysUserExtRecord();
+		userExtRecord.setRealName(data.getStr("realName"));
+		userExtRecord.setIdCardNumber(data.getStr("idCard"));
+		userExtRecord.setBestFrameBase64(data.getStr("bestFrameBase64"));
+		userExtRecord.setBestFrameUrl(data.getStr("bestFrameUrl"));
+		userExtRecord.setIdCardFrontBase64(data.getStr("idCardFrontBase64"));
+		userExtRecord.setIdCardBackBase64(data.getStr("idCardBackBase64"));
+		userExtRecord.setIdCardFrontUrl(data.getStr("idCardFrontUrl"));
+		userExtRecord.setIdCardBackUrl(data.getStr("idCardBackUrl"));
+		userExtRecord.setEtoken(data.getStr("etoken"));
+		this.saveUserExtRecord(userExtRecord);
+	}
+
 }