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 *
Copyright: Copyright (c) 2023
*Company: 泛微软件
* * @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