From d6c65a4e3d1ca7d9a7bd6806c99fee035d0a44eb Mon Sep 17 00:00:00 2001
From: 李宇 <986321569@qq.com>
Date: 星期三, 27 一月 2021 16:54:34 +0800
Subject: [PATCH] 合并

---
 src/main/java/com/nanometer/smartlab/controller/UserMngController.java |  108 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 94 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/nanometer/smartlab/controller/UserMngController.java b/src/main/java/com/nanometer/smartlab/controller/UserMngController.java
index d7aefe8..fe55ece 100644
--- a/src/main/java/com/nanometer/smartlab/controller/UserMngController.java
+++ b/src/main/java/com/nanometer/smartlab/controller/UserMngController.java
@@ -7,8 +7,10 @@
 import com.nanometer.smartlab.entity.enumtype.ApproverFlag;
 import com.nanometer.smartlab.entity.enumtype.SeeFlag;
 import com.nanometer.smartlab.entity.enumtype.ValidFlag;
+import com.nanometer.smartlab.entity.enumtype.Waster;
 import com.nanometer.smartlab.service.BaseMetaService;
 import com.nanometer.smartlab.service.BaseRoleService;
+import com.nanometer.smartlab.service.SysProjectService;
 import com.nanometer.smartlab.service.SysUserService;
 import com.nanometer.smartlab.util.Constants;
 import com.nanometer.smartlab.util.FacesUtils;
@@ -50,6 +52,8 @@
     private BaseMetaService baseMetaService;
     @Resource
     private BaseRoleService baseRoleService;
+    @Resource
+    private SysProjectService sysProjectService;
 
     private LazyDataModel<SysUser> dataModel;
     private SysUser sysUser;
@@ -66,6 +70,7 @@
     private String editPasswor;
     private List<BaseMeta> codeList;
     private List<BaseRole> roleList;
+    private List<Waster> wasterSelectList;
 
     public List<BaseRole> getRoleList() {
         return roleList;
@@ -99,8 +104,7 @@
     }
 
     public void updatePassword() {
-    	    this.username = getUser().getName();
-    	    this.sysUser = getUser();
+        this.username = getUser().getName();
     }
 
 
@@ -190,16 +194,31 @@
                 sysUser.setName(valuesList.get(3));//姓名
                 sysUser.setAccount(valuesList.get(4));//账号
 
-                String PW_PATTERN = "^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[a-zA-Z0-9\\W]{8,}$";
+                String PW_PATTERN = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*_.]).{8,}";
                 if (!valuesList.get(5).matches(PW_PATTERN)){
                     errorMsg += "第"+i+"行,密码必须8位以上,并且包含大小写字母、数字、特殊符号三种以上";
                 }
 
-                sysUser.setPassword(MD5Utils.encode((int)Double.parseDouble(valuesList.get(5))+""));//密码
+                sysUser.setPassword(MD5Utils.encode(valuesList.get(5))+"");//密码
 
+                //valuesList.get(8) id卡号检查
+                if (valuesList.get(8) != null && valuesList.get(8).length()>0){
+                    //大写转换
+                    String idCardUpper = valuesList.get(8).trim().toUpperCase();
+                    //8位和20位下8位才做补齐20位,否则提示输入id卡号8位或者20位
+                    if (idCardUpper.length() == 8 ||idCardUpper.length() == 20) {
+                        if (idCardUpper.length() == 8){
+                            //8位补齐20位,否则不做操作
+                            String idCard = "E0E01E000A" + idCardUpper + "01";
+                            sysUser.setIdCard(idCard);//id卡号
+                        }
+                    }else{
+                        FacesUtils.warn("第"+i+"行,id卡号需要8位或者20位");
+                        return;
+                    }
+                }
                 sysUser.setPhone(valuesList.get(6));//电话
                 sysUser.setEmail(valuesList.get(7));//邮箱
-                sysUser.setIdCard(valuesList.get(8));//id卡号
                 sysUser.setPoint((int)Double.parseDouble(valuesList.get(9)));//分数
                 sysUser.setRoleId(valuesList.get(10));//角色
                 if(valuesList.get(11).equals("是")){
@@ -219,10 +238,20 @@
                 if(valuesList.get(12).equals(SeeFlag.LEADING.getText())){
                     sysUser.setSeeFlag(SeeFlag.LEADING);
                 }
-                if(valuesList.size()==14){
-                    sysUser.setMemo(valuesList.get(13));
-                }else {
-                    sysUser.setMemo("");
+
+
+                if (valuesList.size() > 13 && !valuesList.get(13).replace(" ","").isEmpty()){
+                    String[] projects = valuesList.get(13).split(",");
+                    for (String project : projects) {
+                        //不存再就直接推出
+                        if (!sysProjectService.isExistProject(project)) {
+                            throw new Exception("课题组不存在,(" + i  + "行)");
+                        }
+                    }
+                    //都存在就设置
+                    sysUser.setProject(valuesList.get(13).replace(" ",""));
+                }else{
+                    sysUser.setProject(null);
                 }
 
                 sysUser.setValidFlag(ValidFlag.VALID);
@@ -267,6 +296,8 @@
 
     public String updatePasswordAction() throws NoSuchAlgorithmException, CharacterCodingException
     {
+        this.sysUser = getUser();
+
 		if(!this.sysUser.getPassword().equals(MD5Utils.encode(this.oriPassword)))
 		{
 			FacesUtils.warn("原密码错误,请重新输入!");
@@ -278,13 +309,13 @@
 		    return null;
 		}
 
-		String PW_PATTERN = "^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[a-zA-Z0-9\\W]{8,}$";
+		String PW_PATTERN = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*_.]).{8,}";
         if (!this.newPassword.matches(PW_PATTERN)){
             FacesUtils.warn("密码必须8位以上,并且包含大小写字母、数字、特殊符号三种以上");
             return null;
         }
 
-        this.sysUser.setName(username);
+//        this.sysUser.setName(username);
         this.sysUser.setPassword(MD5Utils.encode(this.newPassword));
         this.sysUserService.updateSysUser(sysUser);
         this.newPassword = null;
@@ -292,6 +323,7 @@
         this.newPasswordSecond = null;
         FacesUtils.info("修改成功,请重新登录!");
         RequestContext.getCurrentInstance().execute("PF('dialogPassword').hide()");
+        RequestContext.getCurrentInstance().execute("PF('changePassword').hide()");
         this.getSubject().logout();
         return Constants.PAGE_LOGIN + Constants.REDIRECT;
     }
@@ -334,15 +366,33 @@
                 }
 
                 // 检查idCard
+                if (this.sysUser.getIdCard() != null && this.sysUser.getIdCard().length()>0){
+                    String idCardUpper = sysUser.getIdCard().trim().toUpperCase();
+                    //8位和20位下8位才做补齐20位,否则提示输入id卡号8位或者20位
+                    if (idCardUpper.length() == 8 ||idCardUpper.length() == 20) {
+                        if (idCardUpper.length() == 8){
+                            //8位补齐20位,否则不做操作
+                            this.sysUser.setIdCard("E0E01E000A" + idCardUpper + "01");
+                        }else{
+                            //20位
+                            this.sysUser.setIdCard(idCardUpper);
+                        }
+                    }else{
+                        FacesUtils.warn("id卡号8位或者20位");
+                        return;
+                    }
+                }
+
+
                 if (!StringUtils.isEmpty(this.sysUser.getIdCard()) && this.sysUserService.isSysUserExist(null, null, this.sysUser.getIdCard(), null)) {
                     FacesUtils.warn("ID卡号已存在。");
                     return;
                 }
-                if(!org.apache.commons.lang.StringUtils.isNotBlank(sysUser.getProjectId())){
-                    sysUser.setProjectId(null);
+                if(!org.apache.commons.lang.StringUtils.isNotBlank(sysUser.getProject())){
+                    sysUser.setProject(null);
                 }
 
-                String PW_PATTERN = "^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[a-zA-Z0-9\\W]{8,}$";
+                String PW_PATTERN = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*_.]).{8,}";
                 if (!sysUser.getPassword().matches(PW_PATTERN)){
                     FacesUtils.warn("密码必须8位以上,并且包含大小写字母、数字、特殊符号三种以上");
                     return;
@@ -373,6 +423,23 @@
                 }
 
                 // 检查idCard
+                if (this.sysUser.getIdCard() != null && this.sysUser.getIdCard().length()>0){
+                    String idCardUpper = sysUser.getIdCard().trim().toUpperCase();
+                    //8位和20位下8位才做补齐20位,否则提示输入id卡号8位或者20位
+                    if (idCardUpper.length() == 8 ||idCardUpper.length() == 20) {
+                        if (idCardUpper.length() == 8){
+                            //8位补齐20位,否则不做操作
+                            this.sysUser.setIdCard("E0E01E000A" + idCardUpper + "01");
+                        }else{
+                            //20位
+                            this.sysUser.setIdCard(idCardUpper);
+                        }
+                    }else{
+                        FacesUtils.warn("id卡号8位或者20位");
+                        return;
+                    }
+                }
+
                 if(this.sysUser.getIdCard()==null || this.sysUser.getIdCard()==""){
 
                 }else {
@@ -384,6 +451,11 @@
                 if(sysUser.getPassword()==null || sysUser.getPassword().equals("")){
                     sysUser.setPassword(this.editPasswor);
                 }else {
+                    String PW_PATTERN = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*_.]).{8,}";
+                    if (!sysUser.getPassword().matches(PW_PATTERN)){
+                        FacesUtils.warn("密码必须8位以上,并且包含大小写字母、数字、特殊符号三种以上");
+                        return;
+                    }
                     sysUser.setPassword(MD5Utils.encode(sysUser.getPassword()));
                 }
                 this.sysUserService.updateSysUser(sysUser);
@@ -487,6 +559,14 @@
     	return seeFlagSelectList;
     }
 
+    public List<Waster> getWasterSelectList() {
+        if (this.wasterSelectList == null) {
+            this.wasterSelectList = Arrays.asList(Waster.values());
+        }
+
+        return wasterSelectList;
+    }
+
     public String getArp() {
         return arp;
     }

--
Gitblit v1.9.2