1、roll平台身份证查询api实现
This commit is contained in:
parent
fec2fc4391
commit
5da5b5d93b
|
|
@ -66,6 +66,8 @@ public class ApiConst {
|
|||
|
||||
public static final String ROLL_CHINESE_DICT = "ROLL-汉语字典";
|
||||
|
||||
public static final String ROLL_IDCARD_QUERY = "ROLL-身份证查询";
|
||||
|
||||
|
||||
//-------------------url------------------------------
|
||||
|
||||
|
|
@ -150,9 +152,10 @@ public class ApiConst {
|
|||
*/
|
||||
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请求参数常量-----------------------------
|
||||
|
|
@ -184,7 +187,6 @@ public class ApiConst {
|
|||
public static final Integer SPEED_TEST_CODE_SUCCESS = 0;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 高德返回值infocode
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.xjs.consts;
|
|||
|
||||
/**
|
||||
* 正则表达式常量
|
||||
*
|
||||
* @author xiejs
|
||||
* @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.regex.Pattern;
|
||||
|
||||
import static com.xjs.consts.RegexConst.MOBILE_REGEX;
|
||||
import static com.xjs.consts.RegexConst.*;
|
||||
|
||||
/**
|
||||
* 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 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;
|
||||
|
||||
/**
|
||||
* roll平台获取身份证查询api工厂实现
|
||||
* @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);
|
||||
|
||||
|
||||
/**
|
||||
* 获取身份证查询数据
|
||||
* @param idcard 身份证号码
|
||||
* @return ApiIdcardQuery
|
||||
*/
|
||||
ApiIdcardQuery getIdcardQuery(String idcard);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,6 +48,10 @@ public class ApiToolsServiceImpl implements ApiToolsService {
|
|||
@Qualifier("rollChineseDictFactory")
|
||||
private ApiToolsFactory<ApiChineseDict,RequestBody> chineseDictFactory;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("rollIdcardQueryFactory")
|
||||
private ApiToolsFactory<ApiIdcardQuery,RequestBody> idcardQueryFactory;
|
||||
|
||||
@Autowired
|
||||
public void setHolidayFactory(RollHolidayFactory rollHolidayFactory) {
|
||||
this.holidayFactory = rollHolidayFactory;
|
||||
|
|
@ -169,4 +173,14 @@ public class ApiToolsServiceImpl implements ApiToolsService {
|
|||
requestBody.setContent(content);
|
||||
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;
|
||||
|
||||
/**
|
||||
* roll身份证查询api接口feign远程调用
|
||||
* @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;
|
||||
|
||||
/**
|
||||
* roll身份证查询api接口feign远程调用降级
|
||||
* @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…
Reference in New Issue