From 24a924b1dd62aa1a52ced7e8ed580b5d799900c9 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Fri, 19 Jun 2020 10:19:54 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=85=9A=E5=91=98=E8=BA=AB=E4=BB=BD?= =?UTF-8?q?=E8=AF=81=E5=8F=B7=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/enums/RequirePermissionEnum.java | 12 +- .../validator/IdCardNoValidatorUtils.java | 205 +++++++++++++++++- 2 files changed, 205 insertions(+), 12 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java index e5e5bb9a2d..a694f585fb 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java @@ -111,12 +111,12 @@ public enum RequirePermissionEnum { /** * 基层治理-支部管理 */ - WORK_GRASSROOTS_PARTY_BRANCH_ADD("work_grassroots_party_branch_add","添加党支部","支部管理-添加党支部"), - WORK_GRASSROOTS_PARTY_BRANCH_EDIT("work_grassroots_party_branch_edit","编辑党支部","支部管理-编辑党支部信息"), - WORK_GRASSROOTS_PARTY_BRANCH_DELETE("work_grassroots_party_branch_delete","删除党支部","支部管理-删除党支部"), - WORK_GRASSROOTS_PARTY_MEMBER_ADD("work_grassroots_party_member_add","添加党员","支部管理-添加党员"), - WORK_GRASSROOTS_PARTY_MEMBER_EDIT("work_grassroots_party_member_edit","编辑党员","支部管理-编辑党员"), - WORK_GRASSROOTS_PARTY_MEMBER_DELETE("work_grassroots_party_member_delete","删除党员","支部管理-删除党员"); + WORK_GRASSROOTS_PARTY_BRANCH_ADD("work_grassroots_party_branch_add","支部管理-添加党支部","支部管理-添加党支部"), + WORK_GRASSROOTS_PARTY_BRANCH_EDIT("work_grassroots_party_branch_edit","支部管理-编辑党支部","支部管理-编辑党支部信息"), + WORK_GRASSROOTS_PARTY_BRANCH_DELETE("work_grassroots_party_branch_delete","支部管理-删除党支部","支部管理-删除党支部"), + WORK_GRASSROOTS_PARTY_MEMBER_ADD("work_grassroots_party_member_add","支部管理-添加党员","支部管理-添加党员"), + WORK_GRASSROOTS_PARTY_MEMBER_EDIT("work_grassroots_party_member_edit","支部管理-编辑党员","支部管理-编辑党员"), + WORK_GRASSROOTS_PARTY_MEMBER_DELETE("work_grassroots_party_member_delete","支部管理-删除党员","支部管理-删除党员"); private String key; diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/IdCardNoValidatorUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/IdCardNoValidatorUtils.java index cc93d9f3a8..2aa3e2c964 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/IdCardNoValidatorUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/IdCardNoValidatorUtils.java @@ -1,19 +1,212 @@ package com.epmet.commons.tools.validator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.GregorianCalendar; +import java.util.Hashtable; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static java.util.regex.Pattern.*; + /** - * 描述一下 + * 身份证号校验 * * @author yinzuomei@elink-cn.com * @date 2020/6/18 9:59 */ public class IdCardNoValidatorUtils { - //判断身份证号是否正确 - public static boolean checkIsIdCardNo(String idCardNo){ - return true; + + private static Logger logger = LoggerFactory.getLogger(IdCardNoValidatorUtils.class); + + /** + * 身份证验证 + * + * @param idCardNo + * @return 校验信息,correct为成功,失败会返回对应的失败原因 + */ + public static boolean checkIsIdCardNo(String idCardNo) { + String[] wf = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"}; + String[] checkCode = {"7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"}; + String iDCardNo = ""; + try { + //判断号码的长度 15位或18位 + if (idCardNo.length() != 15 && idCardNo.length() != 18) { + logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证号码长度应该为15位或18位")); + return false; + } + if (idCardNo.length() == 18) { + String lastStr = idCardNo.substring(idCardNo.length() - 1); + if (!Character.isDigit(lastStr.charAt(0))) { + if (Character.isLowerCase(lastStr.charAt(0))) { + logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "18身份证号最后一位字母需要大写")); + return false; + } + } else { + logger.info(String.format("身份证号%s最后一位为数字")); + } + } + if (idCardNo.length() == 18) { + iDCardNo = idCardNo.substring(0, 17); + } else if (idCardNo.length() == 15) { + iDCardNo = idCardNo.substring(0, 6) + "19" + idCardNo.substring(6, 15); + } + if (isStrNum(iDCardNo) == false) { + logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证15位号码都应为数字;18位号码除最后一位外,都应为数字")); + return false; + } + //判断出生年月 + String strYear = iDCardNo.substring(6, 10);// 年份 + String strMonth = iDCardNo.substring(10, 12);// 月份 + String strDay = iDCardNo.substring(12, 14);// 月份 + if (isStrDate(strYear + "-" + strMonth + "-" + strDay) == false) { + logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证生日无效")); + return false; + } + GregorianCalendar gc = new GregorianCalendar(); + SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd"); + if ((gc.get(Calendar.YEAR) - Integer.parseInt(strYear)) > 150 || (gc.getTime().getTime() - s.parse(strYear + "-" + strMonth + "-" + strDay).getTime()) < 0) { + logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证生日不在有效范围")); + return false; + } + if (Integer.parseInt(strMonth) > 12 || Integer.parseInt(strMonth) == 0) { + logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证月份无效")); + return false; + } + if (Integer.parseInt(strDay) > 31 || Integer.parseInt(strDay) == 0) { + logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证日期无效")); + return false; + } + //判断地区码 + Hashtable h = GetAreaCode(); + if (h.get(iDCardNo.substring(0, 2)) == null) { + logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证地区编码错误")); + return false; + } + //判断最后一位 + int theLastOne = 0; + for (int i = 0; i < 17; i++) { + theLastOne = theLastOne + Integer.parseInt(String.valueOf(iDCardNo.charAt(i))) * Integer.parseInt(checkCode[i]); + } + int modValue = theLastOne % 11; + String strVerifyCode = wf[modValue]; + iDCardNo = iDCardNo + strVerifyCode; + + if (idCardNo.length() == 18 && !iDCardNo.equals(idCardNo)) { + logger.error(String.format("校验身份证号:%s错误:%s", idCardNo, "身份证无效,不是合法的身份证号码")); + return false; + } + + } catch (Exception e) { + logger.error(String.format("校验身份证号方法异常")); + e.printStackTrace(); + } + return true; + } + + /** + * 地区代码 + * + * @return Hashtable + */ + private static Hashtable GetAreaCode() { + Hashtable hashtable = new Hashtable(); + hashtable.put("11", "北京"); + hashtable.put("12", "天津"); + hashtable.put("13", "河北"); + hashtable.put("14", "山西"); + hashtable.put("15", "内蒙古"); + hashtable.put("21", "辽宁"); + hashtable.put("22", "吉林"); + hashtable.put("23", "黑龙江"); + hashtable.put("31", "上海"); + hashtable.put("32", "江苏"); + hashtable.put("33", "浙江"); + hashtable.put("34", "安徽"); + hashtable.put("35", "福建"); + hashtable.put("36", "江西"); + hashtable.put("37", "山东"); + hashtable.put("41", "河南"); + hashtable.put("42", "湖北"); + hashtable.put("43", "湖南"); + hashtable.put("44", "广东"); + hashtable.put("45", "广西"); + hashtable.put("46", "海南"); + hashtable.put("50", "重庆"); + hashtable.put("51", "四川"); + hashtable.put("52", "贵州"); + hashtable.put("53", "云南"); + hashtable.put("54", "西藏"); + hashtable.put("61", "陕西"); + hashtable.put("62", "甘肃"); + hashtable.put("63", "青海"); + hashtable.put("64", "宁夏"); + hashtable.put("65", "新疆"); + hashtable.put("71", "台湾"); + hashtable.put("81", "香港"); + hashtable.put("82", "澳门"); + hashtable.put("91", "国外"); + return hashtable; + } + + /** + * 判断字符串是否为数字 + * + * @param str + * @return + */ + private static boolean isStrNum(String str) { + Pattern pattern = compile("[0-9]*"); + Matcher isNum = pattern.matcher(str); + if (isNum.matches()) { + return true; + } else { + return false; + } + } + + /** + * 判断字符串是否为日期格式 + * + * @param strDate + * @return + */ + public static boolean isStrDate(String strDate) { + Pattern pattern = compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$"); + Matcher m = pattern.matcher(strDate); + if (m.matches()) { + return true; + } else { + return false; + } } - //根据身份证号判断性别 + + //根据身份证号判断性别 1男2女0未知 public static String getGender(String idCard) { - return "1"; + String gender = "0"; + if (!IdCardNoValidatorUtils.checkIsIdCardNo(idCard)) { + return gender; + } + if (idCard.length() == 18) { + if (Integer.parseInt(idCard.substring(16).substring(0, 1)) % 2 == 0) { + gender = "2"; + } else { + gender = "1"; + } + } else if (idCard.length() == 15) { + String usex = idCard.substring(14, 15); + if (Integer.parseInt(usex) % 2 == 0) { + gender = "2"; + } else { + gender = "1"; + } + } + return gender; } + } + From 65ea28dd768a4153ce735bb38ff38431f001a620 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Fri, 19 Jun 2020 10:25:31 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=8A=9F=E8=83=BDkey=20name=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/enums/RequirePermissionEnum.java | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java index a694f585fb..9de4b0d167 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/RequirePermissionEnum.java @@ -76,23 +76,23 @@ public enum RequirePermissionEnum { /** * 基层治理-议题管理 */ - WORK_GRASSROOTS_ISSUE_VOTINGLIST("work_grassroots_issue_voting_list","表决中","表决中议题列表查询"), - WORK_GRASSROOTS_ISSUE_SHIFTED_PROJECT_LIST("work_grassroots_issue_shifted_project_list", "已转项目列表查询","已转项目议题列表查询"), - WORK_GRASSROOTS_ISSUE_CLOSED_LIST("work_grassroots_issue_closed_list","已关闭","已关闭议题列表查询"), - WORK_GRASSROOTS_ISSUE_DETAIL("work_grassroots_issue_detail", "议题详情","议题详情界面所有的api添加此校验"), - WORK_GRASSROOTS_ISSUE_SHIFT_PROJECT("work_grassroots_issue_shift_project", "转项目","转项目(选择处理部门api也需要添加此校验)"), - WORK_GRASSROOTS_ISSUE_CLOSE("work_grassroots_issue_close","关闭议题","关闭议题"), + WORK_GRASSROOTS_ISSUE_VOTINGLIST("work_grassroots_issue_voting_list","基层治理:议题管理:表决中","表决中议题列表查询"), + WORK_GRASSROOTS_ISSUE_SHIFTED_PROJECT_LIST("work_grassroots_issue_shifted_project_list", "基层治理:议题管理:已转项目列表查询","已转项目议题列表查询"), + WORK_GRASSROOTS_ISSUE_CLOSED_LIST("work_grassroots_issue_closed_list","基层治理:议题管理:已关闭","已关闭议题列表查询"), + WORK_GRASSROOTS_ISSUE_DETAIL("work_grassroots_issue_detail", "基层治理:议题管理:议题详情","议题详情界面所有的api添加此校验"), + WORK_GRASSROOTS_ISSUE_SHIFT_PROJECT("work_grassroots_issue_shift_project", "基层治理:议题管理:转项目","转项目(选择处理部门api也需要添加此校验)"), + WORK_GRASSROOTS_ISSUE_CLOSE("work_grassroots_issue_close","基层治理:议题管理:关闭议题","关闭议题"), /** * 工作-项目跟踪 */ - WORK_PROJECT_TRACE_PENDING_LIST("work_project_trace_pending_list","待处理","待处理的项目,列表查询"), - WORK_PROJECT_TRACE_CREATED_LIST("work_project_trace_created_list","我发起","我发起的项目,列表查询"), - WORK_PROJECT_TRACE_INVOLVED_LIST("work_project_trace_involved_list","我参与","我参与的项目,列表查询"), - WORK_PROJECT_TRACE_DETAIL("work_project_trace_detail","项目详情","项目详情界面所有的api添加此校验"), - WORK_PROJECT_TRACE_CLOSE("work_project_trace_close","结案","结案"), - WORK_PROJECT_TRACE_TRANSFER("work_project_trace_transfer","转其他部门","转其他部门(选择处理部门api也需要添加此校验)"), - WORK_PROJECT_TRACE_RETURN("work_project_trace_return","退回","退回"), + WORK_PROJECT_TRACE_PENDING_LIST("work_project_trace_pending_list","项目跟踪:待处理","待处理的项目,列表查询"), + WORK_PROJECT_TRACE_CREATED_LIST("work_project_trace_created_list","项目跟踪:我发起","我发起的项目,列表查询"), + WORK_PROJECT_TRACE_INVOLVED_LIST("work_project_trace_involved_list","项目跟踪:我参与","我参与的项目,列表查询"), + WORK_PROJECT_TRACE_DETAIL("work_project_trace_detail","项目跟踪:项目详情","项目详情界面所有的api添加此校验"), + WORK_PROJECT_TRACE_CLOSE("work_project_trace_close","项目跟踪:结案","结案"), + WORK_PROJECT_TRACE_TRANSFER("work_project_trace_transfer","项目跟踪:转其他部门","转其他部门(选择处理部门api也需要添加此校验)"), + WORK_PROJECT_TRACE_RETURN("work_project_trace_return","项目跟踪:退回","退回"), /** * 党务工作-党建声音 @@ -111,12 +111,12 @@ public enum RequirePermissionEnum { /** * 基层治理-支部管理 */ - WORK_GRASSROOTS_PARTY_BRANCH_ADD("work_grassroots_party_branch_add","支部管理-添加党支部","支部管理-添加党支部"), - WORK_GRASSROOTS_PARTY_BRANCH_EDIT("work_grassroots_party_branch_edit","支部管理-编辑党支部","支部管理-编辑党支部信息"), - WORK_GRASSROOTS_PARTY_BRANCH_DELETE("work_grassroots_party_branch_delete","支部管理-删除党支部","支部管理-删除党支部"), - WORK_GRASSROOTS_PARTY_MEMBER_ADD("work_grassroots_party_member_add","支部管理-添加党员","支部管理-添加党员"), - WORK_GRASSROOTS_PARTY_MEMBER_EDIT("work_grassroots_party_member_edit","支部管理-编辑党员","支部管理-编辑党员"), - WORK_GRASSROOTS_PARTY_MEMBER_DELETE("work_grassroots_party_member_delete","支部管理-删除党员","支部管理-删除党员"); + WORK_GRASSROOTS_PARTY_BRANCH_ADD("work_grassroots_party_branch_add","基层治理:支部管理:添加党支部","支部管理-添加党支部"), + WORK_GRASSROOTS_PARTY_BRANCH_EDIT("work_grassroots_party_branch_edit","基层治理:支部管理:编辑党支部","支部管理-编辑党支部信息"), + WORK_GRASSROOTS_PARTY_BRANCH_DELETE("work_grassroots_party_branch_delete","基层治理:支部管理:删除党支部","支部管理-删除党支部"), + WORK_GRASSROOTS_PARTY_MEMBER_ADD("work_grassroots_party_member_add","基层治理:支部管理:添加党员","支部管理-添加党员"), + WORK_GRASSROOTS_PARTY_MEMBER_EDIT("work_grassroots_party_member_edit","基层治理:支部管理:编辑党员","支部管理-编辑党员"), + WORK_GRASSROOTS_PARTY_MEMBER_DELETE("work_grassroots_party_member_delete","基层治理:支部管理:删除党员","支部管理-删除党员"); private String key; From addfd6405cafef495ab9c40bd3d4da4c9af02e3a Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Fri, 19 Jun 2020 10:26:24 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=94=AF=E9=83=A8=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=85=9A=E5=91=98=EF=BC=8C=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E8=BA=AB=E4=BB=BD=E8=AF=81=E5=8F=B7=EF=BC=8C=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=80=A7=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resi-partymember-server/deploy/docker-compose-dev.yml | 2 +- epmet-module/resi-partymember/resi-partymember-server/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/epmet-module/resi-partymember/resi-partymember-server/deploy/docker-compose-dev.yml b/epmet-module/resi-partymember/resi-partymember-server/deploy/docker-compose-dev.yml index f3df2c490a..9eececd562 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/deploy/docker-compose-dev.yml +++ b/epmet-module/resi-partymember/resi-partymember-server/deploy/docker-compose-dev.yml @@ -2,7 +2,7 @@ version: "3.7" services: resi-partymember-server: container_name: resi-partymember-server-dev - image: 192.168.1.130:10080/epmet-cloud-dev/resi-partymember-server:0.3.48 + image: 192.168.1.130:10080/epmet-cloud-dev/resi-partymember-server:0.3.49 ports: - "8096:8096" network_mode: host # 使用现有网络 diff --git a/epmet-module/resi-partymember/resi-partymember-server/pom.xml b/epmet-module/resi-partymember/resi-partymember-server/pom.xml index 885a1c4a04..3b38da7c3b 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/pom.xml +++ b/epmet-module/resi-partymember/resi-partymember-server/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - 0.3.48 + 0.3.49 com.epmet resi-partymember