Pārlūkot izejas kodu

feat: 新增税源地1.合创众盈-天津中智;2.合创众盈-福州人才云

lixuesong 1 gadu atpakaļ
vecāks
revīzija
f91b37ff6f

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

@@ -172,6 +172,11 @@ public interface CacheConstants {
 	 */
 	String OLADING_CERT_SEND_CHANNEL = "OLADING:CERT:SEND:CHANNEL:";
 
+	/**
+	 * 发起合创众盈认证渠道记录key
+	 */
+	String HE_CHUANG_CERT_SEND_CHANNEL = "HE:CHUANG:CERT:SEND:CHANNEL:";
+
 	/**
 	 * E证通获取认证结果key
 	 */

+ 12 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysUserSignCertController.java

@@ -316,6 +316,18 @@ public class SysUserSignCertController {
 			redisTemplate.opsForValue().set(redisKey, JSONUtil.toJsonStr(sortedList), 24, TimeUnit.HOURS);
 		}
 
+		// 过滤出阿拉钉的渠道
+		Collection<SubjectLocation> hechuangList =
+				CollUtil.intersection(CollUtil.toList(userSignCertDTO.getSubjectLocation()), SubjectLocation.getByGigType(GigTypeEnum.HE_CHUANG));
+		if (!oladingList.isEmpty()) {
+			List<SubjectLocation> sortedList = oladingList.stream()
+					.sorted(Comparator.comparing(SubjectLocation::getSort))
+					.collect(Collectors.toList());
+			// 选择的渠道的阿拉钉的部分记录到redis
+			String redisKey = CacheConstants.HE_CHUANG_CERT_SEND_CHANNEL + userSignCertDTO.getUserId();
+			redisTemplate.opsForValue().set(redisKey, JSONUtil.toJsonStr(sortedList), 24, TimeUnit.HOURS);
+		}
+
 		sysUserSignCertService.batchChannelCert(userSignCertDTO);
 
 		return R.ok();

+ 4 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/GigTypeEnum.java

@@ -29,8 +29,12 @@ public enum GigTypeEnum {
 	SHEN_ZHEN_REN_CAI(10, "深圳人才", "深圳人才", OladingCertStatus.class),
 	YI_MA(11, "易马财税", "易马财税", ZhengQiZhiXingCertStatus.class),
 
+	HE_CHUANG(13, "合创众盈", "合创众盈", OladingCertStatus.class),
 	MAH_SETTLE(99, "MAH结算", "MAH结算", null);
 
+	/**
+	 * 对应原有subjectType值
+	 */
 	@EnumValue
 	private int code;
 

+ 4 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/SubjectLocation.java

@@ -55,6 +55,10 @@ public enum SubjectLocation {
 	YI_MA("YI_MA",  GigTypeEnum.YI_MA, "易马财税", 16, "yi_ma_invoice"),
 
 
+	// 合创众盈
+	HE_CHUANG_ZHONG_ZHI("HE_CHUANG_ZHONG_ZHI", GigTypeEnum.HE_CHUANG, "合创众盈-天津中智", 18, "hechuang_zhongzhi_invoice"),
+	HE_CHUANG_REN_CAI_YUN("HE_CHUANG_REN_CAI_YUN", GigTypeEnum.HE_CHUANG, "合创众盈-福州人才云", 19, "hechuang_rencaiyun_invoice"),
+
 	MAH_SETTLE("MAH_SETTLE", GigTypeEnum.MAH_SETTLE, "MAH结算", 99, "");
 
 	/**

+ 52 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mq/GigSignCertReceiver.java

@@ -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回调结果,实际业务处理放到阿拉丁直接回调接口里了)
 	 *

+ 3 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/impl/SysUserSignCertServiceImpl.java

@@ -349,6 +349,7 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				}
 			case OLADING:
 			case SHEN_ZHEN_REN_CAI:
+			case HE_CHUANG:
 				// 自由职家
 				if (OladingCertStatus.SIGNED.getCode().equals(String.valueOf(userSub.getCertStatus()))
 						|| OladingCertStatus.SIGNING.getCode().equals(String.valueOf(userSub.getCertStatus()))
@@ -680,6 +681,8 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 					return true;
 				} else if (GigTypeEnum.YI_MA.equals(sysUserSub.getGigType())) {
 					return true;
+				} else if (GigTypeEnum.HE_CHUANG.equals(sysUserSub.getGigType())) {
+					return true;
 				}
 				return false;
 			}).forEach(userSub -> {