package com.agentdriving.user.modular.system.controller; import com.agentdriving.user.core.base.controller.BaseController; import com.agentdriving.user.core.base.tips.Tip; import com.agentdriving.user.core.cache.CacheKit; import com.agentdriving.user.core.common.annotion.BussinessLog; import com.agentdriving.user.core.common.annotion.Permission; import com.agentdriving.user.core.common.constant.Const; import com.agentdriving.user.core.common.constant.cache.Cache; import com.agentdriving.user.core.common.constant.dictmap.RoleDict; import com.agentdriving.user.core.common.constant.factory.ConstantFactory; import com.agentdriving.user.core.common.exception.BizExceptionEnum; import com.agentdriving.user.core.exception.GunsException; import com.agentdriving.user.core.log.LogObjectHolder; import com.agentdriving.user.core.node.ZTreeNode; import com.agentdriving.user.core.util.Convert; import com.agentdriving.user.core.util.ToolUtil; import com.agentdriving.user.modular.system.model.Role; import com.agentdriving.user.modular.system.model.User; import com.agentdriving.user.modular.system.service.IRoleService; import com.agentdriving.user.modular.system.service.IUserService; import com.agentdriving.user.modular.system.warpper.RoleWarpper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import javax.validation.Valid; import java.util.List; import java.util.Map; /** * 角色控制器 * * @author fengshuonan * @Date 2017年2月12日21:59:14 */ @Controller @RequestMapping("/role") public class RoleController extends BaseController { private static String PREFIX = "/system/role"; @Autowired private IUserService userService; @Autowired private IRoleService roleService; /** * 跳转到角色列表页面 */ @RequestMapping("") public String index() { return PREFIX + "/role.html"; } /** * 跳转到添加角色 */ @RequestMapping(value = "/role_add") public String roleAdd() { return PREFIX + "/role_add.html"; } /** * 跳转到修改角色 */ @Permission @RequestMapping(value = "/role_edit/{roleId}") public String roleEdit(@PathVariable Integer roleId, Model model) { if (ToolUtil.isEmpty(roleId)) { throw new GunsException(BizExceptionEnum.REQUEST_NULL); } Role role = this.roleService.selectById(roleId); model.addAttribute(role); model.addAttribute("pName", ConstantFactory.me().getSingleRoleName(role.getPid())); model.addAttribute("deptName", ConstantFactory.me().getDeptName(role.getDeptid())); LogObjectHolder.me().set(role); return PREFIX + "/role_edit.html"; } /** * 跳转到角色分配 */ @Permission @RequestMapping(value = "/role_assign/{roleId}") public String roleAssign(@PathVariable("roleId") Integer roleId, Model model) { if (ToolUtil.isEmpty(roleId)) { throw new GunsException(BizExceptionEnum.REQUEST_NULL); } model.addAttribute("roleId", roleId); model.addAttribute("roleName", ConstantFactory.me().getSingleRoleName(roleId)); return PREFIX + "/role_assign.html"; } /** * 获取角色列表 */ @Permission @RequestMapping(value = "/list") @ResponseBody public Object list(@RequestParam(required = false) String roleName) { List> roles = this.roleService.selectRoles(super.getPara("roleName")); return super.warpObject(new RoleWarpper(roles)); } /** * 角色新增 */ @RequestMapping(value = "/add") @BussinessLog(value = "添加角色", key = "name", dict = RoleDict.class) @Permission(Const.ADMIN_NAME) @ResponseBody public Tip add(@Valid Role role, BindingResult result) { if (result.hasErrors()) { throw new GunsException(BizExceptionEnum.REQUEST_NULL); } role.setId(null); this.roleService.insert(role); return SUCCESS_TIP; } /** * 角色修改 */ @RequestMapping(value = "/edit") @BussinessLog(value = "修改角色", key = "name", dict = RoleDict.class) @Permission(Const.ADMIN_NAME) @ResponseBody public Tip edit(@Valid Role role, BindingResult result) { if (result.hasErrors()) { throw new GunsException(BizExceptionEnum.REQUEST_NULL); } this.roleService.updateById(role); //删除缓存 CacheKit.removeAll(Cache.CONSTANT); return SUCCESS_TIP; } /** * 删除角色 */ @RequestMapping(value = "/remove") @BussinessLog(value = "删除角色", key = "roleId", dict = RoleDict.class) @Permission(Const.ADMIN_NAME) @ResponseBody public Tip remove(@RequestParam Integer roleId) { if (ToolUtil.isEmpty(roleId)) { throw new GunsException(BizExceptionEnum.REQUEST_NULL); } //不能删除超级管理员角色 if (roleId.equals(Const.ADMIN_ROLE_ID)) { throw new GunsException(BizExceptionEnum.CANT_DELETE_ADMIN); } //缓存被删除的角色名称 LogObjectHolder.me().set(ConstantFactory.me().getSingleRoleName(roleId)); this.roleService.delRoleById(roleId); //删除缓存 CacheKit.removeAll(Cache.CONSTANT); return SUCCESS_TIP; } /** * 查看角色 */ @RequestMapping(value = "/view/{roleId}") @ResponseBody public Tip view(@PathVariable Integer roleId) { if (ToolUtil.isEmpty(roleId)) { throw new GunsException(BizExceptionEnum.REQUEST_NULL); } this.roleService.selectById(roleId); return SUCCESS_TIP; } /** * 配置权限 */ @RequestMapping("/setAuthority") @BussinessLog(value = "配置权限", key = "roleId,ids", dict = RoleDict.class) @Permission(Const.ADMIN_NAME) @ResponseBody public Tip setAuthority(@RequestParam("roleId") Integer roleId, @RequestParam("ids") String ids) { if (ToolUtil.isOneEmpty(roleId)) { throw new GunsException(BizExceptionEnum.REQUEST_NULL); } this.roleService.setAuthority(roleId, ids); return SUCCESS_TIP; } /** * 获取角色列表 */ @RequestMapping(value = "/roleTreeList") @ResponseBody public List roleTreeList() { List roleTreeList = this.roleService.roleTreeList(); roleTreeList.add(ZTreeNode.createParent()); return roleTreeList; } /** * 获取角色列表 */ @RequestMapping(value = "/roleTreeListByUserId/{userId}") @ResponseBody public List roleTreeListByUserId(@PathVariable Integer userId) { User theUser = this.userService.selectById(userId); String roleid = theUser.getRoleid(); if (ToolUtil.isEmpty(roleid)) { List roleTreeList = this.roleService.roleTreeList(); return roleTreeList; } else { String[] strArray = Convert.toStrArray(",", roleid); List roleTreeListByUserId = this.roleService.roleTreeListByRoleId(strArray); return roleTreeListByUserId; } } }