浏览代码

feat: 签约接口调整

lixuesong 2 年之前
父节点
当前提交
1c65687c76

+ 39 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/LangChaoCertStatus.java

@@ -0,0 +1,39 @@
+package com.qunzhixinxi.hnqz.admin.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author: lixuesong
+ * @createTime: 2022/10/27 15:03
+ * @description: 浪潮认证状态
+ */
+@Getter
+@AllArgsConstructor
+public enum LangChaoCertStatus {
+
+	// 签约状态
+	UN_SIGN(0, "未签约"),
+	CERT(1, "已认证"),
+	SIGN(2, "已签约");
+
+	private final int code;
+
+	private final String message;
+
+	/**
+	 * 根据枚举编码获取枚举对象
+	 *
+	 * @param code 枚举编码
+	 * @return 如果存在返回枚举,否则返回 {@code null}
+	 */
+	public static LangChaoCertStatus resolve(final int code) {
+		for (LangChaoCertStatus certStatus : LangChaoCertStatus.values()) {
+			if (certStatus.getCode() == code) {
+				return certStatus;
+			}
+		}
+		return UN_SIGN;
+
+	}
+}

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

@@ -28,6 +28,7 @@ import com.qunzhixinxi.hnqz.admin.enums.DelEnum;
 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.LangChaoCertStatus;
 import com.qunzhixinxi.hnqz.admin.enums.LockEnum;
 import com.qunzhixinxi.hnqz.admin.enums.MemberIDCardType;
 import com.qunzhixinxi.hnqz.admin.enums.MemberType;
@@ -290,63 +291,58 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 		if (userSub == null) {
 			return R.failed("用户sub数据不存在");
 		}
-		// 判断是否已签约/增员
-		if (userSignCertDTO.getSubjectLocation().getGigType().equals(GigTypeEnum.TAX_HELPOR)) {
-			if (userSub.getCertStatus() > TaxHelperCertStatus.UN_CERT.getCode()) {
-				return R.ok();
-			}
-		} else if (userSignCertDTO.getSubjectLocation().getGigType().equals(GigTypeEnum.OLADING)) {
-			if (OladingCertStatus.SIGNED.getCode().equals(String.valueOf(userSub.getCertStatus()))
-					|| OladingCertStatus.SIGNING.getCode().equals(String.valueOf(userSub.getCertStatus()))
-					|| OladingCertStatus.CERT.getCode().equals(String.valueOf(userSub.getCertStatus()))) {
-				return R.ok(MapUtil.builder("certStatus", OladingCertStatus.resolve(String.valueOf(userSub.getCertStatus()))).build());
-			}
-		} else if (userSignCertDTO.getSubjectLocation().getGigType().equals(GigTypeEnum.ZHENG_QI_ZHI_XING)) {
-			if (userSub.getCertStatus() > ZhengQiZhiXingCertStatus.UN_SIGN.getCode()) {
-				return R.ok();
-			}
-		}
-
-		// 查询dept
-		SysDept dept = sysDeptService.getById(sysUser.getDeptId());
-
-		// 发起签约/增员
-		Map<String, Object> params = new HashMap<>();
-		params.put("enterpriseCode", dept.getTaxCode());
-		params.put("subjectLocation", userSub.getSubjectLocation().name());
-		params.put("subjectChannel", userSub.getGigChannel().name());
-		params.put("realName", sysUser.getRealname());
-		params.put("phone", sysUser.getUsername());
-		params.put("bankPhone", userSub.getBankPhone());
-		params.put("bankCard", userSub.getBankCardNumber());
-		params.put("idCard", sysUser.getIdCardNumber());
-		params.put("endType", "CSO");
-		params.put("email", "service@yaoyi.net");
-		params.put("address", "北京市房山区");
-
-		log.info("签约/增员,req={}", JSONUtil.toJsonStr(params));
-		String postResult = HttpUtil.post(upmsConfig.getGigServiceUrl() + GIG_CERT_ACTION_SIGN_UP, JSONUtil.toJsonStr(params));
-		log.info("签约/增员,resp={}", postResult);
 
+		String postResult = null;
 		String message = "增员/签约失败";
 		Integer certStatus = null;
 		boolean successFlag = false;
 		String requestId = null;
-		if (JSONUtil.isJsonObj(postResult)) {
-			JSONObject jsonResult = JSONUtil.parseObj(postResult);
-			if (jsonResult.getInt("code") == 0) {
-				JSONObject data = jsonResult.getJSONObject("data");
-				message = data.getStr("message");
 
-				// 根据不同渠道 处理不同的返回结果
-				switch (userSignCertDTO.getSubjectLocation().getGigType()) {
-					case TAX_HELPOR:
+		// 根据不同渠道处理
+		switch (userSignCertDTO.getSubjectLocation().getGigType()) {
+			case TAX_HELPOR:
+				// 税邦云
+				if (userSub.getCertStatus() > TaxHelperCertStatus.UN_CERT.getCode()) {
+					return R.ok();
+				}
+
+				postResult = this.toSignCommonRequest(sysUser, userSub);
+
+				if (JSONUtil.isJsonObj(postResult)) {
+					JSONObject jsonResult = JSONUtil.parseObj(postResult);
+					if (jsonResult.getInt("code") == 0) {
+						JSONObject data = jsonResult.getJSONObject("data");
+						message = data.getStr("message");
+
 						if ("2000".equals(data.getStr("code"))) {
 							successFlag = true;
 							certStatus = TaxHelperCertStatus.ADD_MEMBER.getCode();
 						}
-						break;
-					case OLADING:
+					}
+				}
+
+				// 修改userSub状态
+				this.updateUserCertStatus(userSub.getId(), message, certStatus, requestId);
+
+				if (successFlag) {
+					return R.ok();
+				}
+			case OLADING:
+				// 自由职家
+				if (OladingCertStatus.SIGNED.getCode().equals(String.valueOf(userSub.getCertStatus()))
+						|| OladingCertStatus.SIGNING.getCode().equals(String.valueOf(userSub.getCertStatus()))
+						|| OladingCertStatus.CERT.getCode().equals(String.valueOf(userSub.getCertStatus()))) {
+					return R.ok(MapUtil.builder("certStatus", OladingCertStatus.resolve(String.valueOf(userSub.getCertStatus()))).build());
+				}
+
+				postResult = this.toSignCommonRequest(sysUser, userSub);
+
+				if (JSONUtil.isJsonObj(postResult)) {
+					JSONObject jsonResult = JSONUtil.parseObj(postResult);
+					if (jsonResult.getInt("code") == 0) {
+						JSONObject data = jsonResult.getJSONObject("data");
+						message = data.getStr("message");
+
 						if ("0".equals(data.getStr("code"))) {
 							successFlag = true;
 							certStatus = Integer.parseInt(OladingCertStatus.SIGNING.getCode());
@@ -355,36 +351,110 @@ public class SysUserSignCertServiceImpl implements SysUserSignCertService {
 							successFlag = true;
 							certStatus = Integer.parseInt(OladingCertStatus.SIGNING.getCode());
 						}
-						break;
-					case ZHENG_QI_ZHI_XING:
+					}
+				}
+
+				this.updateUserCertStatus(userSub.getId(), message, certStatus, requestId);
+
+				if (successFlag) {
+					if (userSignCertDTO.getSubjectLocation().getGigType().equals(GigTypeEnum.OLADING)) {
+						// 阿拉钉返回具体认证状态,区分签约中、已签约的情况
+						return R.ok(MapUtil.builder("certStatus", OladingCertStatus.resolve(String.valueOf(certStatus))).build());
+					}
+					return R.ok();
+				}
+
+				break;
+			case ZHENG_QI_ZHI_XING:
+				// 正启之星
+				if (userSub.getCertStatus() > ZhengQiZhiXingCertStatus.UN_SIGN.getCode()) {
+					return R.ok();
+				}
+
+				postResult = this.toSignCommonRequest(sysUser, userSub);
+
+				if (JSONUtil.isJsonObj(postResult)) {
+					JSONObject jsonResult = JSONUtil.parseObj(postResult);
+					if (jsonResult.getInt("code") == 0) {
+						JSONObject data = jsonResult.getJSONObject("data");
+						message = data.getStr("message");
+
 						if ("200".equals(data.getStr("code"))) {
 							successFlag = true;
 							certStatus = ZhengQiZhiXingCertStatus.SIGN.getCode();
 						}
-						break;
-					default:
+					}
 				}
-			}
+
+				this.updateUserCertStatus(userSub.getId(), message, certStatus, requestId);
+
+				if (successFlag) {
+					return R.ok();
+				}
+				break;
+			case LANG_CHAO:
+				// 浪潮
+				if (userSub.getCertStatus() > LangChaoCertStatus.UN_SIGN.getCode()) {
+					return R.ok();
+				}
+				this.updateUserCertStatus(userSub.getId(), "内部状态对其", LangChaoCertStatus.SIGN.getCode(), null);
+				return R.ok();
+			default:
+				message = "不支持该税源地操作";
 		}
 
+		return R.failed(message);
+	}
+
+	/**
+	 * 更新认证状态
+	 *
+	 * @param userSubId
+	 * @param message
+	 * @param certStatus
+	 * @param requestId
+	 */
+	private void updateUserCertStatus(Integer userSubId, String message, Integer certStatus, String requestId) {
 		// 修改userSub状态
 		SysUserSub updateUserSub = new SysUserSub();
-		updateUserSub.setId(userSub.getId());
+		updateUserSub.setId(userSubId);
 		updateUserSub.setCertStatus(certStatus);
 		updateUserSub.setCertRemark("签约/增员:" + message);
 		updateUserSub.setRequestId(requestId);
 		updateUserSub.setUpdateUser(SecurityUtils.getUser().getId());
 		updateUserSub.setUpdateTime(LocalDateTime.now());
 		sysUserSubService.updateById(updateUserSub);
+	}
 
-		if (successFlag) {
-			if (userSignCertDTO.getSubjectLocation().getGigType().equals(GigTypeEnum.OLADING)) {
-				// 阿拉钉返回具体认证状态,区分签约中、已签约的情况
-				return R.ok(MapUtil.builder("certStatus", OladingCertStatus.resolve(String.valueOf(certStatus))).build());
-			}
-			return R.ok();
-		}
-		return R.failed(message);
+	/**
+	 * 发起签约request
+	 *
+	 * @param sysUser
+	 * @param userSub
+	 * @return
+	 */
+	private String toSignCommonRequest(SysUser sysUser, SysUserSub userSub) {
+		// 查询dept
+		SysDept dept = sysDeptService.getById(sysUser.getDeptId());
+
+		// 发起签约/增员
+		Map<String, Object> params = new HashMap<>();
+		params.put("enterpriseCode", dept.getTaxCode());
+		params.put("subjectLocation", userSub.getSubjectLocation().name());
+		params.put("subjectChannel", userSub.getGigChannel().name());
+		params.put("realName", sysUser.getRealname());
+		params.put("phone", sysUser.getUsername());
+		params.put("bankPhone", userSub.getBankPhone());
+		params.put("bankCard", userSub.getBankCardNumber());
+		params.put("idCard", sysUser.getIdCardNumber());
+		params.put("endType", "CSO");
+		params.put("email", "service@yaoyi.net");
+		params.put("address", "北京市房山区");
+
+		log.info("签约/增员,req={}", JSONUtil.toJsonStr(params));
+		String postResult = HttpUtil.post(upmsConfig.getGigServiceUrl() + GIG_CERT_ACTION_SIGN_UP, JSONUtil.toJsonStr(params));
+		log.info("签约/增员,resp={}", postResult);
+		return postResult;
 	}
 
 	/**