|
@@ -2,6 +2,7 @@ package com.qunzhixinxi.hnqz.admin.service.gig.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -23,6 +24,7 @@ import com.qunzhixinxi.hnqz.admin.entity.vo.SysUserSubVO;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.GigCallBackStatus;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.GigChannelEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
|
|
|
+import com.qunzhixinxi.hnqz.admin.enums.LockEnum;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.MemberIDCardType;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.MemberType;
|
|
|
import com.qunzhixinxi.hnqz.admin.enums.OladingCertStatus;
|
|
@@ -49,7 +51,10 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -320,6 +325,9 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
|
|
|
if (CollUtil.isNotEmpty(userSubList)) {
|
|
|
// 封装请求数据
|
|
|
userSubList.stream().filter(sysUserSub -> {
|
|
|
+ if (GigCallBackStatus.IN_PROGRESS.equals(sysUserSub.getCallbackStatus())) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
// 过滤掉认证成功的数据
|
|
|
if (GigTypeEnum.TAX_HELPOR.equals(sysUserSub.getGigType())
|
|
|
&& TaxHelperCertStatus.CHECKED_UNBIND.getCode() != sysUserSub.getCertStatus()
|
|
@@ -329,7 +337,7 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
|
|
|
&& !YeeCertStatus.SIGNED.getCode().equals(String.valueOf(sysUserSub.getCertStatus()))) {
|
|
|
return true;
|
|
|
} else if (GigTypeEnum.OLADING.equals(sysUserSub.getGigType())
|
|
|
- /*&& !YeeCertStatus.SIGNED.getCode().equals(String.valueOf(sysUserSub.getCertStatus()))*/) {
|
|
|
+ && !OladingCertStatus.CERT.getCode().equals(String.valueOf(sysUserSub.getCertStatus()))) {
|
|
|
return true;
|
|
|
} else if (GigTypeEnum.REN_LI_JIA.equals(sysUserSub.getGigType())
|
|
|
&& RenlijiaCertStatus.CER_STATUS_1.getCode() != sysUserSub.getCertStatus()) {
|
|
@@ -337,6 +345,11 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
|
|
|
}
|
|
|
return false;
|
|
|
}).forEach(userSub -> {
|
|
|
+ // 发起前置判断
|
|
|
+ boolean preSignCert = preSignCert(sysUser, userSub);
|
|
|
+ if (!preSignCert) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
// 请求流水号
|
|
|
String requestId = RandomStringUtils.randomAlphabetic(16);
|
|
|
// 封装请求参数
|
|
@@ -358,6 +371,57 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 签约认证前的前置判断
|
|
|
+ *
|
|
|
+ * @param sysUser
|
|
|
+ * @param userSub
|
|
|
+ */
|
|
|
+ private boolean preSignCert(SysUser sysUser, SysUserSub userSub) {
|
|
|
+ boolean flag = true;
|
|
|
+ switch (userSub.getGigType()) {
|
|
|
+ case OLADING:
|
|
|
+ // 如果存在相同身份证信息的用户,并且是签约或认证过,则不发起,直接返回签约认证状态
|
|
|
+ List<SysUser> existUserList = sysUserService.list(Wrappers.<SysUser>lambdaQuery()
|
|
|
+ .eq(SysUser::getRealname, sysUser.getRealname())
|
|
|
+ .eq(SysUser::getIdCardNumber, sysUser.getIdCardNumber())
|
|
|
+ .eq(SysUser::getLockFlag, LockEnum.UN_LOCK.val())
|
|
|
+ .ne(SysUser::getUserId, sysUser.getUserId()));
|
|
|
+ if (CollUtil.isNotEmpty(existUserList)) {
|
|
|
+ List<Integer> existUserIdList = existUserList.stream()
|
|
|
+ .map(SysUser::getUserId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<SysUserSub> existUserSubList = sysUserSubService.list(Wrappers.<SysUserSub>lambdaQuery()
|
|
|
+ .in(SysUserSub::getUserId, existUserIdList)
|
|
|
+ .in(SysUserSub::getCertStatus, Integer.valueOf(OladingCertStatus.CERT.getCode()),
|
|
|
+ Integer.valueOf(OladingCertStatus.SIGNED.getCode()))
|
|
|
+ .eq(SysUserSub::getCallbackStatus, GigCallBackStatus.RETURNED)
|
|
|
+ .eq(SysUserSub::getGigType, GigTypeEnum.OLADING));
|
|
|
+ if (CollUtil.isNotEmpty(existUserSubList)) {
|
|
|
+ flag = false;
|
|
|
+ SysUserSub existUserSub = existUserSubList.get(0);
|
|
|
+ // 更新状态
|
|
|
+ SysUserSub updateUserSub = new SysUserSub();
|
|
|
+ updateUserSub.setId(userSub.getId());
|
|
|
+ updateUserSub.setCertStatus(existUserSub.getCertStatus());
|
|
|
+ updateUserSub.setCallbackStatus(GigCallBackStatus.RETURNED);
|
|
|
+ sysUserSubService.updateById(updateUserSub);
|
|
|
+ // 结果放到redis
|
|
|
+ String key = CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + userSub.getUserId();
|
|
|
+ Map<String, String> subMap = new HashMap<>();
|
|
|
+ subMap.put("certStatus", OladingCertStatus.resolve(String.valueOf(existUserSub.getCertStatus())).name());
|
|
|
+ Map<String, Object> result = MapUtil.newHashMap(1);
|
|
|
+ result.put("OLADING", subMap);
|
|
|
+ redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(result), 1, TimeUnit.MINUTES);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ }
|
|
|
+
|
|
|
+ return flag;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 封装签约认证的请求参数
|
|
|
*
|