⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rolelogicimpl.java

📁 这是一个用java三层框架做的ISS学员管理系统
💻 JAVA
字号:
package com.isoftstone.isscrmweb.web.logic.frame;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.pontifex.util.StringUtil;
import org.pontifex.web.mapping.PageInfo;

import com.isoftstone.isscrmweb.web.dao.frame.ModuleDao;
import com.isoftstone.isscrmweb.web.dao.frame.RoleDao;
import com.isoftstone.isscrmweb.web.mapping.Menuinfo;
import com.isoftstone.isscrmweb.web.mapping.Roleandmenu;
import com.isoftstone.isscrmweb.web.mapping.Roleinfo;

public class RoleLogicImpl implements RoleLogic {
	
	private boolean haveModule ;

	private RoleDao roleDao;	
	
	private ModuleDao moduleDao;
	
	public void setRoleDao(RoleDao roleDao) {
		this.roleDao = roleDao;
	}
	
	public void setModuleDao(ModuleDao moduleDao) {
		this.moduleDao = moduleDao;
	}

	/**
	 * 
	 * 得到所有角色列表
	 */
	public PageInfo getRoleList(Roleinfo role) {
		return roleDao.getRoleList(role);
	}

	/**
	 * 角色添加树
	 */
	public List getRoleModuleTree() {
		List src = moduleDao.findAllMenu();
		List obj = null;
		if (src != null && !src.isEmpty()) {
			obj = new ArrayList();
			createMenuTree(src,obj, "0", 0);
		}
		return obj;
	}
	
	  /**
     *  树状视图递归算法
     * @param src
     * @param obj
     * @param fatherid
     * @param index
     */
    private void createMenuTree(List src, List obj, String fatherid, int index) {
         Menuinfo menuinfo = null;
         for(int i = index ; i <src.size() ; i++){
              menuinfo= (Menuinfo)src.get(i);
              if(fatherid!=null&&fatherid.equals(menuinfo.getMenuinfo().getMenuid())){
                    if(menuinfo.getMenutype().equals("1")){ //菜单-不可执行菜单
                        obj.add("<li><input type=\"checkbox\" name=\"menuid\" value=\""+menuinfo.getMenuid()+"\">"+
                        		"<img class=\"parentNode\"><a href=\"javascript:void(0);\" style=\"cursor:hand\" " +
                                " onclick=\"link('moduleAction.do?method=moduleInfo&menuid="+menuinfo.getMenuid()+
                                "','moduleFrame');\">"+menuinfo.getMenuname()+"</a></li>");
                        obj.add("<ul>");
                        createMenuTree(src,obj,menuinfo.getMenuid(),i+1);
                        obj.add("</ul>");
                    }else { //可执行菜单  或者 分割线
                        obj.add("<li><input type=\"checkbox\" name=\"menuid\" value=\""+menuinfo.getMenuid()+"\">"+
                        		"<img class=\"childNode\"><a href=\"javascript:void(0);\" style=\"cursor:hand\" " +
                                " onclick=\"link('moduleAction.do?method=moduleInfo&menuid="+menuinfo.getMenuid()+
                                "','moduleFrame');\">"+ menuinfo.getMenuname()+"</a></li>");

                    }
              }
         }
    }

    /**
     * 角色保存
     */
	public int saveRoleinfo(Roleinfo role, String[] menuid) {
		int num = roleDao.getRoleByName(role);
		if(num>0)return 0; //角色名称重复
		String roleid = StringUtil.getPrimaryKey();
		role.setRoleid(roleid);
		roleDao.saveRoleinfo(role);
		if(menuid!=null){
			Menuinfo menuinfo = null;
			for(String key:menuid){
				menuinfo = new Menuinfo();
				menuinfo.setMenuid(key);
				Roleandmenu roleandmenu = new Roleandmenu();
				roleandmenu.setRoleinfo(role);
				roleandmenu.setMenuinfo(menuinfo);
				roleDao.saveRoleAndMenu(roleandmenu);
			}
		}
		return 1;
	}

	/**
	 * 角色详细信息查询
	 */
	public Map getRoleDetail(Roleinfo roleinfo) {
		haveModule = false ;
		Map map = new HashMap();
		roleinfo = roleDao.getDetailRoleinfo(roleinfo);
		map.put("roleinfo", roleinfo);
		if(roleinfo==null){
			return map;
		}
		List src = moduleDao.findAllMenu();
		List list  = moduleDao.findMenuByRoleID(roleinfo);
		List selectlist = new ArrayList();
		if(list!=null){
			for(Object menuinfo_tepm:list){
				selectlist.add(menuinfo_tepm);
			}
		}
		List obj = null;
		if (src != null && !src.isEmpty()) {
			obj = new ArrayList();
			createMenuTree(src,obj, selectlist , "0", 0 , true);
		}
		map.put("haveModule", haveModule);
		map.put("moduleTree", obj);
		return map;
	}

	/**
	 * 角色查看和角色修改时候生成的树状视图
	 * @param list
	 * @param obj
	 * @param string
	 * @param i
	 * @param disabled
	 */
	private void createMenuTree(List srcAll, List obj,List selectlist, String fatherid, int index, boolean disabled) {
		String dis = disabled ? "disabled" : ""; 
		Menuinfo menuinfo = null;
        for(int i = index ; i <srcAll.size() ; i++){
             menuinfo= (Menuinfo)srcAll.get(i);
             if(fatherid!=null&&fatherid.equals(menuinfo.getMenuinfo().getMenuid())){
            	   boolean temp = selectlist.contains(menuinfo.getMenuid());
            	   String checked = temp?"checked":"";
            	   if(temp){
            		   haveModule = true ; 
            	   }
                   if(menuinfo.getMenutype().equals("1")){ //菜单-不可执行菜单
                       obj.add("<li><input type=\"checkbox\" name=\"menuid\" "+checked+" "+dis+" value=\""+menuinfo.getMenuid()+"\">"+
                       		"<img class=\"parentNode\"><a href=\"javascript:void(0);\" style=\"cursor:hand\" " +
                               " onclick=\"link('moduleAction.do?method=moduleInfo&menuid="+menuinfo.getMenuid()+
                               "','moduleFrame');\">"+menuinfo.getMenuname()+"</a></li>");
                       obj.add("<ul>");
                       createMenuTree(srcAll,obj,selectlist,menuinfo.getMenuid(),i+1,disabled);
                       obj.add("</ul>");
                   }else { //可执行菜单  或者 分割线
                       obj.add("<li><input type=\"checkbox\" name=\"menuid\" "+checked+" "+dis+" value=\""+menuinfo.getMenuid()+"\">"+
                       		"<img class=\"childNode\"><a href=\"javascript:void(0);\" style=\"cursor:hand\" " +
                               " onclick=\"link('moduleAction.do?method=moduleInfo&menuid="+menuinfo.getMenuid()+
                               "','moduleFrame');\">"+ menuinfo.getMenuname()+"</a></li>");

                   }
             }
        }
	}

	/**
	 * 角色删除 -- 只能对 未启用状态的角色进行删除
	 */
	public int deleteRoleinfo(Roleinfo role) {
		role = roleDao.getDetailRoleinfo(role);
		if(role==null)return 0; //角色不存在
		if(role.getState().equals("0")){
			List list  = moduleDao.findMenuByRoleID(role);//查询所有该角色的菜单
			if(list!=null){
				for(Object obj :list){
					String key = (String)obj;
					Roleandmenu roleandmenu = new Roleandmenu();
					Menuinfo menuinfo = new Menuinfo();
					menuinfo.setMenuid(key);
					roleandmenu.setMenuinfo(menuinfo);
					roleandmenu.setRoleinfo(role);
					roleDao.deleteRoleAndMenuinfo(roleandmenu);
				}
			}
			roleDao.deleteRoleinfo(role); //状态为未启用
			return 1;
		}else {
			return 2; //状态为已经被启用或禁用
		}
	}

	/**
	 * 角色修改详细信息查询
	 */
	public Map getRoleModDetail(Roleinfo roleinfo) {
		haveModule = false ;
		Map map = new HashMap();
		roleinfo = roleDao.getDetailRoleinfo(roleinfo);
		map.put("roleinfo", roleinfo);
		if(roleinfo==null){
			return map;
		}
		List src = moduleDao.findAllMenu();
		List list  = moduleDao.findMenuByRoleID(roleinfo);
		List selectlist = new ArrayList();
		if(list!=null){
			for(Object menuinfo_tepm:list){
				selectlist.add(menuinfo_tepm);
			}
		}
		List obj = null;
		if (src != null && !src.isEmpty()) {
			obj = new ArrayList();
			createMenuTree(src,obj, selectlist , "0", 0 , false);
		}
		map.put("haveModule", haveModule);
		map.put("moduleTree", obj);
		return map;
	}

	/**
	 * 更新角色主方法
	 */
	public int updateRoleInfo(Roleinfo role, List menuinfolist) {
		Roleinfo roleinfo = roleDao.getDetailRoleinfo(role);//查询是否存在该角色
		if(roleinfo==null) return 0; //不存在该角色
		int num = roleDao.getHaveSameNameRole(role);
		if(num>0)return 2;//存在同名的
		List menuinfoEquals_out = moduleDao.findMenuByRoleID(roleinfo);//查询所有该角色的菜单		
		List menuinfoEquals_in = new ArrayList();
		if(menuinfolist!=null){	//修改后的菜单ID
			for(Object obj:menuinfolist){
				menuinfoEquals_in.add(((Menuinfo)obj).getMenuid());
			}
		}
		if(menuinfoEquals_out!=null){
			for(Object obj:menuinfoEquals_out){
				String key = (String)obj;
				if(!menuinfoEquals_in.contains(key)){ 
					Roleandmenu roleandmenu = new Roleandmenu();
					Menuinfo menuinfo = new Menuinfo();
					menuinfo.setMenuid(key);
					roleandmenu.setMenuinfo(menuinfo);
					roleandmenu.setRoleinfo(role);
					roleDao.deleteRoleAndMenuinfo(roleandmenu);
				}
			}
		}
		if(menuinfolist!=null){
			for(Object obj:menuinfolist){
				Menuinfo menuinfo = (Menuinfo)obj ;
				if(!menuinfoEquals_out.contains(menuinfo.getMenuid())){ 
					Roleandmenu roleandmenu = new Roleandmenu();
					roleandmenu.setMenuinfo(menuinfo);
					roleandmenu.setRoleinfo(roleinfo);
					roleDao.saveRoleAndMenu(roleandmenu);
				}
			}
		}
		//事务处理方式更新数据
		roleinfo.setState(role.getState());
		roleinfo.setRolename(role.getRolename());
		roleDao.updateRoleinfo(roleinfo);
		return 1;
	}

	public int updateRoleInfoState(Roleinfo role) {
		Roleinfo roleinfo = roleDao.getDetailRoleinfo(role);//查询是否存在该角色
		if(roleinfo==null) return 0; //不存在该角色
		roleDao.updateRoleState(role);
		return 1;
	}

	
	

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -