package com.zswl.dataservice.httpRequest; import cn.hutool.core.bean.BeanUtil; import cn.hutool.json.JSONUtil; import com.zswl.dataservice.dao.payment.RequestInfoDao; import com.zswl.dataservice.httpRequest.apiConf.APIResponseModel; import com.zswl.dataservice.httpRequest.apiConf.ApiConfParam; import com.zswl.dataservice.httpRequest.conf.FullCardAPIConfig; import com.zswl.dataservice.httpRequest.conf.FullCardConf; import com.zswl.dataservice.service.base.SuperService; import com.zswl.dataservice.service.other.RequestInfoService; import com.zswl.dataservice.utils.net.apache.HttpClientUtil; import com.zswl.dataservice.utils.net.apache.HttpModel; import com.zswl.dataservice.utils.net.apache.ResponseModel; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StopWatch; /** * @author TRX * @date 2024/6/25 */ @Slf4j @Service public class ApiRequestService extends SuperService { @Autowired FullCardConf fullCardConf; @Autowired RequestInfoDao requestInfoDao; @Autowired RequestInfoService requestInfoService; /** * 发送请求 * * @param apiName * @param data * @return */ public APIResponseModel sendFullCardAPI(String apiName, Object data) { APIResponseModel responseModel = new APIResponseModel(); if (StringUtils.isEmpty(fullCardConf.getUrl())) { responseModel.setIsFailed("未配置物联网平台URL"); return responseModel; } try { ApiConfParam apiConfParam = FullCardAPIConfig.getApiConfParam(apiName); if (ObjectUtils.isEmpty(apiConfParam)) { responseModel.setIsFailed("未找到API配置"); return responseModel; } StopWatch stopWatch = new StopWatch(); stopWatch.start(); String url = fullCardConf.getUrl() + fullCardConf.getCardServerName() + apiConfParam.getApiName(); ResponseModel request = HttpClientUtil.request(HttpModel.builder() .url(url).method(apiConfParam.getMethodType()).charset("utf-8").body(data).build()); if (request.getCode() == 200) { responseModel = BeanUtil.copyProperties(request.getBody(), APIResponseModel.class); } else { responseModel = BeanUtil.copyProperties(request.getBody(), APIResponseModel.class); } responseModel.setParam(apiConfParam); stopWatch.stop(); responseModel.setMillis(stopWatch.getTotalTimeMillis()); } catch (Exception e) { e.printStackTrace(); responseModel.setIsFailed(String.format("请求出错:%s", e.getMessage())); return responseModel; } // 记录请求日志 requestInfoService.addRequestInfo(data, responseModel); return responseModel; } }