Java项目:微信小程序快递柜管理系统(java+SSM+Vue+WXML+WXSS+mysql)

源码获取:俺的博客首页 "资源" 里下载! 

项目介绍

基于ssm的快递柜管理微信小程序系统

角色:管理员、用户两种角色,分为小程序端和后台管理两部分;

用户:用户通过小程序登录页面可以填写用户名和密码等信息进行登录操作,登录成功后,进入首页可以查看首页、公告资讯、驿站信息、快递信息、取件记录、我的 等功能模块,进行相对应操作;

管理员:管理员登录成功后进入到系统操作界面,可以对个人中心、驿站信息管理、用户管理、快递信息管理、取件记录管理、系统管理等功能模块进行相对应操作。


环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
4.数据库:MySql 5.7/8.0版本均可;
5.是否Maven项目:是;


技术栈

后端:Spring+SpringMvc+Mybaits+Vue

前端:WXML(类似于HTML)、WXSS(类似于CSS)和JavaScript


使用说明

后端运行:
1. 使用Navicat或者其它工具,在mysql中创建对应sql文件名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入后端项目ssm3957q,导入成功后请执行maven clean;maven install命令;
3. 将项目中application.yml配置文件中的数据库配置改为自己的配置;
4.运行项目,在浏览器中输入地址:
后台地址:http://localhost:8080/ssm25b40/admin/dist/index.html#/login
管理员:abo/abo

小程序端运行:
1.使用微信开发者工具导入小程序端源码mp-weixin;
2.运行项目,运行成功后输入用户名密码;
用户:用户名1/123456

首页展示页面:

驿站信息展示:

站点详情信息展示:

登录展示页面: 

快递单号搜索页面展示:

快递柜状态页面:

快递名称页面展示:

后台管理页面展示:

取件记录页面展示:

后台用户管理展示:

用户管理控制层: 

@Controller
@RequestMapping(value = "User")
public class UserController {
	@Autowired
	private UserMapper userMapper;

	@RequestMapping(value = "/login.do")
	public String login(HttpServletRequest request, User util, Model model) {
			
		HttpSession session = request.getSession();
		String code = (String) session.getAttribute("code");
		String userCode = request.getParameter("code");

		if (!code.equals(userCode)) {
			model.addAttribute("errMsg", "验证码错误");
			return "../login";
		}
		User user = userMapper.getObjectByName(util);
		if (null == user) {
			model.addAttribute("errMsg", "登录失败");
			return "../login";
		}
		boolean flag = user.getS_1().equals(util.getS_1());
		if (!flag) {
			model.addAttribute("errMsg", "登录失败");
			return "../login";
		}

		session.setAttribute("user_id", user.getId());
		session.setAttribute("user_type", user.getS_11());
		session.setAttribute("type1", "admin");
		session.setAttribute("type2", "admin");
		session.setAttribute("name", user.getS_2());
		session.setAttribute("username", user.getS_0());
		return "../index";
	}

	@RequestMapping(value = "/updatepwd.do")
	public String updatepwd(HttpServletRequest request, User util, Model model) {

		HttpSession session = request.getSession();
		int user_id = (Integer) session.getAttribute("user_id");
		User userTmp = userMapper.getById(user_id);

		String oldPwd = util.getS_3();
		String newPwd = util.getS_4();
		String rePwd = util.getS_5();
		if (null == oldPwd || "".equals(oldPwd) || null == newPwd
				|| "".equals(newPwd) || null == rePwd || "".equals(rePwd)) {
			model.addAttribute("errMsg", "密码信息不能为空");
			model.addAttribute("util", userTmp);
			return "User/updatepwd";
		}

		if (!newPwd.equals(rePwd)) {
			model.addAttribute("errMsg", "确认密码不一致");
			model.addAttribute("util", userTmp);
			return "User/updatepwd";
		}

		if (newPwd.equals(oldPwd)) {
			model.addAttribute("errMsg", "旧密码不能与新密码一致");
			model.addAttribute("util", userTmp);
			return "User/updatepwd";
		}

		if (!oldPwd.equals(userTmp.getS_1())) {
			model.addAttribute("errMsg", "旧密码错误");
			model.addAttribute("util", userTmp);
			return "User/updatepwd";
		}
		userTmp.setS_1(newPwd);
		userMapper.update(userTmp);
		return "User/uppwdok";
	}

	@RequestMapping(value = "/updateinfo.do")
	public String updateinfo(HttpServletRequest request, User util, Model model) {
		userMapper.update(util);
		model.addAttribute("util", util);
		model.addAttribute("errMsg", "个人信息修改成功");
		return "User/updateinfo";
	}

	@RequestMapping(value = "/beforepass.do")
	public String beforepass(HttpServletRequest request, User util, Model model) {
		HttpSession session = request.getSession();
		int user_id = (Integer) session.getAttribute("user_id");
		util = userMapper.getById(user_id);
		model.addAttribute("util", util);
		return "User/updatepwd";
	}

	@RequestMapping(value = "/beforeinfo.do")
	public String beforeinfo(HttpServletRequest request, User util, Model model) {
		HttpSession session = request.getSession();
		int user_id = (Integer) session.getAttribute("user_id");
		util = userMapper.getById(user_id);
		model.addAttribute("util", util);
		return "User/updateinfo";
	}

	@RequestMapping(value = "/register.do")
	public String register(HttpServletRequest request, User util, Model model) {
		HttpSession session = request.getSession();
		String code = (String) session.getAttribute("code");
		String userCode = request.getParameter("code");
		if (!code.equals(userCode)) {
			model.addAttribute("errMsg", "验证码错误");
			return "../register";
		}
		User user = userMapper.getObjectByName(util);
		if (null != user) {
			model.addAttribute("errMsg", "该用户名已经存在");
			return "../register";
		}
		userMapper.insert(util);
		model.addAttribute("registerMsg", "恭喜您,注册成功!");
		return "../login";
	}

	@RequestMapping(value = "/initPage.do")
	public String initPage(HttpServletRequest request, Model model) {
		return "User/saveOrUpdate";
	}

	@RequestMapping(value = "/selectList.do")
	public String selectList(HttpServletRequest request, User util, Model model) {
		util = userMapper.getById(util.getId());
		model.addAttribute("util", util);
		return "User/saveOrUpdate";
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	@RequestMapping(value = "/getAllDataInPage.do")
	public String getAllDataInPage(HttpServletRequest request, User util, Model model) {
		String field = request.getParameter("field");
		String fieldValue = request.getParameter("fieldValue");
		String pageNo = request.getParameter("pageModel.currentPageNo");
		int currentPageNo = 1;
		try {
			fieldValue = new String(fieldValue.getBytes("UTF-8"), "UTF-8");
			currentPageNo = Integer.parseInt(pageNo);
		} catch (Exception e) {
		}
		List<User> list = userMapper.getList(field, fieldValue);
		PageModel pageModel = new PageModel();
		pageModel = pageModel.getUtilByController(list, currentPageNo);
		model.addAttribute("pageModel", pageModel);
		model.addAttribute("fieldValue", fieldValue);
		model.addAttribute("field", field);
		return "User/find";
	}

	@RequestMapping(value = "/deleteManyDataByIds.do")
	public String deleteManyDataByIds(HttpServletRequest request, User util,
			Model model) {
		String ids[] = request.getParameterValues("id");
		for (String id : ids) {
			util = new User();
			util.setId(Integer.parseInt(id));
			try {
			userMapper.deleteById(util.getId());
		} catch (Exception e) {
		}
		}
		return this.getAllDataInPage(request, util, model);
	}

	@RequestMapping(value = "/deleteUtil.do")
	public String deleteUtil(HttpServletRequest request, User util, Model model) {
		try {
			userMapper.deleteById(util.getId());
		} catch (Exception e) {
		}
		return this.getAllDataInPage(request, util, model);
	}

	@RequestMapping(value = "/saveOrupdate.do")
	public String saveOrupdate(HttpServletRequest request, User util,
			Model model) {
		List<User> list = userMapper.getList("s_0", util.getS_0());
		if (0 == util.getId()) {
			if (list.size() > 0) {
				model.addAttribute("util", util);
				model.addAttribute("errMsg", "该信息已存在!");
				return "User/saveOrUpdate";
			}
			userMapper.insert(util);
		} else {
			if (list.size() > 1) {
				model.addAttribute("util", util);
				model.addAttribute("errMsg", "该信息已存在!");
				return "User/saveOrUpdate";
			}
			userMapper.update(util);
		}
		return this.getAllDataInPage(request, util, model);
	}

	@RequestMapping(value = "/upload.do")
	public String upload(@RequestParam MultipartFile[] myfiles,
			HttpServletRequest request, User util, Model model)
			throws IOException {
		for (MultipartFile file : myfiles) {
			if (!file.isEmpty()) {
				String fileName = file.getOriginalFilename();
				String path = request.getSession().getServletContext()
						.getRealPath("image")
						+ File.separator;
				String uploadName = new SimpleDateFormat("yyyyMMddHHmmss")
						.format(new Date()) + fileName;
				File localFile = new File(path + uploadName);
				file.transferTo(localFile);
				util.setS_0(uploadName);
				util.setS_1(fileName);
				util.setS_2(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
						.format(new Date()));
			}

			if (0 == util.getId()) {
				userMapper.insert(util);
			} else {
				userMapper.update(util);
			}
			return this.getAllDataInPage(request, util, model);
		}

		return this.getAllDataInPage(request, util, model);
	}
}

快递管理控制层:

/**
 * function:MVC的C层,也就是控制层,这个Controller类可以实现对KuaidiManage这个类的控制,接收浏览器发送的请求并处理。KuaidiManage类的具体介绍,在com.edu.model.KuaidiManage类下,本处不在赘述
 * 本文件和SSM结构的关系:SSM结构的架构就是JSP(浏览器)发送请求,然后请求到对应的Controller,然后Controller调用Service,Service调用Mapper,mapper调用数据库实现增删改查,最后由Controller返回到JSP完成全过程。
 * 本文件对应Controller,负责表KuaidiManage
 * 箭头结构:JSP->[Controller]->Service->Mapper->数据库-->JSP
 * MVC层级划分:本文件在MVC模式中的C层,即控制层
 */
@Controller//说明这个文件是MVC三层架构的Controller,加了这个注解之后,spring可以自动扫描到这个类,可以自动对类进行配置,这里也体现使用了spring框架
@RequestMapping(value = "KuaidiManage")//定义请求的路径,路径为KuaidiManage,定义之后,浏览器获取数据就根据这个路径来进行访问,其他的同理,只要有@RequestMapping注解的都是这样
public class KuaidiManageController {//Controller包含在名字中是一种规范
	@Autowired//自动注入,Spring的注解,这样的话,程序就可以自动把这个类扫进来,不需要手动创建对象
	private KuaidiManageService kuaidiManageService;//调用数据库mapper,mybatis框架的内容,可以实现增删改查
	@Autowired//自动注入,Spring的注解,这样的话,程序就可以自动把这个类扫进来,不需要手动创建对象
	private UserService userService;//调用数据库mapper,mybatis框架的内容,可以实现增删改查
	@Autowired//自动注入,Spring的注解,这样的话,程序就可以自动把这个类扫进来,不需要手动创建对象
	private PingpaiService pingpaiService;//调用数据库mapper,mybatis框架的内容,可以实现增删改查
	@Autowired//自动注入,Spring的注解,这样的话,程序就可以自动把这个类扫进来,不需要手动创建对象
	private KuaidiStatusService kuaidiStatusService;//调用数据库mapper,mybatis框架的内容,可以实现增删改查

	@RequestMapping(value = "/initPage.do")//设置添加跳转的页面
	public String initPage(HttpServletRequest request, Model model) {//在点击添加的时候加载一些预置代码
		List<User> listUser = userService.getList(null, null);
		model.addAttribute("listUser", listUser);
		List<Pingpai> listPingpai = pingpaiService.getList(null, null);
		model.addAttribute("listPingpai", listPingpai);
		List<KuaidiStatus> listKuaidiStatus = kuaidiStatusService.getList(null, null);
		model.addAttribute("listKuaidiStatus", listKuaidiStatus);
		return "KuaidiManage/saveOrUpdate";//跳转到编辑页面
	}

	@RequestMapping(value = "/selectList.do")
	public String selectList(HttpServletRequest request, KuaidiManage kuaidiManage, Model model) {//获取列表,最后跳转到列表查询页面,获取的是
		kuaidiManage = kuaidiManageService.getById(kuaidiManage.getId());//获取要更新的对象
		model.addAttribute("util", kuaidiManage);//传到前台
		List<User> listUser = userService.getList(null, null);
		model.addAttribute("listUser", listUser);
		List<Pingpai> listPingpai = pingpaiService.getList(null, null);
		model.addAttribute("listPingpai", listPingpai);
		List<KuaidiStatus> listKuaidiStatus = kuaidiStatusService.getList(null, null);
		model.addAttribute("listKuaidiStatus", listKuaidiStatus);
		return "KuaidiManage/saveOrUpdate";//跳转到编辑页面
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	@RequestMapping(value = "/getAllDataInPage.do")//获取列表的数据
	public String getAllDataInPage(HttpServletRequest request, Model model) {
		String field = request.getParameter("field");
		String fieldValue = request.getParameter("fieldValue");//当前端有查询的时候,这里的fieldValue就不是空,否则是空
		try {
			fieldValue = new String(fieldValue.getBytes("UTF-8"), "UTF-8");//防止乱码
		} catch (Exception e) {}
		String pageNo = request.getParameter("pageModel.currentPageNo");//获取当前页码是多少
		int currentPageNo = 1;//设置初始化页码是1
		try{
			currentPageNo = Integer.parseInt(pageNo);//防止前端传的不是数字
		}catch(Exception e){
		}
		List<KuaidiManage> list = kuaidiManageService.getList(field, fieldValue);//获取列表数据
		List<KuaidiManage> listKuaidiManage = new ArrayList<KuaidiManage>();
		HttpSession session = request.getSession();
		int user_id = (Integer) session.getAttribute("user_id");
		String user_type = (String) session.getAttribute("user_type");
		for (KuaidiManage temp : list) {
			if (user_id == temp.getUser().getId()) {
				listKuaidiManage.add(temp);
			}
		}
		if (!"admin".equals(user_type)) {
			//list = listKuaidiManage;
		}

		PageModel pageModel = new PageModel();
		pageModel = pageModel.getUtilByController(list, currentPageNo);
		model.addAttribute("pageModel", pageModel);//查询后,把查询的条件类型回显到jsp中
		model.addAttribute("fieldValue", fieldValue);//查询后,把查询的关键字回显到jsp中
		model.addAttribute("field", field);
		return "KuaidiManage/find";//跳转到find.jsp页面,也就是列表页面,KuaidiManage文件夹下面	
}

	@RequestMapping(value = "/deleteUtil.do")
	public String deleteUtil(HttpServletRequest request, KuaidiManage kuaidiManage, Model model) {//删除的代码
		try{
			kuaidiManageService.deleteById(kuaidiManage.getId());//根据ID删除
		}catch(Exception e){
		}
		return this.getAllDataInPage(request, model);//返回到列表页面,对应admin文件夹下的KuaidiManage文件夹下的find.jsp
	}

	@RequestMapping(value = "/deleteManyDataByIds.do")//批量删除                    
	public String deleteManyDataByIds(HttpServletRequest request, User user,Model model) {                                                 
		String ids[] = request.getParameterValues("id"); //获取ID的列表              
		for (String id : ids) {//考虑可能传多个id                                          
			user = new User();                                             
			user.setId(Integer.parseInt(id));                             
			try{
				kuaidiManageService.deleteById(user.getId());//删除的核心代码
			}catch(Exception e){}
		}                                                                
		return this.getAllDataInPage(request, model);                    
	}                                                                  

	@RequestMapping(value = "/saveOrupdate.do")//这里是编辑或者添加的具体代码
	public String saveOrupdate(HttpServletRequest request, KuaidiManage util, Model model) {
		List<KuaidiManage> list = kuaidiManageService.getList("fahuo", util.getFahuo());
		List<User> listUser = userService.getList(null, null);
		model.addAttribute("listUser", listUser);
		List<Pingpai> listPingpai = pingpaiService.getList(null, null);
		model.addAttribute("listPingpai", listPingpai);
		List<KuaidiStatus> listKuaidiStatus = kuaidiStatusService.getList(null, null);
		model.addAttribute("listKuaidiStatus", listKuaidiStatus);
		if (0 == util.getId()) {
			if (list.size() > 0) {
				model.addAttribute("util", util);
				model.addAttribute("errMsg", "该信息已存在!");
				return "KuaidiManage/saveOrUpdate";
			}
			kuaidiManageService.insert(util);
		} else {
			if (list.size() > 1) {
				model.addAttribute("util", util);
				model.addAttribute("errMsg", "该信息已存在!");
				return "KuaidiManage/saveOrUpdate";
			}
			kuaidiManageService.update(util);
		}
		return this.getAllDataInPage(request, model);
	}

@RequestMapping(value = "/export.do")
	public void export(HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {//获取列表,最后跳转到列表查询页面,获取的是
		Map<String, Object> row2 = new LinkedHashMap<String, Object>();
		Map<String, Object> row = new LinkedHashMap<String, Object>();
		String field = request.getParameter("field");
		String fieldValue = request.getParameter("fieldValue");//当前端有查询的时候,这里的fieldValue就不是空,否则是空
		try {
			fieldValue = new String(fieldValue.getBytes("UTF-8"), "UTF-8");//防止乱码
		} catch (Exception e) {}
		List<KuaidiManage> list = kuaidiManageService.getList(field, fieldValue);//获取列表数据
		Class p= KuaidiManage.class;
		Field[] fields = p.getDeclaredFields();
		for(KuaidiManage kuaidiManage:list) {
			for (int j = 0; j < fields.length; j++) {
				System.out.println(fields[j].getName().toLowerCase());
				Field declaredField = p.getDeclaredField(fields[j].getName());
				declaredField.setAccessible(true);
//				Tip tip = declaredField.getAnnotation(Tip.class);
 					//System.out.println(annotation.age()+":"+annotation.name());
					String name = declaredField.getAnnotation(Tip.class).value();
					if(name == null){
						continue;
					}
 					if(declaredField.getType().toString().equals("class java.lang.String")){
						row2.put(name, declaredField.get(kuaidiManage));

					}else if(declaredField.getType().toString().equals("int")){
						row2.put(name, declaredField.get(kuaidiManage));
					}
					if(declaredField.getType().toString().equals("class com.edu.model.User")){
 						row2.put(name, ((User)declaredField.get(kuaidiManage)).getS_0());
					}
					if(declaredField.getType().toString().equals("class com.edu.model.Pingpai")){
 						row2.put(name, ((Pingpai)declaredField.get(kuaidiManage)).getName());
					}
					if(declaredField.getType().toString().equals("class com.edu.model.KuaidiStatus")){
 						row2.put(name, ((KuaidiStatus)declaredField.get(kuaidiManage)).getName());
					}
			}
			row.putAll(row2);
			row2 = new LinkedHashMap<String, Object>();
		}
		String fileName = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(0,Thread.currentThread().getContextClassLoader().getResource("").getPath().length()-16)
		+"/upload/"+UUID.randomUUID().toString()+".xls";
		ArrayList<Map<String, Object>> rows = CollUtil.newArrayList(row);
		ExcelWriter writer = null;

		try {
			writer = ExcelUtil.getWriter(fileName);
		} catch (Exception e){

		}
		try {
			// 一次性写出内容,使用默认样式,强制输出标题
			writer.write(rows, true);
		} catch (Exception e){

		}
		try {
			// 关闭writer,释放内存
			writer.close();//其实不写这句在功能上也可以,但是为了规范,最好写上
		} catch (Exception e){

		}
 		//转码,免得文件名中文乱码
//		fileName = URLEncoder.encode(fileName,"UTF-8");
		//设置文件下载头
		response.addHeader("Content-Disposition", "attachment;filename=" + UUID.randomUUID().toString()+".xls");
		//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
		response.setContentType("multipart/form-data");
		BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
		int len = 0;
		InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
		while((len = bis.read()) != -1){
			out.write(len);
			out.flush();
		}
		out.close();
	}
}

快递状态管理控制层: 

/**
 * function:MVC的C层,也就是控制层,这个Controller类可以实现对KuaidiStatus这个类的控制,接收浏览器发送的请求并处理。KuaidiStatus类的具体介绍,在com.edu.model.KuaidiStatus类下,本处不在赘述
 * 本文件和SSM结构的关系:SSM结构的架构就是JSP(浏览器)发送请求,然后请求到对应的Controller,然后Controller调用Service,Service调用Mapper,mapper调用数据库实现增删改查,最后由Controller返回到JSP完成全过程。
 * 本文件对应Controller,负责表KuaidiStatus
 * 箭头结构:JSP->[Controller]->Service->Mapper->数据库-->JSP
 * MVC层级划分:本文件在MVC模式中的C层,即控制层
 */
@Controller//说明这个文件是MVC三层架构的Controller,加了这个注解之后,spring可以自动扫描到这个类,可以自动对类进行配置,这里也体现使用了spring框架
@RequestMapping(value = "KuaidiStatus")//定义请求的路径,路径为KuaidiStatus,定义之后,浏览器获取数据就根据这个路径来进行访问,其他的同理,只要有@RequestMapping注解的都是这样
public class KuaidiStatusController {//Controller包含在名字中是一种规范
	@Autowired//自动注入,Spring的注解,这样的话,程序就可以自动把这个类扫进来,不需要手动创建对象
	private KuaidiStatusService kuaidiStatusService;//调用数据库mapper,mybatis框架的内容,可以实现增删改查

	@RequestMapping(value = "/initPage.do")//设置添加跳转的页面
	public String initPage(HttpServletRequest request, Model model) {//在点击添加的时候加载一些预置代码
		return "KuaidiStatus/saveOrUpdate";//跳转到编辑页面
	}

	@RequestMapping(value = "/selectList.do")
	public String selectList(HttpServletRequest request, KuaidiStatus kuaidiStatus, Model model) {//获取列表,最后跳转到列表查询页面,获取的是
		kuaidiStatus = kuaidiStatusService.getById(kuaidiStatus.getId());//获取要更新的对象
		model.addAttribute("util", kuaidiStatus);//传到前台
		return "KuaidiStatus/saveOrUpdate";//跳转到编辑页面
	}

	@SuppressWarnings({ "rawtypes", "unchecked" })
	@RequestMapping(value = "/getAllDataInPage.do")//获取列表的数据
	public String getAllDataInPage(HttpServletRequest request, Model model) {
		String field = request.getParameter("field");
		String fieldValue = request.getParameter("fieldValue");//当前端有查询的时候,这里的fieldValue就不是空,否则是空
		try {
			fieldValue = new String(fieldValue.getBytes("UTF-8"), "UTF-8");//防止乱码
		} catch (Exception e) {}
		String pageNo = request.getParameter("pageModel.currentPageNo");//获取当前页码是多少
		int currentPageNo = 1;//设置初始化页码是1
		try{
			currentPageNo = Integer.parseInt(pageNo);//防止前端传的不是数字
		}catch(Exception e){
		}
		List<KuaidiStatus> list = kuaidiStatusService.getList(field, fieldValue);//获取列表数据
		PageModel pageModel = new PageModel();
		pageModel = pageModel.getUtilByController(list, currentPageNo);
		model.addAttribute("pageModel", pageModel);//查询后,把查询的条件类型回显到jsp中
		model.addAttribute("fieldValue", fieldValue);//查询后,把查询的关键字回显到jsp中
		model.addAttribute("field", field);
		return "KuaidiStatus/find";//跳转到find.jsp页面,也就是列表页面,KuaidiStatus文件夹下面	
}

	@RequestMapping(value = "/deleteUtil.do")
	public String deleteUtil(HttpServletRequest request, KuaidiStatus kuaidiStatus, Model model) {//删除的代码
		try{
			kuaidiStatusService.deleteById(kuaidiStatus.getId());//根据ID删除
		}catch(Exception e){
		}
		return this.getAllDataInPage(request, model);//返回到列表页面,对应admin文件夹下的KuaidiStatus文件夹下的find.jsp
	}

	@RequestMapping(value = "/deleteManyDataByIds.do")//批量删除                    
	public String deleteManyDataByIds(HttpServletRequest request, User user,Model model) {                                                 
		String ids[] = request.getParameterValues("id"); //获取ID的列表              
		for (String id : ids) {//考虑可能传多个id                                          
			user = new User();                                             
			user.setId(Integer.parseInt(id));                             
			try{
				kuaidiStatusService.deleteById(user.getId());//删除的核心代码
			}catch(Exception e){}
		}                                                                
		return this.getAllDataInPage(request, model);                    
	}                                                                  

	@RequestMapping(value = "/saveOrupdate.do")//这里是编辑或者添加的具体代码
	public String saveOrupdate(HttpServletRequest request, KuaidiStatus util, Model model) {
		List<KuaidiStatus> list = kuaidiStatusService.getList("name", util.getName());
		if (0 == util.getId()) {
			if (list.size() > 0) {
				model.addAttribute("util", util);
				model.addAttribute("errMsg", "该信息已存在!");
				return "KuaidiStatus/saveOrUpdate";
			}
			kuaidiStatusService.insert(util);
		} else {
			if (list.size() > 1) {
				model.addAttribute("util", util);
				model.addAttribute("errMsg", "该信息已存在!");
				return "KuaidiStatus/saveOrUpdate";
			}
			kuaidiStatusService.update(util);
		}
		return this.getAllDataInPage(request, model);
	}

@RequestMapping(value = "/export.do")
	public void export(HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {//获取列表,最后跳转到列表查询页面,获取的是
		Map<String, Object> row2 = new LinkedHashMap<String, Object>();
		Map<String, Object> row = new LinkedHashMap<String, Object>();
		String field = request.getParameter("field");
		String fieldValue = request.getParameter("fieldValue");//当前端有查询的时候,这里的fieldValue就不是空,否则是空
		try {
			fieldValue = new String(fieldValue.getBytes("UTF-8"), "UTF-8");//防止乱码
		} catch (Exception e) {}
		List<KuaidiStatus> list = kuaidiStatusService.getList(field, fieldValue);//获取列表数据
		Class p= KuaidiStatus.class;
		Field[] fields = p.getDeclaredFields();
		for(KuaidiStatus kuaidiStatus:list) {
			for (int j = 0; j < fields.length; j++) {
				System.out.println(fields[j].getName().toLowerCase());
				Field declaredField = p.getDeclaredField(fields[j].getName());
				declaredField.setAccessible(true);
//				Tip tip = declaredField.getAnnotation(Tip.class);
 					//System.out.println(annotation.age()+":"+annotation.name());
					String name = declaredField.getAnnotation(Tip.class).value();
					if(name == null){
						continue;
					}
 					if(declaredField.getType().toString().equals("class java.lang.String")){
						row2.put(name, declaredField.get(kuaidiStatus));

					}else if(declaredField.getType().toString().equals("int")){
						row2.put(name, declaredField.get(kuaidiStatus));
					}
			}
			row.putAll(row2);
			row2 = new LinkedHashMap<String, Object>();
		}
		String fileName = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(0,Thread.currentThread().getContextClassLoader().getResource("").getPath().length()-16)
		+"/upload/"+UUID.randomUUID().toString()+".xls";
		ArrayList<Map<String, Object>> rows = CollUtil.newArrayList(row);
		ExcelWriter writer = null;

		try {
			writer = ExcelUtil.getWriter(fileName);
		} catch (Exception e){

		}
		try {
			// 一次性写出内容,使用默认样式,强制输出标题
			writer.write(rows, true);
		} catch (Exception e){

		}
		try {
			// 关闭writer,释放内存
			writer.close();//其实不写这句在功能上也可以,但是为了规范,最好写上
		} catch (Exception e){

		}
 		//转码,免得文件名中文乱码
//		fileName = URLEncoder.encode(fileName,"UTF-8");
		//设置文件下载头
		response.addHeader("Content-Disposition", "attachment;filename=" + UUID.randomUUID().toString()+".xls");
		//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
		response.setContentType("multipart/form-data");
		BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
		int len = 0;
		InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName)));
		while((len = bis.read()) != -1){
			out.write(len);
			out.flush();
		}
		out.close();
	}
}

源码获取:俺的博客首页 "资源" 里下载!

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq1334611189

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值