package org.hepx.ticket.web.controller; import org.hepx.ticket.entity.Resource; import org.hepx.ticket.service.ResourceService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.hepx.ticket.velocity.Functions; import org.hepx.ticket.web.ResponseResult; import org.hepx.ticket.entity.Resource; import org.hepx.ticket.service.ResourceService; import org.hepx.ticket.velocity.Functions; import org.hepx.ticket.web.ResponseResult; 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.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 { private static Logger logger = LoggerFactory.getLogger(ResourceController.class); @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); 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) @ResponseBody public Map delete(@PathVariable("id") Long id) { try { resourceService.deleteResource(id); return ResponseResult.buildSuccessResult().toMap(); } catch (Exception e) { logger.error(e.getMessage(), e); return ResponseResult.buildFailResult().toMap(); } } @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; } }