package cn.th.work.action;

import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import cn.th.work.entity.User;
import cn.th.work.service.UserService;
import cn.th.work.utils.ImportExecl;
import cn.th.work.utils.PageBean;
import cn.th.work.utils.WebUtils;

@Controller
public class UserController {
      
		@Resource
		private UserService userService;
		
	
		/**
		 * 用户登录
		 * @throws IOException 
		 * @throws ServletException 
		 */
		@RequestMapping("/login.action")
		public String login(User us,Model md,HttpServletRequest request)
				throws ServletException, IOException{
			
			//获取对象账户
			User user = userService.getUser(us.getUserName());
	
			//登录验证 (账户--密码)
			if(user!=null){
				//账户 密码正确  跳转首页
				if(user.getPwd().equals(us.getPwd())){
					request.getSession().setAttribute("user",user);
					request.getSession().setAttribute("img",user.getImg());
					return "/web/index.jsp";
					
				}else{
				//若密码不正确
			        md.addAttribute("msg","密码有误!");
			        return "/login.jsp";
				}
			}else{
			 //用户不存在
			 md.addAttribute("msg","用户不存在...");
			 return "/login.jsp";
			}
		}
		
		/**
		 * 修改密码
		 */
		@RequestMapping("/editPwd.action")
		public String editPwd(HttpServletRequest request){
			
			String newpass=request.getParameter("newpass");
			//获得User的session
			User user=(User) request.getSession().getAttribute("user");
			
			  user.setPwd(newpass);
			 //改密码
			 int num=userService.update(user);
			 if(num==1){
			  request.getSession().removeAttribute("user"); 
			 }
			 return "/login.jsp";
			 
			}
		
		/**
		 * 添加用户
		 * @throws Exception 
		 */
		@RequestMapping("/addUser.action")
		public String addUser(HttpServletRequest request,Model md) throws Exception{
			User user=upload(request);
			//增
			userService.save(user);
			System.out.println(user.getUserName());
			//查询的参数
			md.addAttribute("ke", user.getUserName());
			//返回跳转的页面
			md.addAttribute("hre", "getAllUser.action");
			//跳转到成功界面
			return "/web/tips.jsp";
		}
		
		/**
		 * 根据ID删除用户
		 */
		@RequestMapping("/deleteUser.action")
		public String deleteUser(HttpServletRequest request,Model md,String pageCurrent){
			
			Integer id=Integer.parseInt(request.getParameter("id"));
			
			//获取正在登陆用户
			User u=(User) request.getSession().getAttribute("user");
			
			if(u.getId()!=id){
				
			// 获取删除对象的ID
			userService.deleteById(id);
			//当前页
			md.addAttribute("pageCurrent",pageCurrent );
			//返回跳转的页面
			md.addAttribute("hre", "getAllUser.action");
			//跳转到成功界面
			return "/web/tips.jsp";
			
			}else{
			 request.setAttribute("msg","用户正在使用中...无法删除!");
			 return "/getAllUser.action";
			}
		}
		
		/**
		 * 查找一个用户:供修改
		 */
		@RequestMapping("/queryById.action")
		public String queryById(HttpServletRequest request,String pageCurrent,int id){
		   
		   //查
		   User u=userService.get(id);
		   request.setAttribute("u",u);
		   //当前页
		   request.getSession().setAttribute("pagecu", pageCurrent);
		   return "/web/updateUser.jsp";	
		}
		
		/**
		 * 修改选中的用户信息
		 * @throws Exception 
		 */
		@RequestMapping("/updateUser.action")
		public String updateUser(HttpServletRequest request,Model md) throws Exception{
			//执行修改操作
			userService.update(upload(request));
			//移除供修改的u  session
			request.getSession().removeAttribute("u");
			//当前页
			md.addAttribute("pageCurrent",request.getSession().getAttribute("pagecu") );
			//移除pagecu session
			request.getSession().removeAttribute("pagecu");
			//返回跳转的页面
			md.addAttribute("hre", "getAllUser.action");
			//跳转到成功界面
			return "/web/tips.jsp";
		}
		
		/**
		 * 批量删
		 */
		@RequestMapping("/deletePartUser.action")
		public String deletePartUser(HttpServletRequest request,String pageCurrent,Model md){
			
			String[] strs = request.getParameterValues("wId");
			
			Serializable[] ids = new Serializable[strs.length];
			
			for (int i = 0; i < strs.length; i++) {
				ids[i] = Integer.parseInt(strs[i]);

			}
			//批量删
			userService.deletePart(ids);
			//当前页
			md.addAttribute("pageCurrent",pageCurrent );
			//返回跳转的页面
			md.addAttribute("hre", "getAllUser.action");
			return "/web/tips.jsp";
		}
		
		/**
		 * 查询所有用户
		 */
		@RequestMapping("/getAllUser.action")
		public String getAllUser(Model md,String ke,String pageCurrent){
			
			Map<String, Object> map=new HashMap<String, Object>();
			if(WebUtils.isNotNull(ke)){
				map.put("ke", "%"+ke+"%");
			}
			
			//创建pageBean对象
			PageBean<User> bean=new PageBean<User>();
			bean.setTotalCount(userService.getCount(map));//设置总记录数
			if(WebUtils.isNotNull(pageCurrent)){
				if(Integer.parseInt(pageCurrent)<1){
					bean.setCurrentPage(1);//设置当前页
				}else if(Integer.parseInt(pageCurrent)>bean.getTotalPage()){
					bean.setCurrentPage(bean.getTotalPage());//设置当前页
				}else{
					bean.setCurrentPage(Integer.parseInt(pageCurrent));//设置当前页
				}
			}else{
				pageCurrent=""+1;
			}
			Integer firtPage=(bean.getCurrentPage()-1)*bean.getMaxNum();//起始条数
			Integer countPage=bean.getCurrentPage()*bean.getMaxNum()+1;//尾条数
			//给map添加值
			map.put("firtPage", firtPage);
			map.put("countPage", countPage);
			map.put("bean", bean);
			
			//执行查询所有用户
			List<User> list=userService.getAll(map);
			
			if(list.size()==0){
			 return "/web/error1.jsp"; 
			}
			
			bean.setDatas(list);
			md.addAttribute("bean",bean);
			md.addAttribute("ke", ke);
			
			//跳转到用户管理界面
			return "/web/advUser.jsp";
		}
		
		
		/**
		 * 上传图片
		 * @param request
		 * @return
		 * @throws Exception
		 */
		public User upload(HttpServletRequest request)
				throws Exception{
			//创建对象
			User user=new User();
			
			//图片上传
			//1.创建工厂对象
			FileItemFactory factory=new DiskFileItemFactory();
			//2.文件上传核心工具类
			ServletFileUpload upload=new ServletFileUpload(factory);
			//3.设置上传文件大小限制
			upload.setFileSizeMax(10*1024*1024);//单个文件大小限制
			upload.setSizeMax(50*1024*1024);//总文件大小限制
			upload.setHeaderEncoding("UTF-8");//对中文文件编码处理
			
			//判断是否是上传的表单
			//表单添加 enctype="multipart/form-data" 才能上传表单数据
			if(upload.isMultipartContent(request)){
			 //把请求数据转换成list集合
			 List<FileItem> list=upload.parseRequest(request);
			 
			 //FileItem代表请求的内容
			 for(FileItem item:list){
			   //jsp name属性值
			   String name=item.getFieldName();
			   //jsp 属性对应的value值
			   String value=new String(item.getString().getBytes("iso8859-1"),"utf-8");
			   
			   //保存其他表单数据
				 if("id".equals(name)){
				  user.setId(Integer.parseInt(value)); 
				 }
				 
				 if("userName".equals(name)){
			      user.setUserName(value); 
				 }
				 
				 if("pwd".equals(name)){
				  user.setPwd(value); 
				 }
				 
				 if("realName".equals(name)){
				  user.setRealName(value);
				 }
				 if("r_id".equals(name)){
				  user.setR_id(Integer.parseInt(value));
				 }
			   
			   //判断是否上传
			   if(!item.isFormField()){
				 
				 //获取tomcat所在工程的真实绝对路径
				 String realPath=request.getSession().getServletContext().getRealPath("/");
				 
				 //把item的文件内容写入另一个文件
				 //创建文件
				 File newFile=new File(realPath+"/web/images/"+item.getName());
				 item.write(newFile);
				 item.delete();//删除临时文件
				 
				 String img="web/images/"+item.getName();//数据库保存字段
				 user.setImg(img);
				 
			   }
			 }
			}
			return user;
		}
		

		//账户名异步验证
		@RequestMapping("/addUserAjax.action")
		public void addUserAjax(String userName,HttpServletResponse response) throws IOException{
			User user=userService.getUser(userName);
			if(user!=null){
				response.getWriter().write("账户名已存在");
			}else{
				response.getWriter().write("");
			}
		}
		
		 // 导入Excel文档
		@RequestMapping("/import.action")
		public String importExecl(HttpServletResponse response) {
			
			try {
				String title = "用户信息";
				String[] rowName = new String[] { "序号", "账号", "密码", "真实姓名","角色"};
					ImportExecl.importExecl(response, title, rowName,userService.getExecl());
				} catch (Exception e) {
					return "/web/error1.jsp";
				}
				return null;
			}
			
}
最近下载更多
zk1259  LV6 2024年8月22日
3334004690  LV10 2024年6月22日
zj20020510  LV5 2023年9月18日
renyuan  LV9 2022年12月7日
cx0127  LV13 2022年10月30日
testuser1234567  LV24 2022年6月30日
Zjy-0913  LV1 2022年6月11日
chasiubao  LV2 2022年6月9日
我是helloworld  LV23 2022年5月12日
lls0832  LV3 2022年5月3日
最近浏览更多
2022102154  LV1 3月27日
每天都要有长进 2024年10月25日
暂无贡献等级
zk1259  LV6 2024年8月22日
樱花味小然子  LV5 2024年7月2日
lun123456 2024年6月23日
暂无贡献等级
3334004690  LV10 2024年6月22日
lxzlxzl  LV1 2024年6月21日
李落辰 2024年6月17日
暂无贡献等级
李俊雄  LV3 2024年5月8日
2131234536546  LV7 2024年3月31日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友