package com.sobey.cmop.mvc.web.account; import java.util.List; import java.util.Map; import javax.servlet.ServletRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; 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.servlet.mvc.support.RedirectAttributes; import com.sobey.cmop.mvc.comm.BaseController; import com.sobey.cmop.mvc.constant.AccountConstant; import com.sobey.cmop.mvc.entity.Group; import com.sobey.cmop.mvc.entity.User; import com.sobey.framework.utils.Servlets; /** * UserController负责用户的管理 * * @author liukai * */ @Controller @RequestMapping(value = "/account/user") public class UserController extends BaseController { /** * 重定向URL */ private static final String REDIRECT_SUCCESS_URL = "redirect:/account/user/"; /** * 显示所有的user list */ @RequestMapping(value = { "list", "" }) public String list(@RequestParam(value = "page", defaultValue = "1") int pageNumber, @RequestParam(value = "page.size", defaultValue = PAGE_SIZE) int pageSize, Model model, ServletRequest request) { // TODO 初始化所有User的密码和LoginName // comm.accountService.initializeUser(); Map<String, Object> searchParams = Servlets.getParametersStartingWith(request, REQUEST_PREFIX); model.addAttribute("page", comm.accountService.getUserPageable(searchParams, pageNumber, pageSize)); // 将搜索条件编码成字符串,分页的URL model.addAttribute("searchParams", Servlets.encodeParameterStringWithPrefix(searchParams, REQUEST_PREFIX)); return "account/userList"; } /** * 跳转到新增页面 */ @RequestMapping(value = "/save", method = RequestMethod.GET) public String createForm(Model model) { return "account/userForm"; } /** * 新增 */ @RequestMapping(value = "/save", method = RequestMethod.POST) public String save(User user, @RequestParam("departmentId") Integer departmentId, @RequestParam("groupId") Integer groupId, RedirectAttributes redirectAttributes) { user.setGroupList(comm.accountService.getGroupListById(groupId)); user.setDepartment(comm.accountService.getDepartment(departmentId)); user.setPlainPassword(AccountConstant.DEFAULT_PASSWORD); comm.accountService.registerUser(user); redirectAttributes.addFlashAttribute("message", "创建用户 " + user.getLoginName() + " 成功"); return REDIRECT_SUCCESS_URL; } /** * 跳转到修改页面 */ @RequestMapping(value = "/update/{id}", method = RequestMethod.GET) public String updateForm(@PathVariable("id") Integer id, Model model) { model.addAttribute("group", comm.accountService.findGroupByUserId(id)); model.addAttribute("user", comm.accountService.getUser(id)); return "account/userForm"; } /** * 修改 */ @RequestMapping(value = "/update", method = RequestMethod.POST) public String update(@RequestParam(value = "id") Integer id, @RequestParam(value = "email") String email, @RequestParam(value = "phonenum") String phonenum, @RequestParam(value = "name") String name, @RequestParam(value = "leaderId") Integer leaderId, @RequestParam(value = "type") Integer type, @RequestParam(value = "departmentId") Integer departmentId, @RequestParam(value = "groupId") Integer groupId, RedirectAttributes redirectAttributes) { User user = comm.accountService.getUser(id); user.setEmail(email); user.setPhonenum(phonenum); user.setName(name); user.setType(type); user.setLeaderId(leaderId); user.setDepartment(comm.accountService.getDepartment(departmentId)); user.setGroupList(comm.accountService.getGroupListById(groupId)); comm.accountService.updateUser(user); redirectAttributes.addFlashAttribute("message", "修改用户 " + user.getLoginName() + " 成功"); return REDIRECT_SUCCESS_URL; } /** * 跳转到详情页面 */ @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET) public String detailForm(@PathVariable("id") Integer id, Model model) { model.addAttribute("group", comm.accountService.findGroupByUserId(id)); model.addAttribute("user", comm.accountService.getUser(id)); return "account/userDetail"; } /** * 删除用户 */ @RequestMapping(value = "delete/{id}") public String delete(@PathVariable("id") Integer id, RedirectAttributes redirectAttributes) { boolean flag = comm.accountService.deleteUser(id); redirectAttributes.addFlashAttribute("message", flag ? "删除用户成功" : "不能删除超级管理员"); return REDIRECT_SUCCESS_URL; } // ============== 所有RequestMapping方法调用前的Model准备方法 ============= /** * 返回所有的权限组. * * @return */ @ModelAttribute("allGroups") public List<Group> allGroups() { return comm.accountService.findAllGroup(); } }