Browse Source

角色权限

xiatian 4 ngày trước cách đây
mục cha
commit
979c3e6846

+ 31 - 13
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/utils/PageUtil.java

@@ -8,27 +8,45 @@ import com.qmth.boot.core.collection.PageResult;
 import cn.com.qmth.stmms.biz.common.BaseQuery;
 
 public class PageUtil {
-	public static <T> PageResult<T> of(BaseQuery<T> query) {
+
+    public static <T> PageResult<T> of(List<T> list, BaseQuery<T> query) {
+        PageResult<T> pageResult = new PageResult<>();
+        pageResult.setResult(list);
+        pageResult.setPageNumber(query.getPageNumber());
+        pageResult.setPageSize(query.getPageSize());
+        pageResult.setTotalCount(query.getTotalCount());
+        long count = query.getTotalCount(); // 记录总数
+        long pageCount = 0; // 页数
+        if (count % query.getPageSize() == 0) {
+            pageCount = count / query.getPageSize();
+        } else {
+            pageCount = count / query.getPageSize() + 1;
+        }
+        pageResult.setPageCount(pageCount);
+        return pageResult;
+    }
+
+    public static <T> PageResult<T> of(BaseQuery<T> query) {
         PageResult<T> result = new PageResult<>();
         result.setResult(query.getResult());
         result.setPageNumber(query.getPageNumber());
         result.setPageSize(query.getPageSize());
         result.setTotalCount(query.getTotalCount());
-        result.setPageCount(query.getCurrentCount());
+        result.setPageCount(query.getTotalPage());
         return result;
-	}
+    }
 
-	public static <T> PageResult<T> emptyPage(){
-    	PageResult<T> page=new PageResult<>();
-    	page.setPageCount(0);
-    	page.setPageNumber(1);
-    	page.setPageSize(10);
-    	page.setTotalCount(0);
-    	page.setResult(new ArrayList<>());
-    	return page;
+    public static <T> PageResult<T> emptyPage() {
+        PageResult<T> page = new PageResult<>();
+        page.setPageCount(0);
+        page.setPageNumber(1);
+        page.setPageSize(10);
+        page.setTotalCount(0);
+        page.setResult(new ArrayList<>());
+        return page;
     }
 
-	public static <T> PageResult<T> of(List<T> list, Integer pageNum, Integer pageSize) {
+    public static <T> PageResult<T> of(List<T> list, Integer pageNum, Integer pageSize) {
         if (list == null) {
             return null;
         }
@@ -54,7 +72,7 @@ public class PageUtil {
         }
 
         List<T> pageList = list.subList(fromIndex, toIndex);
-        PageResult<T> page=new PageResult<>();
+        PageResult<T> page = new PageResult<>();
         page.setPageCount(pageCount);
         page.setPageNumber(pageNum);
         page.setPageSize(pageSize);

+ 5 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/BaseApiController.java

@@ -8,6 +8,7 @@ import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
 import cn.com.qmth.stmms.common.domain.ApiUser;
 import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.utils.RequestUtils;
 import net.sf.json.JSONObject;
 
 import org.apache.commons.lang.StringUtils;
@@ -137,4 +138,8 @@ public class BaseApiController extends BaseController {
         }
         return list;
     }
+
+    public WebUser getWebUser() {
+        return RequestUtils.getWebUser();
+    }
 }

+ 90 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/RoleController.java

@@ -0,0 +1,90 @@
+package cn.com.qmth.stmms.api.controller.admin;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+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.ResponseBody;
+
+import com.qmth.boot.core.collection.PageResult;
+
+import cn.com.qmth.stmms.api.controller.BaseApiController;
+import cn.com.qmth.stmms.biz.basic.bean.RoleInfoQuery;
+import cn.com.qmth.stmms.biz.basic.bean.RoleInfoVo;
+import cn.com.qmth.stmms.biz.basic.bean.RolePrivilegeDomain;
+import cn.com.qmth.stmms.biz.basic.bean.RolePrivilegeVo;
+import cn.com.qmth.stmms.biz.basic.model.Privilege;
+import cn.com.qmth.stmms.biz.basic.service.PrivilegeService;
+import cn.com.qmth.stmms.biz.basic.service.RoleInfoService;
+import cn.com.qmth.stmms.biz.basic.service.RolePrivilegeService;
+import cn.com.qmth.stmms.biz.utils.PageUtil;
+import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.enums.Role;
+import cn.com.qmth.stmms.common.utils.RequestUtils;
+import net.sf.json.JSONArray;
+
+@Controller
+@RequestMapping("/api/admin/role")
+public class RoleController extends BaseApiController {
+
+    @Autowired
+    private RoleInfoService roleInfoService;
+
+    @Autowired
+    private RolePrivilegeService rolePrivilegeService;
+
+    @Autowired
+    private PrivilegeService privilegeService;
+
+    @ResponseBody
+    @RequestMapping(value = "page", method = RequestMethod.POST)
+    public PageResult<RoleInfoVo> getPage(RoleInfoQuery query) {
+        Integer totalCount = roleInfoService.countByQuery(query);
+        query.setTotalCount(totalCount);
+        if (totalCount > 0) {
+            List<RoleInfoVo> list = roleInfoService.findByQuery(query);
+            return PageUtil.of(list, query);
+        } else {
+            return PageUtil.emptyPage();
+        }
+    }
+
+    @ResponseBody
+    @RequestMapping(value = "list/all", method = RequestMethod.POST)
+    public List<RoleInfoVo> getAll(@RequestParam Integer schoolId) {
+        return roleInfoService.allList(schoolId);
+    }
+
+    @ResponseBody
+    @RequestMapping(value = "privilege")
+    public String privilege(Model model, HttpServletRequest request, RoleInfoQuery query) {
+        List<RolePrivilegeVo> ps = rolePrivilegeService.findByQuery(query);
+        if (ps != null) {
+            model.addAttribute("privilegeList", JSONArray.fromObject(ps).toString());
+        } else {
+            model.addAttribute("privilegeList", "[]");
+        }
+        model.addAttribute("schoolId", query.getSchoolId());
+        model.addAttribute("roleCode", query.getRole());
+        model.addAttribute("roleName", Role.valueOf(query.getRole()).getName());
+        return "modules/basic/rolePrivilege";
+    }
+
+    @ResponseBody
+    @RequestMapping(value = "privilege/save")
+    public String privilegeSave(RolePrivilegeDomain domain) {
+        WebUser wu = getWebUser();
+        domain.setUserId(wu.getId());
+        rolePrivilegeService.save(domain);
+        return "redirect:/admin/basic/role/info/list?schoolId=" + domain.getSchoolId();
+    }
+
+}

+ 203 - 180
stmms-web/src/main/java/cn/com/qmth/stmms/common/utils/RequestUtils.java

@@ -1,181 +1,204 @@
-package cn.com.qmth.stmms.common.utils;
-
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.util.List;
-import java.util.Set;
-
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import cn.com.qmth.stmms.biz.basic.model.Privilege;
-import cn.com.qmth.stmms.common.domain.ApiUser;
-import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.session.model.StmmsSession;
-
-/**
- * request临时参数存取
- */
-public class RequestUtils {
-
-    private static final String REQUEST_SESSION_KEY = "_stmms_session_key_";
-
-    private static final String REQUEST_WEB_USER_KEY = "web_user";
-
-    private static final String REQUEST_API_USER_KEY = "api_user";
-
-    private static final String REQUEST_OPERATION_LOG_KEY = "operation_log";
-    
-    private static final String REQUEST_VERSION_NAME="versionName";
-    
-    private static final String REQUEST_VERSION_DATE="versionDate";
-    
-    private static final String REQUEST_PRIVILEGES_KEY = "privileges";
-    
-    private static final String REQUEST_ROLE_PRIVILEGE_CODES_KEY = "role_privilege_codes";
-
-    public static StmmsSession getSession(HttpServletRequest request) {
-        Object obj = request.getAttribute(REQUEST_SESSION_KEY);
-        if (obj != null && obj instanceof StmmsSession) {
-            return (StmmsSession) obj;
-        } else {
-            StmmsSession session = new StmmsSession();
-            setSession(request, session);
-            return session;
-        }
-    }
-
-    public static void setSession(HttpServletRequest request, StmmsSession session) {
-        request.setAttribute(REQUEST_SESSION_KEY, session);
-    }
-
-    public static WebUser getWebUser(HttpServletRequest request) {
-        Object obj = request.getAttribute(REQUEST_WEB_USER_KEY);
-        if (obj != null && obj instanceof WebUser) {
-            return (WebUser) obj;
-        } else {
-            return null;
-        }
-    }
-
-    public static void setWebUser(HttpServletRequest request, WebUser user) {
-        request.setAttribute(REQUEST_WEB_USER_KEY, user);
-        request.setAttribute(REQUEST_VERSION_DATE, VersionInfo.DATE);
-        request.setAttribute(REQUEST_VERSION_NAME, VersionInfo.NAME);
-    }
-
-    public static ApiUser getApiUser(HttpServletRequest request) {
-        Object obj = request.getAttribute(REQUEST_API_USER_KEY);
-        if (obj != null && obj instanceof ApiUser) {
-            return (ApiUser) obj;
-        } else {
-            return null;
-        }
-    }
-
-    public static void setApiUser(HttpServletRequest request, ApiUser user) {
-        request.setAttribute(REQUEST_API_USER_KEY, user);
-    }
-
-    /**
-     * 设置 Cookie
-     *
-     * @param name
-     *            名称
-     * @param value
-     *            值
-     * @param maxAge
-     *            生存时间(单位秒)
-     */
-    public static void setCookie(HttpServletResponse response, String name, String value, int maxAge) {
-        Cookie cookie = new Cookie(name, null);
-        cookie.setPath("/");
-        cookie.setMaxAge(maxAge);
-        try {
-            cookie.setValue(URLEncoder.encode(value, "utf-8"));
-        } catch (UnsupportedEncodingException e) {
-            e.printStackTrace();
-        }
-        response.addCookie(cookie);
-    }
-
-    /**
-     * 获得指定Cookie的值
-     *
-     * @param name
-     *            名称
-     * @return 值
-     */
-    public static String getCookie(HttpServletRequest request, String name) {
-        return getCookie(request, null, name, false);
-    }
-
-    /**
-     * 获得指定Cookie的值,并删除。
-     *
-     * @param name
-     *            名称
-     * @return 值
-     */
-    public static String getCookie(HttpServletRequest request, HttpServletResponse response, String name) {
-        return getCookie(request, response, name, true);
-    }
-
-    /**
-     * 获得指定Cookie的值
-     *
-     * @param request
-     *            请求对象
-     * @param response
-     *            响应对象
-     * @param name
-     *            名字
-     * @param isRemove
-     *            是否移除
-     * @return 值
-     */
-    public static String getCookie(HttpServletRequest request, HttpServletResponse response, String name,
-            boolean isRemove) {
-        String value = null;
-        Cookie[] cookies = request.getCookies();
-        if (cookies != null) {
-            for (Cookie cookie : cookies) {
-                if (cookie.getName().equals(name)) {
-                    try {
-                        value = URLDecoder.decode(cookie.getValue(), "utf-8");
-                    } catch (UnsupportedEncodingException e) {
-                        e.printStackTrace();
-                    }
-                    if (isRemove) {
-                        cookie.setMaxAge(0);
-                        response.addCookie(cookie);
-                    }
-                }
-            }
-        }
-        return value;
-    }
-
-    public static String getLog(HttpServletRequest request) {
-        Object obj = request.getAttribute(REQUEST_OPERATION_LOG_KEY);
-        if (obj != null && obj instanceof String) {
-            return (String) obj;
-        } else {
-            return "";
-        }
-    }
-
-    public static void setLog(HttpServletRequest request, String content) {
-        request.setAttribute(REQUEST_OPERATION_LOG_KEY, content);
-    }
-    
-    public static void setRolePrivilegeCodes(HttpServletRequest request, Set<String> privilegeCodes) {
-        request.setAttribute(REQUEST_ROLE_PRIVILEGE_CODES_KEY, privilegeCodes);
-    }
-    
-    public static void setPrivileges(HttpServletRequest request, List<Privilege> privileges) {
-        request.setAttribute(REQUEST_PRIVILEGES_KEY, privileges);
-    }
+package cn.com.qmth.stmms.common.utils;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.util.List;
+import java.util.Set;
+
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import cn.com.qmth.stmms.biz.basic.model.Privilege;
+import cn.com.qmth.stmms.common.domain.ApiUser;
+import cn.com.qmth.stmms.common.domain.WebUser;
+import cn.com.qmth.stmms.common.session.model.StmmsSession;
+
+/**
+ * request临时参数存取
+ */
+public class RequestUtils {
+
+    private static final String REQUEST_SESSION_KEY = "_stmms_session_key_";
+
+    private static final String REQUEST_WEB_USER_KEY = "web_user";
+
+    private static final String REQUEST_API_USER_KEY = "api_user";
+
+    private static final String REQUEST_OPERATION_LOG_KEY = "operation_log";
+
+    private static final String REQUEST_VERSION_NAME = "versionName";
+
+    private static final String REQUEST_VERSION_DATE = "versionDate";
+
+    private static final String REQUEST_PRIVILEGES_KEY = "privileges";
+
+    private static final String REQUEST_ROLE_PRIVILEGE_CODES_KEY = "role_privilege_codes";
+
+    public static HttpServletRequest getRequest() {
+        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder
+                .getRequestAttributes();
+        if (requestAttributes == null) {
+            return null;
+        }
+
+        return requestAttributes.getRequest();
+    }
+
+    public static StmmsSession getSession(HttpServletRequest request) {
+        Object obj = request.getAttribute(REQUEST_SESSION_KEY);
+        if (obj != null && obj instanceof StmmsSession) {
+            return (StmmsSession) obj;
+        } else {
+            StmmsSession session = new StmmsSession();
+            setSession(request, session);
+            return session;
+        }
+    }
+
+    public static void setSession(HttpServletRequest request, StmmsSession session) {
+        request.setAttribute(REQUEST_SESSION_KEY, session);
+    }
+
+    public static WebUser getWebUser() {
+        HttpServletRequest request = getRequest();
+        Object obj = request.getAttribute(REQUEST_WEB_USER_KEY);
+        if (obj != null && obj instanceof WebUser) {
+            return (WebUser) obj;
+        } else {
+            return null;
+        }
+    }
+
+    public static WebUser getWebUser(HttpServletRequest request) {
+        Object obj = request.getAttribute(REQUEST_WEB_USER_KEY);
+        if (obj != null && obj instanceof WebUser) {
+            return (WebUser) obj;
+        } else {
+            return null;
+        }
+    }
+
+    public static void setWebUser(HttpServletRequest request, WebUser user) {
+        request.setAttribute(REQUEST_WEB_USER_KEY, user);
+        request.setAttribute(REQUEST_VERSION_DATE, VersionInfo.DATE);
+        request.setAttribute(REQUEST_VERSION_NAME, VersionInfo.NAME);
+    }
+
+    public static ApiUser getApiUser(HttpServletRequest request) {
+        Object obj = request.getAttribute(REQUEST_API_USER_KEY);
+        if (obj != null && obj instanceof ApiUser) {
+            return (ApiUser) obj;
+        } else {
+            return null;
+        }
+    }
+
+    public static void setApiUser(HttpServletRequest request, ApiUser user) {
+        request.setAttribute(REQUEST_API_USER_KEY, user);
+    }
+
+    /**
+     * 设置 Cookie
+     *
+     * @param name
+     *            名称
+     * @param value
+     *            值
+     * @param maxAge
+     *            生存时间(单位秒)
+     */
+    public static void setCookie(HttpServletResponse response, String name, String value, int maxAge) {
+        Cookie cookie = new Cookie(name, null);
+        cookie.setPath("/");
+        cookie.setMaxAge(maxAge);
+        try {
+            cookie.setValue(URLEncoder.encode(value, "utf-8"));
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        response.addCookie(cookie);
+    }
+
+    /**
+     * 获得指定Cookie的值
+     *
+     * @param name
+     *            名称
+     * @return 值
+     */
+    public static String getCookie(HttpServletRequest request, String name) {
+        return getCookie(request, null, name, false);
+    }
+
+    /**
+     * 获得指定Cookie的值,并删除。
+     *
+     * @param name
+     *            名称
+     * @return 值
+     */
+    public static String getCookie(HttpServletRequest request, HttpServletResponse response, String name) {
+        return getCookie(request, response, name, true);
+    }
+
+    /**
+     * 获得指定Cookie的值
+     *
+     * @param request
+     *            请求对象
+     * @param response
+     *            响应对象
+     * @param name
+     *            名字
+     * @param isRemove
+     *            是否移除
+     * @return 值
+     */
+    public static String getCookie(HttpServletRequest request, HttpServletResponse response, String name,
+            boolean isRemove) {
+        String value = null;
+        Cookie[] cookies = request.getCookies();
+        if (cookies != null) {
+            for (Cookie cookie : cookies) {
+                if (cookie.getName().equals(name)) {
+                    try {
+                        value = URLDecoder.decode(cookie.getValue(), "utf-8");
+                    } catch (UnsupportedEncodingException e) {
+                        e.printStackTrace();
+                    }
+                    if (isRemove) {
+                        cookie.setMaxAge(0);
+                        response.addCookie(cookie);
+                    }
+                }
+            }
+        }
+        return value;
+    }
+
+    public static String getLog(HttpServletRequest request) {
+        Object obj = request.getAttribute(REQUEST_OPERATION_LOG_KEY);
+        if (obj != null && obj instanceof String) {
+            return (String) obj;
+        } else {
+            return "";
+        }
+    }
+
+    public static void setLog(HttpServletRequest request, String content) {
+        request.setAttribute(REQUEST_OPERATION_LOG_KEY, content);
+    }
+
+    public static void setRolePrivilegeCodes(HttpServletRequest request, Set<String> privilegeCodes) {
+        request.setAttribute(REQUEST_ROLE_PRIVILEGE_CODES_KEY, privilegeCodes);
+    }
+
+    public static void setPrivileges(HttpServletRequest request, List<Privilege> privileges) {
+        request.setAttribute(REQUEST_PRIVILEGES_KEY, privileges);
+    }
 }