package com.dsh.guns.modular.system.controller.system; import com.dsh.course.model.node.ZTreeNode; import com.dsh.guns.config.UserExt; import com.dsh.guns.core.base.controller.BaseController; import com.dsh.guns.core.base.tips.Tip; import com.dsh.guns.core.common.annotion.BussinessLog; import com.dsh.guns.core.common.annotion.Permission; import com.dsh.guns.core.common.constant.Const; import com.dsh.guns.core.common.constant.dictmap.RoleDict; import com.dsh.guns.core.common.constant.factory.ConstantFactory; import com.dsh.guns.core.common.exception.BizExceptionEnum; import com.dsh.guns.core.exception.GunsException; import com.dsh.guns.core.log.LogObjectHolder; import com.dsh.guns.modular.system.controller.util.Convert; import com.dsh.guns.modular.system.model.Role; import com.dsh.guns.modular.system.model.User; import com.dsh.guns.modular.system.service.IRoleService; import com.dsh.guns.modular.system.service.IUserService; import com.dsh.guns.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; import java.util.Objects; import java.util.stream.Collectors; /** * 角色控制器 * * @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(Model model) { model.addAttribute("language", UserExt.getLanguage()); return PREFIX + "/role.html"; } /** * 跳转到添加角色 */ @RequestMapping(value = "/role_add") public String roleAdd(Model model) { model.addAttribute("language",UserExt.getLanguage()); return PREFIX + "/role_add.html"; } /** * 跳转到修改角色 */ @Permission @RequestMapping(value = "/role_edit/{roleId}") public String roleEdit(@PathVariable Integer roleId, Model model) { if (Objects.isNull(roleId)) { throw new GunsException(BizExceptionEnum.REQUEST_NULL); } Role role = this.roleService.getById(roleId); model.addAttribute(role); model.addAttribute("pName", ConstantFactory.me().getSingleRoleName(role.getPid())); model.addAttribute("deptName", ConstantFactory.me().getDeptName(role.getDeptid())); LogObjectHolder.me().set(role); model.addAttribute("language",UserExt.getLanguage()); return PREFIX + "/role_edit.html"; } /** * 跳转到角色分配 */ @Permission @RequestMapping(value = "/role_assign/{roleId}") public String roleAssign(@PathVariable("roleId") Integer roleId, Model model) { if (Objects.isNull(roleId)) { throw new GunsException(BizExceptionEnum.REQUEST_NULL); } Role role = roleService.getById(roleId); model.addAttribute("roleId", roleId); model.addAttribute("roleName", role.getName()); 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")); //运营商 if (UserExt.getUser().getObjectType()==2){ List> filteredRoles = roles.stream() .filter(role -> role.containsKey("version") && role.get("version").equals(UserExt.getUser().getId())) .collect(Collectors.toList()); return super.warpObject(new RoleWarpper(filteredRoles)); } 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); role.setObjType(UserExt.getUser().getObjectType()); role.setObjId(UserExt.getUser().getObjectId()); role.setVersion(UserExt.getUser().getId()); this.roleService.save(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 (Objects.isNull(roleId)) { throw new GunsException(BizExceptionEnum.REQUEST_NULL); } Role role = this.roleService.getById(roleId); //不能删除超级管理员角色 //Cannot delete super administrator role. 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); //删除缓存 //Deleted role name in cache // CacheKit.removeAll(Cache.CONSTANT); return SUCCESS_TIP; } /** * 查看角色 */ @RequestMapping(value = "/view/{roleId}") @ResponseBody public Tip view(@PathVariable Integer roleId) { if (Objects.isNull(roleId)) { throw new GunsException(BizExceptionEnum.REQUEST_NULL); } this.roleService.getById(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 (Objects.isNull(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(UserExt.getUser().getObjectType(),UserExt.getUser().getObjectId()); roleTreeList.add(ZTreeNode.createParent()); return roleTreeList; } /** * 获取角色列表 */ @RequestMapping(value = "/roleTreeListByUserId/{userId}") @ResponseBody public List roleTreeListByUserId(@PathVariable Integer userId) { User theUser = this.userService.getById(userId); String roleid = theUser.getRoleid(); Integer objectType = UserExt.getUser().getObjectType(); Integer objectId = UserExt.getUser().getObjectId(); if (Objects.isNull(roleid)) { List roleTreeList = this.roleService.roleTreeList(objectType,objectId); return roleTreeList; } else { String[] strArray = Convert.toStrArray(",", roleid); List roleTreeListByUserId = this.roleService.roleTreeListByRoleId(strArray,objectType,objectId); return roleTreeListByUserId; } } }