ShujubaoThreeElementVerificationService.java 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package com.hr.externelSystem;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.hr.dto.ApiLogDto;
  5. import com.hr.dto.ShujubaoMobileNameDto;
  6. import com.hr.param.ShujubaoMobileOwnerParam;
  7. import com.hr.param.ShujubaoTEVParam;
  8. import com.hr.repository.domain.IpInterfacePO;
  9. import com.hr.repository.domain.IpOrderPO;
  10. import com.hr.repository.domain.IpTokenInterfacePO;
  11. import com.hr.vo.CallbackResponseVO;
  12. import com.hr.vo.ServiceTypeVO;
  13. import com.hr.vo.ShujubaoMobileOwnerVO;
  14. import com.yy.basedevelop.common.util.HttpClientUtils;
  15. import com.yy.basedevelop.common.util.tiangua.aliyunoss.DateUtil;
  16. import lombok.extern.slf4j.Slf4j;
  17. import org.springframework.stereotype.Service;
  18. import java.util.*;
  19. /**
  20. * 数据宝手机号归属地服务
  21. */
  22. @Service
  23. @Slf4j
  24. public class ShujubaoThreeElementVerificationService implements BizHandler<ShujubaoTEVParam,Boolean>{
  25. @Override
  26. public ServiceTypeVO getType() {
  27. return new ServiceTypeVO("shujubaoTEV","数据宝三要素校验");
  28. }
  29. @Override
  30. public Boolean handle(ShujubaoTEVParam shujubaoTEVParam, IpInterfacePO ipInterfacePO, ApiLogDto logDto) {
  31. String interfaceConfig = ipInterfacePO.getInterfaceConfig();
  32. ShujubaoMobileNameDto paramDto = JSON.parseObject(interfaceConfig, ShujubaoMobileNameDto.class);
  33. try {
  34. Map<String, String> requestMap = new HashMap<>();
  35. requestMap.put("key", paramDto.getKey());
  36. requestMap.put("name", shujubaoTEVParam.getName());
  37. requestMap.put("idcard", shujubaoTEVParam.getIdCardNo());
  38. requestMap.put("mobile", shujubaoTEVParam.getMobile());
  39. logDto.setUrl(paramDto.getUrl());
  40. logDto.setRequestParam(JSON.toJSONString(requestMap));
  41. // 调用数据宝接口验证用户三要素是否一致
  42. String response = HttpClientUtils.post(paramDto.getUrl(), requestMap);
  43. log.info("调用【数据宝】三要素校验接口的结果为: {}", response);
  44. JSONObject respJson = JSONObject.parseObject(response);
  45. logDto.setResponseParam(response);
  46. logDto.setHttpStatus(respJson.getString("code"));
  47. if(null != respJson && Objects.equals(respJson.getString("code"), "10000")){
  48. JSONObject dataJson = JSONObject.parseObject(respJson.getString("data"));
  49. if(null != dataJson && dataJson.getInteger("state") != 3){
  50. switch (dataJson.getInteger("state")){
  51. case 1:
  52. return true;
  53. case 2:
  54. return false;
  55. default:
  56. return false;
  57. }
  58. }
  59. }
  60. logDto.setErrorMessage(respJson.getString("message"));
  61. } catch (Exception e) {
  62. log.info("三要素校验接口调用失败, 失败原因: {},", e.getMessage(), e);
  63. }
  64. return false;
  65. }
  66. @Override
  67. public Class<ShujubaoTEVParam> getRequestClass() {
  68. return ShujubaoTEVParam.class;
  69. }
  70. @Override
  71. public CallbackResponseVO doCallBack(IpOrderPO ipOrderPO, JSONObject callbackParam) {
  72. return null;
  73. }
  74. }