首页>代码>ssm+apache shiro实现按钮级别的网站权限控制项目实例>/SSMShiro/src/main/java/com/sharainy/contoller/UserController.java
package com.sharainy.contoller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.sharainy.pojo.Resource;
import com.sharainy.pojo.Role;
import com.sharainy.pojo.User;
import com.sharainy.service.IRoleService;
import com.sharainy.service.IUserService;
/**
*@标题UserController
* @作者: Sharainy
* @创建时间: 2018-06-29 0029
* @描述:
*/
@Controller
@RequestMapping(value = "/admin/user")
public class UserController {
private static final Logger logger = LoggerFactory.getLogger(UserController.class);
@Autowired
private IUserService userService;
@Autowired
private IRoleService roleService;
@RequestMapping(value = "/list",method = RequestMethod.GET)
public String list(Model model){
model.addAttribute("list",userService.list());
return "user/list";
}
/**
* 跳转到添加用户的页面
* @param model
* @return
*/
@RequiresPermissions("admin:*")
@RequestMapping(value = "/add",method = RequestMethod.GET)
public String add(Model model){
logger.debug("跳转到添加用户的页面");
model.addAttribute("user",new User());
model.addAttribute("roles",roleService.list());
return "user/add";
}
/**
* 添加用户保存的方法
* @param user
* @param request
* @return
*/
@RequiresPermissions("user:add")
@RequestMapping(value = "/add",method = RequestMethod.POST)
public String add(User user, HttpServletRequest request){
logger.debug("添加用户 post 方法");
logger.debug(user.toString());
List<Integer> roleIdList = new ArrayList<>();
String[] roldIds = request.getParameterValues("roleId");
for(String roleId:roldIds){
roleIdList.add(Integer.parseInt(roleId));
}
userService.add(user,roleIdList);
// 重定向到本 Controller 的 list 方法(Get 方式)
return "redirect:list";
}
@ResponseBody
@RequiresPermissions("user:update")
@RequestMapping(value = "/updateStatus",method = RequestMethod.POST)
public Map<String,Object> updateStatus(User user){
User u = userService.update(user);
Map<String,Object> result = new HashMap<>();
if(u != null){
result.put("success",true);
}else {
result.put("success",false);
result.put("errorInfo","更新状态失败");
}
return result;
}
/**
* 跳转到用户信息更新页面
* @param id
* @param model
* @return
*/
@RequestMapping(value = "/update/{id}",method = RequestMethod.GET)
public String update(@PathVariable("id") Integer id,Model model){
// 要从数据库查询对象进行回显
User user = userService.load(id);
model.addAttribute("user",user);
// 所有的角色列表
model.addAttribute("roles",roleService.list());
/**
* 根据用户 id 查询用户的所有角色
*/
List<Role> hasRoles = userService.listUserRole(id);
/**
* 将用户的所有角色 id 添加到一个字符串中
*/
List<Integer> rids = new ArrayList<>();
for(Role r:hasRoles) {
rids.add(r.getId());
}
// 指定用户拥有的角色信息
model.addAttribute("hasRole", rids);
return "user/update";
}
/**
* 更新用户的信息(包括更新用户绑定的角色)
* @param user
* @return
*/
@RequiresPermissions("user:update")
@RequestMapping(value = "/update/{id}",method = RequestMethod.POST)
public String update(User user,HttpServletRequest request){
// // TODO: 2016/9/18 这个过程还是可以优化的,如果属性没有发生变化的地方,是不须要更新的
logger.debug("user => " + user);
String[] roleIds = request.getParameterValues("roleId");
List<Integer> roleIdList = new ArrayList<>();
for(String roleId:roleIds){
roleIdList.add(Integer.valueOf(roleId));
}
userService.update(user,roleIdList);
return "redirect:/admin/user/list";
}
/**
* 根据用户 id 跳转到用户权限的列表页面
* @return
*/
@RequestMapping(value = "/resources/{id}",method = RequestMethod.GET)
public String listResources(@PathVariable("id") Integer userId,Model model){
List<Resource> resourceList = userService.listAllResource(userId);
User user = userService.load(userId);
model.addAttribute("resources",resourceList);
model.addAttribute("user",user);
return "user/resources";
}
/**
* 批量删除用户
* 1、删除用户数据
* 2、删除用户绑定的角色数据
* @param userIds
* @return
*/
@RequiresPermissions("user:delete")
@ResponseBody
@RequestMapping(value = "/delete",method = RequestMethod.POST)
public Map<String,Object> delete(
@RequestParam("userIds[]") List<Integer> userIds){
Map<String,Object> result = new HashMap<>();
try{
userService.deleteUserAndRole(userIds);
result.put("success",true);
}catch (RuntimeException e){
e.printStackTrace();
result.put("success",false);
result.put("errorInfo",e.getMessage());
}
return result;
}
}
最近下载更多

最近浏览