后台管理模块相关总结

做这个是一个系统的后台管理,进行系统级别操作,登陆时可用来验证什么角色,拥有什么角色,显示什么内容。

一、五个表,user ,user_role,role,role_menu,menu 。分别是 用户表,用户角色表,角色表,用户菜单表,菜单表

需求:

用户这块:

1.展示所有用户,并展示相应用户角色信息。(可以模糊查询,相应中心和相应部门查询,分页,10条一页)

 这里相应中心和部门也是一个接口,可以List<Map>中的Map再放一个List来作为部门。

2.给批量用户添加一个角色,也就是对用户多选框后,进行添加角色。

3.给用户批量重置密码,主要给忘密码的人,重新重置。

4.用户功能导出(excel,有excel模板用excel模板导出)

5.能对某个用户角色进行操作,比如给某个用户批量增加角色,减少角色等。

角色这块:

1.新增角色。

2.删除角色。

3.角色功能导出。

4.权限编辑(也就是给角色添加权限,删除权限等,也是批量的,就用上多选框)

菜单这块(权限):    ---最需要思考部分

表设计:

1.展示出所有菜单,并且是树状结构,父子级关系,无限层级。

2.对某个节点进行新增子级。

3.编辑某个节点。

4.删除该节点,并删除该节点下所有子节点。

1和4需要比较难。

思路,因为无限,思考着用递归来做。

递归:1.自己调用自己,2.有个递归出口

有一个根节点,是一定有的,不然无法查找

Menu实体类中加有如下

1需求代码:

0作为pid,根节点。
/**
* 查询权限树
* @return
*/
@Override
public List<SysMenu> returnTree() {

Map<String, Object> params = new HashMap<String, Object>();
params.put("pid", "0");
params.put("delSign", BasicConstants.DEL_SIGN_ON);
List<SysMenu>list1 = menuDao.selectMenu(params);
log.info("pid:"+list1.get(0).getPid()+",size:"+list1.size());
List<SysMenu> lists = treeDigui(list1);
return lists;
}



//递归
public List<SysMenu> treeDigui(List<SysMenu>list){
List<SysMenu> returnList = list;
log.info("sizes:"+list.size());
if(list.size()==0){
return null;
}else{
for(int i=0; i<returnList.size();i++){

int size = returnList.size();
Map<String, Object> map = new HashMap<>();
map.put("pid", returnList.get(i).getId()+"");
map.put("delSign", BasicConstants.DEL_SIGN_ON);
List<SysMenu>lists = menuDao.selectMenu(map);//再去查是否有子集
returnList.get(i).setListMenu(lists); //都再加进去
treeDigui(lists); //递归实现树结构
}
}
return returnList;
}

2需求,删除

/**
* 新增,修改,删除一个菜单
*/
@Override
public int saveSysMenu(SysMenuDTO sysMenuDTO) {

String flag = sysMenuDTO.getFlag();
SysMenu sysMenu = sysMenuDTO.getSysMenu();
Date date=null;
try {
date = dateTimeUtil.dateTimeNow();
} catch (ParseException e) {

e.printStackTrace();
}
int result =0;

if(flag != null && flag.equals(flag) ){
if("1".equals(flag)){
//新增
sysMenu.setCreateDate(date);//创建时间
sysMenu.setPid(sysMenu.getId());
result = menuDao.saveSysMenu(sysMenu);
if(result>0){
result = 1;
}else{
result = -1;
}
}
if("2".equals(flag)){
//编辑
sysMenu.setModifyDate(date);
result = menuDao.updateSysMenu(sysMenu);
if(result >0){
result = 2;
}else{
result =-2;
}
}
if("3".equals(flag)){
//删除
List<SysMenu> listMap = new ArrayList<>();
listMap.add(sysMenu);
result = delDigui(listMap);
if(result >0){
result = 3;
}else{
result = -3;
}

}

}

return result;
}


/**
* 递归
* 条件
* 1.自己调用自己
* 2.有个递归出口
* @param list
* @return
*/
public Integer delDigui(List<SysMenu> list){

List<SysMenu> returnList = list;
log.info("sizes:"+list.size());
int result = 0;
if (returnList.size()==0){
return null;
}else{
for(int i=0; i<returnList.size();i++){

Map<String, Object> map = new HashMap<>();
map.put("pid", returnList.get(i).getId()+"");
map.put("delSign", BasicConstants.DEL_SIGN_ON);
List<SysMenu>lists = menuDao.selectMenu(map);//再去查是否有子集

log.info("进来id:"+returnList.get(i).getId());
Map<String, Object> params = new HashMap<>();
params.put("id", returnList.get(i).getId());
params.put("delSign", BasicConstants.DEL_SIGN_OFF);//删除标志
result = menuDao.delSysMenus(params);
log.info("出来id:"+returnList.get(i).getId());

delDigui(lists); //递归实现树结构
}
}
return result ;
}

猜你喜欢

转载自www.cnblogs.com/yiyezhiqiuwuchen/p/12787158.html
今日推荐