package org.hepx.ticket.web.controller;
import org.hepx.ticket.service.OrganizationService;
import org.hepx.ticket.entity.Organization;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.hepx.ticket.web.ResponseResult;
import org.hepx.ticket.entity.Organization;
import org.hepx.ticket.service.OrganizationService;
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.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import java.util.Map;
@Controller
@RequestMapping("/organization")
public class OrganizationController {
private static Logger logger = LoggerFactory.getLogger(OrganizationController.class);
@Autowired
private OrganizationService organizationService;
@RequiresPermissions("organization:view")
@RequestMapping(method = RequestMethod.GET)
public String index(Model model) {
model.addAttribute("organizationList", organizationService.findAll());
return "organization/list";
}
@RequiresPermissions("organization:create")
@RequestMapping(value = "/{parentId}/appendChild", method = RequestMethod.GET)
public String showAppendChildForm(@PathVariable("parentId") Long parentId, Model model) {
Organization parent = organizationService.findOne(parentId);
model.addAttribute("parent", parent);
model.addAttribute("op", "新增");
return "organization/edit";
}
@RequiresPermissions("organization:create")
@RequestMapping(value = "/{parentId}/appendChild", method = RequestMethod.POST)
public String create(Organization organization, RedirectAttributes redirectAttributes) {
organizationService.createOrganization(organization);
redirectAttributes.addFlashAttribute("msg", "新增公司成功");
return "redirect:/organization";
}
@RequiresPermissions("organization:update")
@RequestMapping(value = "/{id}/update", method = RequestMethod.GET)
public String showMaintainForm(@PathVariable("id") Long id, Model model) {
model.addAttribute("organization", organizationService.findOne(id));
model.addAttribute("op", "修改");
return "organization/edit";
}
@RequiresPermissions("organization:update")
@RequestMapping(value = "/{id}/update", method = RequestMethod.POST)
public String update(Organization organization, RedirectAttributes redirectAttributes) {
organizationService.updateOrganization(organization);
redirectAttributes.addFlashAttribute("msg", "修改成功");
return "redirect:/organization";
}
@RequiresPermissions("organization:delete")
@RequestMapping(value = "/{id}/delete", method = RequestMethod.GET)
@ResponseBody
public Map delete(@PathVariable("id") Long id) {
try {
organizationService.deleteOrganization(id);
return ResponseResult.buildSuccessResult().toMap();
} catch (Exception e) {
logger.error(e.getMessage(), e);
return ResponseResult.buildFailResult().toMap();
}
}
@RequiresPermissions("organization:update")
@RequestMapping(value = "/{sourceId}/move", method = RequestMethod.GET)
public String showMoveForm(@PathVariable("sourceId") Long sourceId, Model model) {
Organization source = organizationService.findOne(sourceId);
model.addAttribute("source", source);
model.addAttribute("targetList", organizationService.findAllWithExclude(source));
return "organization/move";
}
@RequiresPermissions("organization:update")
@RequestMapping(value = "/{sourceId}/move", method = RequestMethod.POST)
public String move(
@PathVariable("sourceId") Long sourceId,
@RequestParam("targetId") Long targetId) {
Organization source = organizationService.findOne(sourceId);
Organization target = organizationService.findOne(targetId);
organizationService.move(source, target);
return "redirect:/organization/success";
}
}