package org.hepx.tasksys.web.controller; import org.hepx.tasksys.entity.Resource; import org.hepx.tasksys.service.ResourceService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.hepx.tasksys.velocity.Functions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import java.util.*; @Controller @RequestMapping("/resource") public class ResourceController { @Autowired private ResourceService resourceService; @ModelAttribute("types") public Resource.ResourceType[] resourceTypes() { return Resource.ResourceType.values(); } @RequiresPermissions("resource:view") @RequestMapping(method = RequestMethod.GET) public String list(Model model) { model.addAttribute("resourceList", resourceService.findAll()); return "resource/list"; } @RequiresPermissions("resource:create") @RequestMapping(value = "/{parentId}/appendChild", method = RequestMethod.GET) public String showAppendChildForm(@PathVariable("parentId") Long parentId, Model model) { Resource parent = resourceService.findOne(parentId); model.addAttribute("parent", parent); Resource child = new Resource(); child.setParentId(parentId); child.setParentIds(parent.makeSelfAsParentIds()); model.addAttribute("resource", child); model.addAttribute("op", "新增子节点"); return "resource/edit"; } @RequiresPermissions("resource:create") @RequestMapping(value = "/{parentId}/appendChild", method = RequestMethod.POST) public String create(Resource resource, RedirectAttributes redirectAttributes) { resourceService.createResource(resource); redirectAttributes.addFlashAttribute("msg", "新增子节点成功"); return "redirect:/resource"; } @RequiresPermissions("resource:update") @RequestMapping(value = "/{id}/update", method = RequestMethod.GET) public String showUpdateForm(@PathVariable("id") Long id, Model model) { model.addAttribute("resource", resourceService.findOne(id)); model.addAttribute("op", "修改"); return "resource/edit"; } @RequiresPermissions("resource:update") @RequestMapping(value = "/{id}/update", method = RequestMethod.POST) public String update(Resource resource, RedirectAttributes redirectAttributes) { resourceService.updateResource(resource); redirectAttributes.addFlashAttribute("msg", "修改成功"); return "redirect:/resource"; } @RequiresPermissions("resource:delete") @RequestMapping(value = "/{id}/delete", method = RequestMethod.GET) public String delete(@PathVariable("id") Long id, RedirectAttributes redirectAttributes) { resourceService.deleteResource(id); redirectAttributes.addFlashAttribute("msg", "删除成功"); return "redirect:/resource"; } @RequiresPermissions("resource:view") @RequestMapping("/json") @ResponseBody public List<Map<String,Object>> jsonAll(@RequestParam(required = false) Collection<Long> resourceIds){ List<Resource> resources = resourceService.findAll(); List<Map<String,Object>>maps = new ArrayList<Map<String,Object>>(); for(Resource resource : resources){ if(!resource.isRootNode()){ Map<String,Object> map = new HashMap<String,Object>(); map.put("id",resource.getId()); map.put("pId",resource.getParentId()); map.put("name",resource.getName()); map.put("checked", CollectionUtils.isEmpty(resourceIds) ? false : Functions.in(resourceIds,resource.getId())); maps.add(map); } } return maps; } }