wangwei 7 yıl önce
ebeveyn
işleme
10cde6cd6f

+ 42 - 30
examcloud-core-basic-api-provider/src/main/java/cn/com/qmth/examcloud/core/basic/api/controller/UserController.java

@@ -173,6 +173,46 @@ public class UserController extends ControllerSupport {
 	@ApiOperation(value = "新增用户", notes = "新增")
 	@PostMapping
 	public Long addUser(@RequestBody UserForm userForm) {
+		userForm.setId(null);
+		return insertOrUpdateUser(userForm);
+	}
+
+	/**
+	 * 重构 2018年6月26日
+	 *
+	 * @author WANGWEI
+	 * @param userForm
+	 * @return
+	 */
+	@ApiOperation(value = "更新用户", notes = "更新")
+	@PutMapping
+	public Long updateUser(@RequestBody UserForm userForm) {
+		if (null == userForm.getId()) {
+			throw new StatusException("B-150009", "user ID is null");
+		}
+
+		UserEntity userEntity = userRepo.findOne(userForm.getId());
+		if (null == userEntity) {
+			throw new StatusException("B-150010", "用户不存在");
+		}
+
+		if (!userEntity.getRootOrgId().equals(userForm.getRootOrgId())) {
+			throw new StatusException("B-150010", "顶级机构错误");
+		}
+
+		userForm.setPassword(userEntity.getPassword());
+
+		return insertOrUpdateUser(userForm);
+	}
+
+	/**
+	 * 新增或更新用户
+	 *
+	 * @author WANGWEI
+	 * @param userForm
+	 * @return
+	 */
+	private Long insertOrUpdateUser(UserForm userForm) {
 		cn.com.qmth.examcloud.commons.web.security.bean.User accessUser = getAccessUser();
 		Long rootOrgId = userForm.getRootOrgId();
 		Org org = orgRepo.findOne(rootOrgId);
@@ -188,6 +228,7 @@ public class UserController extends ControllerSupport {
 		}
 
 		UserEntity userEntity = new UserEntity();
+		userEntity.setId(userForm.getId());
 		userEntity.setEnable(userForm.getEnable());
 		userEntity.setLoginName(userForm.getLoginName());
 		userEntity.setMobile(userForm.getMobile());
@@ -207,7 +248,7 @@ public class UserController extends ControllerSupport {
 				throw new StatusException("B-150006", "角色错误");
 			}
 			if (curRoleEntity.getCode().equals(RoleMeta.SUPER_ADMIN.getCode())) {
-				throw new StatusException("B-150007", "不允许添加超级管理员");
+				throw new StatusException("B-150007", "不允许新增或修改超级管理员");
 			}
 			UserRole userRole = new UserRole(curRoleEntity.getCode());
 			userRoles.add(userRole);
@@ -219,35 +260,6 @@ public class UserController extends ControllerSupport {
 		return saved.getId();
 	}
 
-	/**
-	 * 重构 2018年6月26日
-	 *
-	 * @author WANGWEI
-	 * @param user
-	 * @param request
-	 * @return
-	 */
-	@ApiOperation(value = "更新用户", notes = "更新")
-	@PutMapping
-	public UserEntity updateUser(@RequestBody UserEntity user, HttpServletRequest request) {
-		cn.com.qmth.examcloud.commons.web.security.bean.User accessUser = getAccessUser();
-
-		List<UserRole> userRoles = user.getUserRoles();
-		for (UserRole cur : userRoles) {
-			if (cur.getRoleCode().equals(RoleMeta.SUPER_ADMIN.getCode())) {
-				throw new StatusException("B-101001", "禁止添加超级管理员");
-			}
-		}
-
-		if (accessUser.getRootOrgId() != 0) {
-			user.setRootOrgId(accessUser.getRootOrgId());
-		} else {
-			user.setRootOrgId(user.getOrgId());
-		}
-
-		return userService.update(user.getId(), user);
-	}
-
 	@ApiOperation(value = "重置用户密码", notes = "重置密码")
 	@PutMapping("/resetPass/{id}")
 	public ResponseEntity resetPass(@PathVariable String id) {

+ 45 - 32
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/impl/StudentService.java

@@ -9,19 +9,20 @@ import java.util.List;
 
 import javax.transaction.Transactional;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Example;
 import org.springframework.data.domain.ExampleMatcher;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
 
 import cn.com.qmth.examcloud.commons.base.util.ErrorMsg;
 import cn.com.qmth.examcloud.commons.web.security.AccessCtrlUtil;
 import cn.com.qmth.examcloud.core.basic.dao.OrgRepo;
 import cn.com.qmth.examcloud.core.basic.dao.StudentRepo;
 import cn.com.qmth.examcloud.core.basic.dao.UserRepo;
+import cn.com.qmth.examcloud.core.basic.dao.constants.Consts;
 import cn.com.qmth.examcloud.core.basic.dao.entity.Org;
 import cn.com.qmth.examcloud.core.basic.dao.entity.Student;
 import cn.com.qmth.examcloud.core.basic.dao.entity.UserEntity;
@@ -115,52 +116,64 @@ public class StudentService {
 
     @Transactional
     public Student save(Student student) {
-        if (student.getUser() == null || null == student.getUser().getId()) {//判断是否有用户
-            //判断是否有该学生,
+    	//判断是否有用户
+        if (student.getUser() == null || null == student.getUser().getId()) {
+            //判断是否有该学生
             if (!StringUtils.isEmpty(student.getStudentCode())) {
-                Student domain = studentRepo.findByRootOrgIdAndStudentCode(student.getUser().getRootOrgId(), student.getStudentCode());
-                if (domain != null) {//学号查找不为空,更新身份证号
-                    domain.setIdentityNumber(student.getIdentityNumber());
-                    domain.setUpdateTime(new Date());
-                    domain.setName(student.getName());
-                    domain.setOrgId(student.getOrgId());
-                    domain = studentRepo.save(domain);
-                    dataSendService.sendStudent(domain);
-                    return domain;
+            	//学号查找不为空,更新身份证号
+                Student s1 = studentRepo.findByRootOrgIdAndStudentCode(student.getUser().getRootOrgId(), student.getStudentCode());
+                if (s1 != null) {
+                    s1.setIdentityNumber(student.getIdentityNumber());
+                    s1.setUpdateTime(new Date());
+                    s1.setName(student.getName());
+                    s1.setOrgId(student.getOrgId());
+                    s1 = studentRepo.save(s1);
+                    dataSendService.sendStudent(s1);
+                    return s1;
                 }
             }
-
-            Student entity = studentRepo.findByIdentityNumberAndRootOrgId(student.getIdentityNumber(), student.getRootOrgId());
-            if (entity != null) {//身份证查找不为空,更新学号
-                entity.setStudentCode(student.getStudentCode());
-                entity.setUpdateTime(new Date());
-                entity.setName(student.getName());
-                entity.setOrgId(student.getOrgId());
-                entity = studentRepo.save(entity);
-                dataSendService.sendStudent(entity);
-                return entity;
+            
+            //身份证查找不为空,更新学号
+            Student s2 = studentRepo.findByIdentityNumberAndRootOrgId(student.getIdentityNumber(), student.getRootOrgId());
+            if (s2 != null) {
+                s2.setStudentCode(student.getStudentCode());
+                s2.setUpdateTime(new Date());
+                s2.setName(student.getName());
+                s2.setOrgId(student.getOrgId());
+                s2 = studentRepo.save(s2);
+                dataSendService.sendStudent(s2);
+                return s2;
             }
+            
             student.setOrgId(student.getUser().getOrgId());
             student.setRootOrgId(student.getUser().getRootOrgId());
             //新建用户和学生
             UserEntity user = new UserEntity(student.getName(), UserScope.ORG, student.getUser().getRootOrgId(), student.getUser().getOrgId(), UserType.STUDENT);
             user.setEnable(student.getUser().getEnable() == null ? true : student.getUser().getEnable());
-            String password = null;
-            if (!StringUtils.isEmpty(student.getIdentityNumber())) {//身份证号后6位
-                if (!StringUtils.isEmpty(student.getStudentCode())) {
-                    user.setLoginName(student.getStudentCode());
-                } else {
-                    user.setLoginName(student.getIdentityNumber());
-                }
-                password = student.getIdentityNumber().substring(student.getIdentityNumber().length() - 6, student.getIdentityNumber().length());
-            }
-            user.setPassword(password);
+            
+
+			if (StringUtils.isNotEmpty(student.getStudentCode())) {
+				user.setLoginName(student.getStudentCode());
+			} else {
+				user.setLoginName(student.getIdentityNumber());
+			}
+
+			String identityNumber = student.getIdentityNumber();
+			if (StringUtils.isNotEmpty(identityNumber)
+					&& identityNumber.matches("[0-9a-zA-Z]{6,}")) {
+				user.setPassword(
+						StringUtils.substring(identityNumber, -6, identityNumber.length()));
+			} else {
+				user.setPassword(Consts.DEFAULT_PASSWORD);
+			}
+
             List<UserRole> userRoles = new ArrayList<UserRole>();
             userRoles.add(new UserRole("STUDENT"));
             user.setUserRoles(userRoles);
             userRepo.save(user);
             student.setUser(user);
         }
+        
         student = studentRepo.save(student);
         dataSendService.sendStudent(student);
         return student;

+ 7 - 5
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/impl/UserServiceImpl.java

@@ -234,11 +234,13 @@ public class UserServiceImpl  implements UserService{
             //截取身份证后6位为学生登录密码
             Student student = studentRepo.findByUserId(userId);
             String identityNumber = student.getIdentityNumber();
-            if(StringUtils.isNotEmpty(identityNumber)){
-                user.setPassword(StringUtils.substring(identityNumber,-6,identityNumber.length()));
-            }else{
-                user.setPassword(Consts.DEFAULT_PASSWORD);
-            }
+			if (StringUtils.isNotEmpty(identityNumber)
+					&& identityNumber.matches("[0-9a-zA-Z]{6,}")) {
+				user.setPassword(
+						StringUtils.substring(identityNumber, -6, identityNumber.length()));
+			} else {
+				user.setPassword(Consts.DEFAULT_PASSWORD);
+			}
         }
         user.setUpdateTime(new Date());
         userRepo.save(user);