package org.ccpit.base.user; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import net.sf.json.JSONArray; import org.ccpit.base.controller.BaseController; import org.ccpit.base.controller.Page; import org.ccpit.base.controller.PageRequest; import org.ccpit.base.orgManage.OrgInfo; import org.ccpit.base.orgManage.OrgService; import org.ccpit.base.role.RoleDao; import org.ccpit.base.usergroup.UserGroupDao; import org.ccpit.base.utils.PasswordHash; import org.ccpit.base.utils.StringUtil; import org.ccpit.base.utils.mailUtil.Mail; import org.ccpit.base.utils.mailUtil.MailUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; /** * * ClassName: UserController <br/> * Function: TODO 用户信息控制类. <br/> * Reason: TODO ADD REASON(可选). <br/> * date: 2015年5月14日 下午8:53:32 <br/> * * @author dingwei * @version * @since JDK 1.6 */ @Controller @RequestMapping("/admin/user") public class UserController extends BaseController { private static final Logger loger = LoggerFactory.getLogger(UserController.class); @Autowired private UserService userService; // @Autowired // private UserGroupService orgService; @Autowired private OrgService orgService; @Autowired private RoleDao roleDao; @Autowired private UserDao userDao; @Autowired private UserGroupDao orgDao; /** * * isExistUser:(判断用户是否存在). <br/> * @author dingwei * @param request * @return * @since JDK 1.6 */ @RequestMapping("/isExistUser") @ResponseBody public Object isExistUser(HttpServletRequest request) { Map<String, Object> map = new HashMap<String, Object>(); String loginName = request.getParameter("loginName"); User user = userService.getUserByLoginName(loginName); if (null == user) { map.put("flag", false); } else { map.put("flag", true); } return map; } /** * * addUser:(部门新增用户). <br/> * @author dingwei * @param request * @param response * @param user * @since JDK 1.6 */ @RequestMapping("/addUser") public void addUser(HttpServletRequest request,HttpServletResponse response,User user) { String result = ""; User user_in_session = (User) request.getSession().getAttribute("user_in_session"); String orgId = request.getParameter("orgId"); String userId = request.getParameter("userId"); String operation = request.getParameter("operation"); boolean flag = false; if("add".equals(operation)){ OrgInfo orgInfo = orgService.getOrgById(Integer.valueOf(orgId)); user.setCreatorId(user_in_session.getId()); user.setCreator(user_in_session.getUsername()); user.setCreateTime(new Date()); if(null == user.getUserType()){ user.setUserType("back"); } if(null == user.getCountStatus()){ user.setCountStatus(1); } if(null != orgInfo){ Set<User> userSet = orgInfo.getUsers(); userSet.add(user); orgInfo.setUsers(userSet); flag = orgService.updateOrg(orgInfo); } }else { OrgInfo orgInfo = orgService.getOrgById(Integer.valueOf(orgId)); if(null != orgInfo){ Set<User> userSet = orgInfo.getUsers(); List<User> userList = new ArrayList<User>(userSet); for(int i=0;i<userList.size();i++){ long userid = userList.get(i).getId(); if(String.valueOf(userid).equals(userId)){ userSet.remove(userList.get(i)); orgInfo.setUsers(userSet); boolean flag1 = orgService.updateOrg(orgInfo); if(flag1){ OrgInfo orgInfo1 = orgService.getOrgById(Integer.valueOf(orgId)); User user1 = userService.getUser(Integer.valueOf(userId)); if(null != user.getAge()){ user1.setAge(user.getAge()); }if(null != user.getCompany()){ user1.setCompany(user.getCompany()); }if(null != user.getEmail()){ user1.setEmail(user.getEmail()); }if(null != user.getLoginName()){ user1.setLoginName(user.getLoginName()); }if(null != user.getSex()){ user1.setSex(user.getSex()); }if(null != user.getTelphone()){ user1.setTelphone(user.getTelphone()); }if(null != user.getUsername()){ user1.setUsername(user.getUsername()); }if(null != user.getUserType()){ user1.setUserType(user.getUserType()); } userSet = orgInfo1.getUsers(); userSet.add(user1); orgInfo1.setUsers(userSet); flag = orgService.updateOrg(orgInfo1); } } } } } if(flag){ result = "{ \"flag\": "+ flag +", \"info\": \"数据保存成功!\" }"; }else { result = "{ \"flag\": "+ flag +", \"info\": \"数据保存失败!\" }"; } try { response.setContentType("text/html"); response.getWriter().write(result); } catch (IOException e) { e.printStackTrace(); } } /** * * editUser:(编辑用户信息). <br/> * @author dingwei * @param id * @param user * @return * @since JDK 1.6 */ @RequestMapping("/edit/{id}") @ResponseBody public Object editUser(@PathVariable long id, User user) { Map<String, Object> map = new HashMap<String, Object>(); User user1 = userService.getUser(id); boolean flag = false; if(null != user.getAge()){ user1.setAge(user.getAge()); } if(null != user.getCountStatus()){ user1.setCountStatus(user.getCountStatus()); } if(null != user.getCompany()){ user1.setCompany(user.getCompany()); } if(null != user.getEmail()){ user1.setEmail(user.getEmail()); } if(null != user.getLoginName()){ user1.setLoginName(user.getLoginName()); } if(null != user.getSex()){ user1.setSex(user.getSex()); } if(null != user.getTelphone()){ user1.setTelphone(user.getTelphone()); } if(null != user.getUsername()){ user1.setUsername(user.getUsername()); } if(null != user.getUserType()){ user1.setUserType(user.getUserType()); } flag = userService.updateUser(user1); if (flag) { map.put("success", flag); map.put("info", "修改用户数据成功!"); } else { map.put("info", "修改用户数据失败..."); } return map; } @RequestMapping("/getUserById/{id}") @ResponseBody public User getUserById(@PathVariable long id) { User user = userService.getUser(id); return user; } /** * * deleteUser:(删除用户信息). <br/> * @author dingwei * @param request * @return * @since JDK 1.6 */ @RequestMapping("/deleteUser") @ResponseBody public Object deleteUser(HttpServletRequest request) { Map map = new HashMap(); String orgId = request.getParameter("orgId"); String userId = request.getParameter("userId"); Set<User> setUser = new HashSet<User>(); PageRequest pageRequest = this.getPage(request); Page<User> users = new Page<User>(pageRequest); boolean flag = false; if(null != orgId){ OrgInfo org = orgService.getOrgById(Long.valueOf(orgId)); setUser = org.getUsers(); if(null != userId){ User user = userService.getUser(Long.valueOf(userId)); if(setUser.contains(user)){ setUser.remove(user); } org.setUsers(setUser); boolean flag1 = orgService.updateOrg(org); if(flag1){ user.setWhetherDelete(true); flag = userService.updateUser(user); } } } if(flag){ map.put("flag", flag); map.put("info", "数据删除成功!"); }else { map.put("flag", flag); map.put("info", "数据删除失败!"); } return map; } @RequestMapping("/queryAllUser") public Object queryAllUser() { ModelAndView mv = new ModelAndView("admin/user/manage"); return mv; } /** * * getAllUsers:(查询所有用户信息列表). <br/> * @author dingwei * @param request * @return * @since JDK 1.6 */ @RequestMapping("/getAllUsers") @ResponseBody public Object getAllUsers(HttpServletRequest request) { Map<String, Object> map = new HashMap<String, Object>(); PageRequest pageRequest = this.getPage(request); String userName = request.getParameter("userName"); String userType = request.getParameter("userType"); StringBuffer hql = new StringBuffer("from User where 1=1"); if(null == userName && null == userType){ hql.append(" order by createTime asc"); }else { if(null != userName && !"".equals(userName)){ hql.append(" and userName like '%" + userName + "%'"); } if(null != userType && !"".equals(userType)){ hql.append(" and userType ='"+ userType +"'"); } hql.append(" order by createTime asc"); } Page<User> users = userService.queryPage(pageRequest,hql.toString()); return userService.convert(users); } /*@RequestMapping("/get/{id}") @ResponseBody public Object get(@PathVariable long id) { if (id != 0) { UserGroup usergroup = new UserGroup(); Set<Role> roles = new HashSet<Role>(); Set<User> users = new HashSet<User>(); roles.add(roleDao.queryById(2L)); users.add(userDao.queryById(1L)); usergroup.setRoles(roles); usergroup.setUsers(users); usergroup.setName("test usergroup 1"); orgService.save(usergroup); UserGroup org = orgDao.queryById(2L); System.out.println(org); User user = userService.getUser(id); return user; } return ""; }*/ /** * * changePass:(用户密码修改). <br/> * @author dingwei * @param request * @param rePass * @return * @since JDK 1.6 */ @RequestMapping("/changePass/{rePass}") @ResponseBody public Object changePass(HttpServletRequest request,@PathVariable String rePass){ Map result = new HashMap(); User user = (User) request.getSession().getAttribute("user_in_session"); try { user.setPassword(PasswordHash.createHash(rePass)); } catch (Exception e) { loger.error("修改用户密码加密失败....", e); } boolean b = userService.updateUser(user); if(b){ result.put("flag", true); result.put("info", "密码修改成功!"); }else { result.put("flag", false); } return result; } @RequestMapping("/getUsersList") @ResponseBody public Object getUsersList(HttpServletRequest request){ List<User> listBo = userService.getAllUsers(); List list = new ArrayList(); if(null != listBo){ for(int i=0;i<listBo.size();i++){ Map result = new HashMap(); result.put("id", listBo.get(i).getId()); result.put("text", listBo.get(i).getUsername()); list.add(result); } } return list; } /** * * sendEmailToUser:(修改用户登录密码之后通过邮件发送给用户). <br/> * @author dingwei * @param request * @param response * @return * @since JDK 1.6 */ @RequestMapping("sendEmailToUser") @ResponseBody public Object sendEmailToUser(HttpServletRequest request,HttpServletResponse response){ Map<String, Object> map = new HashMap<String, Object>(); HttpSession session = request.getSession(); User user = (User) session.getAttribute("user_in_session"); String emailCount = null == user.getUserEmail()?"":user.getUserEmail().getEmailCount(); //邮箱账号 String emailPassword = null == user.getUserEmail()?"":user.getUserEmail().getEmailPassword(); //邮箱密码 String emailServerHost = null == user.getUserEmail()?"":user.getUserEmail().getServerHost(); //邮箱服务器地址 String protocol = null == user.getUserEmail()?"":user.getUserEmail().getServerProtocol(); //邮箱服务器协议 String port = null == user.getUserEmail()?"":user.getUserEmail().getServerPort(); //邮箱服务器端口号 String jsonIds = request.getParameter("ids"); JSONArray jsonArray = JSONArray.fromObject(jsonIds); Object[] ids = jsonArray.toArray(); boolean flag = false; if(null != emailCount && !"".equals(emailCount)){ Mail mail = new Mail(); mail.setSender(emailCount); mail.setHost(emailServerHost); mail.setEmailPassword(emailPassword); mail.setEmailCount(emailCount); mail.setProtocol(protocol); mail.setMailTitle(StringUtil.SYSTEM_NAME+"账号和密码"); String userPassword = ""; for(Object str : ids){ User user1 = userService.getUser((Integer)str); userPassword = StringUtil.getRandomString(15); mail.setReceiver(user1.getEmail()); try { user1.setPassword(PasswordHash.createHash(userPassword)); } catch (Exception e) { e.printStackTrace(); } StringBuffer sb = new StringBuffer(); sb.append("尊敬的"+user1.getUsername()+":"); sb.append("<br>"); sb.append("  您好!您的"+StringUtil.SYSTEM_NAME+"登录账号:<font style='color:red'>"+user1.getLoginName()+"</font> 登录密码:<font style='color:green'>"+ userPassword+"</font> 您可以再登录系统之后在系统右上角修改登录密码!"); sb.append("<br><br>"); sb.append("  "+StringUtil.SYSTEM_NAME+"访问地址:"+StringUtil.SYSTEM_VISIT_URL+"/admin/login"); sb.append("<br><br>"); sb.append("                    "); sb.append("                    "); sb.append("            系统管理员"); mail.setMailMessage(sb.toString()); boolean flag1 = userService.updateUser(user1); if(flag1){ flag = MailUtil.sendMail(mail); } } if(flag){ map.put("flag", flag); map.put("info", "邮件发送成功!"); }else { map.put("flag", flag); map.put("info", "邮件发送失败!"); } }else { map.put("flag", flag); map.put("info", "邮件发送失败,发送邮件邮箱不存在,请在右上角配置发送邮件邮箱账号信息!"); } return map; } }