package org.exitsoft.showcase.vcsadmin.web.account; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; import org.exitsoft.common.utils.ServletUtils; import org.exitsoft.orm.core.Page; import org.exitsoft.orm.core.PageRequest; import org.exitsoft.orm.core.PageRequest.Sort; import org.exitsoft.orm.core.PropertyFilter; import org.exitsoft.orm.core.hibernate.property.PropertyFilterRestrictionHolder; import org.exitsoft.showcase.vcsadmin.common.SystemVariableUtils; import org.exitsoft.showcase.vcsadmin.common.enumeration.SystemDictionaryCode; import org.exitsoft.showcase.vcsadmin.common.enumeration.entity.GroupType; import org.exitsoft.showcase.vcsadmin.entity.account.Group; import org.exitsoft.showcase.vcsadmin.service.account.AccountManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.mvc.support.RedirectAttributes; /** * 组管理Controller * * @author vincent * */ @Controller @RequestMapping("/account/group") public class GroupController { @Autowired private AccountManager accountManager; /** * 获取资源列表 * * @param pageRequest 分页实体信息 * @param request HttpServlet请求 * * @return {@link Page} */ @RequestMapping("view") public Page<Group> view(PageRequest pageRequest,HttpServletRequest request) { List<PropertyFilter> filters = PropertyFilterRestrictionHolder.buildFromHttpRequest(request); request.setAttribute("states", SystemVariableUtils.getDataDictionariesByCategoryCode(SystemDictionaryCode.State,"3")); request.setAttribute("groupsList", accountManager.getAllGroup(GroupType.RoleGorup)); if (!pageRequest.isOrderBySetted()) { pageRequest.setOrderBy("id"); pageRequest.setOrderDir(Sort.DESC); } filters.add(PropertyFilterRestrictionHolder.createPropertyFilter("EQ_S_type", GroupType.RoleGorup.getValue())); return accountManager.searchGroupPage(pageRequest, filters); } /** * * 保存资源,保存成功后重定向到:account/group/view * * @param entity 实体信息 * @param request HttpServlet请求,由于保存时候需要到parentId和resourceIds的参数,为了简洁,直接使用request,不用@RequestParam获取参数 * @param redirectAttributes spring mvc 重定向属性 * * @return String */ @RequestMapping("save") public String save(@ModelAttribute("entity") Group entity,HttpServletRequest request,RedirectAttributes redirectAttributes) { String parentId = request.getParameter("parentId"); if (StringUtils.isEmpty(parentId)) { entity.setParent(null); } else { entity.setParent(accountManager.getGroup(parentId)); } List<String> resourceIds = ServletUtils.getParameterValues(request, "resourceIds"); entity.setResourcesList(accountManager.getResources(resourceIds)); accountManager.saveGroup(entity); redirectAttributes.addFlashAttribute("message", "保存成功"); return "redirect:/account/group/view"; } /** * * 读取资源信息 * * @param model Spring mvc的Model接口,主要是将model的属性返回到页面中 * */ @RequestMapping("read") public String read(@RequestParam(value = "id", required = false)String id,Model model) { model.addAttribute("resourcesList", accountManager.getAllResources()); model.addAttribute("states", SystemVariableUtils.getDataDictionariesByCategoryCode(SystemDictionaryCode.State,"3")); model.addAttribute("groupsList", accountManager.getAllGroup(GroupType.RoleGorup,id)); return "account/group/read"; } /** * 删除资源 */ @RequestMapping("delete") public String delete(@RequestParam("ids")List<String> ids,RedirectAttributes redirectAttributes) { accountManager.deleteGroups(ids); redirectAttributes.addFlashAttribute("message", "删除" + ids.size() + "条信息成功"); return "redirect:/account/group/view"; } /** * 绑定实体数据,如果存在id时获取后从数据库获取记录,进入到相对的C后在将数据库获取的记录填充到相应的参数中 * * @param id 主键ID * */ @ModelAttribute("entity") public Group bindingModel(@RequestParam(value = "id", required = false)String id) { Group group = new Group(); if (StringUtils.isNotEmpty(id)) { group = accountManager.getGroup(id); } return group; } }