|
@@ -121,7 +121,7 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
|
|
|
this.taxHelperHandler(user, dept, subjectResult);
|
|
|
break;
|
|
|
case REN_LI_JIA:
|
|
|
- // TODO
|
|
|
+ // 无需处理
|
|
|
break;
|
|
|
case OLADING:
|
|
|
this.oladingHandler(user, dept, subjectResult);
|
|
@@ -153,6 +153,11 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
|
|
|
case YI_MA:
|
|
|
this.zhengQiZhiXingHandler(user, dept, subjectResult, GigTypeEnum.YI_MA);
|
|
|
break;
|
|
|
+ case XIN_SHI_YI:
|
|
|
+ this.xinShiYiHandler(user, dept, subjectResult);
|
|
|
+ case HE_CHUANG:
|
|
|
+ this.heChuangHandler(user, dept, subjectResult);
|
|
|
+ break;
|
|
|
default:
|
|
|
}
|
|
|
});
|
|
@@ -169,6 +174,49 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 众蚁云结果处理
|
|
|
+ *
|
|
|
+ * @param user 用户
|
|
|
+ * @param dept 部门
|
|
|
+ * @param subjectResult 结果
|
|
|
+ */
|
|
|
+ private void xinShiYiHandler(SysUser user, SysDept dept, JSONObject subjectResult) {
|
|
|
+ String code = subjectResult.getStr("code");
|
|
|
+ String certStatus = subjectResult.getStr("certStatus");
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ XinShiYiCertStatus certStatusEnum = Enum.valueOf(XinShiYiCertStatus.class, certStatus);
|
|
|
+
|
|
|
+ // 拼接更新条件
|
|
|
+ LambdaUpdateWrapper<SysUserSub> updateWrapper = Wrappers.<SysUserSub>lambdaUpdate()
|
|
|
+ .eq(SysUserSub::getUserId, user.getUserId())
|
|
|
+ .eq(SysUserSub::getDeptId, dept.getDeptId())
|
|
|
+ .eq(SysUserSub::getSubjectLocation, SubjectLocation.XIN_SHI_YI)
|
|
|
+ .eq(SysUserSub::getGigType, GigTypeEnum.XIN_SHI_YI)
|
|
|
+ .set(SysUserSub::getUpdateTime, now)
|
|
|
+ .set(SysUserSub::getUpdateUser, 0)
|
|
|
+ .set(SysUserSub::getCertRemark, JSONUtil.toJsonStr(subjectResult));
|
|
|
+
|
|
|
+ if (XinShiYiCertStatus.SIGN.equals(certStatusEnum)) {
|
|
|
+ // 已签约 即对应这里的已认证
|
|
|
+ updateWrapper.set(SysUserSub::getCertStatus, XinShiYiCertStatus.CERT.getCode());
|
|
|
+ updateWrapper.set(SysUserSub::getCallbackStatus, GigCallBackStatus.RETURNED);
|
|
|
+ } else {
|
|
|
+ updateWrapper.set(SysUserSub::getCertStatus, certStatusEnum.getCode());
|
|
|
+ }
|
|
|
+
|
|
|
+ sysUserSubService.update(updateWrapper);
|
|
|
+
|
|
|
+ // 结果放到redis
|
|
|
+ Map<String, Map<String, String>> resultMap = new HashMap<>(1);
|
|
|
+ Map<String, String> subMap = new HashMap<>(1);
|
|
|
+ subMap.put("certStatus", certStatus);
|
|
|
+ resultMap.put(SubjectLocation.XIN_SHI_YI.getType(), subMap);
|
|
|
+ String key = CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + user.getUserId();
|
|
|
+ log.info("缓存认证结果到redis:{}", JSONUtil.toJsonStr(resultMap));
|
|
|
+ redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(resultMap), 1, TimeUnit.MINUTES);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 福建企赋结果处理
|
|
|
*
|
|
@@ -565,6 +613,55 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
|
|
|
sysUserSubService.update(updateWrapper);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 合创众盈数据处理(这里只保存mq回调结果,实际业务处理放到阿拉丁直接回调接口里了)
|
|
|
+ *
|
|
|
+ * @param user
|
|
|
+ * @param dept
|
|
|
+ * @param subjectResult
|
|
|
+ */
|
|
|
+ private void heChuangHandler(SysUser user, SysDept dept, JSONObject subjectResult) {
|
|
|
+
|
|
|
+ // 查询redis是否有同时发起的标记
|
|
|
+ String oladingRedisKey = CacheConstants.HE_CHUANG_CERT_SEND_CHANNEL + user.getUserId();
|
|
|
+ String gigTypeJson = (String) redisTemplate.opsForValue().get(oladingRedisKey);
|
|
|
+ if (JSONUtil.isJsonArray(gigTypeJson)) {
|
|
|
+ log.info("redis同时发起的标记:key={}, value={}", oladingRedisKey, gigTypeJson);
|
|
|
+ }
|
|
|
+
|
|
|
+ JSONArray gigTypeArray = JSONUtil.parseArray(gigTypeJson);
|
|
|
+
|
|
|
+ // 根据选择的渠道,分别更新并查询认证状态
|
|
|
+ Map<String, Map<String, String>> certResultMap = new LinkedHashMap<>(3);
|
|
|
+ gigTypeArray.forEach(o -> certResultMap.put(String.valueOf(o),
|
|
|
+ this.oladingChannelHandler(user, dept, subjectResult, Enum.valueOf(SubjectLocation.class, String.valueOf(o)))));
|
|
|
+
|
|
|
+ // 结果放到redis
|
|
|
+ Map<String, Map<String, String>> resultMap = new HashMap<>(3);
|
|
|
+ if (gigTypeArray.size() > 1) {
|
|
|
+ // 同时发起的情况,且是前一个渠道(按照redis存的渠道顺序发送)的状态已返回,则刷新状态到redis
|
|
|
+ List<SubjectLocation> subjectLocationList = gigTypeArray.stream()
|
|
|
+ .map(o -> Enum.valueOf(SubjectLocation.class, String.valueOf(o)))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<SysUserSub> subList = sysUserSubService.list(Wrappers.<SysUserSub>lambdaQuery()
|
|
|
+ .eq(SysUserSub::getUserId, user.getUserId())
|
|
|
+ .eq(SysUserSub::getDeptId, dept.getDeptId())
|
|
|
+ .in(SysUserSub::getSubjectLocation, subjectLocationList));
|
|
|
+ Map<String, Map<String, String>> dbResultMap = subList.stream()
|
|
|
+ .collect(Collectors.toMap(sysUserSub -> sysUserSub.getSubjectLocation().name(),
|
|
|
+ sysUserSub -> MapUtil.builder("certStatus",
|
|
|
+ OladingCertStatus.resolve(String.valueOf(sysUserSub.getCertStatus())).name()).build()));
|
|
|
+ resultMap.putAll(dbResultMap);
|
|
|
+ } else {
|
|
|
+ // 只有一个渠道的情况
|
|
|
+ resultMap.putAll(certResultMap);
|
|
|
+ }
|
|
|
+ String key = CacheConstants.USER_SIGN_CERT_RESPONSE_KEY + user.getUserId();
|
|
|
+ log.info("缓存认证结果到redis:{}", JSONUtil.toJsonStr(resultMap));
|
|
|
+ redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(resultMap), 1, TimeUnit.MINUTES);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 自由职家数据处理(这里只保存mq回调结果,实际业务处理放到阿拉丁直接回调接口里了)
|
|
|
*
|