import com.sweetfish.convert.json.JsonConvert import com.sweetfish.service.RetResult import com.yinjie.heating.common.api.BusinessExecutor import com.yinjie.heating.common.datas.ERPModule import com.yinjie.heating.common.datas.HeatingAppInvokerCode import com.yinjie.heating.common.entity.base.ProcessMapItem import com.yinjie.heating.common.entity.callthird.QueryFeeResponse import com.yinjie.heating.common.entity.heating.HeatingApp import com.yinjie.heating.common.entity.heating.HeatingAppInvoker import com.yinjie.heating.common.http.HttpTools import com.yinjie.heating.common.tool.PaySignatureUtil import org.apache.commons.lang3.StringUtils import org.apache.logging.log4j.LogManager import org.apache.logging.log4j.Logger import org.rex.RMap import javax.annotation.Resource import java.time.LocalDateTime import java.util.concurrent.TimeUnit class BE_Call_QueryFee implements BusinessExecutor { private final Logger logger = LogManager.getLogger(this.getClass().getSimpleName()) @Resource private JsonConvert jsonConvert @Override String scriptName() { return "调用外部热力服务商接口-查询欠费" } @Override ERPModule module() { return ERPModule.CALL_THIRD } RetResult execute(ProcessMapItem source) { long currentTime = LocalDateTime.now().toDate().time RMap params = source.itemData String dataSourceId = source.dataSourceId long supplierCode = source.supplierCode String billKey = params.getString("billKey") HeatingApp app = params.get("app") as HeatingApp //接口均返回正确,错误放在result里 if (StringUtils.isBlank(billKey) || app == null) { logger.error("传入参数不正确") return RetResult. successT().result(new QueryFeeResponse.Builder() .respCode("DEF0006") .respMsg("系统错误") .build()) } Map header = new HashMap<>() header.put("Content-Type", "application/json") Map body = [ appId : app.appId, billKey : billKey, nonceStr : UUID.randomUUID().toString().replace("-", ""), timeStamp: currentTime as String ] //签名 String sign = PaySignatureUtil.generateSign(body, "RSA_1_256", app.appPrivateKey) body.put("sign", sign) HeatingAppInvoker invoker = app.invokerList.find { it.invokerCode == HeatingAppInvokerCode.queryFee.code } if (invoker == null) { logger.error(app.appName + "未配置[查询欠费]接口") return RetResult. successT().result(new QueryFeeResponse.Builder() .respCode("DEF0006") .respMsg("系统错误") .build()) } try { String resp = HttpTools.postHttpContentAsync(invoker.invokerUrl, header, jsonConvert.convertTo(body)).get(20, TimeUnit.SECONDS) logger.info("[查询欠费]商户返回信息:" + resp) QueryFeeResponse response = jsonConvert.convertFrom(resp) return RetResult. successT().result(response) } catch (Exception e) { logger.error(app.appName + "请求[查询欠费]接口失败:" + e.message) return RetResult. successT().result(new QueryFeeResponse.Builder() .respCode("DEF0006") .respMsg("系统错误") .build()) } } }