📄 modulelogicimpl.java
字号:
package com.isoftstone.isscrmweb.web.logic.frame;
import com.isoftstone.isscrmweb.web.mapping.Menuinfo;
import com.isoftstone.isscrmweb.web.mapping.Action;
import com.isoftstone.isscrmweb.web.dao.frame.ModuleDao;
import com.isoftstone.isscrmweb.web.dao.frame.ActionDao;
import java.util.HashSet;
import java.util.List;
import java.util.ArrayList;
import java.util.Set;
import org.pontifex.util.StringUtil;
/**
* Created by IntelliJ IDEA.
* User: Songzou
* Date: 2007-4-10
* Time: 19:51:50
* 模块定义控制器
*/
public class ModuleLogicImpl implements ModuleLogic{
private ModuleDao moduleDao;
private ActionDao actionDao;
public void setActionDao(ActionDao actionDao) {
this.actionDao = actionDao;
}
public void setModuleDao(ModuleDao moduleDao) {
this.moduleDao = moduleDao;
}
/**
* 模块菜单的保存
* @param menu
* @param actionList
* @return 1 成功 0 失败(已经存在该菜单);
*/
public int saveModule(Menuinfo menu, List actionList) {
if(!menu.getMenutype().equals("3")){
int num = moduleDao.findMenuByFatheridAndUrl(menu.getMenuinfo().getMenuid(),menu.getMenuname()); //查询是否在同一个父菜单的存在该菜单
if(num>0)return 0; //不是分割线
}
long order = moduleDao.findMenuByFatheridAndUrl(menu.getMenuinfo().getMenuid(),null);//查询父菜单下有多少直接子菜单
menu.setMenuorder(order+1);
Menuinfo fathermenu = moduleDao.findMenuByID(menu.getMenuinfo().getMenuid());//查询菜单级别
if(fathermenu==null){ //要添加的菜单为最上级菜单
menu.setMenulevel("1");
} else if(fathermenu.getMenulevel().equals("1")){
menu.setMenulevel("2");
} else {
menu.setMenulevel("3");
}
menu.setMenuid(StringUtil.getPrimaryKey()); //主键
moduleDao.saveMenuinfo(menu);
if(actionList!=null&&!actionList.isEmpty()){
for(int i = 0 ; i <actionList.size() ; i++){
Action actioninfo = (Action) actionList.get(i);
actioninfo.setActionid(StringUtil.getPrimaryKey());
actioninfo.setMenuinfo(menu);
actionDao.saveActioninfo(actioninfo);
}
}
return 1;
}
/**
* 查询上级模块列表-用于模块显示列表
* @return 集合列表
*/
public List getAllMenuinfo(Menuinfo menu) {
return moduleDao.findMenuListByFatherID(menu.getMenuid());
}
/**
* 查询上级模块列表-用于模块添加页面
* @return 集合列表
*/
public List getAllMenuinfo() {
List src = moduleDao.findAllMenuNoLevel();
List obj = new ArrayList();
if(src!=null&&!src.isEmpty()){
createOrderItem(src,obj,"0",0);
}
return obj;
}
/**
* 生成树状视图
* @return list
*/
public List getMenuinfoTree() {
List src = moduleDao.findAllMenu();
List<String> obj = new ArrayList<String>();
if (src != null) {
createMenuTree(src,obj, "0", 0);
}
return obj;
}
/**
* 树状视图递归算法
* @param src
* @param obj
* @param fatherid
* @param index
*/
private void createMenuTree(List src, List<String> 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><img class=\"parentNode\"><a href=\"javascript:void(0);\" style=\"cursor:hand\" " +
" onclick=\"link('moduleAction.do?method=moduleList&fatherid="+menuinfo.getMenuid()+
"','moduleFrame');\">"+menuinfo.getMenuname()+"</a></li>");
obj.add("<ul>");
createMenuTree(src,obj,menuinfo.getMenuid(),i+1);
obj.add("</ul>");
}else { //可执行菜单 或者 分割线
obj.add("<li><img class=\"childNode\"><a href=\"javascript:void(0);\" style=\"cursor:hand\" " +
"onclick=\"link('moduleAction.do?method=moduleDetail&menuid="+menuinfo.getMenuid()+
"','moduleFrame');\">"+ menuinfo.getMenuname()+"</a></li>");
}
}
}
}
/**
* 查询上级模块列表-用于模块添加页面 - 递归算法
* @param src
* @param obj
* @param fatherid
* @param index
*/
private void createOrderItem(List src, List obj , String fatherid,int index){
for(int i= index ; i < src.size(); i++ ){
Menuinfo menu1 = (Menuinfo)src.get(i);
if(fatherid.equals(menu1.getMenuinfo().getMenuid())){
obj.add(menu1);
createOrderItem(src,obj,menu1.getMenuid(),index);
}
}
}
/**
* 模块的删除
*/
public int deleteMenuinfo(Menuinfo menu) {
menu = moduleDao.findMenuByID(menu.getMenuid());
if(menu==null)return 0; //无该菜单
int number = moduleDao.findMenuByFatheridAndUrl(menu.getMenuid(),null);
if(number>0){
return 2;//有子菜单
}
int number1 = moduleDao.findMenuAndRoleByMenuid(menu.getMenuid());
if(number1>0){
return 3;//有角色定义
}
if(menu.getMenutype().equals("2")){//可执行菜单,其下才有请求路径
List list = actionDao.getActioninfoByMenuid(menu);//查询该菜单下的所有请求路径
if(list!=null){
for(Object action : list){
actionDao.deleteActioninfo((Action)action);
}
}
}
moduleDao.deleteMenuinfo(menu);//只能删除已经查出来的对象
return 1;//删除成功
}
/**
* 模块的排序
*/
public void updateMenuOrder(List list) {
for(Object tolist:list){
Menuinfo menuinfo = (Menuinfo)tolist;
moduleDao.updateMenuinfoOrder(menuinfo);
}
}
public Menuinfo getDetailMenuInfo(Menuinfo menu) {
menu = moduleDao.findMenuByID(menu.getMenuid());//查询菜单信息
if(menu==null)return null;
if(!menu.getMenuinfo().getMenuid().equals("0")){
menu = moduleDao.findFatherMenuinfoByID(menu);//查询父菜单的名称
}
int number = moduleDao.findMenuByFatheridAndUrl(menu.getMenuid(),null);
if(number>0){
menu.setHavesubmenu("1"); //存在子菜单
}else{
menu.setHavesubmenu("0");
}
int number1 = moduleDao.findMenuAndRoleByMenuid(menu.getMenuid());
if(number1>0){
menu.setMenuused("1");//已经被角色定义了
}else{
menu.setMenuused("0");
}
if(menu.getMenutype().equals("2")){
List list = actionDao.getActioninfoByMenuid(menu);
Set set = new HashSet();
if(list!=null){
set.addAll(list);
}
menu.setActions(set);
}
return menu;
}
/**
*
*/
public int updateModule(Menuinfo menu, List actionList) {
if(menu==null)return 0;
Menuinfo menu1 = moduleDao.findMenuByID(menu.getMenuid());//查询菜单信息
if(menu1==null)return 0;
if(menu.getMenutype().equals("1")){//修改的是菜单级别的
int num = moduleDao.findMenuByFatheridNotUrl(menu); //查询是否在同一个父菜单的存在该菜单
if(num>0){
return 2;//失败 已经存在该菜单
}
moduleDao.updateMenuinfo(menu);
return 1;
}
if(menu1.getMenutype().equals("2")){//修改前是可执行菜单
//删除其请求路径
List list = actionDao.getActioninfoByMenuid(menu1);//查询该菜单下的所有请求路径
if(list!=null){
for(Object action : list){
actionDao.deleteActioninfo((Action)action);
}
}
}
if(menu.getMenutype().equals("2")){//修改成为可执行菜单
moduleDao.updateMenuinfo(menu);
if(actionList!=null&&!actionList.isEmpty()){
for(int i = 0 ; i <actionList.size() ; i++){
Action actioninfo = (Action) actionList.get(i);
actioninfo.setActionid(StringUtil.getPrimaryKey());
actioninfo.setMenuinfo(menu1);
actionDao.saveActioninfo(actioninfo);
}
}
return 1;
}
if(menu.getMenutype().equals("3")){//修改成为分割线
moduleDao.updateMenuinfo(menu);
return 1;
}
return 4;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -