integrated_traffic/src/main/java/com/zcloud/controller/system/RoleController.java

368 lines
12 KiB
Java
Raw Normal View History

2024-01-03 09:48:43 +08:00
package com.zcloud.controller.system;
import com.zcloud.controller.base.BaseController;
import com.zcloud.entity.Page;
import com.zcloud.entity.PageData;
import com.zcloud.entity.system.Menu;
import com.zcloud.entity.system.Role;
2024-01-03 11:04:18 +08:00
import com.zcloud.logs.LogAnno;
2024-01-03 09:48:43 +08:00
import com.zcloud.service.system.FHlogService;
import com.zcloud.service.system.MenuService;
import com.zcloud.service.system.RoleService;
import com.zcloud.service.system.UsersService;
import com.zcloud.util.DateUtil;
import com.zcloud.util.Jurisdiction;
import com.zcloud.util.RightsHelper;
import com.zcloud.util.Tools;
import net.sf.json.JSONArray;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* luoxiaobao
* www.qdkjchina.com
*/
@Controller
@RequestMapping("/role")
public class RoleController extends BaseController {
@Autowired
private RoleService roleService;
@Autowired
private UsersService usersService;
@Autowired
private MenuService menuService;
@Autowired
private FHlogService FHLOG;
/**
* @param
* @return
* @throws Exception
*/
@RequestMapping("/list")
@RequiresPermissions("role:list")
@ResponseBody
public Object list()throws Exception{
Map<String,Object> map = new HashMap<String,Object>();
String errInfo = "success";
PageData pd = new PageData();
pd = this.getPageData();
if(Tools.isEmpty(pd.getString("ROLE_ID"))){
pd.put("ROLE_ID", "1"); //默认列出第一组角色(初始设计系统用户和会员组不能删除)
}
PageData fpd = new PageData();
fpd.put("ROLE_ID", "0");
List<Role> roleList = roleService.listAllRolesByPId(fpd); //列出组(页面横向排列的一级组)
List<Role> roleList_z = roleService.listAllRolesByPId(pd); //列出此组下架角色
pd = roleService.findById(pd); //取得点击的角色组(横排的)
map.put("pd", pd);
map.put("roleList", roleList);
map.put("roleList_z", roleList_z);
map.put("result", errInfo);
return map;
}
/**
* @return
* @throws Exception
*/
@RequestMapping(value="/add")
@RequiresPermissions("role:add")
@ResponseBody
public Object add()throws Exception{
Map<String,Object> map = new HashMap<String,Object>();
String errInfo = "success";
PageData pd = new PageData();
pd = this.getPageData();
String parent_id = pd.getString("PARENT_ID"); //父类角色id
pd.put("ROLE_ID", parent_id);
if("0".equals(parent_id)){
pd.put("RIGHTS", ""); //菜单权限
}else{
String rights = roleService.findById(pd).getString("RIGHTS");
pd.put("RIGHTS", (null == rights)?"":rights); //组菜单权限
}
String RNUMBER = "R"+DateUtil.getDays()+Tools.getRandomNum();
pd.put("RNUMBER", RNUMBER); //编码
pd.put("ROLE_ID", this.get32UUID()); //主键
pd.put("ADD_QX", "0"); //初始新增权限为否
pd.put("DEL_QX", "0"); //删除权限
pd.put("EDIT_QX", "0"); //修改权限
pd.put("CHA_QX", "0"); //查看权限
roleService.add(pd);
FHLOG.save(Jurisdiction.getUsername(), "新增角色"+pd.getString("ROLE_NAME")); //记录日志
map.put("result", errInfo);
return map;
}
/**
* @param ROLE_ID
* @return
* @throws Exception
*/
@RequestMapping(value="/toEdit")
@RequiresPermissions("role:edit")
@ResponseBody
public Object toEdit()throws Exception{
Map<String,Object> map = new HashMap<String,Object>();
String errInfo = "success";
PageData pd = new PageData();
pd = this.getPageData();
pd = roleService.findById(pd);
map.put("pd", pd);
map.put("result", errInfo);
return map;
}
/**
* @return
* @throws Exception
*/
@RequestMapping(value="/edit")
@RequiresPermissions("role:edit")
@ResponseBody
public Object edit()throws Exception{
Map<String,Object> map = new HashMap<String,Object>();
String errInfo = "success";
PageData pd = new PageData();
pd = this.getPageData();
roleService.edit(pd);
FHLOG.save(Jurisdiction.getUsername(), "修改角色"+pd.getString("ROLE_NAME")); //记录日志
map.put("result", errInfo);
return map;
}
/**
* @param ROLE_ID
* @return
* @throws Exception
*/
@RequestMapping(value="/delete")
@ResponseBody
@RequiresPermissions("role:del")
public Object deleteRole(@RequestParam String ROLE_ID)throws Exception{
Map<String,String> map = new HashMap<String,String>();
PageData pd = new PageData();
String errInfo = "";
pd.put("ROLE_ID", ROLE_ID);
List<Role> roleList_z = roleService.listAllRolesByPId(pd); //列出此角色的所有下级
if("fhadminzhuche".equals(ROLE_ID)|| roleList_z.size() > 0){
errInfo = "false"; //下级有数据时or注册用户角色删除失败
}else{
List<PageData> userlist = usersService.listAllUserByRoldId(pd); //此角色下的用户
if(userlist.size() > 0){ //此角色已被使用就不能删除
errInfo = "false2";
}else{
roleService.deleteRoleById(ROLE_ID); //执行删除
errInfo = "success";
FHLOG.save(Jurisdiction.getUsername(), "删除角色ID为:"+ROLE_ID); //记录日志
}
}
map.put("result", errInfo);
return map;
}
/**
* ztree()
* @return
*/
@RequestMapping(value="/menuqx")
@RequiresPermissions("role:list")
@ResponseBody
public Object listAllMenu(String ROLE_ID)throws Exception{
Map<String,String> map = new HashMap<String,String>();
String errInfo = "success";
Role role = roleService.getRoleById(ROLE_ID); //根据角色ID获取角色对象
String roleRights = role.getRIGHTS(); //取出本角色菜单权限
List<Menu> menuList = menuService.listAllMenuQx("0"); //获取所有菜单
menuList = this.readMenu(menuList, roleRights); //根据角色权限处理菜单权限状态(递归处理)
JSONArray arr = JSONArray.fromObject(menuList);
String json = arr.toString();
json = json.replaceAll("MENU_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("MENU_NAME", "name").replaceAll("subMenu", "nodes").replaceAll("hasMenu", "checked");
map.put("zTreeNodes", json);
map.put("result", errInfo);
return map;
}
/**()
* @param menuList
* @param roleRights
* @return
*/
public List<Menu> readMenu(List<Menu> menuList,String roleRights){
for(int i=0;i<menuList.size();i++){
menuList.get(i).setHasMenu(RightsHelper.testRights(roleRights, menuList.get(i).getMENU_ID()));
this.readMenu(menuList.get(i).getSubMenu(), roleRights); //是:继续排查其子菜单
}
return menuList;
}
/**
* @param ROLE_ID ID
* @param menuIds ID
* @param out
* @throws Exception
*/
@RequestMapping(value="/saveMenuqx")
@RequiresPermissions("role:edit")
@ResponseBody
public Object saveMenuqx(@RequestParam String ROLE_ID, @RequestParam String menuIds)throws Exception{
Map<String,String> map = new HashMap<String,String>();
PageData pd = new PageData();
if(null != menuIds && !"".equals(menuIds.trim())){
BigInteger rights = RightsHelper.sumRights(Tools.str2StrArray(menuIds));//用菜单ID做权处理
Role role = roleService.getRoleById(ROLE_ID); //通过id获取角色对象
role.setRIGHTS(rights.toString());
roleService.updateRoleRights(role); //更新当前角色菜单权限
pd.put("rights",rights.toString());
}else{
Role role = new Role();
role.setRIGHTS("");
role.setROLE_ID(ROLE_ID);
roleService.updateRoleRights(role); //更新当前角色菜单权限(没有任何勾选)
pd.put("rights","");
}
pd.put("ROLE_ID", ROLE_ID);
if(!"1".equals(ROLE_ID)){ //当修改admin权限时,不修改其它角色权限
roleService.setAllRights(pd); //更新此角色所有子角色的菜单权限
}
map.put("result", "success");
FHLOG.save(Jurisdiction.getUsername(), "给角色ID"+ROLE_ID+" 授权了菜单权限操作"); //记录日志
return map;
}
/**()
* @param ROLE_ID ID
* @param msg
* @return
* @throws Exception
*/
@RequestMapping(value="/b4Button")
@RequiresPermissions("role:list")
@ResponseBody
public Object b4Button(@RequestParam String ROLE_ID, @RequestParam String msg)throws Exception{
Map<String,String> map = new HashMap<String,String>();
List<Menu> menuList = menuService.listAllMenuQx("0"); //获取所有菜单
Role role = roleService.getRoleById(ROLE_ID); //根据角色ID获取角色对象
String roleRights = "";
if("add_qx".equals(msg)){
roleRights = role.getADD_QX(); //新增权限
}else if("del_qx".equals(msg)){
roleRights = role.getDEL_QX(); //删除权限
}else if("edit_qx".equals(msg)){
roleRights = role.getEDIT_QX(); //修改权限
}else if("cha_qx".equals(msg)){
roleRights = role.getCHA_QX(); //查看权限
}
menuList = this.readMenu(menuList, roleRights); //根据角色权限处理菜单权限状态(递归处理)
JSONArray arr = JSONArray.fromObject(menuList);
String json = arr.toString();
json = json.replaceAll("MENU_ID", "id").replaceAll("PARENT_ID", "pId").replaceAll("MENU_NAME", "name").replaceAll("subMenu", "nodes").replaceAll("hasMenu", "checked");
map.put("zTreeNodes", json);
map.put("result", "success");
return map;
}
/**
*
* @param ROLE_ID
* @param menuIds
* @param msg
* @param out
* @throws Exception
*/
@RequestMapping(value="/saveB4Button")
@RequiresPermissions("role:edit")
@ResponseBody
public Object saveB4Button(@RequestParam String ROLE_ID, @RequestParam String menuIds, @RequestParam String msg)throws Exception{
Map<String,String> map = new HashMap<String,String>();
PageData pd = new PageData();
pd = this.getPageData();
if(null != menuIds && !"".equals(menuIds.trim())){
BigInteger rights = RightsHelper.sumRights(Tools.str2StrArray(menuIds));
pd.put("value",rights.toString());
}else{
pd.put("value","");
}
pd.put("ROLE_ID", ROLE_ID);
roleService.saveB4Button(msg,pd);
map.put("result", "success");
FHLOG.save(Jurisdiction.getUsername(), "给角色ID"+ROLE_ID+" 授权了增删改查按钮权限操作"); //记录日志
return map;
}
/** ()
* @param
* @return
* @throws Exception
*/
@RequestMapping(value="/roleListWindow")
@ResponseBody
public Object roleListWindow(Page page)throws Exception{
Map<String,Object> map = new HashMap<String,Object>();
PageData pd = new PageData();
pd = this.getPageData();
String KEYWORDS = pd.getString("KEYWORDS"); //关键词检索条件
if(Tools.notEmpty(KEYWORDS))pd.put("KEYWORDS", KEYWORDS.trim());
page.setPd(pd);
List<PageData> roleList = roleService.roleListWindow(page); //列出所有角色
map.put("roleList", roleList);
map.put("page", page);
map.put("result", "success");
return map;
}
/**
* @param ROLE_ID
* @return
* @throws Exception
*/
@RequestMapping(value="/findByName")
@ResponseBody
public Object findByName()throws Exception{
Map<String,Object> map = new HashMap<String,Object>();
String errInfo = "success";
PageData pd = new PageData();
pd = this.getPageData();
pd = roleService.findByName(pd);
map.put("pd", pd);
map.put("result", errInfo);
return map;
}
2024-01-03 11:04:18 +08:00
/**
* @param ROLE_ID
* @return
* @throws Exception
*/
@RequestMapping(value="/findByPidAndMain")
@ResponseBody
@LogAnno(menuType= "双重预防",menuServer= "企业管理",instructionsOperate = "用户管理",instructionsType = "根据名称查询角色")
public Object findByPidAndMain()throws Exception{
Map<String,Object> map = new HashMap<String,Object>();
String errInfo = "success";
PageData pd = new PageData();
pd = this.getPageData();
pd.put("PARENT_ID", Jurisdiction.getVIPLEVEL());
pd.put("ISMAIN", "0");
// pd = roleService.findByPidAndMain(pd);
List<PageData> userlist = roleService.findByPid(pd);
// map.put("pd", pd);
map.put("userlist", userlist);
map.put("result", errInfo);
return map;
}
2024-01-03 09:48:43 +08:00
}