Java tutorial
/** * Copyright (c) 2014 http://www.lushapp.wang * * Licensed under the Apache License, Version 2.0 (the "License"); */ package com.lushapp.modules.sys.web; import com.google.common.collect.Lists; import com.lushapp.common.model.Combobox; import com.lushapp.common.model.Datagrid; import com.lushapp.common.model.Result; import com.lushapp.common.model.TreeNode; import com.lushapp.common.orm.Page; import com.lushapp.common.orm.PropertyFilter; import com.lushapp.common.orm.entity.StatusState; import com.lushapp.common.orm.hibernate.EntityManager; import com.lushapp.common.utils.StringUtils; import com.lushapp.common.utils.collections.Collections3; import com.lushapp.common.utils.encode.Encrypt; import com.lushapp.common.utils.mapper.JsonMapper; import com.lushapp.common.web.springmvc.BaseController; import com.lushapp.modules.sys._enum.SexType; import com.lushapp.modules.sys.entity.*; import com.lushapp.modules.sys.service.*; import com.lushapp.utils.AppConstants; import com.lushapp.utils.SelectType; import org.apache.commons.lang3.ArrayUtils; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Restrictions; 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.bind.annotation.ResponseBody; import java.util.Iterator; import java.util.List; /** * User? Controller. * * @author honey.zhao@aliyun.com * @date 2014-10-21 ?12:20:13 */ @SuppressWarnings("serial") @Controller @RequestMapping(value = "/sys/user") public class UserController extends BaseController<User, Long> { @Autowired private UserManager userManager; @Autowired private OrganManager organManager; @Autowired private RoleManager roleManager; @Autowired private ResourceManager resourceManager; @Autowired private PostManager postManager; @Override public EntityManager<User, Long> getEntityManager() { return userManager; } @RequestMapping(value = { "" }) public String list() { return "modules/sys/user"; } @RequestMapping(value = { "select" }) public String selectPage(String userIds, Model model) { List<User> users = Lists.newArrayList(); if (StringUtils.isNotBlank(userIds)) { String[] userIdss = userIds.split(","); List<Long> userIdLs = Lists.newArrayList(); for (String userId : userIdss) { userIdLs.add(Long.valueOf(userId)); } Criterion inUserCriterion = Restrictions.in("id", userIdLs); users = userManager.findByCriteria(inUserCriterion); } model.addAttribute("users", users); return "modules/sys/user-select"; } @RequestMapping(value = { "combogridSelectUser" }) @ResponseBody public String combogridSelectUser(Long organId, Long roleId, String loginNameOrName, String sort, String order) { List<User> users = userManager.getUsersByOrgOrRole(organId, roleId, loginNameOrName, sort, order); Datagrid<User> dg = new Datagrid<User>(users.size(), users); return JsonMapper.getInstance().toJson(dg, User.class, new String[] { "id", "loginName", "name", "sexView" }); } /** * @param user * @return * @throws Exception */ @RequestMapping(value = { "input" }) public String input(@ModelAttribute("model") User user) throws Exception { return "modules/sys/user-input"; } @RequestMapping(value = { "_remove" }) @ResponseBody @Override public Result remove(@RequestParam(value = "ids", required = false) List<Long> ids) { Result result; userManager.deleteByIds(ids); result = Result.successResult(); logger.debug(result.toString()); return result; } /** * * * @return * @throws Exception */ @RequestMapping(value = { "userDatagrid" }) @ResponseBody public Datagrid<User> userDatagrid(Long organId, String loginNameOrName, Integer page, Integer rows, String sort, String order) throws Exception { Page<User> p = userManager.getUsersByQuery(organId, loginNameOrName, page, rows, sort, order); Datagrid<User> dg = new Datagrid<User>(p.getTotalCount(), p.getResult()); return dg; } /** * combogrid * * @return * @throws Exception */ @RequestMapping(value = { "combogridAll" }) @ResponseBody public String combogridAll() { List<PropertyFilter> filters = Lists.newArrayList(); filters.add(new PropertyFilter("EQI_status", StatusState.normal.getValue().toString())); List<User> users = userManager.find(filters, "id", "asc"); Datagrid<User> dg = new Datagrid<User>(users.size(), users); return JsonMapper.getInstance().toJson(dg, User.class, new String[] { "id", "loginName", "name", "sexView" }); } /** * ? * @param organId ID * @return */ @RequestMapping(value = { "combogridOrganUser" }) @ResponseBody public String combogridOrganUser(@RequestParam(value = "organId", required = true) Long organId) { List<User> users = userManager.getUsersByOrganId(organId); Datagrid dg = new Datagrid(users.size(), users); return JsonMapper.getInstance().toJson(dg, User.class, new String[] { "id", "loginName", "name" }); } /** * combogrid * * @return * @throws Exception */ @RequestMapping(value = { "combogrid" }) @ResponseBody public Datagrid<User> combogrid(@RequestParam(value = "ids", required = false) List<Long> ids, String loginNameOrName, Integer rows) throws Exception { Criterion statusCriterion = Restrictions.eq("status", StatusState.normal.getValue()); Criterion[] criterions = new Criterion[0]; criterions = (Criterion[]) ArrayUtils.add(criterions, 0, statusCriterion); Criterion criterion = null; if (Collections3.isNotEmpty(ids)) { //in? Criterion inCriterion = Restrictions.in("id", ids); if (StringUtils.isNotBlank(loginNameOrName)) { Criterion loginNameCriterion = Restrictions.like("loginName", loginNameOrName, MatchMode.ANYWHERE); Criterion nameCriterion = Restrictions.like("name", loginNameOrName, MatchMode.ANYWHERE); Criterion criterion1 = Restrictions.or(loginNameCriterion, nameCriterion); criterion = Restrictions.or(inCriterion, criterion1); } else { criterion = inCriterion; } //?? criterions = (Criterion[]) ArrayUtils.add(criterions, 0, criterion); } else { if (StringUtils.isNotBlank(loginNameOrName)) { Criterion loginNameCriterion = Restrictions.like("loginName", loginNameOrName, MatchMode.ANYWHERE); Criterion nameCriterion = Restrictions.like("name", loginNameOrName, MatchMode.ANYWHERE); criterion = Restrictions.or(loginNameCriterion, nameCriterion); //?? criterions = (Criterion[]) ArrayUtils.add(criterions, 0, criterion); } } // Page<User> p = new Page<User>(rows);// p = userManager.findByCriteria(p, criterions); Datagrid<User> dg = new Datagrid<User>(p.getTotalCount(), p.getResult()); return dg; } /** * ?. */ @RequestMapping(value = { "save" }) @ResponseBody public Result save(@ModelAttribute("model") User user) { Result result = null; // ???? User nameCheckUser = userManager.getUserByLoginName(user.getLoginName()); if (nameCheckUser != null && !nameCheckUser.getId().equals(user.getId())) { result = new Result(Result.WARN, "??[" + user.getLoginName() + "],!", "loginName"); logger.debug(result.toString()); return result; } if (user.getId() == null) {// user.setPassword(Encrypt.e(user.getPassword())); } else {// User superUser = userManager.getSuperUser(); User sessionUser = userManager.getCurrentUser(); if (!sessionUser.getId().equals(superUser.getId())) { result = new Result(Result.ERROR, "??!", null); logger.debug(result.toString()); return result; } } userManager.saveEntity(user); result = Result.successResult(); logger.debug(result.toString()); return result; } /** * ??. */ @RequestMapping(value = { "password" }) public String password() throws Exception { return "modules/sys/user-password"; } /** * ?. * <br>?upateOperate ??"1" ???"0". */ @RequestMapping(value = { "updateUserPassword" }) @ResponseBody public Result updateUserPassword(@ModelAttribute("model") User user, String upateOperate, String newPassword) throws Exception { Result result; if (!StringUtils.isEmpty(upateOperate)) { User u = userManager.loadById(user.getId()); if (u != null) { boolean isCheck = true; //?? if (AppConstants.USER_UPDATE_PASSWORD_YES.equals(upateOperate)) { String originalPassword = u.getPassword(); //?? String pagePassword = u.getPassword(); //?? if (!originalPassword.equals(Encrypt.e(pagePassword))) { isCheck = false; } } //??? if (AppConstants.USER_UPDATE_PASSWORD_NO.equals(upateOperate)) { isCheck = true; } if (isCheck) { u.setPassword(Encrypt.e(newPassword)); userManager.saveEntity(u); result = Result.successResult(); } else { result = new Result(Result.WARN, "?.", "password"); } } else { result = new Result(Result.ERROR, "?.", null); } } else { result = Result.errorResult(); logger.warn("?,?[upateOperate]."); } logger.debug(result.toString()); return result; } /** * ?. */ @RequestMapping(value = { "role" }) public String role() throws Exception { return "modules/sys/user-role"; } /** * . */ @RequestMapping(value = { "updateUserRole" }) @ResponseBody public Result updateUserRole(@ModelAttribute("model") User user, @RequestParam(value = "roleIds", required = false) List<Long> roleIds) throws Exception { Result result = null; List<Role> rs = Lists.newArrayList(); if (Collections3.isNotEmpty(roleIds)) { for (Long id : roleIds) { Role role = roleManager.loadById(id); rs.add(role); } } user.setRoles(rs); userManager.saveEntity(user); result = Result.successResult(); return result; } /** * ?. */ @RequestMapping(value = { "organ" }) public String organ(@ModelAttribute("model") User user, Model model) throws Exception { //? List<Combobox> defaultOrganCombobox = Lists.newArrayList(); if (user.getId() != null) { List<Organ> organs = user.getOrgans(); Combobox combobox; if (!Collections3.isEmpty(organs)) { for (Organ organ : organs) { combobox = new Combobox(organ.getId().toString(), organ.getName()); defaultOrganCombobox.add(combobox); } } } String defaultOrganComboboxData = JsonMapper.nonDefaultMapper().toJson(defaultOrganCombobox); logger.debug(defaultOrganComboboxData); model.addAttribute("defaultOrganComboboxData", defaultOrganComboboxData); return "modules/sys/user-organ"; } /** * . */ @RequestMapping(value = { "updateUserOrgan" }) @ResponseBody public Result updateUserOrgan(@ModelAttribute("model") User model, @RequestParam(value = "organIds", required = false) List<Long> organIds, String defaultOrganId) throws Exception { Result result = null; List<Organ> oldOrgans = model.getOrgans(); // model.setOrgans(null); List<Organ> organs = Lists.newArrayList(); if (Collections3.isNotEmpty(organIds)) { for (Long organId : organIds) { Organ organ = organManager.loadById(organId); organs.add(organ); if (Collections3.isNotEmpty(oldOrgans)) { Iterator<Organ> iterator = oldOrgans.iterator(); while (iterator.hasNext()) { Organ oldOrgan = iterator.next(); if (oldOrgan.getId().equals(organ.getId())) { iterator.remove(); } } } } } //?? List<Post> userPosts = model.getPosts(); if (Collections3.isNotEmpty(oldOrgans)) {// Iterator<Organ> iterator = oldOrgans.iterator(); while (iterator.hasNext()) { Organ oldOrgan = iterator.next(); List<Post> organPosts = oldOrgan.getPosts(); for (Post organPost : organPosts) { if (Collections3.isNotEmpty(userPosts)) { Iterator<Post> iteratorPost = userPosts.iterator(); while (iteratorPost.hasNext()) { Post userPost = iteratorPost.next(); if (userPost.getId().equals(organPost.getId())) { iteratorPost.remove(); } } } } } } model.setOrgans(organs); // model.setDefaultOrgan(null); Organ defaultOrgan = null; if (defaultOrganId != null) { defaultOrgan = organManager.loadById(model.getDefaultOrganId()); } model.setDefaultOrgan(defaultOrgan); userManager.saveEntity(model); result = Result.successResult(); return result; } /** * ??. */ @RequestMapping(value = { "post" }) public String post() throws Exception { return "modules/sys/user-post"; } /** * ?. */ @RequestMapping(value = { "updateUserPost" }) @ResponseBody public Result updateUserPost(@ModelAttribute("model") User model, @RequestParam(value = "postIds", required = false) List<Long> postIds) throws Exception { Result result = null; List<Post> ps = Lists.newArrayList(); if (Collections3.isNotEmpty(postIds)) { for (Long id : postIds) { Post post = postManager.loadById(id); ps.add(post); } } model.setPosts(ps); getEntityManager().saveEntity(model); result = Result.successResult(); return result; } /** * ??. */ @RequestMapping(value = { "resource" }) public String resource(Model model) throws Exception { List<TreeNode> treeNodes = resourceManager.getResourceTree(null, false); String resourceComboboxData = JsonMapper.nonDefaultMapper().toJson(treeNodes); logger.debug(resourceComboboxData); model.addAttribute("resourceComboboxData", resourceComboboxData); return "modules/sys/user-resource"; } /** * ?. */ @RequestMapping(value = { "updateUserResource" }) @ResponseBody public Result updateUserResource(@ModelAttribute("model") User user, @RequestParam(value = "resourceIds", required = false) List<Long> resourceIds) throws Exception { Result result = null; List<Resource> rs = Lists.newArrayList(); if (Collections3.isNotEmpty(resourceIds)) { for (Long id : resourceIds) { Resource resource = resourceManager.loadById(id); rs.add(resource); } } user.setResources(rs); userManager.saveEntity(user); result = Result.successResult(); return result; } /** * * * @throws Exception */ @RequestMapping(value = { "sexTypeCombobox" }) @ResponseBody public List<Combobox> sexTypeCombobox(String selectType) throws Exception { List<Combobox> cList = Lists.newArrayList(); //combobox "------"?"------" if (!StringUtils.isBlank(selectType)) { SelectType s = SelectType.getSelectTypeValue(selectType); if (s != null) { Combobox selectCombobox = new Combobox("", s.getDescription()); cList.add(selectCombobox); } } SexType[] _enums = SexType.values(); for (int i = 0; i < _enums.length; i++) { Combobox combobox = new Combobox(_enums[i].getValue().toString(), _enums[i].getDescription()); cList.add(combobox); } return cList; } }