Ver Fonte

Merge branch 'feat-20240204-xinshiyi' into feat-20240205-hechuang

# Conflicts:
#	hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/GigTypeEnum.java
#	hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mq/GigSignCertReceiver.java
#	hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/impl/SysUserSignCertServiceImpl.java
lixuesong há 1 ano atrás
pai
commit
a6306c02f5

+ 15 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/GigThirdApiController.java

@@ -84,6 +84,21 @@ public class GigThirdApiController {
 
 	private final RedisTemplate redisTemplate;
 
+	/**
+	 * 薪事易结算异步通知回调
+	 *
+	 * @param body 请求参数
+	 * @param headers 请求头
+	 * @return
+	 */
+	@Inner(value = false)
+	@SysLog("薪事易结算异步通知回调")
+	@PostMapping("/xinshiyi/pay-notify")
+	public String xinShiYiSettleNotifyRequest(@RequestBody String body, @RequestHeader HttpHeaders headers) {
+		log.info("福建企赋结算请求方法参数:body={}, headers={}", body, headers);
+
+		return "OK";
+	}
 
 	/**
 	 * 福建企赋结算异步通知回调

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

@@ -28,6 +28,7 @@ public enum GigTypeEnum {
 	QI_FU(9, "福建企赋", "福建企赋", ZhongYiYunCertStatus.class),
 	SHEN_ZHEN_REN_CAI(10, "深圳人才", "深圳人才", OladingCertStatus.class),
 	YI_MA(11, "易马财税", "易马财税", ZhengQiZhiXingCertStatus.class),
+	XIN_SHI_YI(12, "薪事易", "薪事易", XinShiYiCertStatus.class),
 
 	HE_CHUANG(13, "合创众盈", "合创众盈", OladingCertStatus.class),
 	MAH_SETTLE(99, "MAH结算", "MAH结算", null);
@@ -96,6 +97,7 @@ public enum GigTypeEnum {
 			case QI_FU:
 				certStatusStr = ZhongYiYunCertStatus.resolve(certStatus).name();
 				break;
+			case XIN_SHI_YI:
 			default:
 		}
 
@@ -145,6 +147,9 @@ public enum GigTypeEnum {
 			case QI_FU:
 				certStatusStr = ZhongYiYunCertStatus.resolve(certStatus).getMessage();
 				break;
+			case XIN_SHI_YI:
+				certStatusStr = XinShiYiCertStatus.resolve(certStatus).getMessage();
+				break;
 			default:
 		}
 

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

@@ -54,6 +54,8 @@ public enum SubjectLocation {
 	// 正启之星
 	YI_MA("YI_MA",  GigTypeEnum.YI_MA, "易马财税", 16, "yi_ma_invoice"),
 
+	XIN_SHI_YI("XIN_SHI_YI", GigTypeEnum.XIN_SHI_YI, "薪事易-海南飞亿", 17, "xinshiyi_invoice"),
+
 
 	// 合创众盈
 	HE_CHUANG_ZHONG_ZHI("HE_CHUANG_ZHONG_ZHI", GigTypeEnum.HE_CHUANG, "合创众盈-天津中智", 18, "hechuang_zhongzhi_invoice"),

+ 37 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/XinShiYiCertStatus.java

@@ -0,0 +1,37 @@
+package com.qunzhixinxi.hnqz.admin.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 薪事易认证状态
+ *
+ * @author lixuesong
+ * @date 2024/02/04
+ */
+@Getter
+@AllArgsConstructor
+public enum XinShiYiCertStatus {
+	UN_SIGN(0, "未签约"),
+	CERT(1, "已认证"),
+	SIGN(2, "已签约");
+
+	private final int code;
+
+	private final String message;
+
+	/**
+	 * 根据枚举编码获取枚举对象
+	 *
+	 * @param code 枚举编码
+	 * @return 如果存在返回枚举,否则返回 {@code null}
+	 */
+	public static XinShiYiCertStatus resolve(final int code) {
+		for (XinShiYiCertStatus certStatus : XinShiYiCertStatus.values()) {
+			if (certStatus.getCode() == code) {
+				return certStatus;
+			}
+		}
+		return UN_SIGN;
+	}
+}

+ 46 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mq/GigSignCertReceiver.java

@@ -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,8 @@ 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;
@@ -172,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);
+	}
+
 	/**
 	 * 福建企赋结果处理
 	 *

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

@@ -450,6 +450,12 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 				}
 				this.updateUserCertStatus(userSub.getId(), "内部状态对其", ZhongYiYunCertStatus.SIGN.getCode(), null);
 				return R.ok();
+			case XIN_SHI_YI:
+				if (userSub.getCertStatus() > XinShiYiCertStatus.UN_SIGN.getCode()) {
+					return R.ok();
+				}
+				this.updateUserCertStatus(userSub.getId(), "内部状态对其", XinShiYiCertStatus.SIGN.getCode(), null);
+				return R.ok();
 			default:
 				message = "不支持该税源地操作";
 		}
@@ -681,6 +687,8 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 					return true;
 				} else if (GigTypeEnum.YI_MA.equals(sysUserSub.getGigType())) {
 					return true;
+				} else if (GigTypeEnum.XIN_SHI_YI.equals(sysUserSub.getGigType())) {
+					return true;
 				} else if (GigTypeEnum.HE_CHUANG.equals(sysUserSub.getGigType())) {
 					return true;
 				}