UserController.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657
  1. package com.jeff.tianti.controller;
  2. import java.text.SimpleDateFormat;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.HashSet;
  6. import java.util.LinkedHashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import java.util.Set;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import org.apache.commons.lang3.StringUtils;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Controller;
  15. import org.springframework.ui.Model;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.ResponseBody;
  18. import com.fasterxml.jackson.databind.ObjectMapper;
  19. import com.jeff.tianti.common.dto.AjaxResult;
  20. import com.jeff.tianti.common.entity.PageModel;
  21. import com.jeff.tianti.common.util.ExcelUtils;
  22. import com.jeff.tianti.common.util.Md5Util;
  23. import com.jeff.tianti.org.dto.RoleQueryDTO;
  24. import com.jeff.tianti.org.dto.UserQueryDTO;
  25. import com.jeff.tianti.org.entity.Resource;
  26. import com.jeff.tianti.org.entity.Role;
  27. import com.jeff.tianti.org.entity.User;
  28. import com.jeff.tianti.org.service.ResourceService;
  29. import com.jeff.tianti.org.service.RoleService;
  30. import com.jeff.tianti.org.service.UserService;
  31. import com.jeff.tianti.util.Constants;
  32. import com.jeff.tianti.util.WebHelper;
  33. /**
  34. * 用户管理Controller
  35. * @author Jeff Xu
  36. *
  37. */
  38. @Controller
  39. @RequestMapping("/user")
  40. public class UserController {
  41. @Autowired
  42. private ResourceService resourceService;
  43. @Autowired
  44. private RoleService roleService;
  45. @Autowired
  46. private UserService userService;
  47. /**
  48. * 获取用户列表
  49. * @param request
  50. * @param model
  51. * @return
  52. */
  53. @RequestMapping("/list")
  54. public String list(HttpServletRequest request, Model model){
  55. String userName = request.getParameter("userName");
  56. String currentPageStr = request.getParameter("currentPage");
  57. String pageSizeStr = request.getParameter("pageSize");
  58. int currentPage = 1;
  59. int pageSize = 10;
  60. if(StringUtils.isNotBlank(currentPageStr)){
  61. currentPage = Integer.parseInt(currentPageStr);
  62. }
  63. if(StringUtils.isNotBlank(pageSizeStr)){
  64. pageSize = Integer.parseInt(pageSizeStr);
  65. }
  66. UserQueryDTO userQueryDTO = new UserQueryDTO();
  67. userQueryDTO.setUserName(userName);
  68. userQueryDTO.setCurrentPage(currentPage);
  69. userQueryDTO.setPageSize(pageSize);
  70. PageModel<User> page = userService.queryUserPage(userQueryDTO);
  71. model.addAttribute("page", page);
  72. model.addAttribute("userQueryDTO", userQueryDTO);
  73. model.addAttribute(Constants.MENU_NAME, Constants.MENU_USER_LIST);
  74. return "user/user_list";
  75. }
  76. /**
  77. * 导出用户数据
  78. * @param request
  79. * @param response
  80. * @return
  81. */
  82. @RequestMapping("/export")
  83. public String exportOrder(HttpServletRequest request, HttpServletResponse response){
  84. String userName = request.getParameter("userName");
  85. Map<String, Object> params = new HashMap<String, Object>();
  86. if(StringUtils.isNotBlank(userName)){
  87. params.put("username", userName);
  88. }
  89. List<User> userList = this.userService.findUsers(params);
  90. List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
  91. Map<String, String> headNameMap = new LinkedHashMap<String, String>();
  92. headNameMap.put("roleName", "角色");
  93. headNameMap.put("userName", "账号");
  94. headNameMap.put("realName", "姓名");
  95. headNameMap.put("mobile", "电话号码");
  96. headNameMap.put("createDate", "创建时间");
  97. headNameMap.put("status", "状态");
  98. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  99. if(userList != null && userList.size() > 0){
  100. for(User user : userList){
  101. String statusName = "正常";
  102. String createDate = "";
  103. String roleName = "";
  104. if(StringUtils.isNotBlank(user.getDeleteFlag()) && user.getDeleteFlag().equals(User.DELETE_FLAG_DELETED)){
  105. statusName = "删除";
  106. }
  107. if(user.getCreateDate() != null){
  108. createDate = sdf.format(user.getCreateDate());
  109. }
  110. Set<Role> roleSet = user.getRoles();
  111. if(roleSet != null && roleSet.size() > 0){
  112. for(Role r:roleSet){
  113. roleName +=r.getName()+" ";
  114. }
  115. }
  116. Map<String,Object> map = new HashMap<String,Object>();
  117. map.put("roleName", roleName);
  118. map.put("userName", user.getUsername());
  119. map.put("realName", user.getRealName());
  120. map.put("mobile", user.getMobile());
  121. map.put("createDate", createDate);
  122. map.put("status", statusName);
  123. list.add(map);
  124. }
  125. }
  126. ExcelUtils.exportXlsx(response, "用户数据", headNameMap, list);
  127. return null;
  128. }
  129. /**
  130. * 跳转到用户编辑页
  131. * @param request
  132. * @param model
  133. * @return
  134. */
  135. @RequestMapping("/dialog/edit")
  136. public String dialogEdit(HttpServletRequest request, Model model){
  137. String id = request.getParameter("id");
  138. if(StringUtils.isNotBlank(id)){
  139. User user = userService.find(id);
  140. model.addAttribute("user", user);
  141. }
  142. Map<String, Object> params = new HashMap<String, Object>();
  143. params.put("deleteFlag", "0");
  144. List<Role> roles = roleService.findRoles(params);
  145. model.addAttribute("roles", roles);
  146. return "user/dialog/user_edit";
  147. }
  148. /**
  149. * 用户保存操作
  150. * @param request
  151. * @return
  152. */
  153. @RequestMapping("/ajax/save")
  154. @ResponseBody
  155. public AjaxResult ajaxSave(HttpServletRequest request){
  156. AjaxResult ajaxResult = new AjaxResult();
  157. ajaxResult.setSuccess(false);
  158. try {
  159. String id = request.getParameter("id");
  160. String username = request.getParameter("username");
  161. String password = request.getParameter("password");
  162. String realName = request.getParameter("realName");
  163. String mobile = request.getParameter("mobile");
  164. String[] roleIds = request.getParameterValues("roleId");
  165. User user = null;
  166. if(StringUtils.isNotBlank(id)){
  167. user = userService.find(id);
  168. }else{
  169. user = new User();
  170. user.setUsername(StringUtils.trim(username));
  171. user.setStatus(User.STATUS_YES);
  172. }
  173. if(StringUtils.isNotBlank(password)){
  174. user.setPassword(Md5Util.generatePassword(password));
  175. }
  176. user.setRealName(StringUtils.trim(realName));
  177. user.setMobile(StringUtils.trim(mobile));
  178. Set<Role> set = new HashSet<Role>();
  179. if(roleIds != null){
  180. for(String roleId : roleIds){
  181. Role role = roleService.find(roleId);
  182. if(role != null){
  183. set.add(role);
  184. }
  185. }
  186. }
  187. user.setRoles(set);
  188. if(StringUtils.isNotBlank(id)){
  189. userService.update(user);
  190. }else{
  191. user.setType(0);
  192. userService.save(user);
  193. }
  194. ajaxResult.setSuccess(true);
  195. } catch (Exception e) {
  196. e.printStackTrace();
  197. }
  198. return ajaxResult;
  199. }
  200. /**
  201. * 修改用户状态
  202. * @param request
  203. * @return
  204. */
  205. @RequestMapping("/ajax/upd/status")
  206. @ResponseBody
  207. public AjaxResult ajaxUpdStatus(HttpServletRequest request){
  208. AjaxResult ajaxResult = new AjaxResult();
  209. ajaxResult.setSuccess(false);
  210. try {
  211. String[] ids = request.getParameterValues("ids");
  212. String status = request.getParameter("status");
  213. userService.updateStatus(ids, Integer.parseInt(status));
  214. ajaxResult.setSuccess(true);
  215. } catch (Exception e) {
  216. e.printStackTrace();
  217. }
  218. return ajaxResult;
  219. }
  220. /**
  221. * 皮肤列表
  222. * @param request
  223. * @param model
  224. * @return
  225. */
  226. @RequestMapping("/skin/list")
  227. public String skinList(HttpServletRequest request,Model model){
  228. model.addAttribute(Constants.MENU_NAME, Constants.MENU_UPDATE_SKIN);
  229. return "/user/skin_list";
  230. }
  231. /**
  232. * 修改皮肤
  233. * @param request
  234. * @return
  235. */
  236. @RequestMapping("/ajax/upd/skin")
  237. @ResponseBody
  238. public AjaxResult ajaxUpdSkin(HttpServletRequest request){
  239. AjaxResult ajaxResult = new AjaxResult();
  240. ajaxResult.setSuccess(false);
  241. try {
  242. String currentSkin = request.getParameter("skin");
  243. User user = (User)request.getSession().getAttribute(WebHelper.SESSION_LOGIN_USER);
  244. if(user != null){
  245. user.setCurrentSkin(currentSkin);
  246. this.userService.update(user);
  247. request.getSession().setAttribute(WebHelper.SESSION_LOGIN_USER, user);
  248. ajaxResult.setSuccess(true);
  249. }
  250. } catch (Exception e) {
  251. e.printStackTrace();
  252. }
  253. return ajaxResult;
  254. }
  255. /**
  256. * 校验用户是否存在
  257. * @param request
  258. * @return
  259. */
  260. @RequestMapping("/ajax/validator/username")
  261. @ResponseBody
  262. public Map<String, Object> ajaxValidatorUsername(HttpServletRequest request){
  263. Map<String, Object> map = new HashMap<String, Object>();
  264. String username = request.getParameter("username");
  265. Map<String, Object> params = new HashMap<String, Object>();
  266. if(StringUtils.isNotBlank(username)){
  267. params.put("username", StringUtils.trim(username));
  268. }
  269. List<User> users = userService.findUsers(params);
  270. if(users != null && !users.isEmpty()){
  271. map.put("error", "账号已经存在");
  272. }else{
  273. map.put("ok", "");
  274. }
  275. return map;
  276. }
  277. /**
  278. * 角色列表
  279. * @param request
  280. * @param model
  281. * @return
  282. */
  283. @RequestMapping("/role_list")
  284. public String roleList(HttpServletRequest request, Model model){
  285. String name = request.getParameter("name");
  286. String currentPageStr = request.getParameter("currentPage");
  287. String pageSizeStr = request.getParameter("pageSize");
  288. int currentPage = 1;
  289. int pageSize = 10;
  290. if(StringUtils.isNotBlank(currentPageStr)){
  291. currentPage = Integer.parseInt(currentPageStr);
  292. }
  293. if(StringUtils.isNotBlank(pageSizeStr)){
  294. pageSize = Integer.parseInt(pageSizeStr);
  295. }
  296. RoleQueryDTO roleQueryDTO = new RoleQueryDTO();
  297. roleQueryDTO.setName(name);
  298. roleQueryDTO.setCurrentPage(currentPage);
  299. roleQueryDTO.setPageSize(pageSize);
  300. PageModel<Role> page = roleService.queryRolePage(roleQueryDTO);
  301. model.addAttribute("page", page);
  302. model.addAttribute("roleQueryDTO", roleQueryDTO);
  303. model.addAttribute(Constants.MENU_NAME, Constants.MENU_ROLE_LIST);
  304. return "user/role_list";
  305. }
  306. /**
  307. * 跳转到角色编辑页面
  308. * @param request
  309. * @param model
  310. * @return
  311. */
  312. @RequestMapping("/dialog/role_edit")
  313. public String dialogRoleEdit(HttpServletRequest request, Model model){
  314. List<Map<String, Object>> resources = resourceService.getMap();
  315. String roleId = request.getParameter("id");
  316. if(StringUtils.isNotBlank(roleId)){
  317. Role role = roleService.find(roleId);
  318. model.addAttribute("role", role);
  319. Set<Resource> set = role.getResources();
  320. if(set != null && !set.isEmpty()){
  321. for(int i=0,size=resources.size();i<size;i++){
  322. Map<String, Object> map = resources.get(i);
  323. String id = map.get("id").toString();
  324. for(Resource resource : set){
  325. if(id.equals(resource.getId())){
  326. map.put("checked", true);
  327. map.put("open", true);
  328. break;
  329. }
  330. }
  331. }
  332. }
  333. }
  334. try {
  335. ObjectMapper objectMapper = new ObjectMapper();
  336. String resourceJson = objectMapper.writeValueAsString(resources);
  337. model.addAttribute("resourceJson", resourceJson);
  338. } catch (Exception e) {
  339. e.printStackTrace();
  340. }
  341. return "user/dialog/role_edit";
  342. }
  343. /**
  344. * 保存角色
  345. * @param request
  346. * @return
  347. */
  348. @RequestMapping("/ajax/save_role")
  349. @ResponseBody
  350. public AjaxResult ajaxSaveRole(HttpServletRequest request){
  351. AjaxResult ajaxResult = new AjaxResult();
  352. ajaxResult.setSuccess(false);
  353. try {
  354. String id = request.getParameter("id");
  355. String name = request.getParameter("name");
  356. String description = request.getParameter("description");
  357. String[] rescoureIds = request.getParameterValues("rescoureIds");
  358. Role role = null;
  359. if(StringUtils.isNotBlank(id)){
  360. role = roleService.get(id);
  361. }else{
  362. role = new Role();
  363. }
  364. role.setName(StringUtils.trim(name));
  365. role.setDescription(StringUtils.trim(description));
  366. Set<Resource> resources = new HashSet<Resource>();
  367. if(rescoureIds != null){
  368. for(String rId : rescoureIds){
  369. Resource resource = resourceService.find(rId);
  370. if(resource != null){
  371. resources.add(resource);
  372. }
  373. }
  374. }
  375. role.setResources(resources);
  376. if(StringUtils.isNotBlank(role.getId())){
  377. roleService.update(role);
  378. }else{
  379. roleService.save(role);
  380. }
  381. ajaxResult.setSuccess(true);
  382. } catch (Exception e) {
  383. e.printStackTrace();
  384. }
  385. return ajaxResult;
  386. }
  387. /**
  388. * 角色删除
  389. * @param request
  390. * @return
  391. */
  392. @RequestMapping("/ajax/upd_role/delete_flag")
  393. @ResponseBody
  394. public AjaxResult ajaxUpdRoleDeleteFlag(HttpServletRequest request){
  395. AjaxResult ajaxResult = new AjaxResult();
  396. ajaxResult.setSuccess(false);
  397. try {
  398. String[] ids = request.getParameterValues("ids");
  399. String deleteFlag = request.getParameter("deleteFlag");
  400. roleService.updateDeleteFlag(ids, deleteFlag);
  401. ajaxResult.setSuccess(true);
  402. } catch (Exception e) {
  403. e.printStackTrace();
  404. }
  405. return ajaxResult;
  406. }
  407. /**
  408. * 跳转到菜单列表
  409. * @param request
  410. * @param model
  411. * @return
  412. */
  413. @RequestMapping("/menu_list")
  414. public String menuList(HttpServletRequest request, Model model){
  415. String name = request.getParameter("name");
  416. Map<String, Object> params = new HashMap<String, Object>();
  417. if(StringUtils.isNotBlank(name)){
  418. params.put("name", "%" + StringUtils.trim(name) + "%");
  419. }
  420. model.addAttribute("name", name);
  421. List<Resource> resources = resourceService.findMenuResource(params);
  422. model.addAttribute("resources", resources);
  423. model.addAttribute(Constants.MENU_NAME, Constants.MENU_NAME_LIST);
  424. return "user/menu_list";
  425. }
  426. /**
  427. * 逻辑操作菜单状态
  428. * @param request
  429. * @return
  430. */
  431. @RequestMapping("/ajax/upd_menu/delete_flag")
  432. @ResponseBody
  433. public AjaxResult ajaxUpdMenuDeleteFlag(HttpServletRequest request){
  434. AjaxResult ajaxResult = new AjaxResult();
  435. ajaxResult.setSuccess(false);
  436. try {
  437. String[] ids = request.getParameterValues("ids");
  438. String deleteFlag = request.getParameter("deleteFlag");
  439. resourceService.updateDeleteFlag(ids, deleteFlag);
  440. ajaxResult.setSuccess(true);
  441. } catch (Exception e) {
  442. e.printStackTrace();
  443. }
  444. return ajaxResult;
  445. }
  446. /**
  447. * 跳转到菜单编辑页面
  448. * @param request
  449. * @param model
  450. * @return
  451. */
  452. @RequestMapping("/dialog/menu_edit")
  453. public String dialogMenuEdit(HttpServletRequest request, Model model){
  454. String id = request.getParameter("id");
  455. if(StringUtils.isNotBlank(id)){
  456. Resource resource = resourceService.find(id);
  457. model.addAttribute("resource", resource);
  458. }
  459. List<Resource> modelResources = resourceService.getRootResourceList();
  460. model.addAttribute("modelResources", modelResources);
  461. return "user/dialog/menu_edit";
  462. }
  463. /**
  464. * 保存菜单
  465. * @param request
  466. * @return
  467. */
  468. @RequestMapping("/ajax/save_menu")
  469. @ResponseBody
  470. public AjaxResult ajaxSaveMenu(HttpServletRequest request){
  471. AjaxResult ajaxResult = new AjaxResult();
  472. ajaxResult.setSuccess(false);
  473. try {
  474. String id = request.getParameter("id");
  475. String name = request.getParameter("name");
  476. String type = request.getParameter("type");
  477. String parentId = request.getParameter("parentId");
  478. String url = request.getParameter("url");
  479. String icon = request.getParameter("icon");
  480. String orderNoStr = request.getParameter("orderNo");
  481. Integer orderNo = null;
  482. if(StringUtils.isNotBlank(orderNoStr)){
  483. orderNo = Integer.parseInt(orderNoStr);
  484. }
  485. Resource resource = null;
  486. if(StringUtils.isNotBlank(id)){
  487. resource = resourceService.find(id);
  488. }else{
  489. resource = new Resource();
  490. }
  491. resource.setName(StringUtils.trim(name));
  492. resource.setType(type);
  493. Resource parentResource = null;
  494. if(StringUtils.isNotBlank(parentId) && "page".equals(type)){
  495. parentResource = resourceService.find(parentId);
  496. }
  497. resource.setParent(parentResource);
  498. resource.setUrl(StringUtils.trim(url));
  499. resource.setIcon(StringUtils.trim(icon));
  500. resource.setOrderNo(orderNo);
  501. resourceService.saveResource(resource);
  502. ajaxResult.setSuccess(true);
  503. } catch (Exception e) {
  504. e.printStackTrace();
  505. }
  506. return ajaxResult;
  507. }
  508. /**
  509. * 跳转到修改密码
  510. * @param request
  511. * @param model
  512. * @return
  513. */
  514. @RequestMapping("/update_pwd")
  515. public String updatePwd(HttpServletRequest request, Model model){
  516. model.addAttribute(Constants.MENU_NAME, Constants.MENU_UPDATE_PWD);
  517. return "user/update_pwd";
  518. }
  519. /**
  520. * 保存密码
  521. * @param request
  522. * @return
  523. */
  524. @RequestMapping("/ajax/save_pwd")
  525. @ResponseBody
  526. public AjaxResult ajaxSavePwd(HttpServletRequest request){
  527. AjaxResult ajaxResult = new AjaxResult();
  528. ajaxResult.setSuccess(false);
  529. try {
  530. User user = WebHelper.getUser(request);
  531. String oldPwd = request.getParameter("oldPwd");
  532. String pwd = request.getParameter("pwd");
  533. user = userService.find(user.getId());
  534. if(Md5Util.generatePassword(oldPwd).equals(user.getPassword())){
  535. user.setPassword(Md5Util.generatePassword(pwd));
  536. userService.update(user);
  537. ajaxResult.setSuccess(true);
  538. }else{
  539. ajaxResult.setMsg("原始密码输入不正确");
  540. }
  541. } catch (Exception e) {
  542. e.printStackTrace();
  543. ajaxResult.setMsg("修改失败");
  544. }
  545. return ajaxResult;
  546. }
  547. }