📄 rightsmgrimpl.java
字号:
package com.yuanchung.sales.service.admin.rights.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import com.yuanchung.sales.constants.SystemConstant;
import com.yuanchung.sales.dao.admin.RightsDAO;
import com.yuanchung.sales.exception.IllegalParameterException;
import com.yuanchung.sales.exception.SystemException;
import com.yuanchung.sales.model.admin.Rights;
import com.yuanchung.sales.model.admin.position.PositionRights;
import com.yuanchung.sales.model.admin.position.UserRights;
import com.yuanchung.sales.model.admin.role.RoleRights;
import com.yuanchung.sales.model.user.User;
import com.yuanchung.sales.service.admin.rights.RightsMgr;
import com.yuanchung.sales.util.Constants;
import com.yuanchung.sales.vo.right.WebRightsView;
public class RightsMgrImpl implements RightsMgr {
private static RightsDAO rightsDAO;
private static Logger log = Logger.getLogger(RightsMgrImpl.class);
public RightsDAO getRightsDAO() {
return rightsDAO;
}
public void setRightsDAO(RightsDAO rightsDAO) {
this.rightsDAO = rightsDAO;
}
/**
* 获取系统所有功能权限,封装成一棵树,返回封装树的javascript语句
*
* @return treeContent.toString
* @throws SystemException
*/
public static String getPositionRightsTreeView(String connect,
int positionId, int parentId, List<PositionRights> positionRights)
throws SystemException {
StringBuffer treeContent = new StringBuffer();
if (parentId == 0) {
/* 实例化一个树对象 */
treeContent.append("var rightTree = new dTree('rightTree');\n");
Collection<Rights> rights = rightsDAO.findByParentId(parentId);
if (rights.size() > 0) {
Rights root = (Rights) rights.iterator().next();
boolean flag = false;
// 遍历某岗位已有权限
for (int i = 0; i < positionRights.size(); i++) {
if (root.getId()
.equals(positionRights.get(i).getRightsId())) {
// 标志置为true,终止循环
flag = true;
break;
}
}
treeContent
.append("rightTree.add("
+ root.getId()
+ ","
+ parentId
+ ",'"
+ root.getRightsName()
+ "','/sales/rights.do?dispatch=toRightsManagePage&rightsId="
+ root.getId() + "'," + flag + ",'"
+ positionId + "');" + "\n");
if (isParent(root.getId())) {
treeContent.append(getPositionRightsTreeView(treeContent
.toString(), positionId, root.getId(),
positionRights));
}
}
} else {
Collection<Rights> rights = rightsDAO.findByParentId(parentId);
for (Iterator it = rights.iterator(); it.hasNext();) {
Rights r = (Rights) it.next();
boolean flag = false;
// 遍历某岗位已有权限
for (int i = 0; i < positionRights.size(); i++) {
if (r.getId().equals(positionRights.get(i).getRightsId())) {
// 标志置为true,终止循环
flag = true;
break;
}
}
treeContent
.append("rightTree.add("
+ r.getId()
+ ","
+ r.getParentId()
+ ",'"
+ r.getRightsName()
+ "','/sales/rights.do?dispatch=toRightsManagePage&rightsId="
+ r.getId() + "'," + flag + ",'" + positionId
+ "');" + "\n");
if (isParent(r.getId())) {
treeContent
.append(getPositionRightsTreeView(treeContent
.toString(), positionId, r.getId(),
positionRights));
}
}
}
return treeContent.toString();
}
/**
* 获取系统所有功能权限,封装成一棵树,返回封装树的javascript语句
*
* @return treeContent.toString
* @throws SystemException
*/
public static String getRoleRightsTreeView(String connect, int roleId,
int parentId, List<RoleRights> roleRights) throws SystemException {
StringBuffer treeContent = new StringBuffer();
if (parentId == 0) {
/* 实例化一个树对象 */
treeContent.append("var rightTree = new dTree('rightTree');\n");
Collection<Rights> rights = rightsDAO.findByParentId(parentId);
if (rights.size() > 0) {
Rights root = (Rights) rights.iterator().next();
boolean flag = false;
// 遍历角色已有权限
for (int i = 0; i < roleRights.size(); i++) {
if (root.getId().equals(roleRights.get(i).getRightsId())) {
// 标志置为true,终止循环
flag = true;
break;
}
}
treeContent
.append("rightTree.add("
+ root.getId()
+ ","
+ parentId
+ ",'"
+ root.getRightsName()
+ "','/sales/rights.do?dispatch=toRightsManagePage&rightsId="
+ root.getId() + "'," + flag + ",'" + roleId
+ "');" + "\n");
if (isParent(root.getId())) {
treeContent.append(getRoleRightsTreeView(treeContent
.toString(), roleId, root.getId(), roleRights));
}
}
} else {
Collection<Rights> rights = rightsDAO.findByParentId(parentId);
for (Iterator it = rights.iterator(); it.hasNext();) {
Rights r = (Rights) it.next();
boolean flag = false;
// 遍历某岗位已有权限
for (int i = 0; i < roleRights.size(); i++) {
if (r.getId().equals(roleRights.get(i).getRightsId())) {
// 标志置为true,终止循环
flag = true;
break;
}
}
treeContent
.append("rightTree.add("
+ r.getId()
+ ","
+ r.getParentId()
+ ",'"
+ r.getRightsName()
+ "','/sales/rights.do?dispatch=toRightsManagePage&rightsId="
+ r.getId() + "'," + flag + ",'" + roleId
+ "');" + "\n");
if (isParent(r.getId())) {
treeContent.append(getRoleRightsTreeView(treeContent
.toString(), roleId, r.getId(), roleRights));
}
}
}
return treeContent.toString();
}
/**
* 根据节点ID判断该节点是否为父节点(底下还有子节点)
*
* @param nodeId
* @return
*/
public static boolean isParent(int nodeId) {
try {
Collection<Rights> rights = rightsDAO.findByParentId(nodeId);
if (rights.size() > 0) {
return true;
} else {
return false;
}
} catch (Exception re) {
return false;
}
}
/**
* 根据节点ID判断该节点是否为父节点(底下还有子节点)
*
* @param nodeId
* @return
*/
public boolean isParentNode(String nodeId) {
int parentId = 0;
if (nodeId != null && !nodeId.equals("")) {
parentId = Integer.parseInt(nodeId);
}
try {
Collection<Rights> rights = rightsDAO.findByParentId(parentId);
log.debug("服务器返回值是: " + (rights.size() > 0));
if (rights.size() > 0) {
return true;
} else {
return false;
}
} catch (Exception re) {
return false;
}
}
/**
* 根据权限名称判断该名称是否存在
*
* @param nodeId
* @return
*/
public boolean isExistByRightsName(String rightsName) {
try {
Collection<Rights> rights = rightsDAO.findByRightsName(rightsName);
if (rights.size() > 0) {
return true;
} else {
return false;
}
} catch (Exception re) {
return false;
}
}
/**
* 根据ID获取权限记录
*
* @param id
* @return
* @throws SystemException
*/
public static Rights findById(int id) throws SystemException {
Rights r = rightsDAO.findById(id);
return r;
}
/**
* 保存权限记录
*
* @param id
* @return
* @throws SystemException
*/
public static void save(Rights right) throws SystemException {
rightsDAO.save(right);
}
/**
* 修改权限记录
*
* @param id
* @return
* @throws SystemException
*/
public static void update(Rights r) throws SystemException {
rightsDAO.attachDirty(r);
}
/**
* 根据ID删除权限记录包括子权限
*
* @param id
* @throws SystemException
*/
public static void delIncChildRightsById(Integer id) throws SystemException {
if (isParent(id)) {
Collection<Rights> rights = rightsDAO.findByParentId(id);
for (Iterator it = rights.iterator(); it.hasNext();) {
Rights r = (Rights) it.next();
delIncChildRightsById(r.getId());// 递归调用,删除子节点
}
Rights parentRights = rightsDAO.findById(id);// 获取对象
rightsDAO.delete(parentRights);// 删除完子节点,再删除当前节点
} else {
Rights childRights = rightsDAO.findById(id);// 获取对象
rightsDAO.delete(childRights);
}
}
/**
* 判断所传权限名称与session存放的权限名称是否一致
*
* @param session
* @param rightsName
* @return
*/
public static boolean checkRights(HttpSession session, String rightsName) {
boolean isExist = false;
// 从session里获取用户权限
List<Rights> rights = (List<Rights>) session
.getAttribute(SystemConstant.SESSION_RIGHTS);
for (int i = 0; i < rights.size(); i++) {
Rights right = rights.get(i);
// 判断权限是否存在
if (right.getRightsName().equals(rightsName)) {
isExist = true;
break;
}
}
return isExist;
}
/**
* DWR调用 判断当前用户权限是否被更改,如果被更改了,页面对其提示并自动刷新
*
* @param HttpSession
* session
* @return String htmlString
*/
public String checkRightsIsUpdate(HttpSession session) {
String htmlString = "";
// 获取全局会话
ServletContext app = session.getServletContext();
// 获取当前用户
User user = (User) session.getAttribute(Constants.SESSION_USER);
// 获取会话里的用户Session集合Map对象
Map userInfo = (Map) app
.getAttribute(SystemConstant.APPLICATION_USER_INFO);
// 获取存储在全局会话里的用户Session
HttpSession userSession = (HttpSession) userInfo.get(user.getId());
// log.debug("是否有被修改: " +
// ((Boolean)userSession.getAttribute(SystemConstant.SESSION_RIGHTS_IS_UPDATED)));
// 判断权限是否有被修改
if ((Boolean) userSession
.getAttribute(SystemConstant.SESSION_RIGHTS_IS_UPDATED)) {
// 获取修改后新的权限(管理员存放进去的)
List<Rights> rights = (List<Rights>) userSession
.getAttribute(SystemConstant.SESSION_RIGHTS);
// 在当前Session里设入用户权限
session.setAttribute(SystemConstant.SESSION_RIGHTS, rights);
// 在全局会话Session里设入用户权限是否被修改的值,值为false
userSession.setAttribute(SystemConstant.SESSION_RIGHTS_IS_UPDATED,
false);
userInfo.put(user.getId(), userSession);
app.setAttribute(SystemConstant.APPLICATION_USER_INFO, userInfo);
// 提示用户权限已被更改
htmlString += "alert('您的权限已被管理员更改,页面将在5秒之后自动刷新!');";
// 5秒钟后刷新页面
htmlString += "window.setTimeout(refurbish(), 5000);";
}
return htmlString;
}
/**
* 封装功能权限页面数据
*/
@SuppressWarnings("unchecked")
public Map<String, WebRightsView> getWebRightsView(List objRights,
int flag, int jspRightsFlag) {
// 取出岗位(角色,用户-权限)所有权限
List idList = new ArrayList();
// 岗位为1,角色为2,用户-权限为3
for (int i = 0; i < objRights.size(); i++) {
if (flag == Constants.POSITION_FLAG) {
idList.add(((PositionRights) objRights.get(i)).getRightsId());
}
if (flag == Constants.ROLE_FALG) {
idList.add(((RoleRights) objRights.get(i)).getRightsId());
}
// 2009-01-16 add
if (flag == Constants.USER_RIGHTS_FALG) {
idList.add(((UserRights) objRights.get(i)).getRightsId());
}
// end add
//2009-01-21 add
if(flag == Constants.RIGHTS_FALG){
idList.add(((Rights)objRights.get(i)).getId());
}
//end
}
log.debug(idList.size());
List<Rights> rightsList = new ArrayList<Rights>();
try {
rightsList = rightsDAO.findByIds(idList);
} catch (IllegalParameterException ie) {
log.error(ie.getMessage());
throw ie;
} catch (RuntimeException re) {
log.error(re.getMessage());
throw new SystemException(Constants.SYSTEMEXCEPTION);
}
@SuppressWarnings("unused")
Map<String, WebRightsView> webRightsViews = portfolioWebRightsView(
rightsList, jspRightsFlag);
return webRightsViews;
}
/**
* 根据功能模块组合权限在网页的视图
*
* @param rightsList
*/
@SuppressWarnings("unchecked")
private Map<String, WebRightsView> portfolioWebRightsView(
List<Rights> rightsList, int jspRightsFlag) {
List<Rights> allRights = new ArrayList<Rights>();// 为不包括parent_id为0的权限
List<Rights> modules = new ArrayList<Rights>();// 从权限里取出parent_id为0的记录
try {
allRights = rightsDAO.findByProperty("parentId",
Constants.RIGHTSMODULE, "!=");
modules = rightsDAO.findByProperty("parentId",
Constants.RIGHTSMODULE, "=");
} catch (RuntimeException re) {
log.error(re.getMessage());
throw new SystemException(Constants.SYSTEMEXCEPTION);
}
log.debug("ok....");
Map<String, WebRightsView> webRightsViews = new HashMap<String, WebRightsView>();
log.debug("modules : " + modules.size());
for (int i = 0; i < modules.size(); i++) {
WebRightsView webRightsView = new WebRightsView();
webRightsView.setModuleId(modules.get(i).getId());
webRightsView.setModuleName(modules.get(i).getRightsName());
log.debug("key: " + modules.get(i).getId());
webRightsViews.put(modules.get(i).getId().toString(), webRightsView);
}
log.debug("封装权限");
for (int i = 0; i < allRights.size(); i++) {
webRightsViews.get(allRights.get(i).getParentId().toString()).getRightsMap()
.put(allRights.get(i).getId().toString(), allRights.get(i));
}
if (rightsList != null) {
for (int i = 0; i < rightsList.size(); i++) {
log.debug("rightsId : " + rightsList.get(i).getId());
log.debug("jspRightsFlag : " + jspRightsFlag);
// 2009-01-20 add
if (jspRightsFlag == Constants.JSPRIGHTSCONTROL_YES) {
log.debug("jspRightsControl");
webRightsViews.get(rightsList.get(i).getParentId().toString())
.setStyle(Constants.STYLE_BLOCK);
webRightsViews.get(rightsList.get(i).getParentId().toString())
.getRightsMap().get(rightsList.get(i).getId().toString())
.setStyle(Constants.STYLE_BLOCK);
} else {
// end
webRightsViews.get(rightsList.get(i).getParentId().toString())
.getRightsMap().get(rightsList.get(i).getId().toString())
.setChecked("checked");
}
}
}
log.debug("封装完成");
return webRightsViews;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -