Procházet zdrojové kódy

将目前系统中学校管理员的角色修改为可以为多个同时存在

nikang před 7 roky
rodič
revize
1d366d352e

+ 2 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/user/dao/UserDao.java

@@ -16,4 +16,6 @@ public interface UserDao extends PagingAndSortingRepository<User, Integer>, JpaS
     public List<User> findBySchoolId(int schoolId);
 
     public List<User> findBySchoolIdAndRoleNamesContaining(int schoolId, String roleName);
+
+    public List<User> findByLoginNameAndStatus(String LoginName,Integer status);
 }

+ 2 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/user/service/UserService.java

@@ -30,4 +30,6 @@ public interface UserService {
 
 	void deleteSubjectViewerByExamId(Integer id);
 
+    public User findByLoginNameAndStatus(String loginName);
+
 }

+ 5 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/user/service/impl/UserServiceImpl.java

@@ -45,6 +45,11 @@ public class UserServiceImpl implements UserService {
         List<User> list = userDao.findByLoginName(loginName);
         return list != null && list.size() > 0 ? list.get(0) : null;
     }
+    @Override
+    public User findByLoginNameAndStatus(String loginName) {
+        List<User> list = userDao.findByLoginNameAndStatus(loginName,1);
+        return list != null && list.size() > 0 ? list.get(0) : null;
+    }
 
     @Override
     public List<User> findByLoginNameAndPassword(String loginName, String password) {

+ 10 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/user/service/query/UserSearchQuery.java

@@ -1,5 +1,6 @@
 package cn.com.qmth.stmms.biz.user.service.query;
 
+import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -20,6 +21,8 @@ public class UserSearchQuery extends BaseQuery<User> {
 
     private Set<Role> includeRoles;
 
+    private Date lastLoginTime;
+
     public int getSchoolId() {
         return schoolId;
     }
@@ -65,4 +68,11 @@ public class UserSearchQuery extends BaseQuery<User> {
         this.type = type;
     }
 
+    public Date getLastLoginTime() {
+        return lastLoginTime;
+    }
+
+    public void setLastLoginTime(Date lastLoginTime) {
+        this.lastLoginTime = lastLoginTime;
+    }
 }

+ 3 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ExamController.java

@@ -44,7 +44,9 @@ public class ExamController extends BaseParameterController {
         request.removeAttribute("examId");
         User user = RequestUtils.getWebUser(request).getUser();
         if (user.getType() == UserType.ADMIN) {
-            query.setCreatorId(user.getId());
+//            注释原因:原先一个学校只能有一个管理员,修改为一个学校可以有多个管理员,所以调整以学校ID为过滤条件
+//            query.setCreatorId(user.getId());
+            query.setSchoolId(user.getSchoolId());
         } else if (user.getType() == UserType.VIEWER || user.getType() == UserType.SCHOOLVIEWER) {
             query.setSchoolId(user.getSchoolId());
         }

+ 102 - 3
stmms-web/src/main/java/cn/com/qmth/stmms/admin/school/SchoolController.java

@@ -2,12 +2,13 @@ package cn.com.qmth.stmms.admin.school;
 
 import javax.servlet.http.HttpServletRequest;
 
+import cn.com.qmth.stmms.biz.user.service.query.UserSearchQuery;
+import net.sf.json.JSONObject;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Required;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 
 import cn.com.qmth.stmms.biz.school.model.School;
@@ -19,6 +20,8 @@ import cn.com.qmth.stmms.common.enums.Role;
 import cn.com.qmth.stmms.common.enums.UserType;
 import cn.com.qmth.stmms.common.utils.Md5EncryptUtils;
 
+import java.util.List;
+
 @Controller
 @RequestMapping("/admin/sys/school")
 public class SchoolController {
@@ -195,4 +198,100 @@ public class SchoolController {
             return false;
         }
     }
+    @RequestMapping(value = "/admin/view/{id}",method = RequestMethod.GET)
+    private ModelAndView adminView(HttpServletRequest request,UserSearchQuery query,@PathVariable Integer id,@RequestParam (required=false) String message){
+        ModelAndView view = new ModelAndView("modules/sys/schoolAdminList");
+        School school = schoolService.findById(id);
+        if (school != null) {
+            query.setSchoolId(id);
+            query.setType(UserType.ADMIN);
+            query.addIncludeRole(Role.SCHOOL_ADMIN);
+            query = userService.searchByQuery(query);
+            view.addObject("query",query);
+            view.addObject("message",message);
+            return view;
+        } else {
+            return new ModelAndView("redirect:/admin/sys/school");
+        }
+    }
+
+    @RequestMapping("/adminList")
+    private ModelAndView adminList(HttpServletRequest request, UserSearchQuery query, @RequestParam (required=false) String message){
+        ModelAndView view = new ModelAndView("modules/sys/schoolAdminList");
+            query.setType(UserType.ADMIN);
+            query.addIncludeRole(Role.SCHOOL_ADMIN);
+            query = userService.searchByQuery(query);
+            view.addObject("query",query);
+            view.addObject("message",message);
+            return view;
+    }
+    @RequestMapping(value = "/adminList/add", method = RequestMethod.GET)
+    public ModelAndView adminListAdd(HttpServletRequest request, @RequestParam Integer id,
+                                  @RequestParam(required = false) String message) {
+            ModelAndView view = new ModelAndView("modules/sys/schoolAdminEdit");
+            User user = new User();
+            user.setSchoolId(id);
+            view.addObject("user",user);
+            return view;
+    }
+    @RequestMapping(value = "/adminList/save", method = RequestMethod.POST)
+    public ModelAndView adminListSave(HttpServletRequest request, User user) {
+        School school = schoolService.findById(user.getSchoolId());
+        UserSearchQuery query = new UserSearchQuery();
+        query.setSchoolId(user.getSchoolId());
+        if (school == null) {
+            return new ModelAndView("redirect:/admin/sys/school");
+        }
+        User previous = null;
+        String message = "";
+         if (StringUtils.isBlank(user.getPassword())) {
+            message = "密码不能为空";
+        } else if (checkLoginName(user)) {
+            user.setStatus(1);
+            user.setType(UserType.ADMIN);
+            user.setRoleNames(Role.SCHOOL_ADMIN.getName());
+            user.setPassword(Md5EncryptUtils.md5(user.getPassword()));
+            userService.save(user);
+        } else {
+            message = "登录名重复";
+        }
+        return adminList(request,query,message);
+    }
+    @RequestMapping(value = "/adminList/reSetPW", method = RequestMethod.POST)
+    @ResponseBody
+    public JSONObject reSetPW(HttpServletRequest request,@RequestParam Integer userId) {
+        JSONObject obj = new JSONObject();
+        //重置密码 8888
+         User user = userService.findById(userId);
+         user.setPassword(Md5EncryptUtils.md5("8888"));
+         User previous = userService.save(user);
+         if(previous != null){
+             obj.accumulate("success", true);
+         }else {
+             obj.accumulate("success", false);
+             obj.accumulate("message", "重置密码失败!");
+         }
+        return obj;
+    }
+    @RequestMapping(value = "/adminList/update", method = RequestMethod.POST)
+    @ResponseBody
+    public JSONObject updateStatus(HttpServletRequest request, @RequestParam Integer userId,@RequestParam Integer status) {
+        JSONObject obj = new JSONObject();
+        String message = "";
+        User user = userService.findById(userId);
+        user.setStatus(status);
+        User previous = userService.save(user);
+        if(previous != null){
+            obj.accumulate("success", true);
+        }else {
+            obj.accumulate("success", false);
+            if(status.equals(1)){
+                message = "启用失败!";
+            }else {
+                message = "暂停失败!";
+            }
+            obj.accumulate("message", message);
+        }
+        return obj;
+    }
 }

+ 1 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/common/controller/LoginController.java

@@ -86,7 +86,7 @@ public class LoginController {
      */
     @RequestMapping(value = "/admin-login", method = RequestMethod.POST)
     public ModelAndView adminLogin(User user, HttpServletRequest request, HttpServletResponse response) {
-        User u = userService.findByLoginName(user.getLoginName());
+        User u = userService.findByLoginNameAndStatus(user.getLoginName());
         if (u != null) {
             if (u.getPassword().equals(Md5EncryptUtils.md5(user.getPassword()))) {
                 u.setLastLoginTime(new Date());

+ 5 - 5
stmms-web/src/main/webapp/WEB-INF/views/modules/sys/schoolAdminEdit.jsp

@@ -37,8 +37,8 @@
 	</script>
 </head>
 <body>
-	<form:form id="inputForm" modelAttribute="user" action="${ctx}/admin/sys/school/admin/save" method="post" class="form-horizontal">
-		<form:hidden path="id"/>
+	<form:form id="inputForm" modelAttribute="user" action="${ctx}/admin/sys/school/adminList/save" method="post" class="form-horizontal">
+		<%--<form:hidden path="id"/>--%>
 		<form:hidden path="schoolId"/>
 		<tags:message content="${message}"/>
 		<div class="control-group">
@@ -56,20 +56,20 @@
 		<div class="control-group">
 			<label class="control-label">密码</label>
 			<div class="controls">
-				<input type="password" name="password" id="password-input"/>
+				<input type="password" name="password" id="password-input" class="required"/>
 			</div>
 		</div>
 		<div class="control-group">
 			<label class="control-label">重复输入</label>
 			<div class="controls">
-				<input type="password" id="password2-input"/>
+				<input type="password" id="password2-input" class="required"/>
 			</div>
 		</div>
 		<div class="form-actions">
 			<%-- <shiro:hasPermission name="exam:course:edit"> --%>
 			<input id="btnSubmit" class="btn btn-primary" type="submit" value="保 存"/>&nbsp;
 			<%-- </shiro:hasPermission> --%>
-			<!-- <input id="btnCancel" class="btn" type="button" value="返 回" onclick="history.go(-1)"/> -->
+			 <input id="btnCancel" class="btn" type="button" value="返 回" onclick="history.go(-1)"/>
 		</div>
 	</form:form>
 </body>

+ 113 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/sys/schoolAdminList.jsp

@@ -0,0 +1,113 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+	<title>学校管理员信息</title>
+	<meta name="decorator" content="default"/>
+	<%@include file="/WEB-INF/views/include/head.jsp" %>
+</head>
+<body>
+	<form id="searchForm"  action="${ctx}/admin/sys/school/adminList" method="post" class="breadcrumb form-search">
+		<input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber}"/>
+		<input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize}"/>
+		<input type="hidden" id="schoolId" name="schoolId" value="${query.schoolId}"/>
+		<div>
+			<label>登录账号</label>
+			<input type="text" name="loginName" value="${query.loginName}"  maxlength="20" class="input-medium"/>
+			&nbsp;&nbsp;&nbsp;&nbsp;
+            <label>登录名</label>
+            <input type="text" name="name" value="${query.name}"  maxlength="20" class="input-medium"/>
+			&nbsp;
+			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+			&nbsp;
+			<a href="${ctx}/admin/sys/school/adminList/add?id=${query.schoolId}" class="btn btn-primary">新建</a>
+            &nbsp;
+            <input id="btnCancel" class="btn" type="button" value="返 回" onclick="backCtn();"/>
+		</div>
+	</form>
+	<tags:message content="${message}"/>
+	<table id="contentTable" class="table table-striped table-bordered table-condensed">
+		<thead>
+			<tr>
+				<th>登录账号</th>
+				<th>登录名</th>
+				<th>最后一次访问时间</th>
+                <th>状态</th>
+				<th>操作</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${query.result}" var="user">
+			<tr>
+				<td>${user.loginName}</td>
+				<td>${user.name}</td>
+				<td>${user.lastLoginTime}</td>
+                <td>
+					<c:choose>
+						<c:when test="${user.status == 1}">
+							启用
+						</c:when>
+						<c:when test="${user.status == 0}">
+							暂停
+						</c:when>
+					</c:choose>
+                </td>
+				<td>
+					<a href="#" onclick="reSetPW(${user.id});">重置密码</a>
+					&nbsp;
+					<a href="#" onclick="setStartOrStop(${user.status},${user.id},1);">启用</a>
+                    &nbsp;
+					<a href="#" onclick="setStartOrStop(${user.status},${user.id},0);">暂停</a>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	<div class="pagination">${query}</div>
+<script type="text/javascript">
+function page(n,s){
+	$("#pageNumber").val(n);
+	$("#pageSize").val(s);
+	$("#searchForm").submit();
+	return false;
+}
+function goSearch(){
+	$("#pageNumber").val(1);
+	$("#pageSize").val('${query.pageSize}');
+	$("#searchForm").submit();
+	return false;
+}
+function reSetPW(userId) {
+  $.post('${ctx}/admin/sys/school/adminList/reSetPW',{userId:userId},function(obj){
+    if(obj.success){
+      alert("重置成功!");
+    }else{
+      alert(obj.message);
+    }
+  })
+}
+function setStartOrStop(status,userId,type){
+  if(status== 1){
+    if(type == 1){
+      alert('已经是启动的!');return;
+    }
+  }else{
+    if(type == 0){
+      alert('已经是暂停的!');return;
+    }
+  }
+  $.post('${ctx}/admin/sys/school/adminList/update',{userId:userId,status:type},function(obj){
+    if(obj.success){
+      alert("修改成功!");
+      window.location.href='${ctx}/admin/sys/school/admin/view/${query.schoolId}';
+    }else {
+      alert(obj.message);
+    }
+  })
+}
+function backCtn() {
+  window.location.href='/admin/sys/school';
+}
+</script>	
+</body>
+</html>

+ 3 - 2
stmms-web/src/main/webapp/WEB-INF/views/modules/sys/schoolList.jsp

@@ -13,7 +13,7 @@
 		<input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize}"/>
 		<div>
 			<label>名称</label>
-			<input type="text" name="loginName" value="${query.name}"  maxlength="20" class="input-medium"/>
+			<input type="text" name="name" value="${query.name}"  maxlength="20" class="input-medium"/>
 			
 			&nbsp;
 			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
@@ -40,7 +40,8 @@
 				<td>
 					<a href="${ctx}/admin/sys/school/edit?id=${school.id}">修改</a>
 					&nbsp;
-					<a href="${ctx}/admin/sys/school/admin?id=${school.id}">编辑管理员</a>
+					<%--<a href="${ctx}/admin/sys/school/admin?id=${school.id}">编辑管理员</a>--%>
+					<a href="${ctx}/admin/sys/school/admin/view/${school.id}">编辑管理员</a>
 					<a href="${ctx}/admin/sys/school/viewer?id=${school.id}">编辑查询员</a>
 				</td>
 			</tr>