若依开源1.0.4发布
This commit is contained in:
parent
5b2bb844c4
commit
927b1bb882
2
pom.xml
2
pom.xml
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
<artifactId>RuoYi</artifactId>
|
<artifactId>RuoYi</artifactId>
|
||||||
<version>1.0.3</version>
|
<version>1.0.4</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>RuoYi</name>
|
<name>RuoYi</name>
|
||||||
|
|
|
||||||
|
|
@ -123,9 +123,9 @@ public class DruidConfig
|
||||||
reg.setServlet(new StatViewServlet());
|
reg.setServlet(new StatViewServlet());
|
||||||
reg.addUrlMappings("/monitor/druid/*");
|
reg.addUrlMappings("/monitor/druid/*");
|
||||||
/** 白名单 */
|
/** 白名单 */
|
||||||
reg.addInitParameter("allow", "10.211.61.45,127.0.0.1,123.207.20.136");
|
// reg.addInitParameter("allow", "10.211.61.45,127.0.0.1,123.207.20.136");
|
||||||
/** IP黑名单(共同存在时,deny优先于allow) */
|
/** IP黑名单(共同存在时,deny优先于allow) */
|
||||||
reg.addInitParameter("deny", "10.211.61.4");
|
// reg.addInitParameter("deny", "10.211.61.4");
|
||||||
/** 是否能够重置数据 禁用HTML页面上的“Reset All”功能 */
|
/** 是否能够重置数据 禁用HTML页面上的“Reset All”功能 */
|
||||||
reg.addInitParameter("resetEnable", "false");
|
reg.addInitParameter("resetEnable", "false");
|
||||||
return reg;
|
return reg;
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,16 @@ package com.ruoyi.framework.shiro.web.filter;
|
||||||
|
|
||||||
import javax.servlet.ServletRequest;
|
import javax.servlet.ServletRequest;
|
||||||
import javax.servlet.ServletResponse;
|
import javax.servlet.ServletResponse;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.apache.shiro.session.SessionException;
|
import org.apache.shiro.session.SessionException;
|
||||||
import org.apache.shiro.subject.Subject;
|
import org.apache.shiro.subject.Subject;
|
||||||
|
|
||||||
import com.ruoyi.common.constant.CommonConstant;
|
import com.ruoyi.common.constant.CommonConstant;
|
||||||
import com.ruoyi.common.utils.MessageUtils;
|
import com.ruoyi.common.utils.MessageUtils;
|
||||||
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.common.utils.SystemLogUtils;
|
import com.ruoyi.common.utils.SystemLogUtils;
|
||||||
import com.ruoyi.common.utils.security.ShiroUtils;
|
import com.ruoyi.common.utils.security.ShiroUtils;
|
||||||
|
import com.ruoyi.project.system.user.domain.User;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
|
@ -45,9 +48,13 @@ public class LogoutFilter extends org.apache.shiro.web.filter.authc.LogoutFilter
|
||||||
String redirectUrl = getRedirectUrl(request, response, subject);
|
String redirectUrl = getRedirectUrl(request, response, subject);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
String loginName = ShiroUtils.getLoginName();
|
User user = (User) ShiroUtils.getSubjct().getPrincipal();
|
||||||
// 记录用户退出日志
|
if (StringUtils.isNotNull(user))
|
||||||
SystemLogUtils.log(loginName, CommonConstant.LOGOUT, MessageUtils.message("user.logout.success"));
|
{
|
||||||
|
String loginName = user.getLoginName();
|
||||||
|
// 记录用户退出日志
|
||||||
|
SystemLogUtils.log(loginName, CommonConstant.LOGOUT, MessageUtils.message("user.logout.success"));
|
||||||
|
}
|
||||||
// 退出登录
|
// 退出登录
|
||||||
subject.logout();
|
subject.logout();
|
||||||
}
|
}
|
||||||
|
|
@ -71,7 +78,7 @@ public class LogoutFilter extends org.apache.shiro.web.filter.authc.LogoutFilter
|
||||||
protected String getRedirectUrl(ServletRequest request, ServletResponse response, Subject subject)
|
protected String getRedirectUrl(ServletRequest request, ServletResponse response, Subject subject)
|
||||||
{
|
{
|
||||||
String url = getLoginUrl();
|
String url = getLoginUrl();
|
||||||
if (StringUtils.isNoneBlank(url))
|
if (StringUtils.isNotEmpty(url))
|
||||||
{
|
{
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,13 +14,14 @@ public interface IDeptDao
|
||||||
* 新增部门管理
|
* 新增部门管理
|
||||||
*
|
*
|
||||||
* @param dept 部门对象
|
* @param dept 部门对象
|
||||||
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int insertDept(Dept dept);
|
public int insertDept(Dept dept);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询部门人数
|
* 查询部门人数
|
||||||
*
|
*
|
||||||
* @param parentId 部门ID
|
* @param dept 部门对象
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int selectDeptCount(Dept dept);
|
public int selectDeptCount(Dept dept);
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ public interface IDeptService
|
||||||
* 新增部门管理
|
* 新增部门管理
|
||||||
*
|
*
|
||||||
* @param dept 部门对象
|
* @param dept 部门对象
|
||||||
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int insertDept(Dept dept);
|
public int insertDept(Dept dept);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,17 +2,15 @@ package com.ruoyi.project.system.menu.controller;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
|
||||||
import com.ruoyi.framework.web.controller.BaseController;
|
import com.ruoyi.framework.web.controller.BaseController;
|
||||||
import com.ruoyi.project.system.menu.service.IMenuService;
|
import com.ruoyi.project.system.menu.service.IMenuService;
|
||||||
|
import com.ruoyi.project.system.role.domain.Role;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色信息
|
* 角色信息
|
||||||
|
|
@ -39,11 +37,11 @@ public class MenuController extends BaseController
|
||||||
/**
|
/**
|
||||||
* 加载菜单列表树
|
* 加载菜单列表树
|
||||||
*/
|
*/
|
||||||
@GetMapping("/treeData/{roleId}")
|
@GetMapping("/treeData")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public List<Map<String, Object>> treeData(@PathVariable("roleId") Long roleId)
|
public List<Map<String, Object>> treeData(Role role)
|
||||||
{
|
{
|
||||||
List<Map<String, Object>> tree = menuService.selectMenuTree(roleId);
|
List<Map<String, Object>> tree = menuService.selectMenuTree(role);
|
||||||
return tree;
|
return tree;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -63,6 +63,7 @@ public class MenuDaoImpl extends DynamicObjectBaseDao implements IMenuDao
|
||||||
* @param roleId 角色ID
|
* @param roleId 角色ID
|
||||||
* @return 菜单列表
|
* @return 菜单列表
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public List<String> selectMenuTree(Long roleId)
|
public List<String> selectMenuTree(Long roleId)
|
||||||
{
|
{
|
||||||
List<String> menuList = null;
|
List<String> menuList = null;
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import com.ruoyi.project.system.menu.domain.Menu;
|
import com.ruoyi.project.system.menu.domain.Menu;
|
||||||
|
import com.ruoyi.project.system.role.domain.Role;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 菜单 业务层
|
* 菜单 业务层
|
||||||
|
|
@ -32,10 +33,10 @@ public interface IMenuService
|
||||||
/**
|
/**
|
||||||
* 根据角色ID查询菜单
|
* 根据角色ID查询菜单
|
||||||
*
|
*
|
||||||
* @param roleId 角色ID
|
* @param role 角色对象
|
||||||
* @return 菜单列表
|
* @return 菜单列表
|
||||||
*/
|
*/
|
||||||
public List<Map<String, Object>> selectMenuTree(Long roleId);
|
public List<Map<String, Object>> selectMenuTree(Role role);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询系统所有权限
|
* 查询系统所有权限
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.common.utils.TreeUtils;
|
import com.ruoyi.common.utils.TreeUtils;
|
||||||
import com.ruoyi.project.system.menu.dao.IMenuDao;
|
import com.ruoyi.project.system.menu.dao.IMenuDao;
|
||||||
import com.ruoyi.project.system.menu.domain.Menu;
|
import com.ruoyi.project.system.menu.domain.Menu;
|
||||||
|
import com.ruoyi.project.system.role.domain.Role;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 菜单 业务层处理
|
* 菜单 业务层处理
|
||||||
|
|
@ -68,22 +69,23 @@ public class MenuServiceImpl implements IMenuService
|
||||||
/**
|
/**
|
||||||
* 根据角色ID查询菜单
|
* 根据角色ID查询菜单
|
||||||
*
|
*
|
||||||
* @param roleId 角色ID
|
* @param role 角色对象
|
||||||
* @return 菜单列表
|
* @return 菜单列表
|
||||||
*/
|
*/
|
||||||
public List<Map<String, Object>> selectMenuTree(Long roleId)
|
@Override
|
||||||
|
public List<Map<String, Object>> selectMenuTree(Role role)
|
||||||
{
|
{
|
||||||
|
Long roleId = role.getRoleId();
|
||||||
List<Map<String, Object>> trees = new ArrayList<Map<String, Object>>();
|
List<Map<String, Object>> trees = new ArrayList<Map<String, Object>>();
|
||||||
List<String> roleMenuList = menuDao.selectMenuTree(roleId);
|
|
||||||
List<Menu> menuList = menuDao.selectPermsAll();
|
List<Menu> menuList = menuDao.selectPermsAll();
|
||||||
for (Menu menu : menuList)
|
if (StringUtils.isNotNull(roleId))
|
||||||
{
|
{
|
||||||
Map<String, Object> deptMap = new HashMap<String, Object>();
|
List<String> roleMenuList = menuDao.selectMenuTree(roleId);
|
||||||
deptMap.put("id", menu.getMenuId());
|
trees = getTrees(menuList, true, roleMenuList);
|
||||||
deptMap.put("pId", menu.getParentId());
|
}
|
||||||
deptMap.put("name", menu.getMenuName());
|
else
|
||||||
deptMap.put("checked", roleMenuList.contains(menu.getMenuId() + menu.getPerms()));
|
{
|
||||||
trees.add(deptMap);
|
trees = getTrees(menuList, false, null);
|
||||||
}
|
}
|
||||||
return trees;
|
return trees;
|
||||||
}
|
}
|
||||||
|
|
@ -108,13 +110,29 @@ public class MenuServiceImpl implements IMenuService
|
||||||
return section;
|
return section;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args)
|
/**
|
||||||
|
* 获取菜单树
|
||||||
|
*/
|
||||||
|
public List<Map<String, Object>> getTrees(List<Menu> menuList, boolean isCheck, List<String> roleMenuList)
|
||||||
{
|
{
|
||||||
List<Long> list = new ArrayList<Long>();
|
List<Map<String, Object>> trees = new ArrayList<Map<String, Object>>();
|
||||||
list.add(1L);
|
for (Menu menu : menuList)
|
||||||
list.add(2L);
|
{
|
||||||
list.add(3L);
|
Map<String, Object> deptMap = new HashMap<String, Object>();
|
||||||
System.out.println(list.contains(Long.valueOf(1)));
|
deptMap.put("id", menu.getMenuId());
|
||||||
|
deptMap.put("pId", menu.getParentId());
|
||||||
|
deptMap.put("name", menu.getMenuName());
|
||||||
|
if (isCheck)
|
||||||
|
{
|
||||||
|
deptMap.put("checked", roleMenuList.contains(menu.getMenuId() + menu.getPerms()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
deptMap.put("checked", false);
|
||||||
|
}
|
||||||
|
trees.add(deptMap);
|
||||||
|
}
|
||||||
|
return trees;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package com.ruoyi.project.system.role.controller;
|
package com.ruoyi.project.system.role.controller;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
|
|
@ -10,10 +12,13 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
|
||||||
import com.ruoyi.framework.aspectj.lang.annotation.Log;
|
import com.ruoyi.framework.aspectj.lang.annotation.Log;
|
||||||
import com.ruoyi.framework.web.controller.BaseController;
|
import com.ruoyi.framework.web.controller.BaseController;
|
||||||
import com.ruoyi.framework.web.domain.JSON;
|
import com.ruoyi.framework.web.domain.JSON;
|
||||||
import com.ruoyi.framework.web.page.TableDataInfo;
|
import com.ruoyi.framework.web.page.TableDataInfo;
|
||||||
|
import com.ruoyi.project.system.menu.domain.Menu;
|
||||||
|
import com.ruoyi.project.system.menu.service.IMenuService;
|
||||||
import com.ruoyi.project.system.role.domain.Role;
|
import com.ruoyi.project.system.role.domain.Role;
|
||||||
import com.ruoyi.project.system.role.service.IRoleService;
|
import com.ruoyi.project.system.role.service.IRoleService;
|
||||||
|
|
||||||
|
|
@ -32,6 +37,9 @@ public class RoleController extends BaseController
|
||||||
@Autowired
|
@Autowired
|
||||||
private IRoleService roleService;
|
private IRoleService roleService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IMenuService menuService;
|
||||||
|
|
||||||
@RequiresPermissions("system:role:view")
|
@RequiresPermissions("system:role:view")
|
||||||
@GetMapping()
|
@GetMapping()
|
||||||
public String user()
|
public String user()
|
||||||
|
|
@ -47,6 +55,16 @@ public class RoleController extends BaseController
|
||||||
TableDataInfo rows = roleService.pageInfoQuery(getPageUtilEntity());
|
TableDataInfo rows = roleService.pageInfoQuery(getPageUtilEntity());
|
||||||
return rows;
|
return rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增角色
|
||||||
|
*/
|
||||||
|
@Log(title = "系统管理", action = "角色管理-新增角色")
|
||||||
|
@GetMapping("/add")
|
||||||
|
public String add(Model model)
|
||||||
|
{
|
||||||
|
return prefix + "/add";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改角色
|
* 修改角色
|
||||||
|
|
@ -60,6 +78,21 @@ public class RoleController extends BaseController
|
||||||
return prefix + "/edit";
|
return prefix + "/edit";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改角色
|
||||||
|
*/
|
||||||
|
@Log(title = "系统管理", action = "角色管理-保存角色")
|
||||||
|
@PostMapping("/save")
|
||||||
|
@ResponseBody
|
||||||
|
public JSON save(Role role)
|
||||||
|
{
|
||||||
|
if (roleService.saveRole(role) > 0)
|
||||||
|
{
|
||||||
|
return JSON.ok();
|
||||||
|
}
|
||||||
|
return JSON.error();
|
||||||
|
}
|
||||||
|
|
||||||
@Log(title = "系统管理", action = "角色管理-删除角色")
|
@Log(title = "系统管理", action = "角色管理-删除角色")
|
||||||
@RequestMapping("/remove/{roleId}")
|
@RequestMapping("/remove/{roleId}")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
package com.ruoyi.project.system.role.dao;
|
package com.ruoyi.project.system.role.dao;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.ruoyi.framework.web.page.PageUtilEntity;
|
import com.ruoyi.framework.web.page.PageUtilEntity;
|
||||||
import com.ruoyi.framework.web.page.TableDataInfo;
|
import com.ruoyi.framework.web.page.TableDataInfo;
|
||||||
import com.ruoyi.project.system.role.domain.Role;
|
import com.ruoyi.project.system.role.domain.Role;
|
||||||
|
import com.ruoyi.project.system.role.domain.RoleMenu;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色表 数据层
|
* 角色表 数据层
|
||||||
|
|
@ -61,4 +61,36 @@ public interface IRoleDao
|
||||||
*/
|
*/
|
||||||
public int batchDeleteRole(Long[] ids);
|
public int batchDeleteRole(Long[] ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过角色ID删除角色和菜单关联
|
||||||
|
*
|
||||||
|
* @param roleId 角色ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteRoleMenuByRoleId(Long roleId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改角色信息
|
||||||
|
*
|
||||||
|
* @param role 角色信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int updateRole(Role role);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增角色信息
|
||||||
|
*
|
||||||
|
* @param role 角色信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int insertRole(Role role);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量新增角色菜单信息
|
||||||
|
*
|
||||||
|
* @param roleMenuList 角色菜单列表
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int batchRoleMenu(List<RoleMenu> roleMenuList);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import com.ruoyi.framework.web.dao.DynamicObjectBaseDao;
|
||||||
import com.ruoyi.framework.web.page.PageUtilEntity;
|
import com.ruoyi.framework.web.page.PageUtilEntity;
|
||||||
import com.ruoyi.framework.web.page.TableDataInfo;
|
import com.ruoyi.framework.web.page.TableDataInfo;
|
||||||
import com.ruoyi.project.system.role.domain.Role;
|
import com.ruoyi.project.system.role.domain.Role;
|
||||||
|
import com.ruoyi.project.system.role.domain.RoleMenu;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色 数据层处理
|
* 角色 数据层处理
|
||||||
|
|
@ -22,6 +23,7 @@ public class RoleDaoImpl extends DynamicObjectBaseDao implements IRoleDao
|
||||||
* @param pageUtilEntity 分页对象
|
* @param pageUtilEntity 分页对象
|
||||||
* @return 用户信息集合信息
|
* @return 用户信息集合信息
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public TableDataInfo pageInfoQuery(PageUtilEntity pageUtilEntity)
|
public TableDataInfo pageInfoQuery(PageUtilEntity pageUtilEntity)
|
||||||
{
|
{
|
||||||
return this.findForList("SystemRoleMapper.pageInfoQuery", pageUtilEntity);
|
return this.findForList("SystemRoleMapper.pageInfoQuery", pageUtilEntity);
|
||||||
|
|
@ -75,6 +77,7 @@ public class RoleDaoImpl extends DynamicObjectBaseDao implements IRoleDao
|
||||||
* @param roleId 角色ID
|
* @param roleId 角色ID
|
||||||
* @return 角色对象信息
|
* @return 角色对象信息
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public Role selectRoleById(Long roleId)
|
public Role selectRoleById(Long roleId)
|
||||||
{
|
{
|
||||||
return this.findForObject("SystemRoleMapper.selectRoleById", roleId);
|
return this.findForObject("SystemRoleMapper.selectRoleById", roleId);
|
||||||
|
|
@ -86,6 +89,7 @@ public class RoleDaoImpl extends DynamicObjectBaseDao implements IRoleDao
|
||||||
* @param roleId 角色ID
|
* @param roleId 角色ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public int deleteRoleById(Long roleId)
|
public int deleteRoleById(Long roleId)
|
||||||
{
|
{
|
||||||
return this.delete("SystemRoleMapper.deleteRoleById", roleId);
|
return this.delete("SystemRoleMapper.deleteRoleById", roleId);
|
||||||
|
|
@ -97,9 +101,57 @@ public class RoleDaoImpl extends DynamicObjectBaseDao implements IRoleDao
|
||||||
* @param ids 需要删除的数据ID
|
* @param ids 需要删除的数据ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public int batchDeleteRole(Long[] ids)
|
public int batchDeleteRole(Long[] ids)
|
||||||
{
|
{
|
||||||
return this.delete("SystemRoleMapper.batchDeleteRole", ids);
|
return this.delete("SystemRoleMapper.batchDeleteRole", ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过角色ID删除角色和菜单关联
|
||||||
|
*
|
||||||
|
* @param roleId 角色ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int deleteRoleMenuByRoleId(Long roleId)
|
||||||
|
{
|
||||||
|
return this.delete("SystemRoleMenuMapper.deleteRoleMenuByRoleId", roleId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存角色信息
|
||||||
|
*
|
||||||
|
* @param role 角色信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int updateRole(Role role)
|
||||||
|
{
|
||||||
|
return this.update("SystemRoleMapper.updateRole", role);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增角色信息
|
||||||
|
*
|
||||||
|
* @param role 角色信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int insertRole(Role role)
|
||||||
|
{
|
||||||
|
return this.update("SystemRoleMapper.insertRole", role);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量新增角色菜单信息
|
||||||
|
*
|
||||||
|
* @param roleMenuList 角色菜单列表
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int batchRoleMenu(List<RoleMenu> roleMenuList)
|
||||||
|
{
|
||||||
|
return this.batchSave("SystemRoleMenuMapper.batchRoleMenu", roleMenuList);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,5 +31,7 @@ public class Role
|
||||||
private String remark;
|
private String remark;
|
||||||
/** 用户是否存在此角色标识 默认不存在 */
|
/** 用户是否存在此角色标识 默认不存在 */
|
||||||
private boolean flag = false;
|
private boolean flag = false;
|
||||||
|
/** 菜单组 */
|
||||||
|
private Long[] menuIds;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
package com.ruoyi.project.system.role.domain;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色和菜单关联 sys_role_menu
|
||||||
|
*
|
||||||
|
* @author ruoyi
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class RoleMenu
|
||||||
|
{
|
||||||
|
/** 角色ID */
|
||||||
|
private Long roleId;
|
||||||
|
/** 菜单ID */
|
||||||
|
private Long menuId;
|
||||||
|
}
|
||||||
|
|
@ -2,7 +2,6 @@ package com.ruoyi.project.system.role.service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import com.ruoyi.framework.web.page.PageUtilEntity;
|
import com.ruoyi.framework.web.page.PageUtilEntity;
|
||||||
import com.ruoyi.framework.web.page.TableDataInfo;
|
import com.ruoyi.framework.web.page.TableDataInfo;
|
||||||
import com.ruoyi.project.system.role.domain.Role;
|
import com.ruoyi.project.system.role.domain.Role;
|
||||||
|
|
@ -70,4 +69,12 @@ public interface IRoleService
|
||||||
*/
|
*/
|
||||||
public int batchDeleteRole(Long[] ids);
|
public int batchDeleteRole(Long[] ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存角色信息
|
||||||
|
*
|
||||||
|
* @param role 角色信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int saveRole(Role role);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.ruoyi.project.system.role.service;
|
package com.ruoyi.project.system.role.service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -11,6 +12,7 @@ import com.ruoyi.framework.web.page.PageUtilEntity;
|
||||||
import com.ruoyi.framework.web.page.TableDataInfo;
|
import com.ruoyi.framework.web.page.TableDataInfo;
|
||||||
import com.ruoyi.project.system.role.dao.IRoleDao;
|
import com.ruoyi.project.system.role.dao.IRoleDao;
|
||||||
import com.ruoyi.project.system.role.domain.Role;
|
import com.ruoyi.project.system.role.domain.Role;
|
||||||
|
import com.ruoyi.project.system.role.domain.RoleMenu;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色 业务层处理
|
* 角色 业务层处理
|
||||||
|
|
@ -30,6 +32,7 @@ public class RoleServiceImpl implements IRoleService
|
||||||
* @param pageUtilEntity 分页对象
|
* @param pageUtilEntity 分页对象
|
||||||
* @return 角色信息集合信息
|
* @return 角色信息集合信息
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public TableDataInfo pageInfoQuery(PageUtilEntity pageUtilEntity)
|
public TableDataInfo pageInfoQuery(PageUtilEntity pageUtilEntity)
|
||||||
{
|
{
|
||||||
return roleDao.pageInfoQuery(pageUtilEntity);
|
return roleDao.pageInfoQuery(pageUtilEntity);
|
||||||
|
|
@ -98,6 +101,7 @@ public class RoleServiceImpl implements IRoleService
|
||||||
* @param roleId 角色ID
|
* @param roleId 角色ID
|
||||||
* @return 角色对象信息
|
* @return 角色对象信息
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public Role selectRoleById(Long roleId)
|
public Role selectRoleById(Long roleId)
|
||||||
{
|
{
|
||||||
return roleDao.selectRoleById(roleId);
|
return roleDao.selectRoleById(roleId);
|
||||||
|
|
@ -109,6 +113,7 @@ public class RoleServiceImpl implements IRoleService
|
||||||
* @param roleId 角色ID
|
* @param roleId 角色ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public int deleteRoleById(Long roleId)
|
public int deleteRoleById(Long roleId)
|
||||||
{
|
{
|
||||||
return roleDao.deleteRoleById(roleId);
|
return roleDao.deleteRoleById(roleId);
|
||||||
|
|
@ -120,9 +125,57 @@ public class RoleServiceImpl implements IRoleService
|
||||||
* @param ids 需要删除的数据ID
|
* @param ids 需要删除的数据ID
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public int batchDeleteRole(Long[] ids)
|
public int batchDeleteRole(Long[] ids)
|
||||||
{
|
{
|
||||||
return roleDao.batchDeleteRole(ids);
|
return roleDao.batchDeleteRole(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存角色信息
|
||||||
|
*
|
||||||
|
* @param role 角色信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int saveRole(Role role)
|
||||||
|
{
|
||||||
|
Long roleId = role.getRoleId();
|
||||||
|
if (StringUtils.isNotNull(roleId))
|
||||||
|
{
|
||||||
|
// 删除角色与菜单关联
|
||||||
|
roleDao.deleteRoleMenuByRoleId(roleId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 新增角色信息
|
||||||
|
roleDao.insertRole(role);
|
||||||
|
|
||||||
|
}
|
||||||
|
insertRoleMenu(role);
|
||||||
|
return roleDao.updateRole(role);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增角色菜单信息
|
||||||
|
*
|
||||||
|
* @param user 角色对象
|
||||||
|
*/
|
||||||
|
public void insertRoleMenu(Role role)
|
||||||
|
{
|
||||||
|
// 新增用户与角色管理
|
||||||
|
List<RoleMenu> list = new ArrayList<RoleMenu>();
|
||||||
|
for (Long menuId : role.getMenuIds())
|
||||||
|
{
|
||||||
|
RoleMenu rm = new RoleMenu();
|
||||||
|
rm.setRoleId(role.getRoleId());
|
||||||
|
rm.setMenuId(menuId);
|
||||||
|
list.add(rm);
|
||||||
|
}
|
||||||
|
if (list.size() > 0)
|
||||||
|
{
|
||||||
|
roleDao.batchRoleMenu(list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ public interface IUserDao
|
||||||
/**
|
/**
|
||||||
* 批量新增用户角色信息
|
* 批量新增用户角色信息
|
||||||
*
|
*
|
||||||
* @param user 用户信息
|
* @param userRoleList 用户角色列表
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int batchUserRole(List<UserRole> userRoleList);
|
public int batchUserRole(List<UserRole> userRoleList);
|
||||||
|
|
@ -90,7 +90,7 @@ public interface IUserDao
|
||||||
/**
|
/**
|
||||||
* 校验用户名称是否唯一
|
* 校验用户名称是否唯一
|
||||||
*
|
*
|
||||||
* @param userName 用户名
|
* @param loginName 登录名称
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int checkNameUnique(String loginName);
|
public int checkNameUnique(String loginName);
|
||||||
|
|
|
||||||
|
|
@ -114,16 +114,10 @@ public class UserDaoImpl extends DynamicObjectBaseDao implements IUserDao
|
||||||
return this.save("SystemUserMapper.insertUser", user);
|
return this.save("SystemUserMapper.insertUser", user);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 新增用户信息
|
|
||||||
*
|
|
||||||
* @param user 用户信息
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
/**
|
/**
|
||||||
* 批量新增用户角色信息
|
* 批量新增用户角色信息
|
||||||
*
|
*
|
||||||
* @param user 用户信息
|
* @param userRoleList 用户角色列表
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ public interface IUserService
|
||||||
/**
|
/**
|
||||||
* 校验用户名称是否唯一
|
* 校验用户名称是否唯一
|
||||||
*
|
*
|
||||||
* @param userName 用户名
|
* @param loginName 登录名称
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public String checkNameUnique(String loginName);
|
public String checkNameUnique(String loginName);
|
||||||
|
|
|
||||||
|
|
@ -120,7 +120,7 @@ public class UserServiceImpl implements IUserService
|
||||||
public void insertUserRole(User user)
|
public void insertUserRole(User user)
|
||||||
{
|
{
|
||||||
// 新增用户与角色管理
|
// 新增用户与角色管理
|
||||||
List<UserRole> list = new ArrayList<>();
|
List<UserRole> list = new ArrayList<UserRole>();
|
||||||
for (Long roleId : user.getRoleIds())
|
for (Long roleId : user.getRoleIds())
|
||||||
{
|
{
|
||||||
UserRole ur = new UserRole();
|
UserRole ur = new UserRole();
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,9 @@ spring:
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: com.mysql.jdbc.Driver
|
driverClassName: com.mysql.jdbc.Driver
|
||||||
#url: jdbc:mysql://10.213.24.45:3306/ry?useUnicode=true&characterEncoding=utf8
|
#url: jdbc:mysql://10.213.24.45:3306/ry?useUnicode=true&characterEncoding=utf8
|
||||||
url: jdbc:mysql://123.207.20.136:3306/ry?useUnicode=true&characterEncoding=utf8
|
url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8
|
||||||
username: ruoyi
|
username: root
|
||||||
password: 123456
|
password: password
|
||||||
# 初始化大小,最小,最大
|
# 初始化大小,最小,最大
|
||||||
initialSize: 1
|
initialSize: 1
|
||||||
minIdle: 3
|
minIdle: 3
|
||||||
|
|
|
||||||
|
|
@ -53,5 +53,38 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
#{roleId}
|
#{roleId}
|
||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
<update id="updateRole" parameterType="Role">
|
||||||
|
update sys_role
|
||||||
|
<set>
|
||||||
|
<if test="roleName != null and roleName != ''">role_name = #{roleName},</if>
|
||||||
|
<if test="roleKey != null and roleKey != ''">role_key = #{roleKey},</if>
|
||||||
|
<if test="roleSort != null and roleSort != ''">role_sort = #{roleSort},</if>
|
||||||
|
<if test="status !=null">status = #{status},</if>
|
||||||
|
<if test="remark != null and remark != ''">remark = #{remark},</if>
|
||||||
|
</set>
|
||||||
|
where 1=1
|
||||||
|
<if test="roleId != null">and role_id = #{roleId}</if>
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<insert id="insertRole" parameterType="Role" useGeneratedKeys="true" keyProperty="roleId">
|
||||||
|
insert into sys_role(
|
||||||
|
<if test="roleId != null and roleId != 0">role_id,</if>
|
||||||
|
<if test="roleName != null and roleName != 0">role_name,</if>
|
||||||
|
<if test="roleKey != null and roleKey != ''">role_key,</if>
|
||||||
|
<if test="roleSort != null and roleSort != ''">role_sort,</if>
|
||||||
|
<if test="status !=null and status != ''">status,</if>
|
||||||
|
<if test="remark != null and remark != ''">remark,</if>
|
||||||
|
create_time
|
||||||
|
)values(
|
||||||
|
<if test="roleId != null and roleId != ''">#{roleId},</if>
|
||||||
|
<if test="roleName != null and roleName != ''">#{roleName},</if>
|
||||||
|
<if test="roleKey != null and roleKey != ''">#{roleKey},</if>
|
||||||
|
<if test="roleSort != null and roleSort != ''">#{roleSort},</if>
|
||||||
|
<if test="status !=null and status != ''">status,</if>
|
||||||
|
<if test="remark != null and remark != ''">#{remark},</if>
|
||||||
|
sysdate()
|
||||||
|
)
|
||||||
|
</insert>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="SystemRoleMenuMapper">
|
||||||
|
|
||||||
|
<resultMap type="RoleMenu" id="RoleMenuResult">
|
||||||
|
<result property="roleId" column="role_id" />
|
||||||
|
<result property="menuId" column="menu_id" />
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<delete id="deleteRoleMenuByRoleId">
|
||||||
|
delete from sys_role_menu where role_id=#{roleId}
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
<insert id="batchRoleMenu">
|
||||||
|
insert into sys_role_menu(role_id, menu_id) values
|
||||||
|
<foreach item="item" index="index" collection="list" separator=",">
|
||||||
|
(#{item.roleId},#{item.menuId})
|
||||||
|
</foreach>
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
|
|
@ -15,8 +15,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
|
||||||
<insert id="batchUserRole">
|
<insert id="batchUserRole">
|
||||||
insert into sys_user_role(user_id, role_id) values
|
insert into sys_user_role(user_id, role_id) values
|
||||||
<foreach item="item" index="index" collection="list"
|
<foreach item="item" index="index" collection="list" separator=",">
|
||||||
separator=",">
|
|
||||||
(#{item.userId},#{item.roleId})
|
(#{item.userId},#{item.roleId})
|
||||||
</foreach>
|
</foreach>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,83 @@
|
||||||
|
// 树结构初始化加载
|
||||||
|
var setting = {
|
||||||
|
check:{enable:true,nocheckInherit:true,chkboxType:{"Y":"ps","N":"ps"}},
|
||||||
|
view:{selectedMulti:false,nameIsHTML: true},
|
||||||
|
data:{simpleData:{enable:true},key:{title:"title"}},
|
||||||
|
callback:{
|
||||||
|
beforeClick: function (treeId, treeNode, clickFlag) {
|
||||||
|
var menuTrees = $.fn.zTree.getZTreeObj(treeId);
|
||||||
|
menuTrees.checkNode(treeNode, !treeNode.checked, true, true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, menuTrees, loadTree = function(){
|
||||||
|
$.get("/system/menu/treeData", function(data) {
|
||||||
|
menuTrees = $.fn.zTree.init($("#menuTrees"), setting, data); //.expandAll(true);
|
||||||
|
}, null, null, "正在加载,请稍后...");
|
||||||
|
};loadTree();
|
||||||
|
|
||||||
|
$("#form-role-add").validate({
|
||||||
|
rules:{
|
||||||
|
roleName:{
|
||||||
|
required:true,
|
||||||
|
},
|
||||||
|
roleKey:{
|
||||||
|
required:true,
|
||||||
|
},
|
||||||
|
roleSort:{
|
||||||
|
required:true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
submitHandler:function(form){
|
||||||
|
add();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function getIsChecked() {
|
||||||
|
var menuIds = "";
|
||||||
|
var treeNodes = menuTrees.getCheckedNodes(true);
|
||||||
|
for (var i = 0; i < treeNodes.length; i++) {
|
||||||
|
if (0 == i) {
|
||||||
|
menuIds = treeNodes[i].id;
|
||||||
|
} else {
|
||||||
|
menuIds += ("," + treeNodes[i].id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return menuIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
function add() {
|
||||||
|
var roleName = $("input[name='roleName']").val();
|
||||||
|
var roleKey = $("input[name='roleKey']").val();
|
||||||
|
var roleSort = $("input[name='roleSort']").val();
|
||||||
|
var status = $("input[name='status']").is(':checked') == true ? 0 : 1;
|
||||||
|
var remark = $("input[name='remark']").val();
|
||||||
|
var menuIds = getIsChecked();
|
||||||
|
$.ajax({
|
||||||
|
cache : true,
|
||||||
|
type : "POST",
|
||||||
|
url : "/system/role/save",
|
||||||
|
data : {
|
||||||
|
"roleName": roleName,
|
||||||
|
"roleKey": roleKey,
|
||||||
|
"roleSort": roleSort,
|
||||||
|
"status": status,
|
||||||
|
"remark": remark,
|
||||||
|
"menuIds": menuIds
|
||||||
|
},
|
||||||
|
async : false,
|
||||||
|
error : function(request) {
|
||||||
|
parent.layer.alert("系统错误");
|
||||||
|
},
|
||||||
|
success : function(data) {
|
||||||
|
if (data.code == 0) {
|
||||||
|
parent.layer.msg('新增成功',{icon:1,time:1000});
|
||||||
|
layer_close();
|
||||||
|
window.parent.location.reload();
|
||||||
|
} else {
|
||||||
|
parent.layer.alert(data.m , {icon: 2,title:"系统提示"});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,31 @@
|
||||||
$(document).ready(function(){
|
// 树结构初始化加载
|
||||||
queryMenuTreeDaTa();
|
var setting = {
|
||||||
});
|
check:{enable:true,nocheckInherit:true,chkboxType:{"Y":"ps","N":"ps"}},
|
||||||
|
view:{selectedMulti:false,nameIsHTML: true},
|
||||||
|
data:{simpleData:{enable:true},key:{title:"title"}},
|
||||||
|
callback:{
|
||||||
|
beforeClick: function (treeId, treeNode, clickFlag) {
|
||||||
|
var menuTrees = $.fn.zTree.getZTreeObj(treeId);
|
||||||
|
menuTrees.checkNode(treeNode, !treeNode.checked, true, true);
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
onCheck: function (event, treeId, treeNode){
|
||||||
|
var tid = treeNode.tId;
|
||||||
|
if(!treeNode.checked){
|
||||||
|
$(".checkall[value="+treeId+"]").each(function(){
|
||||||
|
if(this.checked){
|
||||||
|
$(this).removeAttr("checked").iCheck('update');
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, menuTrees, loadTree = function(){
|
||||||
|
$.get("/system/menu/treeData?roleId=" + $("#roleId").val(), function(data) {
|
||||||
|
menuTrees = $.fn.zTree.init($("#menuTrees"), setting, data); //.expandAll(true);
|
||||||
|
}, null, null, "正在加载,请稍后...");
|
||||||
|
};loadTree();
|
||||||
|
|
||||||
$("#form-role-edit").validate({
|
$("#form-role-edit").validate({
|
||||||
rules:{
|
rules:{
|
||||||
|
|
@ -19,12 +44,27 @@ $("#form-role-edit").validate({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function getIsChecked() {
|
||||||
|
var menuIds = "";
|
||||||
|
var treeNodes = menuTrees.getCheckedNodes(true);
|
||||||
|
for (var i = 0; i < treeNodes.length; i++) {
|
||||||
|
if (0 == i) {
|
||||||
|
menuIds = treeNodes[i].id;
|
||||||
|
} else {
|
||||||
|
menuIds += ("," + treeNodes[i].id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return menuIds;
|
||||||
|
}
|
||||||
|
|
||||||
function update() {
|
function update() {
|
||||||
var roleId = $("input[name='roleId']").val();
|
var roleId = $("input[name='roleId']").val();
|
||||||
var roleName = $("input[name='roleName']").val();
|
var roleName = $("input[name='roleName']").val();
|
||||||
var roleKey = $("input[name='roleKey']").val();
|
var roleKey = $("input[name='roleKey']").val();
|
||||||
var roleSort = $("input[name='roleSort']").val();
|
var roleSort = $("input[name='roleSort']").val();
|
||||||
var status = $("input[name='status']").is(':checked') == true ? 0 : 1;
|
var status = $("input[name='status']").is(':checked') == true ? 0 : 1;
|
||||||
|
var remark = $("input[name='remark']").val();
|
||||||
|
var menuIds = getIsChecked();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
cache : true,
|
cache : true,
|
||||||
type : "POST",
|
type : "POST",
|
||||||
|
|
@ -34,7 +74,9 @@ function update() {
|
||||||
"roleName": roleName,
|
"roleName": roleName,
|
||||||
"roleKey": roleKey,
|
"roleKey": roleKey,
|
||||||
"roleSort": roleSort,
|
"roleSort": roleSort,
|
||||||
"status": status
|
"status": status,
|
||||||
|
"remark": remark,
|
||||||
|
"menuIds": menuIds
|
||||||
},
|
},
|
||||||
async : false,
|
async : false,
|
||||||
error : function(request) {
|
error : function(request) {
|
||||||
|
|
@ -52,40 +94,3 @@ function update() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function queryMenuTreeDaTa()
|
|
||||||
{
|
|
||||||
// 树结构初始化加载
|
|
||||||
var setting = {
|
|
||||||
check:{enable:true,nocheckInherit:true,chkboxType:{"Y":"ps","N":"ps"}},
|
|
||||||
view:{selectedMulti:false,nameIsHTML: true},
|
|
||||||
data:{simpleData:{enable:true},key:{title:"title"}},
|
|
||||||
callback:{
|
|
||||||
beforeClick: function (treeId, treeNode, clickFlag) {
|
|
||||||
var tree = $.fn.zTree.getZTreeObj(treeId);
|
|
||||||
tree.checkNode(treeNode, !treeNode.checked, true, true);
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
onCheck: function (event, treeId, treeNode){
|
|
||||||
var tid = treeNode.tId;
|
|
||||||
if(!treeNode.checked){
|
|
||||||
$(".checkall[value="+treeId+"]").each(function(){
|
|
||||||
if(this.checked){
|
|
||||||
$(this).removeAttr("checked").iCheck('update');
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, tree, loadTree = function(){
|
|
||||||
$.get("/system/menu/treeData/" + $("#roleId").val(), function(data) {
|
|
||||||
tree = $.fn.zTree.init($("#tree"), setting, data); //.expandAll(true);
|
|
||||||
// 展开第一级节点
|
|
||||||
var nodes = tree.getNodesByParam("level", 0);
|
|
||||||
for (var i = 0; i < nodes.length; i++) {
|
|
||||||
tree.expandNode(nodes[i], true, false, false);
|
|
||||||
}
|
|
||||||
}, null, null, "正在加载,请稍后...");
|
|
||||||
};loadTree();
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -50,10 +50,16 @@ $(function() {
|
||||||
initTable(columns, url);
|
initTable(columns, url);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/*角色管理-新增*/
|
||||||
|
function add() {
|
||||||
|
var url = prefix + '/add';
|
||||||
|
layer_show("新增角色", url, '800', '550');
|
||||||
|
}
|
||||||
|
|
||||||
/*角色管理-修改*/
|
/*角色管理-修改*/
|
||||||
function edit(roleId) {
|
function edit(roleId) {
|
||||||
var url = prefix + '/edit/' + roleId;
|
var url = prefix + '/edit/' + roleId;
|
||||||
layer_show("修改角色", url, '800', '400');
|
layer_show("修改角色", url, '800', '550');
|
||||||
}
|
}
|
||||||
|
|
||||||
// 单条删除
|
// 单条删除
|
||||||
|
|
|
||||||
|
|
@ -16,15 +16,15 @@ $("#form-user-edit").validate({
|
||||||
});
|
});
|
||||||
|
|
||||||
function getIsChecked(_name) {
|
function getIsChecked(_name) {
|
||||||
var adIds = "";
|
var roleIds = "";
|
||||||
$('input:checkbox[name="'+_name+'"]:checked').each(function(i) {
|
$('input:checkbox[name="' + _name + '"]:checked').each(function(i) {
|
||||||
if (0 == i) {
|
if (0 == i) {
|
||||||
adIds = $(this).val();
|
roleIds = $(this).val();
|
||||||
} else {
|
} else {
|
||||||
adIds += ("," + $(this).val());
|
roleIds += ("," + $(this).val());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return adIds;
|
return roleIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
function update() {
|
function update() {
|
||||||
|
|
|
||||||
|
|
@ -1,33 +1,33 @@
|
||||||
// 树结构初始化加载
|
// 树结构初始化加载
|
||||||
var setting = {view:{selectedMulti:false},data:{key:{title:"title"},simpleData:{enable:true}},
|
var setting = {view:{selectedMulti:false},data:{key:{title:"title"},simpleData:{enable:true}},
|
||||||
callback:{onClick:function(event, treeId, treeNode){
|
callback:{onClick:function(event, treeId, treeNode){
|
||||||
var deptId = treeNode.id;
|
var deptId = treeNode.id;
|
||||||
var deptName = treeNode.name;
|
var deptName = treeNode.name;
|
||||||
$("#deptId").val(deptId);
|
$("#deptId").val(deptId);
|
||||||
$("#deptName").val(deptName);
|
$("#deptName").val(deptName);
|
||||||
}}
|
}}
|
||||||
}, tree, loadTree = function(){
|
}, tree, loadTree = function(){
|
||||||
$.get("/system/dept/treeData", function(data) {
|
$.get("/system/dept/treeData", function(data) {
|
||||||
tree = $.fn.zTree.init($("#tree"), setting, data);
|
tree = $.fn.zTree.init($("#tree"), setting, data);
|
||||||
// 展开第一级节点
|
// 展开第一级节点
|
||||||
var nodes = tree.getNodesByParam("level", 0);
|
var nodes = tree.getNodesByParam("level", 0);
|
||||||
for (var i = 0; i < nodes.length; i++) {
|
for (var i = 0; i < nodes.length; i++) {
|
||||||
tree.expandNode(nodes[i], true, false, false);
|
tree.expandNode(nodes[i], true, false, false);
|
||||||
}
|
}
|
||||||
// 展开第二级节点
|
// 展开第二级节点
|
||||||
nodes = tree.getNodesByParam("level", 1);
|
nodes = tree.getNodesByParam("level", 1);
|
||||||
for (var i = 0; i < nodes.length; i++) {
|
for (var i = 0; i < nodes.length; i++) {
|
||||||
tree.expandNode(nodes[i], true, false, false);
|
tree.expandNode(nodes[i], true, false, false);
|
||||||
}
|
}
|
||||||
}, null, null, "正在加载,请稍后...");
|
}, null, null, "正在加载,请稍后...");
|
||||||
};loadTree();
|
};loadTree();
|
||||||
|
|
||||||
$('#btnExpand').click(function() {
|
$('#btnExpand').click(function() {
|
||||||
tree.expandAll(true);
|
tree.expandAll(true);
|
||||||
});
|
});
|
||||||
$('#btnCollapse').click(function() {
|
$('#btnCollapse').click(function() {
|
||||||
tree.expandAll(false);
|
tree.expandAll(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
function loadUser(){
|
function loadUser(){
|
||||||
var deptId = $("#deptId").val();
|
var deptId = $("#deptId").val();
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@
|
||||||
<h2>若依后台管理框架</h2>
|
<h2>若依后台管理框架</h2>
|
||||||
<p>一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统。,她可以用于所有的Web应用程序,如<b>网站管理后台</b>,<b>网站会员中心</b>,<b>CMS</b>,<b>CRM</b>,<b>OA</b>等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错效率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。</p>
|
<p>一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统。,她可以用于所有的Web应用程序,如<b>网站管理后台</b>,<b>网站会员中心</b>,<b>CMS</b>,<b>CRM</b>,<b>OA</b>等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错效率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。</p>
|
||||||
<p>
|
<p>
|
||||||
<b>当前版本:</b>v1.0.3
|
<b>当前版本:</b>v1.0.4
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<span class="label label-warning">¥免费开源</span>
|
<span class="label label-warning">¥免费开源</span>
|
||||||
|
|
@ -94,13 +94,27 @@
|
||||||
<div class="ibox-content no-padding">
|
<div class="ibox-content no-padding">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<div class="panel-group" id="version">
|
<div class="panel-group" id="version">
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h5 class="panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#version" href="#v04">v1.0.4</a><code class="pull-right">2018.03.11</code>
|
||||||
|
</h5>
|
||||||
|
</div>
|
||||||
|
<div id="v04" class="panel-collapse collapse in">
|
||||||
|
<div class="panel-body">
|
||||||
|
<ol>
|
||||||
|
<li>新增角色管理(新增、删除、修改、查询、菜单选择)</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<h5 class="panel-title">
|
<h5 class="panel-title">
|
||||||
<a data-toggle="collapse" data-parent="#version" href="#v03">v1.0.3</a><code class="pull-right">2018.03.08</code>
|
<a data-toggle="collapse" data-parent="#version" href="#v03">v1.0.3</a><code class="pull-right">2018.03.08</code>
|
||||||
</h5>
|
</h5>
|
||||||
</div>
|
</div>
|
||||||
<div id="v03" class="panel-collapse collapse in">
|
<div id="v03" class="panel-collapse collapse">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<ol>
|
<ol>
|
||||||
<li>新增用户管理(新增、删除、修改、查询、部门选择)</li>
|
<li>新增用户管理(新增、删除、修改、查询、部门选择)</li>
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,6 @@
|
||||||
data-sort-name="last_access_time" data-sort-order="desc">
|
data-sort-name="last_access_time" data-sort-order="desc">
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<!-- <a shiro:hasPermission="system:user:list" href="#">测试菜单</a> -->
|
|
||||||
<!-- <a shiro:hasRole="admin" href="#">测试角色</a> -->
|
|
||||||
<div th:include="include :: footer"></div>
|
<div th:include="include :: footer"></div>
|
||||||
<script type="text/javascript" src="/ruoyi/monitor/online/online.js"></script>
|
<script type="text/javascript" src="/ruoyi/monitor/online/online.js"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
|
|
@ -37,12 +37,11 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
<div class="form-group">
|
<div class="form-control-static col-sm-offset-9">
|
||||||
<div class="form-control-static col-sm-offset-9">
|
<button type="submit" class="btn btn-primary">提交</button>
|
||||||
<button type="submit" class="btn btn-primary">提交</button>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<div th:include="include::footer"></div>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
test
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<head th:include="include :: header"></head>
|
||||||
|
<link href="/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css" rel="stylesheet">
|
||||||
|
<body class="white-bg">
|
||||||
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
|
<form class="form-horizontal m" id="form-role-add">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label ">角色名称:</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input class="form-control" type="text" name="roleName" id="roleName"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">权限字符:</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input class="form-control" type="text" name="roleKey" id="roleKey">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">显示顺序:</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input class="form-control" type="text" name="roleSort" id="roleSort">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">状态:</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<div class="onoffswitch">
|
||||||
|
<input type="checkbox" th:checked="true" class="onoffswitch-checkbox" id="status" name="status">
|
||||||
|
<label class="onoffswitch-label" for="status">
|
||||||
|
<span class="onoffswitch-inner"></span>
|
||||||
|
<span class="onoffswitch-switch"></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">备注:</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<input id="remark" name="remark" class="form-control" type="text">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">菜单权限</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<div id="menuTrees" class="ztree"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="form-control-static col-sm-offset-9">
|
||||||
|
<button type="submit" class="btn btn-primary">提交</button>
|
||||||
|
<button th:onclick="'javascript:layer_close()'" class="btn btn-danger" type="button">关闭</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div th:include="include::footer"></div>
|
||||||
|
<script src="/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js"></script>
|
||||||
|
<script type="text/javascript" src="/ruoyi/system/role/add.js">
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -38,12 +38,17 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-sm-3 control-label">菜单权限</label>
|
<label class="col-sm-3 control-label">备注:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<div id="tree" class="ztree"></div>
|
<input id="remark" name="remark" class="form-control" type="text" th:value="${role.remark}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-3 control-label">菜单权限</label>
|
||||||
|
<div class="col-sm-8">
|
||||||
|
<div id="menuTrees" class="ztree"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="form-control-static col-sm-offset-9">
|
<div class="form-control-static col-sm-offset-9">
|
||||||
<button type="submit" class="btn btn-primary">提交</button>
|
<button type="submit" class="btn btn-primary">提交</button>
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,9 @@
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
<div class="wrapper wrapper-content">
|
<div class="wrapper wrapper-content">
|
||||||
<div class="btn-group hidden-xs" id="tableToolbar" role="group">
|
<div class="btn-group hidden-xs" id="tableToolbar" role="group">
|
||||||
|
<button type="button" class="btn btn-outline btn-default" th:onclick="'javascript:add()'">
|
||||||
|
<i class="glyphicon glyphicon-plus"></i>
|
||||||
|
</button>
|
||||||
<button type="button" class="btn btn-outline btn-default" th:onclick="'javascript:batchRemove()'">
|
<button type="button" class="btn btn-outline btn-default" th:onclick="'javascript:batchRemove()'">
|
||||||
<i class="glyphicon glyphicon-trash"></i>
|
<i class="glyphicon glyphicon-trash"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue