From fda10a06ae6f806d3554d1b7b403aa6ba6aa163c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com>
Date: Mon, 24 Jun 2024 16:23:32 +0800
Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BC=81=E4=B8=9A=E7=99=BB=E8=AE=B0?=
=?UTF-8?q?=E5=8F=8A=E6=9F=A5=E8=AF=A2=E6=9C=8D=E5=8A=A1=E5=8D=87=E7=BA=A7?=
=?UTF-8?q?=202=E3=80=81=E7=94=B3=E6=8A=A5=E5=AF=86=E7=A0=81=E6=A0=A1?=
=?UTF-8?q?=E9=AA=8C=E6=9C=8D=E5=8A=A1=E5=8D=87=E7=BA=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../salary/constant/SzyhApiConstant.java | 14 +++-
.../response/GetRequestIdResponse.java | 31 ++++++++
...AbstractTaxAgentTaxReturnCheckService.java | 67 +++++++++++++++---
.../impl/TaxReturnCheckMainServiceImpl.java | 2 +-
...TaxReturnCheckRegistrationServiceImpl.java | 2 +-
test/FwjtDemo.java | 70 +++++++++++++++++++
6 files changed, 174 insertions(+), 12 deletions(-)
create mode 100644 src/com/engine/salary/entity/taxagent/response/GetRequestIdResponse.java
create mode 100644 test/FwjtDemo.java
diff --git a/src/com/engine/salary/constant/SzyhApiConstant.java b/src/com/engine/salary/constant/SzyhApiConstant.java
index ae932a07d..a56bece39 100644
--- a/src/com/engine/salary/constant/SzyhApiConstant.java
+++ b/src/com/engine/salary/constant/SzyhApiConstant.java
@@ -23,12 +23,22 @@ public class SzyhApiConstant {
/**
* 企业注册接口
*/
- public static final String GET_REGISTER_INFO_URL = "gateway/iit/declare/getCompanyRegisterInfo";
+// public static final String GET_REGISTER_INFO_URL = "gateway/iit/declare/getCompanyRegisterInfo";
+ public static final String GET_REGISTER_INFO_URL = "gateway/iit/service/getCompanyRegisterInfo";
+ /**
+ * 企业注册反馈接口
+ */
+ public static final String GET_REGISTER_INFO_FEEDBACK_URL = "/gateway/iit/service/getCompanyRegisterInfoFeedback";
/**
* 校验密码接口
*/
- public static final String CHECK_PASSWORD_URL = "gateway/iit/check/checkPassword";
+// public static final String CHECK_PASSWORD_URL = "gateway/iit/check/checkPassword";
+ public static final String CHECK_PASSWORD_URL = "gateway/iit/service/check/checkPassword";
+ /**
+ * 校验密码反馈接口
+ */
+ public static final String CHECK_PASSWORD_FEEDBACK_URL = "gateway/iit/service/check/getCheckPasswordFeedback";
/**
* 人员专项附加扣除信息查询
diff --git a/src/com/engine/salary/entity/taxagent/response/GetRequestIdResponse.java b/src/com/engine/salary/entity/taxagent/response/GetRequestIdResponse.java
new file mode 100644
index 000000000..f69bf8844
--- /dev/null
+++ b/src/com/engine/salary/entity/taxagent/response/GetRequestIdResponse.java
@@ -0,0 +1,31 @@
+package com.engine.salary.entity.taxagent.response;
+
+import lombok.Data;
+
+/**
+ * 神州云合接口返回状态实体
+ *
Copyright: Copyright (c) 2023
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+public class GetRequestIdResponse {
+ /**
+ * 接口状态
+ */
+ private SzyhResponseHead head;
+ /**
+ * 返回数据
+ */
+ private Body body;
+
+ /**
+ * 神州云合接口返回状态实体类
+ **/
+ @Data
+ public static class Body {
+ String requestId;
+ }
+}
diff --git a/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java b/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java
index 301782ed1..8698d8e26 100644
--- a/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java
+++ b/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java
@@ -10,6 +10,7 @@ import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.entity.taxagent.po.TaxAgentTaxReturnPO;
import com.engine.salary.entity.taxagent.response.CheckPasswordResponse;
import com.engine.salary.entity.taxagent.response.CompanyRegisterInfoResponse;
+import com.engine.salary.entity.taxagent.response.GetRequestIdResponse;
import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationApiConfigPO;
import com.engine.salary.enums.SalaryOnOffEnum;
import com.engine.salary.enums.taxagent.TaxAgentTaxReturnPasswordTypeEnum;
@@ -21,8 +22,8 @@ import com.engine.salary.service.TaxAgentTaxReturnCheckService;
import com.engine.salary.service.TaxAgentTaxReturnService;
import com.engine.salary.service.TaxDeclarationApiConfigService;
import com.engine.salary.util.*;
-import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.db.IdGenerator;
+import com.engine.salary.util.db.MapperProxyFactory;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -107,7 +108,7 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl
* @param saveParam
* @return
*/
- protected CompanyRegisterInfoResponse getCompanyRegisterInfoResponse(TaxDeclarationApiConfigPO apiConfig, TaxAgentTaxReturnPO taxAgentTaxReturnPO, TaxAgentTaxReturnSaveParam saveParam) {
+ protected CompanyRegisterInfoResponse getCompanyRegisterInfo(TaxDeclarationApiConfigPO apiConfig, TaxAgentTaxReturnPO taxAgentTaxReturnPO, TaxAgentTaxReturnSaveParam saveParam) {
TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(taxAgentTaxReturnPO.getTaxAgentId());
if (taxAgentPO == null) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100545, "个税扣缴义务人不存在"));
@@ -124,10 +125,35 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl
String reqJson = JsonUtil.toJsonString(requestParam);
Map params = new HashMap<>(1);
Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret());
- log.info("getCompanyRegisterInfo params = {}", reqJson);
String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE);
- log.info("getCompanyRegisterInfo === res : {}", res);
- return JsonUtil.parseBean(res, CompanyRegisterInfoResponse.class);
+ log.info("getCompanyRegisterInfo1 === params:{} === res : {}", reqJson, res);
+ GetRequestIdResponse getRequestIdResponse = JsonUtil.parseBean(res, GetRequestIdResponse.class);
+
+ if (getRequestIdResponse == null || getRequestIdResponse.getHead() == null) {
+ throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "服务异常,请稍后重试"));
+ }
+ taxAgentTaxReturnPO.setCheckStatus(TaxAgentTaxReturnStatusEnum.NOT_COMMIT.getValue());
+ taxAgentTaxReturnPO.setUpdateTime(new Date());
+ // 如果税友返回错误信息
+ if (!SzyhApiConstant.SUCCESS_CODE.equals(getRequestIdResponse.getHead().getCode()) || getRequestIdResponse.getBody() == null) {
+ taxAgentTaxReturnPO.setCheckStatus(TaxAgentTaxReturnStatusEnum.FAIL.getValue());
+ taxAgentTaxReturnPO.setFailReason(getRequestIdResponse.getHead().getMsg());
+ return null;
+ }
+ try {
+ Thread.sleep(5 * 1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ String requestId = getRequestIdResponse.getBody().getRequestId();
+ String getRegisterInfoFeedbackUrl = apiConfig.getHost() + SzyhApiConstant.GET_REGISTER_INFO_FEEDBACK_URL;
+ Map feedbackHeader = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret());
+ Map map = new HashMap<>(1);
+ map.put("requestId", requestId);
+ String companyRegisterInfoResponseRes = HttpUtil.getRequest(getRegisterInfoFeedbackUrl, feedbackHeader, map);
+ log.info("getCompanyRegisterInfo2 === requestId:{} === res : {}", requestId, companyRegisterInfoResponseRes);
+ return JsonUtil.parseBean(companyRegisterInfoResponseRes, CompanyRegisterInfoResponse.class);
}
private List buildCheckDTO(TaxAgentTaxReturnSaveParam saveParam, List registerInfos) {
@@ -191,10 +217,35 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl
String reqJson = JsonUtil.toJsonString(requestParam);
Map params = new HashMap<>(1);
Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret());
- log.info("checkPassword === res : {}", reqJson);
String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE);
- log.info("checkPassword === res : {}", res);
- return JsonUtil.parseObject(res, CheckPasswordResponse.class);
+ log.info("checkPassword1 === reqJson :{} === res : {}", reqJson, res);
+
+ GetRequestIdResponse response = JsonUtil.parseObject(res, GetRequestIdResponse.class);
+ if (response == null || response.getHead() == null) {
+ throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "服务异常,请稍后重试"));
+ }
+ taxAgentTaxReturnPO.setUpdateTime(new Date());
+ if (!SzyhApiConstant.SUCCESS_CODE.equals(response.getHead().getCode()) || response.getBody() == null) {
+ // 如果返回错误
+ taxAgentTaxReturnPO.setCheckStatus(TaxAgentTaxReturnStatusEnum.FAIL.getValue());
+ taxAgentTaxReturnPO.setFailReason(response.getHead().getMsg());
+ return null;
+ }
+
+ try {
+ Thread.sleep(5 * 1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ String checkPasswordFeedbackUrl = apiConfig.getHost() + SzyhApiConstant.CHECK_PASSWORD_FEEDBACK_URL;
+ Map feedbackHeader = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret());
+ Map map = new HashMap<>(1);
+ String requestId = response.getBody().getRequestId();
+ map.put("requestId", requestId);
+ res = HttpUtil.getRequest(checkPasswordFeedbackUrl, feedbackHeader, map);
+ log.info("checkPassword2 === requestId :{} === res : {}", requestId, res);
+ return JsonUtil.parseBean(res, CheckPasswordResponse.class);
}
/**
diff --git a/src/com/engine/salary/service/impl/TaxReturnCheckMainServiceImpl.java b/src/com/engine/salary/service/impl/TaxReturnCheckMainServiceImpl.java
index 12feb8d16..8a9e315d9 100644
--- a/src/com/engine/salary/service/impl/TaxReturnCheckMainServiceImpl.java
+++ b/src/com/engine/salary/service/impl/TaxReturnCheckMainServiceImpl.java
@@ -46,7 +46,7 @@ public class TaxReturnCheckMainServiceImpl extends AbstractTaxAgentTaxReturnChec
log.error("保存异常", e);
}
// 调用神州云合API
- CompanyRegisterInfoResponse response = getCompanyRegisterInfoResponse(apiConfig, po, saveParam);
+ CompanyRegisterInfoResponse response = getCompanyRegisterInfo(apiConfig, po, saveParam);
List checkFormDTOS = verifyCompanyRegisterInfoResponse(apiConfig, saveParam, po, response);
getTaxAgentTaxReturnMapper().updateIgnoreNull(po);
// 构建结果
diff --git a/src/com/engine/salary/service/impl/TaxReturnCheckRegistrationServiceImpl.java b/src/com/engine/salary/service/impl/TaxReturnCheckRegistrationServiceImpl.java
index 4ac507c1b..3f6eff61c 100644
--- a/src/com/engine/salary/service/impl/TaxReturnCheckRegistrationServiceImpl.java
+++ b/src/com/engine/salary/service/impl/TaxReturnCheckRegistrationServiceImpl.java
@@ -30,7 +30,7 @@ public class TaxReturnCheckRegistrationServiceImpl extends AbstractTaxAgentTaxRe
TaxAgentTaxReturnPO po = getTaxAgentTaxReturnService(user).getByTaxAgentId(saveParam.getTaxAgentId());
// 调用神州云合API
TaxDeclarationApiConfigPO apiConfig = getTaxDeclarationApiConfigService(user).getConfig(true);
- CompanyRegisterInfoResponse response = getCompanyRegisterInfoResponse(apiConfig, po, saveParam);
+ CompanyRegisterInfoResponse response = getCompanyRegisterInfo(apiConfig, po, saveParam);
List checkFormDTOS = verifyCompanyRegisterInfoResponse(apiConfig, saveParam, po, response);
po.setTaxRegistrationNumber(saveParam.getTaxRegistrationNumber());
getTaxAgentTaxReturnMapper().updateIgnoreNull(po);
diff --git a/test/FwjtDemo.java b/test/FwjtDemo.java
new file mode 100644
index 000000000..48d9f3719
--- /dev/null
+++ b/test/FwjtDemo.java
@@ -0,0 +1,70 @@
+import com.engine.salary.util.HttpUtil;
+import com.engine.salary.util.JsonUtil;
+import com.engine.salary.util.SingnatureData;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+public class FwjtDemo {
+
+ private static final String hostUrl = "https://uat-ddapi.bigfintax.com/";
+ private static final String appKey = "fwjt";
+
+ private static final String appSecret = "D22439F71F0D7BB17C46583837962E6F";
+
+ public static void main(String[] args) throws Exception {
+ //1.校验任务发起
+ //checkPassWord();
+ // 成功受理返回: {"head":{"msg":"成功","code":"00000000","description":"成功","time":"2024-06-21 11:42:31","status":"Y"},"body":{"requestId":"25d99665958148698e60b1de97e2d53d"}}
+ //2.校验任务查询结果
+ getCheckPassWord("25d99665958148698e60b1de97e2d53d");
+ // 失败场景如下: {"head":{"msg":"您输入的密码错误,您还剩3次机会,连续输错后密码将会锁定120分钟,请谨慎使用","code":"010013","description":null,"time":"2024-06-21 11:35:15","status":"N"}}
+ // 成功场景如下: {"head":{"msg":"成功","code":"00000000","description":"成功","time":"2024-06-21 11:34:00","status":"Y"},"body":true}
+ }
+
+ /***
+ * 校验密码
+ * @return
+ * @throws Exception
+ */
+ public static String checkPassWord() throws Exception {
+ String url = hostUrl + "gateway/iit/service/check/checkPassword";
+ Map requestParam = new HashMap();
+ requestParam.put("bizNo", UUID.randomUUID().toString().replace("-", ""));
+ requestParam.put("qymc", "测试0");
+ requestParam.put("mmlx", "0");
+ requestParam.put("djxhid", "10117110118941289705");
+ requestParam.put("nsrsbh", "91110118941289705K");
+ requestParam.put("sbmm", "Aa123456");
+ requestParam.put("mmlx", "0");
+ requestParam.put("areaid", "110105");
+ String reqJson = JsonUtil.toJsonString(requestParam);
+ Map params = new HashMap();
+ Map header = SingnatureData.initHeader(params, appKey, appSecret);
+ String res = "";
+ try {
+ //res = HttpUtil.getRequest(url, header, params);
+ res = HttpUtil.doPost(url, header, reqJson, "application/json");
+ System.out.println(res);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return res;
+ }
+
+ public static String getCheckPassWord(String requestId) throws Exception {
+ String url = hostUrl + "gateway/iit/service/check/getCheckPasswordFeedback";
+ Map params = new HashMap();
+ params.put("requestId", requestId);
+ Map header = SingnatureData.initHeader(params, appKey, appSecret);
+ String res = "";
+ try {
+ res = HttpUtil.getRequest(url, header, params);
+ System.out.println(res);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return res;
+ }
+}