From bb0ffb47062be1fab4817a81d93ea0b2c9eb7603 Mon Sep 17 00:00:00 2001
From: gdg <764716047@qq.com>
Date: Fri, 12 Mar 2021 08:21:02 +0800
Subject: [PATCH] 用户新建改
---
src/main/java/com/nanometer/smartlab/controller/UserMngController.java | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 160 insertions(+), 20 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..0408681 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,10 @@
private String editPasswor;
private List<BaseMeta> codeList;
private List<BaseRole> roleList;
+ private List<Waster> wasterSelectList;
+ private String project;
+ private String company;
+ private BaseRole role;
public List<BaseRole> getRoleList() {
return roleList;
@@ -95,12 +103,18 @@
public void onNewBtnClick() {
this.sysUser = new SysUser();
+ if (this.selectedList.size() > 1) {
+ FacesUtils.warn("不能多选");
+ return;
+ }
+ if (this.selectedList.size() == 1) {
+ this.sysUser = this.sysUserService.getSysUser(this.selectedList.get(0).getId());
+ }
this.action = Constants.ACTION_ADD;
}
public void updatePassword() {
- this.username = getUser().getName();
- this.sysUser = getUser();
+ this.username = getUser().getName();
}
@@ -190,16 +204,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 +248,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 +306,8 @@
public String updatePasswordAction() throws NoSuchAlgorithmException, CharacterCodingException
{
+ this.sysUser = getUser();
+
if(!this.sysUser.getPassword().equals(MD5Utils.encode(this.oriPassword)))
{
FacesUtils.warn("原密码错误,请重新输入!");
@@ -278,13 +319,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 +333,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 +376,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;
@@ -360,8 +420,14 @@
return;
}
- // 检查ARP号
- if (this.sysUserService.isSysUserExist(this.sysUser.getArp(), null, null, this.sysUser.getId())) {
+ // 检查ARP号 //除自己外的arp
+// if (this.sysUserService.isSysUserExist(this.sysUser.getArp(), null, null, this.sysUser.getId())) {
+// FacesUtils.warn("ARP已存在。");
+// return;
+// }
+ List<SysUser> list = sysUserService.getUserByArp(this.sysUser.getArp());
+ assert list.size() < 2;
+ if (list.size() > 0 && !list.get(0).getId().equals(this.sysUser.getId())) {
FacesUtils.warn("ARP已存在。");
return;
}
@@ -373,6 +439,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 +467,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);
@@ -414,6 +502,16 @@
}
}
+
+ public void initPage() {
+ sysUser = sysUserService.getSysUser(getUser().getId());
+ role = baseRoleService.getRoleByUserId(sysUser.getId());
+ }
+ public boolean isAccess(String info) {
+ String permission = role.getBtnPermission();
+ return permission.contains(info);
+ }
+
public LazyDataModel<SysUser> getDataModel() {
if (this.dataModel == null) {
this.dataModel = new LazyDataModel<SysUser>() {
@@ -421,11 +519,29 @@
public List<SysUser> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
List<SysUser> list = null;
try {
- int count = sysUserService.getSysUserTotalCount(arp, name,departmentName);
- this.setRowCount(count);
- if (count > 0) {
- list = sysUserService.getSysUserList(arp, name,departmentName, first, pageSize);
+ //做可见人员过滤
+ String userPermission = role.getUserPermission();
+ if (userPermission.contains("自己")) {
+ list = Collections.singletonList(sysUserService.getSysUser(UserMngController.this.sysUser.getId()));
+ this.setRowCount(1);
+
+ }else if (userPermission.contains("课题组")){
+ project = sysUser.getProject();
+ int count = sysUserService.getUserCountInProject(arp, name,departmentName,project,company);
+ this.setRowCount(count);
+ if (count > 0) {
+ list = sysUserService.getUserInProject(arp, name,departmentName,project,company, first, pageSize);
+ }
+
+ }else{
+ int count = sysUserService.getSysUserTotalCount(arp, name,departmentName,project,company);
+ this.setRowCount(count);
+ if (count > 0) {
+ list = sysUserService.getSysUserList(arp, name,departmentName,project,company, first, pageSize);
+ }
}
+
+
} catch (Exception e) {
logger.error(e);
}
@@ -487,6 +603,14 @@
return seeFlagSelectList;
}
+ public List<Waster> getWasterSelectList() {
+ if (this.wasterSelectList == null) {
+ this.wasterSelectList = Arrays.asList(Waster.values());
+ }
+
+ return wasterSelectList;
+ }
+
public String getArp() {
return arp;
}
@@ -542,4 +666,20 @@
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
+
+ public String getProject() {
+ return project;
+ }
+
+ public void setProject(String project) {
+ this.project = project;
+ }
+
+ public String getCompany() {
+ return company;
+ }
+
+ public void setCompany(String company) {
+ this.company = company;
+ }
}
--
Gitblit v1.9.2