在对接API的时候,会涉及调用第三方的服务,这时候可以利用RestTemplate进行调用,下面给大家展示一个简单的调用demo。
1 package com.tanlu.user.api.controller.XJH; 2 3 import com.alibaba.fastjson.JSON; 4 import com.tanlu.user.common.ResponseData; 5 import com.tanlu.user.common.XJH.Dto.XjhPushDto; 6 import com.tanlu.user.common.request.UploadRequest; 7 import com.tanlu.user.service.XJHPushService; 8 import org.slf4j.Logger; 9 import org.slf4j.LoggerFactory; 10 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.web.bind.annotation.RequestBody; 12 import org.springframework.web.bind.annotation.RequestMapping; 13 import org.springframework.web.bind.annotation.RequestMethod; 14 import org.springframework.web.bind.annotation.RestController; 15 import java.io.IOException; 16 17 @RestController 18 @RequestMapping(value = "/push") 19 public class XJHPushController { 20 private static Logger logger = LoggerFactory.getLogger(XJHPushController.class); 21 22 @Autowired 23 private XJHPushService xjhPushService; 2 38 /** 39 * xjh二推 40 * @param dto 41 * @return 42 */ 43 @RequestMapping(value = "/xjh/secondPush", method = RequestMethod.POST, produces = "application/json") 44 public ResponseData secondPush(@RequestBody XjhPushDto dto){ 45 logger.info("XJH二推请求参数:"+ JSON.toJSON(dto)); 46 ResponseData responseData = xjhPushService.secondPushData(dto); 47 return responseData; 48 } }
XJHPushService 接口代码:
1 public interface XJHPushService { ResponseData secondPushData(XjhPushDto dto); }
XJHPushService 接口实现类:
package com.tanlu.user.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.tanlu.user.common.ResponseData; import com.tanlu.user.common.XJH.Dto.XjhPushDto; import com.tanlu.user.common.XJH.EmergencyContact; import com.tanlu.user.common.XJH.Enum.XJHMarriedEnum; import com.tanlu.user.common.XJH.Enum.XJHRelationEnum; import com.tanlu.user.common.XJH.Info.*; import com.tanlu.user.common.XJH.XJHReciveFirstPushResult; import com.tanlu.user.common.XJH.XjhApplyDetail; import com.tanlu.user.common.client.OpenClient; import com.tanlu.user.common.dto.AuthNotifyDto; import com.tanlu.user.common.dto.ResultDataDto; import com.tanlu.user.common.dto.SystemAuditDto; import com.tanlu.user.common.entity.*; import com.tanlu.user.common.eum.ChannelEnum; import com.tanlu.user.common.request.FirstPullRequest; import com.tanlu.user.common.request.PullRequest; import com.tanlu.user.common.request.SecondPullRequest; import com.tanlu.user.common.request.UploadRequest; import com.tanlu.user.common.response.GetGoodsResponse; import com.tanlu.user.common.util.CdnUploadTools; import com.tanlu.user.common.util.CommUtils; import com.tanlu.user.common.util.JsonUtils; import com.tanlu.user.common.vo.FirstPushVo; import com.tanlu.user.mapper.*; import com.tanlu.user.service.XJHPushService; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.http.*; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import java.io.DataInputStream; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.TimeUnit; @Service public class XJHPushServiceImpl implements XJHPushService { private static final Logger logger = LoggerFactory.getLogger(XJHPushServiceImpl.class); @Value("${easyopen.url}") private String easyOpenUrl; @Value("${easyopen.appKey}") private String easyOpenAppKey; @Value("${easyopen.secret}") private String easyOpenSecret; @Value("${pushCallBack.url}") //从配置文件获取具体的Url private String pushCallBackUrl; @Autowired private BorrowerMapper borrowerMapper; @Autowired private BorrowerDetailMapper borrowerDetailMapper; @Autowired private BwOrderMapper bwOrderMapper; @Autowired private BwPersonInfoMapper bwPersonInfoMapper; @Autowired private BwBorrowerPersonalMapper bwBorrowerPersonlMapper; @Autowired private BorrowerIdentityMapper borrowerIdentityMapper; @Autowired private BwIdentityCardMapper bwIdentityCardMapper; @Autowired private BwFaceidVerifyMapper bwFaceidVerifyMapper; @Autowired private BwOrderChannelMapper bwOrderChannelMapper; @Autowired private BwProductDictionaryMapper bwProductDictionaryMapper; @Autowired private BwWorkInfoMapper bwWorkInfoMapper; @Autowired private BwContactListMapper bwContactListMapper; @Autowired private BwOrderAuthMapper bwOrderAuthMapper; @Autowired private BwBankCardMapper bwBankCardMapper; @Autowired private BwAdjunctMapper bwAdjunctMapper; @Autowired private XyMobileDevInfoMapper xyMobileDevInfoMapper; @Autowired private RestTemplate restTemplate; @Autowired private RedisTemplate redisTemplate; /** * 解析小金花二推数据 * @param dto * @return */ @Override public ResponseData secondPushData(XjhPushDto dto) { ResponseData response = ResponseData.susscce();
//省去具体的业务逻辑操作//小金花二推回调 FirstPushVo vo = new FirstPushVo(); vo.setUserId(String.valueOf(bwOrder.getBorrowerId())); vo.setChannelCode(dto.getChannelCode()); vo.setOrganCode(dto.getOrganCode()); vo.setName(borrower.getName()); vo.setPhone(borrower.getPhone()); vo.setIdcard(borrower.getIdCard()); vo.setOrderNo(proxyOrderNo); vo.setOrderId(bwOrder.getOrderNo()); String jsonObj = JSON.toJSONString(vo); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON_UTF8); HttpEntity<String> httpEntity = new HttpEntity(jsonObj,headers); String requestUrl = pushCallBackUrl; logger.info("XJH二推回调请求地址为:{}",requestUrl); ResponseEntity<ResultDataDto> rsp = restTemplate.exchange(requestUrl, HttpMethod.POST,httpEntity,ResultDataDto.class);
logger.info("XJH二推回调结果:"+JSON.toJSON(rsp)); if (rsp.getStatusCodeValue() == 200){ logger.info("XJH二推回调成功"); } return response; } }