package com.app.mvc.acl.controller; import com.app.mvc.acl.domain.SysUser; import com.app.mvc.acl.enums.Status; import com.app.mvc.acl.service.SysRoleAclService; import com.app.mvc.acl.service.SysRoleService; import com.app.mvc.acl.service.SysRoleUserService; import com.app.mvc.acl.service.SysTreeService; import com.app.mvc.acl.service.SysUserService; import com.app.mvc.acl.vo.RolePara; import com.app.mvc.beans.JsonData; import com.app.mvc.util.StringUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; 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 org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; import java.util.List; import java.util.Map; /** * Created by jimin on 16/1/23. */ @Slf4j @Controller @RequestMapping("/sys/role") public class SysRoleController { @Resource private SysRoleService sysRoleService; @Resource private SysRoleAclService sysRoleAclService; @Resource private SysRoleUserService sysRoleUserService; @Resource private SysTreeService sysTreeService; @Resource private SysUserService sysUserService; @RequestMapping(value = "/page.do") public ModelAndView rolePage() { return new ModelAndView("role"); } @RequestMapping(value = "/page2.do") public ModelAndView rolePage2() { return new ModelAndView("role2"); } @ResponseBody @RequestMapping(value = "/save.json") public JsonData saveRole(RolePara para) { sysRoleService.save(para); return JsonData.success(); } @ResponseBody @RequestMapping(value = "/update.json") public JsonData updateRole(RolePara para) { sysRoleService.update(para); return JsonData.success(); } @ResponseBody @RequestMapping(value = "/list.json") public JsonData list() { return JsonData.success(sysRoleService.list()); } @ResponseBody @RequestMapping(value = "/query.json") public JsonData getRole(@RequestParam("id") int id) { return JsonData.success(sysRoleService.findById(id)); } @ResponseBody @RequestMapping(value = "/changeAcls.json") public JsonData roleAcls(@RequestParam("roleId") int roleId, @RequestParam("aclIds") String aclIds) { List<Integer> aclIdList = StringUtil.splierToListInt(aclIds); sysRoleAclService.changeRoleAcls(roleId, aclIdList); return JsonData.success(); } @ResponseBody @RequestMapping(value = "/changeUsers.json") public JsonData roleUsers(@RequestParam("roleId") int roleId, @RequestParam("userIds") String userIds) { List<Integer> userIdList = StringUtil.splierToListInt(userIds); sysRoleUserService.changeRoleUsers(roleId, userIdList); return JsonData.success(); } @ResponseBody @RequestMapping(value = "/acls.json") public JsonData acls(@RequestParam("roleId") int roleId) { return JsonData.success(sysRoleAclService.getListByRoleId(roleId)); } @ResponseBody @RequestMapping(value = "/users.json") public JsonData users(@RequestParam("roleId") int roleId) { List<SysUser> selectedUsers = sysRoleUserService.getListByRoleId(roleId); List<SysUser> allUsers = sysUserService.getUserList(); List<SysUser> unselectedUsers = Lists.newArrayList(); for (SysUser sysUser : allUsers) { if (sysUser.getStatus() == Status.AVAILABLE.getCode() && !selectedUsers.contains(sysUser)) { unselectedUsers.add(sysUser); } } Map<String, List<SysUser>> map = Maps.newHashMap(); map.put("selected", selectedUsers); // 已选择中可能有无效的用户 map.put("unselected", unselectedUsers); // 未选择中都是有效的用户 return JsonData.success(map); } @ResponseBody @RequestMapping(value = "/aclTree.json") public JsonData aclTree(@RequestParam("roleId") int roleId) { return JsonData.success(sysTreeService.roleTree(roleId)); } @ResponseBody @RequestMapping(value = "/unselectUserTree.json") public JsonData userTree(@RequestParam("roleId") int roleId) { return JsonData.success(sysTreeService.unselectUserRoleTree(roleId)); } @ResponseBody @RequestMapping(value = "/delete.json") public JsonData delete(@RequestParam("id") int id) { sysRoleService.deleteById(id); return JsonData.success(); } }