From 32e9c936d63754a727ef2da4eaf33a4c9bcc2c59 Mon Sep 17 00:00:00 2001
From: ppdxzz <2535414380@qq.com>
Date: Tue, 18 Feb 2020 22:19:05 +0800
Subject: [PATCH] =?UTF-8?q?2020.2.18=20=E5=BC=80=E5=8F=91=E8=AE=BF?=
=?UTF-8?q?=E5=AE=A2=E6=A8=A1=E5=9D=97=E5=90=8E=E5=8F=B0=E7=9A=84CRUD?=
=?UTF-8?q?=E4=BB=A5=E5=8F=8A=E5=AF=BC=E5=87=BA=E3=80=81=E6=B3=A8=E9=94=80?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/workspace.xml | 142 +++++++-----
.../ppdxzz/controller/StudentController.java | 12 +
.../ppdxzz/controller/VisitorController.java | 161 +++++++++++++
src/main/java/cn/ppdxzz/dao/StudentDao.java | 2 +-
src/main/java/cn/ppdxzz/dao/VisitorDao.java | 55 +++++
src/main/java/cn/ppdxzz/domain/Visitor.java | 112 +++++++++
.../cn/ppdxzz/service/VisitorService.java | 26 +++
.../service/impl/VisitorServiceImpl.java | 101 +++++++++
src/main/webapp/WEB-INF/jsp/admin-edit.jsp | 8 +
src/main/webapp/WEB-INF/jsp/main.jsp | 14 +-
.../webapp/WEB-INF/jsp/regist_visitor.jsp | 17 ++
src/main/webapp/WEB-INF/jsp/student-add.jsp | 46 +++-
src/main/webapp/WEB-INF/jsp/student-edit.jsp | 108 ++++++++-
src/main/webapp/WEB-INF/jsp/student-list.jsp | 6 +-
src/main/webapp/WEB-INF/jsp/visitor-list.jsp | 214 ++++++++++++++++++
.../webapp/WEB-INF/jsp/visitor-success.jsp | 19 ++
.../ppdxzz/controller/StudentController.class | Bin 5621 -> 5971 bytes
target/classes/cn/ppdxzz/utils/LocalIp.class | Bin 0 -> 1255 bytes
.../ppdxzz/controller/StudentController.class | Bin 5621 -> 5971 bytes
target/hellossm/WEB-INF/jsp/admin-edit.jsp | 8 +
target/hellossm/WEB-INF/jsp/main.jsp | 14 +-
target/hellossm/WEB-INF/jsp/student-add.jsp | 63 +++++-
target/hellossm/WEB-INF/jsp/student-edit.jsp | 108 ++++++++-
target/hellossm/WEB-INF/jsp/student-list.jsp | 6 +-
宿管系统(SSM框架)日进度.md | 1 +
25 files changed, 1135 insertions(+), 108 deletions(-)
create mode 100644 src/main/java/cn/ppdxzz/controller/VisitorController.java
create mode 100644 src/main/java/cn/ppdxzz/dao/VisitorDao.java
create mode 100644 src/main/java/cn/ppdxzz/domain/Visitor.java
create mode 100644 src/main/java/cn/ppdxzz/service/VisitorService.java
create mode 100644 src/main/java/cn/ppdxzz/service/impl/VisitorServiceImpl.java
create mode 100644 src/main/webapp/WEB-INF/jsp/regist_visitor.jsp
create mode 100644 src/main/webapp/WEB-INF/jsp/visitor-list.jsp
create mode 100644 src/main/webapp/WEB-INF/jsp/visitor-success.jsp
create mode 100644 target/classes/cn/ppdxzz/utils/LocalIp.class
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index f6abfcf..8b880b4 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -8,17 +8,16 @@
-
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
@@ -29,9 +28,9 @@
@@ -76,12 +75,12 @@
+
+
+
-
-
-
@@ -89,8 +88,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -195,9 +210,11 @@
+
+
@@ -207,7 +224,7 @@
-
+
@@ -255,6 +272,9 @@
+
+
+
@@ -274,90 +294,90 @@
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
@@ -378,10 +398,14 @@
-
+
+
+
+
+
-
+
diff --git a/src/main/java/cn/ppdxzz/controller/StudentController.java b/src/main/java/cn/ppdxzz/controller/StudentController.java
index 5c04675..ecc6e9e 100644
--- a/src/main/java/cn/ppdxzz/controller/StudentController.java
+++ b/src/main/java/cn/ppdxzz/controller/StudentController.java
@@ -6,6 +6,7 @@ import com.github.pagehelper.PageInfo;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
@@ -16,6 +17,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
import java.util.List;
/**
@@ -131,6 +133,16 @@ public class StudentController {
}
+ @RequestMapping("/editStudent")
+ public ModelAndView editStudent(HttpServletRequest request) throws Exception {
+ ModelAndView mv = new ModelAndView();
+ request.setCharacterEncoding("utf-8");
+ String sno = request.getParameter("sno");
+ Student stu = studentService.findBySno(sno);
+ mv.addObject("stu",stu);
+ mv.setViewName("student-edit");
+ return mv;
+ }
/**
* 修改学生信息
* @param student
diff --git a/src/main/java/cn/ppdxzz/controller/VisitorController.java b/src/main/java/cn/ppdxzz/controller/VisitorController.java
new file mode 100644
index 0000000..c07980f
--- /dev/null
+++ b/src/main/java/cn/ppdxzz/controller/VisitorController.java
@@ -0,0 +1,161 @@
+package cn.ppdxzz.controller;
+
+import cn.ppdxzz.domain.Visitor;
+import cn.ppdxzz.service.VisitorService;
+import com.github.pagehelper.PageInfo;
+import org.apache.commons.io.IOUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * Description:
+ *
+ * @Date: 2020/2/18 16:26
+ * @Author: PeiChen
+ */
+@Controller
+@RequestMapping("/visitor")
+public class VisitorController {
+
+ private VisitorService visitorService;
+
+ @Autowired
+ public void setVisitorService(VisitorService visitorService) {
+ this.visitorService = visitorService;
+ }
+
+ @RequestMapping("/login")
+ public String register() {
+ return "regist_visitor";
+ }
+
+ /**
+ * 来访登记实现(C操作)
+ * @param visitor
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/add")
+ public ModelAndView addVisitor(Visitor visitor) throws Exception {
+ ModelAndView mv = new ModelAndView();
+ if (visitor == null || visitor.getName() == null || visitor.getSno() == null || visitor.getPhone() == null || visitor.getPlace() == null) {
+ mv.addObject("error_msg","来访登记失败,请重新登记!");
+ mv.setViewName("regist_visitor");
+ return mv;
+ }
+ if (visitor.getId() == null || "".trim().equals(visitor.getId())) {
+ String uuid = UUID.randomUUID().toString().replace("-", "");
+ visitor.setId(uuid);
+ }
+ String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
+ visitor.setBegin_date(date);//设置来访时间为提交来访登记时间
+ //先设置离开时间为空串,后续注销时再修改为注销时系统时间
+ if (visitor.getEnd_date() == null || "".trim().equals(visitor.getEnd_date())) {
+ visitor.setEnd_date("");
+ }
+ visitorService.add(visitor);
+ mv.addObject("id",visitor.getId());
+ mv.setViewName("visitor-success");
+ return mv;
+ }
+
+ /**
+ * 访客记录注销
+ * @param request
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/logout")
+ public ModelAndView logout(HttpServletRequest request) throws Exception {
+ ModelAndView mv = new ModelAndView();
+ String id = request.getParameter("id");
+ if (id == null || "".trim().equals(id)) {
+ mv.addObject("logout_msg","系统繁忙,请稍后再试!");
+ mv.setViewName("error_msg");
+ }
+ String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
+ visitorService.logout(id,date);
+ mv.addObject("logout_msg","注销成功");
+ mv.setViewName("regist_visitor");
+ return mv;
+ }
+
+ /**
+ * 管理员手动注销来访状态
+ * @param request
+ * @param response
+ * @throws Exception
+ */
+ @RequestMapping("/updateStatus")
+ public void updateStatus(HttpServletRequest request,HttpServletResponse response) throws Exception {
+ request.setCharacterEncoding("utf-8");
+ response.setCharacterEncoding("utf-8");
+ PrintWriter writer = response.getWriter();
+ String id = request.getParameter("id");
+ if (id == null || "".trim().equals(id)) {
+ writer.write("false");
+ return;
+ }
+ String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
+ visitorService.logout(id,date);
+ writer.write("true");
+ }
+
+ /**
+ * 查询所有访客记录
+ * @param page
+ * @param size
+ * @param request
+ * @param response
+ * @return
+ * @throws Exception
+ */
+ @RequestMapping("/findAll")
+ public ModelAndView findAll(@RequestParam(name = "page",required = true,value = "1") int page, @RequestParam(name = "size",required = true,value = "4") int size,HttpServletRequest request,HttpServletResponse response) throws Exception {
+ request.setCharacterEncoding("utf-8");
+ response.setCharacterEncoding("utf-8");
+ ModelAndView mv = new ModelAndView();
+ List visitors = null;
+ String keyword = request.getParameter("keyword");
+ if (keyword == null || "".trim().equals(keyword) || keyword.length() == 0) {
+ visitors = visitorService.findAll(page,size);
+ }else {
+ visitors = visitorService.search(page,size,keyword);
+ }
+ PageInfo pageInfo = new PageInfo(visitors);
+ mv.addObject("pageInfo",pageInfo);
+ mv.setViewName("visitor-list");
+
+ return mv;
+ }
+
+ /**
+ * 导出访客信息
+ * @param response
+ * @throws Exception
+ */
+ @RequestMapping("/visitorInfo")
+ public void export(HttpServletResponse response) throws Exception {
+ InputStream is = visitorService.getInputStream();
+ response.setContentType("application/vnd.ms-excel");
+ response.setHeader("contentDisposition","attachment;filename=visitorInfo.xls");
+ ServletOutputStream outputStream = response.getOutputStream();
+ IOUtils.copy(is,outputStream);
+
+ }
+}
diff --git a/src/main/java/cn/ppdxzz/dao/StudentDao.java b/src/main/java/cn/ppdxzz/dao/StudentDao.java
index 689e06d..d8da82e 100644
--- a/src/main/java/cn/ppdxzz/dao/StudentDao.java
+++ b/src/main/java/cn/ppdxzz/dao/StudentDao.java
@@ -56,7 +56,7 @@ public interface StudentDao {
void delete(String sno) throws Exception;
/**
- * 修改学生信息
+ * 根据id修改学生信息
* @param student
* @throws Exception
*/
diff --git a/src/main/java/cn/ppdxzz/dao/VisitorDao.java b/src/main/java/cn/ppdxzz/dao/VisitorDao.java
new file mode 100644
index 0000000..a4bb26f
--- /dev/null
+++ b/src/main/java/cn/ppdxzz/dao/VisitorDao.java
@@ -0,0 +1,55 @@
+package cn.ppdxzz.dao;
+
+import cn.ppdxzz.domain.Visitor;
+import org.apache.ibatis.annotations.Insert;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * Description:访客持久层
+ *
+ * @Date: 2020/2/18 16:27
+ * @Author: PeiChen
+ */
+@Repository
+public interface VisitorDao {
+
+ /**
+ * 登记到访信息
+ * @param visitor
+ * @throws Exception
+ */
+ @Insert("insert into visitors(id,name,sno,phone,place,begin_date,end_date,visit_result) values(#{id},#{name},#{sno},#{phone},#{place},#{begin_date},#{end_date},#{visit_result})")
+ void add(Visitor visitor) throws Exception;
+
+ /**
+ * 按时间晚的优先显示查询所有访客记录
+ * @return
+ * @throws Exception
+ */
+ @Select("select * from visitors order by begin_date desc")
+ List findAll() throws Exception;
+
+ /**
+ * 访客离开后修改离开时间(访客记录注销)
+ * @param id
+ * @param end_date
+ * @throws Exception
+ */
+ @Update("update visitors set end_date = #{end_date} where id = #{id}")
+ void logout(@Param(value = "id") String id,@Param(value = "end_date") String end_date) throws Exception;
+
+ /**
+ * 根据关键字模糊查询访客记录,并按时间倒序排列
+ * @param keyword
+ * @return
+ * @throws Exception
+ */
+ @Select("select * from visitors where name like '%${keyword}%' or sno like '%${keyword}%' or phone like '%${keyword}%' or place like '%${keyword}%' or begin_date like '%${keyword}%' or end_date like '%${keyword}%' or visit_result like '%${keyword}%' order by begin_date desc ")
+ List search(@Param(value = "keyword") String keyword) throws Exception;
+
+}
diff --git a/src/main/java/cn/ppdxzz/domain/Visitor.java b/src/main/java/cn/ppdxzz/domain/Visitor.java
new file mode 100644
index 0000000..e20cc25
--- /dev/null
+++ b/src/main/java/cn/ppdxzz/domain/Visitor.java
@@ -0,0 +1,112 @@
+package cn.ppdxzz.domain;
+
+import java.io.Serializable;
+
+/**
+ * Description:访客实体类
+ *
+ * @Date: 2020/2/18 16:29
+ * @Author: PeiChen
+ */
+public class Visitor implements Serializable {
+ private String id;//uuid 全球唯一id
+ private String name;//访客姓名
+ private String sno;//访客学号
+ private String phone;//联系方式
+ private String place;//访问地址
+ private String begin_date;//来访时间
+ private String end_date;//离开时间
+ private String visit_result;//到访原因
+
+ public Visitor() {
+ }
+
+ public Visitor(String id, String name, String sno, String phone, String place, String begin_date, String end_date, String visit_result) {
+ this.id = id;
+ this.name = name;
+ this.sno = sno;
+ this.phone = phone;
+ this.place = place;
+ this.begin_date = begin_date;
+ this.end_date = end_date;
+ this.visit_result = visit_result;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getSno() {
+ return sno;
+ }
+
+ public void setSno(String sno) {
+ this.sno = sno;
+ }
+
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ public String getPlace() {
+ return place;
+ }
+
+ public void setPlace(String place) {
+ this.place = place;
+ }
+
+ public String getBegin_date() {
+ return begin_date;
+ }
+
+ public void setBegin_date(String begin_date) {
+ this.begin_date = begin_date;
+ }
+
+ public String getEnd_date() {
+ return end_date;
+ }
+
+ public void setEnd_date(String end_date) {
+ this.end_date = end_date;
+ }
+
+ public String getVisit_result() {
+ return visit_result;
+ }
+
+ public void setVisit_result(String visit_result) {
+ this.visit_result = visit_result;
+ }
+
+ @Override
+ public String toString() {
+ return "Visitor{" +
+ "id='" + id + '\'' +
+ ", name='" + name + '\'' +
+ ", sno='" + sno + '\'' +
+ ", phone='" + phone + '\'' +
+ ", place='" + place + '\'' +
+ ", begin_date='" + begin_date + '\'' +
+ ", end_date='" + end_date + '\'' +
+ ", visit_result='" + visit_result + '\'' +
+ '}';
+ }
+}
diff --git a/src/main/java/cn/ppdxzz/service/VisitorService.java b/src/main/java/cn/ppdxzz/service/VisitorService.java
new file mode 100644
index 0000000..f68b0ea
--- /dev/null
+++ b/src/main/java/cn/ppdxzz/service/VisitorService.java
@@ -0,0 +1,26 @@
+package cn.ppdxzz.service;
+
+import cn.ppdxzz.domain.Visitor;
+
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * Description:
+ *
+ * @Date: 2020/2/18 18:27
+ * @Author: PeiChen
+ */
+public interface VisitorService {
+
+ void add(Visitor visitor) throws Exception;
+
+ List findAll(int page,int size) throws Exception;
+
+ List search(int page,int size,String keyword) throws Exception;
+
+ void logout(String id,String end_date) throws Exception;
+
+ InputStream getInputStream() throws Exception;
+
+}
diff --git a/src/main/java/cn/ppdxzz/service/impl/VisitorServiceImpl.java b/src/main/java/cn/ppdxzz/service/impl/VisitorServiceImpl.java
new file mode 100644
index 0000000..a870f19
--- /dev/null
+++ b/src/main/java/cn/ppdxzz/service/impl/VisitorServiceImpl.java
@@ -0,0 +1,101 @@
+package cn.ppdxzz.service.impl;
+
+import cn.ppdxzz.dao.VisitorDao;
+import cn.ppdxzz.domain.Visitor;
+import cn.ppdxzz.poi.WriteExcel;
+import cn.ppdxzz.service.VisitorService;
+import com.github.pagehelper.PageHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Description:
+ *
+ * @Date: 2020/2/18 18:50
+ * @Author: PeiChen
+ */
+@Service("visitorService")
+public class VisitorServiceImpl implements VisitorService {
+
+ private VisitorDao visitorDao;
+
+ @Autowired
+ public void setVisitorDao(VisitorDao visitorDao) {
+ this.visitorDao = visitorDao;
+ }
+
+ /**
+ * 登记到访信息
+ * @param visitor
+ * @throws Exception
+ */
+ @Override
+ public void add(Visitor visitor) throws Exception {
+ visitorDao.add(visitor);
+ }
+
+ /**
+ * 按时间晚的优先显示查询所有访客记录
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public List findAll(int page, int size) throws Exception {
+ PageHelper.startPage(page,size);
+ return visitorDao.findAll();
+ }
+
+ /**
+ * 根据关键字模糊查询访客记录,并按时间倒序排列
+ * @param keyword
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public List search(int page, int size, String keyword) throws Exception {
+ PageHelper.startPage(page,size);
+ return visitorDao.search(keyword);
+ }
+
+ /**
+ * 访客离开后修改离开时间(访客注销)
+ * @param id
+ * @param end_date
+ * @throws Exception
+ */
+ @Override
+ public void logout(String id, String end_date) throws Exception {
+ visitorDao.logout(id,end_date);
+ }
+
+ /**
+ * 导出访客记录
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public InputStream getInputStream() throws Exception {
+ //Excel中的每列列名,依次对应数据库的字段
+ String[] title = new String[]{"ID","姓名","学号","联系方式","访问地址","来访时间","离开时间","来访原因"};
+ List visitors = visitorDao.findAll();
+ List
+
+
diff --git a/src/main/webapp/WEB-INF/jsp/main.jsp b/src/main/webapp/WEB-INF/jsp/main.jsp
index 22ae37a..a1f4272 100644
--- a/src/main/webapp/WEB-INF/jsp/main.jsp
+++ b/src/main/webapp/WEB-INF/jsp/main.jsp
@@ -142,12 +142,20 @@
diff --git a/src/main/webapp/WEB-INF/jsp/regist_visitor.jsp b/src/main/webapp/WEB-INF/jsp/regist_visitor.jsp
new file mode 100644
index 0000000..f93f95c
--- /dev/null
+++ b/src/main/webapp/WEB-INF/jsp/regist_visitor.jsp
@@ -0,0 +1,17 @@
+<%--
+ Created by IntelliJ IDEA.
+ User: user
+ Date: 2020/2/18
+ Time: 15:49
+ To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+
+