1、roll平台身份证查询api实现

pull/254/head
xjs 4 years ago
parent fec2fc4391
commit 5da5b5d93b

@ -66,6 +66,8 @@ public class ApiConst {
public static final String ROLL_CHINESE_DICT = "ROLL-汉语字典"; public static final String ROLL_CHINESE_DICT = "ROLL-汉语字典";
public static final String ROLL_IDCARD_QUERY = "ROLL-身份证查询";
//-------------------url------------------------------ //-------------------url------------------------------
@ -150,9 +152,10 @@ public class ApiConst {
*/ */
public static final String ROLL_CHINESE_DICT_URL = "https://www.mxnzp.com/api/convert/dictionary"; public static final String ROLL_CHINESE_DICT_URL = "https://www.mxnzp.com/api/convert/dictionary";
/**
* https://www.mxnzp.com/doc/detail?id=28
*/
public static final String ROLL_IDCARD_QUERY_URL = "https://www.mxnzp.com/api/idcard/search";
//-----------------------api请求参数常量----------------------------- //-----------------------api请求参数常量-----------------------------
@ -184,7 +187,6 @@ public class ApiConst {
public static final Integer SPEED_TEST_CODE_SUCCESS = 0; public static final Integer SPEED_TEST_CODE_SUCCESS = 0;
/** /**
* infocode * infocode
*/ */

@ -2,6 +2,7 @@ package com.xjs.consts;
/** /**
* *
*
* @author xiejs * @author xiejs
* @since 2022-01-18 * @since 2022-01-18
*/ */
@ -9,6 +10,16 @@ public class RegexConst {
/** /**
* *
*/ */
public static final String MOBILE_REGEX= "^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$"; public static final String MOBILE_REGEX = "^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$";
/**
* 18
*/
public static final String IDCARD_18_REGEX = "^([1-6][1-9]|50)\\d{4}(18|19|20)\\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$";
/**
* 15
*/
public static final String IDCARD_15_REGEX = "^([1-6][1-9]|50)\\d{4}\\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\\d{3}$";
} }

@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import static com.xjs.consts.RegexConst.MOBILE_REGEX; import static com.xjs.consts.RegexConst.*;
/** /**
* api * api
@ -117,4 +117,17 @@ public class ApiToolsController {
} }
@GetMapping("idcardquery/{idcard}")
@ApiOperation("获取身份证信息")
@Log(title = "获取身份证信息")
public R<ApiIdcardQuery> getIdcardQueryApiData(@PathVariable("idcard") String idcard) {
boolean id15 = Pattern.matches(IDCARD_15_REGEX, idcard);
boolean id18 = Pattern.matches(IDCARD_18_REGEX, idcard);
if (id15 || id18) {
return R.ok(apiToolsService.getIdcardQuery(idcard));
}
return R.fail("请输入正确的身份证号!!!");
}
} }

@ -0,0 +1,41 @@
package com.xjs.apitools.domain;
import lombok.Data;
import java.io.Serializable;
/**
* api
* @author xiejs
* @since 2022-01-20
*/
@Data
public class ApiIdcardQuery implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private String idCardNum;
/**
*
*/
private String address;
/**
*
*/
private String birthday;
/**
*
*/
private String sex;
}

@ -50,4 +50,10 @@ public class RequestBody {
private String content; private String content;
/**
*
*/
private String idcard;
} }

@ -0,0 +1,41 @@
package com.xjs.apitools.factory.impl;
import com.alibaba.fastjson.JSONObject;
import com.xjs.apitools.domain.ApiIdcardQuery;
import com.xjs.apitools.domain.RequestBody;
import com.xjs.apitools.factory.ApiToolsFactory;
import com.xjs.common.client.api.roll.RollIdcardQueryFeignClient;
import com.xjs.config.RollProperties;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import static com.xjs.consts.ApiConst.DEMOTE_ERROR;
import static com.xjs.consts.ApiConst.ROLL_CODE_SUCCESS;
/**
* rollapi
* @author xiejs
* @since 2022-01-20
*/
@Component
@Log4j2
public class RollIdcardQueryFactory implements ApiToolsFactory<ApiIdcardQuery, RequestBody> {
@Autowired
private RollProperties rollProperties;
@Autowired
private RollIdcardQueryFeignClient rollIdcardQueryFeignClient;
@Override
public ApiIdcardQuery apiData(RequestBody req) {
req.setApp_secret(rollProperties.getApp_secret());
req.setApp_id(rollProperties.getApp_id());
JSONObject jsonObject = rollIdcardQueryFeignClient.idcardQueryApi(req);
if (!jsonObject.containsKey(DEMOTE_ERROR) && jsonObject.getInteger("code") == ROLL_CODE_SUCCESS.intValue()) {
JSONObject data = jsonObject.getJSONObject("data");
return data.toJavaObject(ApiIdcardQuery.class);
}
return null;
}
}

@ -79,5 +79,13 @@ public interface ApiToolsService {
ApiChineseDict getChineseDict(String content); ApiChineseDict getChineseDict(String content);
/**
*
* @param idcard
* @return ApiIdcardQuery
*/
ApiIdcardQuery getIdcardQuery(String idcard);
} }

@ -48,6 +48,10 @@ public class ApiToolsServiceImpl implements ApiToolsService {
@Qualifier("rollChineseDictFactory") @Qualifier("rollChineseDictFactory")
private ApiToolsFactory<ApiChineseDict,RequestBody> chineseDictFactory; private ApiToolsFactory<ApiChineseDict,RequestBody> chineseDictFactory;
@Autowired
@Qualifier("rollIdcardQueryFactory")
private ApiToolsFactory<ApiIdcardQuery,RequestBody> idcardQueryFactory;
@Autowired @Autowired
public void setHolidayFactory(RollHolidayFactory rollHolidayFactory) { public void setHolidayFactory(RollHolidayFactory rollHolidayFactory) {
this.holidayFactory = rollHolidayFactory; this.holidayFactory = rollHolidayFactory;
@ -169,4 +173,14 @@ public class ApiToolsServiceImpl implements ApiToolsService {
requestBody.setContent(content); requestBody.setContent(content);
return chineseDictFactory.apiData(requestBody); return chineseDictFactory.apiData(requestBody);
} }
@Override
public ApiIdcardQuery getIdcardQuery(String idcard) {
RequestBody requestBody = new RequestBody();
requestBody.setIdcard(idcard);
return idcardQueryFactory.apiData(requestBody);
}
} }

@ -0,0 +1,27 @@
package com.xjs.common.client.api.roll;
import com.alibaba.fastjson.JSONObject;
import com.xjs.annotation.ApiLog;
import com.xjs.apitools.domain.RequestBody;
import com.xjs.common.client.factory.RollIdcardQueryFeignFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.GetMapping;
import static com.xjs.consts.ApiConst.ROLL_IDCARD_QUERY;
import static com.xjs.consts.ApiConst.ROLL_IDCARD_QUERY_URL;
/**
* rollapifeign
* @author xiejs
* @since 2022-01-20
*/
@FeignClient(name = "rollIdcardQuery", url = ROLL_IDCARD_QUERY_URL, fallbackFactory = RollIdcardQueryFeignFactory.class)
public interface RollIdcardQueryFeignClient {
@GetMapping()
@ApiLog(name = ROLL_IDCARD_QUERY,
url = ROLL_IDCARD_QUERY_URL,
method = "Get")
JSONObject idcardQueryApi(@SpringQueryMap RequestBody requestBody);
}

@ -0,0 +1,30 @@
package com.xjs.common.client.factory;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.R;
import com.xjs.common.client.api.roll.RollIdcardQueryFeignClient;
import lombok.extern.log4j.Log4j2;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import static com.xjs.consts.ApiConst.DEMOTE_ERROR;
/**
* rollapifeign
* @author xiejs
* @since 2022-01-20
*/
@Component
@Log4j2
public class RollIdcardQueryFeignFactory implements FallbackFactory<RollIdcardQueryFeignClient> {
@Override
public RollIdcardQueryFeignClient create(Throwable cause) {
log.error("api模块roll 身份证查询调用失败:{},执行降级处理", cause.getMessage());
return requestBody -> {
JSONObject jsonObject = new JSONObject();
jsonObject.put(DEMOTE_ERROR, R.FAIL);
return jsonObject;
};
}
}
Loading…
Cancel
Save