📄 rolelogicimpl.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 + -