|
@@ -153,6 +153,9 @@ public class GigSignCertReceiver extends BaseRabbiMqHandler<String> {
|
|
|
case YI_MA:
|
|
|
this.zhengQiZhiXingHandler(user, dept, subjectResult, GigTypeEnum.YI_MA);
|
|
|
break;
|
|
|
+ case HE_CHUANG:
|
|
|
+ this.heChuangHandler(user, dept, subjectResult);
|
|
|
+ break;
|
|
|
default:
|
|
|
}
|
|
|
});
|
|
@@ -565,6 +568,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回调结果,实际业务处理放到阿拉丁直接回调接口里了)
|
|
|
*
|