记得上下班打卡 | git大法好,push需谨慎

Commit 57a9b479 authored by 张国柄's avatar 张国柄

~api:开通数字账号+年龄校验;

parent 5edb944d
package com.liquidnet.commons.lang.util;
import org.apache.commons.lang3.StringUtils;
import java.time.LocalDateTime;
public class IDCardUtil {
/**
* 15位身份证号
*/
private static final int FIFTEEN_ID_CARD = 15;
/**
* 18位身份证号
*/
private static final int EIGHTEEN_ID_CARD = 18;
/**
* 根据身份证号获取性别
*
* @param idNo
* @return int [0-未知|1-男|2-女]
*/
public static int getSexCode(String idNo) {
int sex = 0;
if (StringUtils.isNotBlank(idNo)) {
int sexNum;
switch (idNo.length()) {
case FIFTEEN_ID_CARD:
sexNum = Integer.parseInt(idNo.substring(14, 15));
break;
case EIGHTEEN_ID_CARD:
sexNum = Integer.parseInt(idNo.substring(16).substring(0, 1));
break;
default:
return sex;
}
if (sexNum % 2 == 0) {// 判断性别
sex = 2;
} else {
sex = 1;
}
}
return sex;
}
/**
* 根据身份证号获取性别
*
* @param idNo
* @return String[""-未知|"女"|"男"]
*/
public static String getSexStr(String idNo) {
String sex = "";
if (StringUtils.isNotBlank(idNo)) {
int sexNum;
switch (idNo.length()) {
case FIFTEEN_ID_CARD:
sexNum = Integer.parseInt(idNo.substring(14, 15));
break;
case EIGHTEEN_ID_CARD:
sexNum = Integer.parseInt(idNo.substring(16).substring(0, 1));
break;
default:
return sex;
}
if (sexNum % 2 == 0) {// 判断性别
sex = "女";
} else {
sex = "男";
}
}
return sex;
}
/**
* 根据身份证号获取年龄
*
* @param idNo
* @return int
*/
public static int getAge(String idNo) {
int age = 0;
if (StringUtils.isNotBlank(idNo)) {
LocalDateTime now = LocalDateTime.now();
int nowYear = now.getYear(), nowMonth = now.getMonthValue();// 当前年份、月份
String uYear, uMonth;// 身份证年份、月份
switch (idNo.length()) {
case FIFTEEN_ID_CARD:
// 身份证上的年份(15位身份证为1980年前的)
uYear = "19" + idNo.substring(6, 8);
// 身份证上的月份
uMonth = idNo.substring(8, 10);
break;
case EIGHTEEN_ID_CARD:
// 身份证上的年份
uYear = idNo.substring(6).substring(0, 4);
// 身份证上的月份
uMonth = idNo.substring(10).substring(0, 2);
break;
default:
return 0;
}
if (nowMonth >= Integer.parseInt(uMonth)) {// 当前月份大于用户出身的月份表示已过生日
age = nowYear - Integer.parseInt(uYear) + 1;
} else {
age = nowYear - Integer.parseInt(uYear);
}
}
return age;
}
// /**
// * 获取出生日期 yyyy年MM月dd日
// *
// * @param idNo
// * @return
// */
// public static String getBirthday(String idNo) {
// String birthday = "";
// String year = "";
// String month = "";
// String day = "";
// if (StringUtils.isNotBlank(idNo)) {
// //15位身份证号
// if (idNo.length() == FIFTEEN_ID_CARD) {
// // 身份证上的年份(15位身份证为1980年前的)
// year = "19" + idNo.substring(6, 8);
// //身份证上的月份
// month = idNo.substring(8, 10);
// //身份证上的日期
// day = idNo.substring(10, 12);
// //18位身份证号
// } else if (idNo.length() == EIGHTEEN_ID_CARD) {
// // 身份证上的年份
// year = idNo.substring(6).substring(0, 4);
// // 身份证上的月份
// month = idNo.substring(10).substring(0, 2);
// //身份证上的日期
// day = idNo.substring(12).substring(0, 2);
// }
// birthday = year + "年" + month + "月" + day + "日";
// }
// return birthday;
// }
public static void main(String[] args) {
System.out.println(IDCardUtil.getAge("141181199209160192"));
}
}
......@@ -7,6 +7,7 @@ import com.liquidnet.common.third.shumei.util.ShumeiUtil;
import com.liquidnet.commons.lang.constant.LnsEnum;
import com.liquidnet.commons.lang.constant.LnsRegex;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.IDCardUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.SensitizeUtil;
import com.liquidnet.service.adam.constant.AdamConst;
......@@ -477,6 +478,9 @@ public class AdamUserController {
if (!java.util.regex.Pattern.matches(LnsRegex.Valid.CN_ID_CARD_REF, idCard)) {
return ResponseDto.failure(ErrorMapping.get("10104"));
}
if (IDCardUtil.getAge(idCard) < 18) {
return ResponseDto.failure(ErrorMapping.get("10100"));
}
}
String currentUid = CurrentUtil.getCurrentUid();
String mobile = (String) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_MOBILE);
......
......@@ -2,10 +2,7 @@ package com.liquidnet.service.adam.service.impl;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.constant.AdamEnum;
import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserBizAcctVo;
......@@ -62,6 +59,10 @@ public class AdamUserBusiAcctServiceImpl implements IAdamUserBusiAcctService {
if (inputNameIdCardInvalidFlg) {
name = realInfoVo.getName();
idCard = realInfoVo.getIdCard();
if (IDCardUtil.getAge(idCard) < 18) {
return ResponseDto.failure(ErrorMapping.get("10100"));
}
}
adamUserService.identityForUpsert(uid, name, idCard, mobile, true);
} else {// 三要素认证的
......
......@@ -33,6 +33,7 @@
10027=服务升级,暂不支持该操作
10100=未满18周岁
10101=姓名或身份证件号无效
10102=身份证号与姓名不符
10103=身份证姓名不合规
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment