130 lines
6.1 KiB
Java
130 lines
6.1 KiB
Java
package com.engine.salary.service.impl;
|
|
|
|
import com.engine.core.impl.Service;
|
|
import com.engine.salary.constant.SzyhApiConstant;
|
|
import com.engine.salary.entity.datacollection.response.QuerySpecialAmountFeedbackResponse;
|
|
import com.engine.salary.entity.taxagent.response.SzyhResponseHead;
|
|
import com.engine.salary.entity.taxapiflow.bo.TaxApiFlowBO;
|
|
import com.engine.salary.entity.taxapiflow.param.TaxDeclarationBillingConfigSaveParam;
|
|
import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationApiConfigPO;
|
|
import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationApiProfilePO;
|
|
import com.engine.salary.enums.SalaryOnOffEnum;
|
|
import com.engine.salary.enums.taxdeclaration.TaxDeclareApiProfileEnum;
|
|
import com.engine.salary.exception.SalaryRunTimeException;
|
|
import com.engine.salary.mapper.taxdeclaration.TaxDeclarationApiProfileMapper;
|
|
import com.engine.salary.mapper.taxdeclaration.TaxDeclareApiConfigMapper;
|
|
import com.engine.salary.service.TaxDeclarationApiConfigService;
|
|
import com.engine.salary.util.*;
|
|
import com.engine.salary.util.db.MapperProxyFactory;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import java.util.*;
|
|
|
|
/**
|
|
* chengliming
|
|
* <p>Copyright: Copyright (c) 2023</p>
|
|
* <p>Company: 泛微软件</p>
|
|
*
|
|
* @author qiantao
|
|
* @version 1.0
|
|
**/
|
|
@Slf4j
|
|
public class TaxDeclarationApiConfigServiceImpl extends Service implements TaxDeclarationApiConfigService {
|
|
|
|
private TaxDeclareApiConfigMapper getTaxDeclareApiConfigMapper() {
|
|
return MapperProxyFactory.getProxy(TaxDeclareApiConfigMapper.class);
|
|
}
|
|
|
|
private TaxDeclarationApiProfileMapper getTaxDeclarationApiProfileMapper() {
|
|
return MapperProxyFactory.getProxy(TaxDeclarationApiProfileMapper.class);
|
|
}
|
|
@Override
|
|
public TaxDeclarationApiConfigPO getConfig(boolean needValid) {
|
|
TaxDeclarationApiConfigPO configPO = getTaxDeclareApiConfigMapper().getOne();
|
|
if (needValid) {
|
|
String tips1 = SalaryI18nUtil.getI18nLabel(183786, "当前用户智能算薪尚未配置,请先前往[设置] -> [智能算薪]中配置");
|
|
String tips2 = SalaryI18nUtil.getI18nLabel(183787, "当前用户智能算薪尚未启用,请先前往[设置] -> [智能算薪]中启用该配置");
|
|
String tips3 = SalaryI18nUtil.getI18nLabel(183788, "当前用户智能算薪账号或密码为空,请前往[设置] -> [智能算薪]中检查账号密码是否填写");
|
|
SalaryAssert.isTrue(configPO != null, tips1);
|
|
SalaryAssert.isTrue(SalaryOnOffEnum.ON.getValue().equals(configPO.getEnableUse()), tips2);
|
|
SalaryAssert.isTrue(StringUtils.isNotEmpty(StringUtils.trim(configPO.getAppKey()))
|
|
&& StringUtils.isNotEmpty(StringUtils.trim(configPO.getAppSecret())), tips3);
|
|
}
|
|
if (configPO != null) {
|
|
configPO.setAppKey(StringUtils.trim(configPO.getAppKey()));
|
|
configPO.setAppSecret(StringUtils.trim(configPO.getAppSecret()));
|
|
}
|
|
return configPO;
|
|
}
|
|
|
|
@Override
|
|
public void insert(TaxDeclarationApiConfigPO configPO) {
|
|
getTaxDeclareApiConfigMapper().insertIgnoreNull(configPO);
|
|
}
|
|
|
|
@Override
|
|
public void update(TaxDeclarationApiConfigPO config) {
|
|
getTaxDeclareApiConfigMapper().updateIgnoreNull(config);
|
|
}
|
|
|
|
@Override
|
|
public void enableConfig(TaxDeclarationBillingConfigSaveParam saveParam) {
|
|
TaxDeclarationApiConfigPO config = this.getConfig(false);
|
|
Date now = new Date();
|
|
if (config != null) {
|
|
config.setEnableUse(SalaryOnOffEnum.valueOf(saveParam.getEnable()).getValue())
|
|
.setUpdateTime(now);
|
|
update(config);
|
|
} else {
|
|
config = TaxApiFlowBO.buildTaxDeclarationApiConfigPO(saveParam, (long) user.getUID());
|
|
config.setHost(getApiHost());
|
|
insert(config);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void saveConfig(TaxDeclarationBillingConfigSaveParam saveParam) {
|
|
TaxDeclarationApiConfigPO config = this.getConfig(false);
|
|
if (config != null) {
|
|
config.setAppKey(saveParam.getAppKey())
|
|
.setAppSecret(saveParam.getAppSecret())
|
|
.setEnableUse(SalaryOnOffEnum.valueOf(saveParam.getEnable()).getValue())
|
|
.setUpdateTime(new Date());
|
|
update(config);
|
|
} else {
|
|
config = TaxApiFlowBO.buildTaxDeclarationApiConfigPO(saveParam, (long) user.getUID());
|
|
config.setHost(getApiHost());
|
|
insert(config);
|
|
}
|
|
if (StringUtils.isNotEmpty(config.getAppKey()) && StringUtils.isNotEmpty(config.getAppSecret())) {
|
|
QuerySpecialAmountFeedbackResponse response = getQuerySpecialAmountFeedbackResponse(config);
|
|
// 校验请求结果
|
|
String responseCode = Optional.ofNullable(response).map(QuerySpecialAmountFeedbackResponse::getHead).map(SzyhResponseHead::getCode).orElse(null);
|
|
|
|
if (SzyhApiConstant.ERROR_CODE.equals(responseCode)
|
|
|| SzyhApiConstant.APP_DISABLED_CODE.equals(responseCode)
|
|
|| SzyhApiConstant.APP_PAUSED_CODE.equals(responseCode)) {
|
|
throw new SalaryRunTimeException("账号密码错误或账号已停用");
|
|
}
|
|
}
|
|
}
|
|
|
|
private String getApiHost() {
|
|
List<TaxDeclarationApiProfilePO> apiProfiles = getTaxDeclarationApiProfileMapper().listAll();
|
|
if (apiProfiles.isEmpty() || TaxDeclareApiProfileEnum.PROD.getValue().equals(apiProfiles.get(0).getApiProfile())) {
|
|
return SzyhApiConstant.HOST_URL;
|
|
}
|
|
return SzyhApiConstant.TEST_HOST_URL;
|
|
}
|
|
|
|
public QuerySpecialAmountFeedbackResponse getQuerySpecialAmountFeedbackResponse(TaxDeclarationApiConfigPO apiConfig) {
|
|
String url = apiConfig.getHost() + SzyhApiConstant.GET_QUERY_SPECIAL_AMOUNT_FEEDBACK;
|
|
Map<String, String> params = new HashMap<>(1);
|
|
params.put("requestId", "");
|
|
Map<String, String> header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret());
|
|
String res = HttpUtil.getRequest(url, header, params);
|
|
return JsonUtil.parseObject(res, QuerySpecialAmountFeedbackResponse.class);
|
|
}
|
|
}
|