From e8a1f9d9a174980818b2ddbd3eda413a4afccbf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cmokeeqian?= <“mokeeqian@gmail.com> Date: Tue, 8 Jun 2021 15:52:17 +0800 Subject: [PATCH] =?UTF-8?q?all=20done=EF=BC=8C=E6=AF=95=E8=AE=BE=E5=AE=9A?= =?UTF-8?q?=E7=A8=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/edu/ahut/copydetector/check_class.puml | 142 ++++++++ .../controller/AdminController.java | 5 +- .../controller/FileController.java | 5 +- .../controller/StudentController.java | 36 +- .../controller/TeacherController.java | 37 +- .../ahut/copydetector/dao/SimResultDao.java | 1 - .../cn/edu/ahut/copydetector/entity/File.java | 1 + .../ahut/copydetector/entity/SimResult.java | 2 + .../cn/edu/ahut/copydetector/push_inform.puml | 85 +++++ .../copydetector/service/FileService.java | 4 +- .../copydetector/service/InformService.java | 2 +- .../service/SimResultService.java | 2 +- .../copydetector/service/UserService.java | 2 +- .../service/impl/FileServiceImpl.java | 10 +- .../service/impl/InformServiceImpl.java | 2 +- .../service/impl/SimResultServiceImpl.java | 2 +- .../service/impl/UserServiceImpl.java | 2 +- .../edu/ahut/copydetector/upload_class.puml | 126 +++++++ .../cn/edu/ahut/copydetector/user_class.puml | 139 +++++++ .../{entity => util}/HaiMingDistance.java | 2 +- .../{entity => util}/LayuiDtree.java | 2 +- .../{entity => util}/PageBean.java | 2 +- .../edu/ahut/copydetector/util/SimHash.java | 15 +- .../templates/student/checkInforms.html | 4 +- .../resources/templates/student/courses.html | 341 ++++++++++++++---- .../resources/templates/teacher/courses.html | 185 ++++++---- .../resources/templates/teacher/informs.html | 18 + 27 files changed, 981 insertions(+), 193 deletions(-) create mode 100644 src/main/java/cn/edu/ahut/copydetector/check_class.puml create mode 100644 src/main/java/cn/edu/ahut/copydetector/push_inform.puml create mode 100644 src/main/java/cn/edu/ahut/copydetector/upload_class.puml create mode 100644 src/main/java/cn/edu/ahut/copydetector/user_class.puml rename src/main/java/cn/edu/ahut/copydetector/{entity => util}/HaiMingDistance.java (88%) rename src/main/java/cn/edu/ahut/copydetector/{entity => util}/LayuiDtree.java (95%) rename src/main/java/cn/edu/ahut/copydetector/{entity => util}/PageBean.java (91%) diff --git a/src/main/java/cn/edu/ahut/copydetector/check_class.puml b/src/main/java/cn/edu/ahut/copydetector/check_class.puml new file mode 100644 index 0000000..481f41a --- /dev/null +++ b/src/main/java/cn/edu/ahut/copydetector/check_class.puml @@ -0,0 +1,142 @@ +@startuml +'https://plantuml.com/class-diagram + + +interface TeacherService +interface InformService +interface FileService +interface CheckService + +interface InformDao +interface FileDao + +class TeacherServiceImpl +class InformServiceImpl +class FileServiceImpl +class CheckServiceImpl + +'class TeacherController + +TeacherService <|. TeacherServiceImpl +InformService <|. InformServiceImpl +FileService <|. FileServiceImpl +'TeacherService <.. TeacherController +InformDao <.. InformServiceImpl +InformService <.. TeacherServiceImpl +FileService <.. TeacherServiceImpl +FileDao <.. FileServiceImpl +'FileService <. TeacherController +CheckService <|..CheckServiceImpl +CheckService <. TeacherServiceImpl +FileService <... CheckServiceImpl + +interface TeacherService { + loadUserByUsername(String) : UserDetails + updateUser(User) : Integer + selectUserById(Integer) : User + updatePassword(User) : Integer + selectUserByRealname(String) : User + teachCourseById(String)) : Integer + pushInform(Map) : Integer + checkSubmition(Map) : Map + askForSubmition(Map) : Map + checkDuplication(Map) : Map +} + +class TeacherServiceImpl { + TeacherDao : TeacherDao + informService : InformService + courseService : CourseService + fileService : FileService + checkService : CheckService + + loadUserByUsername(String) : UserDetails + updateUser(User) : Integer + selectUserById(Integer) : User + updatePassword(User) : Integer + selectUserByRealname(String) : User + teachCourseById(String)) : Integer + pushInform(Map) : Integer + checkSubmition(Map) : Map + askForSubmition(Map) : Map + checkDuplication(Map) : Map +} + +interface InformService { + pushInform(Inform) : Integer + delInform(String) : Integer + getInformByTeacher(String) : List + getInformByCourse(String) : List +} +class InformServiceImpl { + informDao : InformDao + pushInform(Inform) : Integer + delInform(String) : Integer + getInformByTeacher(String) : List + getInformByCourse(String) : List +} +interface InformDao { + pushInform(Inform) : Integer + delInform(String) : Integer + getInformByTeacher(String) : List + getInformByCourse(String) : List +} +'class TeacherController { +' TeacherService : TeacherService +' +' updateUser(User) : Integer +' selectUserById(Integer) : User +' updatePassword(User) : Integer +' selectUserByRealname(String) : User +' teachCourseById(String)) : Integer +' pushInform(Map) : Integer +' checkSubmition(Map) : Map +' askForSubmition(Map) : Map +' checkDuplication(Map) : Map +'} + +interface FileDao { + getAllFiles() : List + getFileById(String) : File + getFileByName(String) : File + getFileByPath(String) : File + getFilesBySubmitter(String) : List + saveOne(File) : Integer + updateOneById(String) : Integer + deleteOneById(String) : Integer +} +interface FileService { + getAllFiles() : List + getFileById(String) : File + getFileByName(String) : File + getFileByPath(String) : File + getFilesBySubmitter(String) : List + upload(File) : Integer + upload(List) : Integer + updateOneById(String) : Integer + deleteOneById(String) : Integer +} +class FileServiceImpl { + fileDao : FileDao + + getAllFiles() : List + getFileById(String) : File + getFileByName(String) : File + getFileByPath(String) : File + getFilesBySubmitter(String) : List + upload(File) : Integer + upload(List) : Integer + updateOneById(String) : Integer + deleteOneById(String) : Integer +} + +interface CheckService { + check(List, String) : String +} +class CheckServiceImpl { + fileService : FileService + check(List, String) : String +} + + +@enduml \ No newline at end of file diff --git a/src/main/java/cn/edu/ahut/copydetector/controller/AdminController.java b/src/main/java/cn/edu/ahut/copydetector/controller/AdminController.java index a112cf8..22ca218 100644 --- a/src/main/java/cn/edu/ahut/copydetector/controller/AdminController.java +++ b/src/main/java/cn/edu/ahut/copydetector/controller/AdminController.java @@ -12,13 +12,12 @@ import cn.edu.ahut.copydetector.service.InformService; import cn.edu.ahut.copydetector.service.UserService; import cn.edu.ahut.copydetector.util.ExcelUtil; +import cn.edu.ahut.copydetector.util.PageBean; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.autoconfigure.data.web.SpringDataWebProperties; import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; @@ -26,11 +25,9 @@ import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; import java.io.File; import java.io.IOException; import java.lang.reflect.InvocationTargetException; -import java.security.PrivateKey; import java.util.*; /** diff --git a/src/main/java/cn/edu/ahut/copydetector/controller/FileController.java b/src/main/java/cn/edu/ahut/copydetector/controller/FileController.java index c1263f4..7e37f1e 100644 --- a/src/main/java/cn/edu/ahut/copydetector/controller/FileController.java +++ b/src/main/java/cn/edu/ahut/copydetector/controller/FileController.java @@ -7,8 +7,8 @@ import cn.edu.ahut.copydetector.constant.BasicConstant; import cn.edu.ahut.copydetector.constant.OtherConstant; -import cn.edu.ahut.copydetector.entity.LayuiDtree; -import cn.edu.ahut.copydetector.entity.PageBean; +import cn.edu.ahut.copydetector.util.LayuiDtree; +import cn.edu.ahut.copydetector.util.PageBean; import cn.edu.ahut.copydetector.entity.User; import cn.edu.ahut.copydetector.service.FileService; import cn.edu.ahut.copydetector.util.Doc2PdfUtil; @@ -29,7 +29,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.POST; import java.io.*; import java.net.ConnectException; import java.util.Collection; diff --git a/src/main/java/cn/edu/ahut/copydetector/controller/StudentController.java b/src/main/java/cn/edu/ahut/copydetector/controller/StudentController.java index edbe952..08d2679 100644 --- a/src/main/java/cn/edu/ahut/copydetector/controller/StudentController.java +++ b/src/main/java/cn/edu/ahut/copydetector/controller/StudentController.java @@ -11,13 +11,13 @@ import cn.edu.ahut.copydetector.service.InformService; import cn.edu.ahut.copydetector.service.SimResultService; import cn.edu.ahut.copydetector.service.UserService; +import cn.edu.ahut.copydetector.util.PageBean; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; -import javax.ws.rs.GET; import java.util.*; /** @@ -260,6 +260,7 @@ public Map showInforms(@RequestParam(value = "type", required = false) int type if (realname != null) { User teacher = (User) userService.selectUserByRealname(realname.trim()).get("user"); if (teacher == null) { + log.error("====当前user为空"); pageBean.getList().clear(); pageBean.setTotalRecord(0); } else { @@ -282,6 +283,39 @@ public Map showInforms(@RequestParam(value = "type", required = false) int type return informMap; } + + @RequestMapping(value = "/recentInform", method = RequestMethod.GET) + @ResponseBody + public Map recentInform( + @RequestParam(value = "realname") String realname, + @RequestParam(value = "limit") int limit + ) { + Map json = new HashMap<>(); + User teacher = (User) userService.selectUserByRealname(realname.trim()).get("user"); + PageBean pageBean = informService.selectInforms(teacher.getUsername(), 1, limit); + if (teacher == null) { + log.error("====当前user为空"); + pageBean.getList().clear(); + pageBean.setTotalRecord(0); + } else { + List informs = pageBean.getList(); + Iterator iterator = informs.iterator(); + while (iterator.hasNext()) { + Inform current = iterator.next(); + if (!current.getPublisher().equals(teacher.getUsername())) { + iterator.remove(); + } + } + pageBean.setList(informs); + pageBean.setTotalRecord(informs.size()); + } + json.put("data", pageBean.getList()); + json.put("code", 0); + json.put("msg", ""); + json.put("count", pageBean.getTotalRecord()); + return json; + } + /** * 修改密码 */ diff --git a/src/main/java/cn/edu/ahut/copydetector/controller/TeacherController.java b/src/main/java/cn/edu/ahut/copydetector/controller/TeacherController.java index 47e22fc..ad36188 100644 --- a/src/main/java/cn/edu/ahut/copydetector/controller/TeacherController.java +++ b/src/main/java/cn/edu/ahut/copydetector/controller/TeacherController.java @@ -10,11 +10,9 @@ import cn.edu.ahut.copydetector.constant.DatabaseConstant; import cn.edu.ahut.copydetector.constant.OtherConstant; import cn.edu.ahut.copydetector.entity.*; -import cn.edu.ahut.copydetector.service.FileService; -import cn.edu.ahut.copydetector.service.InformService; -import cn.edu.ahut.copydetector.service.SimResultService; -import cn.edu.ahut.copydetector.service.UserService; +import cn.edu.ahut.copydetector.service.*; import cn.edu.ahut.copydetector.util.ExcelUtil; +import cn.edu.ahut.copydetector.util.PageBean; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -49,13 +47,16 @@ public class TeacherController { private UserService userService; private InformService informService; private SimResultService simResultService; + private CourseService courseService; public TeacherController(FileService fileService, UserService userService, - InformService informService, SimResultService simResultService) { + InformService informService, SimResultService simResultService, + CourseService courseService) { this.fileService = fileService; this.userService = userService; this.informService = informService; this.simResultService = simResultService; + this.courseService = courseService; } /** @@ -218,6 +219,7 @@ public String courses(Model model) { return "redirect:logout"; } else { user = (User) a; + log.info("当前用户: "+ user.toString()); model.addAttribute("current", user); return "teacher/courses"; } @@ -539,7 +541,8 @@ public Map renameFile(@RequestParam String name, @RequestParam String path) { public Map recentWorks(@RequestParam int page, @RequestParam int limit) { Map json = new HashMap<>(); User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); - PageBean pageBean = fileService.selectRecent(user.getId(), page, limit, "update_time"); +// PageBean pageBean = fileService.selectRecent(user.getId(), page, limit, "update_time"); + PageBean pageBean = fileService.selectRecent(1, page, limit, "update_time"); List list = pageBean.getList(); Iterator iterator = list.iterator(); while (iterator.hasNext()){ @@ -552,7 +555,7 @@ public Map recentWorks(@RequestParam int page, @RequestParam int limit) { json.put("code", 0); json.put("msg", ""); json.put("count", pageBean.getTotalRecord()); - log.info(json.toString()); + log.info("最近未批改: "+json.toString()); return json; } @@ -582,11 +585,13 @@ public Map recentInform(@RequestParam int limit) { public Map recentSubmit(@RequestParam int limit) { Map json = new HashMap<>(); User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); - PageBean pageBean = fileService.selectRecent(user.getId(), 1, limit, "id"); +// PageBean pageBean = fileService.selectRecent(user.getId(), 1, limit, "id"); + PageBean pageBean = fileService.selectRecent(1, 1, limit, "id"); json.put("data", pageBean.getList()); json.put("code", 0); json.put("msg", ""); json.put("count", pageBean.getTotalRecord()); + log.info("最近提交: " + json.toString()); return json; } @@ -691,5 +696,21 @@ public Map recentSubmits() { public void showOffice() { } + @RequestMapping(value = "/getMyCourses", method = RequestMethod.POST) + @ResponseBody + public Map getMyCourses(HttpServletRequest request) { + Map res = new HashMap<>(); + User user = (User) request.getSession().getAttribute("user"); + List courseList = courseService.getCoursesByTno(user.getUsername()); +// log.info(courseList.toString()); + res.put("code", 0); + res.put("msg", ""); + res.put("data", courseList); + res.put("count", courseList.size()); + return res; + } + + + } diff --git a/src/main/java/cn/edu/ahut/copydetector/dao/SimResultDao.java b/src/main/java/cn/edu/ahut/copydetector/dao/SimResultDao.java index 676788d..1b2ee5a 100644 --- a/src/main/java/cn/edu/ahut/copydetector/dao/SimResultDao.java +++ b/src/main/java/cn/edu/ahut/copydetector/dao/SimResultDao.java @@ -5,7 +5,6 @@ package cn.edu.ahut.copydetector.dao; -import cn.edu.ahut.copydetector.entity.PageBean; import cn.edu.ahut.copydetector.entity.SimResult; import org.apache.ibatis.annotations.Mapper; diff --git a/src/main/java/cn/edu/ahut/copydetector/entity/File.java b/src/main/java/cn/edu/ahut/copydetector/entity/File.java index 2118997..d224b18 100644 --- a/src/main/java/cn/edu/ahut/copydetector/entity/File.java +++ b/src/main/java/cn/edu/ahut/copydetector/entity/File.java @@ -5,6 +5,7 @@ package cn.edu.ahut.copydetector.entity; +import cn.edu.ahut.copydetector.util.HaiMingDistance; import lombok.Data; import java.io.Serializable; diff --git a/src/main/java/cn/edu/ahut/copydetector/entity/SimResult.java b/src/main/java/cn/edu/ahut/copydetector/entity/SimResult.java index bfd2e57..ba3e72e 100644 --- a/src/main/java/cn/edu/ahut/copydetector/entity/SimResult.java +++ b/src/main/java/cn/edu/ahut/copydetector/entity/SimResult.java @@ -19,9 +19,11 @@ public class SimResult implements Serializable { private String user2; private Double sim; + public SimResult(String user1, String user2, Double sim) { this.user1 = user1; this.user2 = user2; this.sim = sim; } + } diff --git a/src/main/java/cn/edu/ahut/copydetector/push_inform.puml b/src/main/java/cn/edu/ahut/copydetector/push_inform.puml new file mode 100644 index 0000000..7032f5e --- /dev/null +++ b/src/main/java/cn/edu/ahut/copydetector/push_inform.puml @@ -0,0 +1,85 @@ +@startuml +'https://plantuml.com/class-diagram + +interface TeacherService +interface InformService + +interface InformDao + +class TeacherServiceImpl +class InformServiceImpl + +'class TeacherController + +TeacherService <|.. TeacherServiceImpl +InformService <|.. InformServiceImpl +'TeacherService <. TeacherController +InformDao <.. InformServiceImpl +InformService <. TeacherServiceImpl + +interface TeacherService { + loadUserByUsername(String) : UserDetails + updateUser(User) : Integer + selectUserById(Integer) : User + updatePassword(User) : Integer + selectUserByRealname(String) : User + teachCourseById(String)) : Integer + pushInform(Map) : Integer + checkSubmition(Map) : Map + askForSubmition(Map) : Map + checkDuplication(Map) : Map +} + +class TeacherServiceImpl { + teacherDao : TeacherDao + informService : InformService + courseService : CourseService + fileService : FileService + + loadUserByUsername(String) : UserDetails + updateUser(User) : Integer + selectUserById(Integer) : User + updatePassword(User) : Integer + selectUserByRealname(String) : User + teachCourseById(String)) : Integer + pushInform(Map) : Integer + checkSubmition(Map) : Map + askForSubmition(Map) : Map + checkDuplication(Map) : Map +} + +interface InformService { + pushInform(Inform) : Integer + delInform(String) : Integer + getInformByTeacher(String) : List + getInformByCourse(String) : List +} +class InformServiceImpl { + informDao : InformDao + pushInform(Inform) : Integer + delInform(String) : Integer + getInformByTeacher(String) : List + getInformByCourse(String) : List +} +interface InformDao { + pushInform(Inform) : Integer + delInform(String) : Integer + getInformByTeacher(String) : List + getInformByCourse(String) : List +} +'class TeacherController { +' teacherService : TeacherService +' +' updateUser(User) : Integer +' selectUserById(Integer) : User +' updatePassword(User) : Integer +' selectUserByRealname(String) : User +' teachCourseById(String)) : Integer +' pushInform(Map) : Integer +' checkSubmition(Map) : Map +' askForSubmition(Map) : Map +' checkDuplication(Map) : Map +'} + + +@enduml \ No newline at end of file diff --git a/src/main/java/cn/edu/ahut/copydetector/service/FileService.java b/src/main/java/cn/edu/ahut/copydetector/service/FileService.java index 3cc926a..c5014dd 100644 --- a/src/main/java/cn/edu/ahut/copydetector/service/FileService.java +++ b/src/main/java/cn/edu/ahut/copydetector/service/FileService.java @@ -6,8 +6,8 @@ package cn.edu.ahut.copydetector.service; import cn.edu.ahut.copydetector.entity.File; -import cn.edu.ahut.copydetector.entity.LayuiDtree; -import cn.edu.ahut.copydetector.entity.PageBean; +import cn.edu.ahut.copydetector.util.LayuiDtree; +import cn.edu.ahut.copydetector.util.PageBean; import org.springframework.web.multipart.MultipartFile; import java.util.Collection; diff --git a/src/main/java/cn/edu/ahut/copydetector/service/InformService.java b/src/main/java/cn/edu/ahut/copydetector/service/InformService.java index e8540ed..4d746cb 100644 --- a/src/main/java/cn/edu/ahut/copydetector/service/InformService.java +++ b/src/main/java/cn/edu/ahut/copydetector/service/InformService.java @@ -6,7 +6,7 @@ package cn.edu.ahut.copydetector.service; import cn.edu.ahut.copydetector.entity.Inform; -import cn.edu.ahut.copydetector.entity.PageBean; +import cn.edu.ahut.copydetector.util.PageBean; import java.util.List; diff --git a/src/main/java/cn/edu/ahut/copydetector/service/SimResultService.java b/src/main/java/cn/edu/ahut/copydetector/service/SimResultService.java index 76f0db3..e51ecd4 100644 --- a/src/main/java/cn/edu/ahut/copydetector/service/SimResultService.java +++ b/src/main/java/cn/edu/ahut/copydetector/service/SimResultService.java @@ -5,7 +5,7 @@ package cn.edu.ahut.copydetector.service; -import cn.edu.ahut.copydetector.entity.PageBean; +import cn.edu.ahut.copydetector.util.PageBean; import cn.edu.ahut.copydetector.entity.SimResult; diff --git a/src/main/java/cn/edu/ahut/copydetector/service/UserService.java b/src/main/java/cn/edu/ahut/copydetector/service/UserService.java index 1e1af58..33706bc 100644 --- a/src/main/java/cn/edu/ahut/copydetector/service/UserService.java +++ b/src/main/java/cn/edu/ahut/copydetector/service/UserService.java @@ -6,7 +6,7 @@ package cn.edu.ahut.copydetector.service; import cn.edu.ahut.copydetector.entity.Authority; -import cn.edu.ahut.copydetector.entity.PageBean; +import cn.edu.ahut.copydetector.util.PageBean; import cn.edu.ahut.copydetector.entity.Role; import cn.edu.ahut.copydetector.entity.User; import org.springframework.security.core.userdetails.UserDetails; diff --git a/src/main/java/cn/edu/ahut/copydetector/service/impl/FileServiceImpl.java b/src/main/java/cn/edu/ahut/copydetector/service/impl/FileServiceImpl.java index 66bce60..d481eef 100644 --- a/src/main/java/cn/edu/ahut/copydetector/service/impl/FileServiceImpl.java +++ b/src/main/java/cn/edu/ahut/copydetector/service/impl/FileServiceImpl.java @@ -13,13 +13,11 @@ import cn.edu.ahut.copydetector.dao.UserDao; import cn.edu.ahut.copydetector.entity.*; import cn.edu.ahut.copydetector.service.FileService; -import cn.edu.ahut.copydetector.util.SimHash; -import cn.edu.ahut.copydetector.util.WordUtil; +import cn.edu.ahut.copydetector.util.*; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; -import javax.swing.plaf.IconUIResource; import java.io.IOException; import java.math.BigDecimal; import java.nio.file.*; @@ -558,9 +556,9 @@ public List checkMethod(String[] names, String path) { } } } - top.setTitle(""); - mid.setTitle(""); - low.setTitle(""); + top.setTitle(""); + mid.setTitle(""); + low.setTitle(""); top.setChildren(topChildren); mid.setChildren(midChildren); low.setChildren(lowChildren); diff --git a/src/main/java/cn/edu/ahut/copydetector/service/impl/InformServiceImpl.java b/src/main/java/cn/edu/ahut/copydetector/service/impl/InformServiceImpl.java index 980e1ac..2c93861 100644 --- a/src/main/java/cn/edu/ahut/copydetector/service/impl/InformServiceImpl.java +++ b/src/main/java/cn/edu/ahut/copydetector/service/impl/InformServiceImpl.java @@ -8,7 +8,7 @@ import cn.edu.ahut.copydetector.constant.OtherConstant; import cn.edu.ahut.copydetector.dao.InformDao; import cn.edu.ahut.copydetector.entity.Inform; -import cn.edu.ahut.copydetector.entity.PageBean; +import cn.edu.ahut.copydetector.util.PageBean; import cn.edu.ahut.copydetector.entity.User; import cn.edu.ahut.copydetector.service.FileService; import cn.edu.ahut.copydetector.service.InformService; diff --git a/src/main/java/cn/edu/ahut/copydetector/service/impl/SimResultServiceImpl.java b/src/main/java/cn/edu/ahut/copydetector/service/impl/SimResultServiceImpl.java index 976d5af..3fdf221 100644 --- a/src/main/java/cn/edu/ahut/copydetector/service/impl/SimResultServiceImpl.java +++ b/src/main/java/cn/edu/ahut/copydetector/service/impl/SimResultServiceImpl.java @@ -6,7 +6,7 @@ package cn.edu.ahut.copydetector.service.impl; import cn.edu.ahut.copydetector.dao.SimResultDao; -import cn.edu.ahut.copydetector.entity.PageBean; +import cn.edu.ahut.copydetector.util.PageBean; import cn.edu.ahut.copydetector.entity.SimResult; import cn.edu.ahut.copydetector.service.SimResultService; import org.springframework.stereotype.Service; diff --git a/src/main/java/cn/edu/ahut/copydetector/service/impl/UserServiceImpl.java b/src/main/java/cn/edu/ahut/copydetector/service/impl/UserServiceImpl.java index 17feaa5..9a827da 100644 --- a/src/main/java/cn/edu/ahut/copydetector/service/impl/UserServiceImpl.java +++ b/src/main/java/cn/edu/ahut/copydetector/service/impl/UserServiceImpl.java @@ -12,7 +12,7 @@ import cn.edu.ahut.copydetector.dao.RoleDao; import cn.edu.ahut.copydetector.dao.UserDao; import cn.edu.ahut.copydetector.entity.Authority; -import cn.edu.ahut.copydetector.entity.PageBean; +import cn.edu.ahut.copydetector.util.PageBean; import cn.edu.ahut.copydetector.entity.Role; import cn.edu.ahut.copydetector.entity.User; import cn.edu.ahut.copydetector.service.FileService; diff --git a/src/main/java/cn/edu/ahut/copydetector/upload_class.puml b/src/main/java/cn/edu/ahut/copydetector/upload_class.puml new file mode 100644 index 0000000..581508f --- /dev/null +++ b/src/main/java/cn/edu/ahut/copydetector/upload_class.puml @@ -0,0 +1,126 @@ +@startuml +'https://plantuml.com/class-diagram + +interface StudentService +interface InformService +interface FileService + +interface InformDao +interface FileDao + +class StudentServiceImpl +class InformServiceImpl +class FileServiceImpl + +'class StudentController + +StudentService <|.. StudentServiceImpl +InformService <|.. InformServiceImpl +FileService <|.. FileServiceImpl +'StudentService <. StudentController +InformDao <.. InformServiceImpl +InformService <. StudentServiceImpl +FileService <.. StudentServiceImpl +FileDao <.. FileServiceImpl +'FileService <. StudentController + +interface StudentService { + loadUserByUsername(String) : UserDetails + updateUser(User) : Integer + selectUserById(Integer) : User + updatePassword(User) : Integer + selectUserByRealname(String) : User + teachCourseById(String)) : Integer + pushInform(Map) : Integer + checkSubmition(Map) : Map + askForSubmition(Map) : Map + checkDuplication(Map) : Map +} + +class StudentServiceImpl { + StudentDao : StudentDao + informService : InformService + courseService : CourseService + fileService : FileService + + loadUserByUsername(String) : UserDetails + updateUser(User) : Integer + selectUserById(Integer) : User + updatePassword(User) : Integer + selectUserByRealname(String) : User + teachCourseById(String)) : Integer + pushInform(Map) : Integer + checkSubmition(Map) : Map + askForSubmition(Map) : Map + checkDuplication(Map) : Map +} + +interface InformService { + pushInform(Inform) : Integer + delInform(String) : Integer + getInformByStudent(String) : List + getInformByCourse(String) : List +} +class InformServiceImpl { + informDao : InformDao + pushInform(Inform) : Integer + delInform(String) : Integer + getInformByStudent(String) : List + getInformByCourse(String) : List +} +interface InformDao { + pushInform(Inform) : Integer + delInform(String) : Integer + getInformByStudent(String) : List + getInformByCourse(String) : List +} +'class StudentController { +' StudentService : StudentService +' +' updateUser(User) : Integer +' selectUserById(Integer) : User +' updatePassword(User) : Integer +' selectUserByRealname(String) : User +' teachCourseById(String)) : Integer +' pushInform(Map) : Integer +' checkSubmition(Map) : Map +' askForSubmition(Map) : Map +' checkDuplication(Map) : Map +'} + +interface FileDao { + getAllFiles() : List + getFileById(String) : File + getFileByName(String) : File + getFileByPath(String) : File + getFilesBySubmitter(String) : List + saveOne(File) : Integer + updateOneById(String) : Integer + deleteOneById(String) : Integer +} +interface FileService { + getAllFiles() : List + getFileById(String) : File + getFileByName(String) : File + getFileByPath(String) : File + getFilesBySubmitter(String) : List + upload(File) : Integer + upload(List) : Integer + updateOneById(String) : Integer + deleteOneById(String) : Integer +} +class FileServiceImpl { + fileDao : FileDao + + getAllFiles() : List + getFileById(String) : File + getFileByName(String) : File + getFileByPath(String) : File + getFilesBySubmitter(String) : List + upload(File) : Integer + upload(List) : Integer + updateOneById(String) : Integer + deleteOneById(String) : Integer +} + +@enduml \ No newline at end of file diff --git a/src/main/java/cn/edu/ahut/copydetector/user_class.puml b/src/main/java/cn/edu/ahut/copydetector/user_class.puml new file mode 100644 index 0000000..7805eed --- /dev/null +++ b/src/main/java/cn/edu/ahut/copydetector/user_class.puml @@ -0,0 +1,139 @@ +@startuml +'https://plantuml.com/class-diagram + +interface UserDetailsService +interface UserService +interface AdminService +interface TeacherService +interface StudentService + +class AdminServiceImpl +class TeacherServiceImpl +class StudentServiceImpl + + + +UserDetailsService <|-- UserService +UserService <|-- AdminService +UserService <|-- TeacherService +UserService <|-- StudentService + +AdminService <|.. AdminServiceImpl +TeacherService <|.. TeacherServiceImpl +StudentService <|.. StudentServiceImpl + +interface UserDetailsService { + loadUserByUsername(String) : UserDetails +} + +interface UserService { + loadUserByUsername(String) : UserDetails + updateUser(User) : Integer + selectUserById(Integer) : User + updatePassword(User) : Integer + selectUserByRealname(String) : User +} +interface AdminService { + loadUserByUsername(String) : UserDetails + updateUser(User) : Integer + selectUserById(Integer) : User + updatePassword(User) : Integer + selectUserByRealname(String) : User + loadUserByUsername(String) : UserDetails + updateUser(User) : Integer + selectUserById(Integer) : User + updatePassword(User) : Integer + selectUserByRealname(String) : User + selectAuthoritiesByUsername(String) : List + selectRoleByUsername(String) : Role + selectAllRole() : List + selectAllAuthority() : List + selectAllStudents() : List + deleteUser(User) : Integer + +} +interface TeacherService { + loadUserByUsername(String) : UserDetails + updateUser(User) : Integer + selectUserById(Integer) : User + updatePassword(User) : Integer + selectUserByRealname(String) : User + teachCourseById(String)) : Integer + pushInform(Map) : Integer + checkSubmition(Map) : Map + askForSubmition(Map) : Map + checkDuplication(Map) : Map +} +interface StudentService { + loadUserByUsername(String) : UserDetails + updateUser(User) : Integer + selectUserById(Integer) : User + updatePassword(User) : Integer + selectUserByRealname(String) : User + learnCourseById(String) : Integer + getInforms() : List + pushWork(Map) : Integer + getDuplication(String) : Map + +} +class AdminServiceImpl { + roleDao : RoleDao + authorityDao : AuthorityDao + studentDao : StudentDao + teacherDao : TeacherDao + adminDao : AdminDao + + adminServiceImpl() + loadUserByUsername(String) : UserDetails + updateUser(User) : Integer + selectUserById(Integer) : User + updatePassword(User) : Integer + selectUserByRealname(String) : User + selectAuthoritiesByUsername(String) : List + selectRoleByUsername(String) : Role + selectAllRole() : List + selectAllAuthority() : List + selectAllStudents() : List + deleteUser(User) : Integer +} + +class TeacherServiceImpl { + studentDao : StudentDao + teacherDao : TeacherDao + fileDao : FileDao + informDao : InformDao + courseDao : CourseDao + + loadUserByUsername(String) : UserDetails + updateUser(User) : Integer + selectUserById(Integer) : User + updatePassword(User) : Integer + selectUserByRealname(String) : User + teachCourseById(String)) : Integer + pushInform(Map) : Integer + checkSubmition(Map) : Map + askForSubmition(Map) : Map + checkDuplication(Map) : Map +} +class StudentServiceImpl { + studentDao : StudentDao + fileDao : FileDao + informDao : InformDao + courseDao : CourseDao + + loadUserByUsername(String) : UserDetails + updateUser(User) : Integer + selectUserById(Integer) : User + updatePassword(User) : Integer + selectUserByRealname(String) : User + learnCourseById(String) : Integer + getInforms() : List + pushWork(Map) : Integer + getDuplication(String) : Map +} + + + + + +@enduml \ No newline at end of file diff --git a/src/main/java/cn/edu/ahut/copydetector/entity/HaiMingDistance.java b/src/main/java/cn/edu/ahut/copydetector/util/HaiMingDistance.java similarity index 88% rename from src/main/java/cn/edu/ahut/copydetector/entity/HaiMingDistance.java rename to src/main/java/cn/edu/ahut/copydetector/util/HaiMingDistance.java index 4d07717..9f118d0 100644 --- a/src/main/java/cn/edu/ahut/copydetector/entity/HaiMingDistance.java +++ b/src/main/java/cn/edu/ahut/copydetector/util/HaiMingDistance.java @@ -3,7 +3,7 @@ * Bugs and suggestions please contact me via mokeeqian@gmail.com */ -package cn.edu.ahut.copydetector.entity; +package cn.edu.ahut.copydetector.util; import lombok.Data; diff --git a/src/main/java/cn/edu/ahut/copydetector/entity/LayuiDtree.java b/src/main/java/cn/edu/ahut/copydetector/util/LayuiDtree.java similarity index 95% rename from src/main/java/cn/edu/ahut/copydetector/entity/LayuiDtree.java rename to src/main/java/cn/edu/ahut/copydetector/util/LayuiDtree.java index a83222c..f0647cd 100644 --- a/src/main/java/cn/edu/ahut/copydetector/entity/LayuiDtree.java +++ b/src/main/java/cn/edu/ahut/copydetector/util/LayuiDtree.java @@ -3,7 +3,7 @@ * Bugs and suggestions please contact me via mokeeqian@gmail.com */ -package cn.edu.ahut.copydetector.entity; +package cn.edu.ahut.copydetector.util; import lombok.Data; diff --git a/src/main/java/cn/edu/ahut/copydetector/entity/PageBean.java b/src/main/java/cn/edu/ahut/copydetector/util/PageBean.java similarity index 91% rename from src/main/java/cn/edu/ahut/copydetector/entity/PageBean.java rename to src/main/java/cn/edu/ahut/copydetector/util/PageBean.java index ff2d3fc..cca1a30 100644 --- a/src/main/java/cn/edu/ahut/copydetector/entity/PageBean.java +++ b/src/main/java/cn/edu/ahut/copydetector/util/PageBean.java @@ -3,7 +3,7 @@ * Bugs and suggestions please contact me via mokeeqian@gmail.com */ -package cn.edu.ahut.copydetector.entity; +package cn.edu.ahut.copydetector.util; import lombok.Data; diff --git a/src/main/java/cn/edu/ahut/copydetector/util/SimHash.java b/src/main/java/cn/edu/ahut/copydetector/util/SimHash.java index 3af15af..ff9f2a5 100644 --- a/src/main/java/cn/edu/ahut/copydetector/util/SimHash.java +++ b/src/main/java/cn/edu/ahut/copydetector/util/SimHash.java @@ -62,6 +62,7 @@ public BigInteger simHash() throws IOException { // 将每一个分词hash为一组固定长度的数列.比如 64bit 的一个整数. BigInteger t = this.hash(word); +// System.out.println("hash: " + t); for (int i = 0; i < this.hashbits; i++) { BigInteger bitmask = new BigInteger("1").shiftLeft(i); @@ -92,6 +93,7 @@ public BigInteger simHash() throws IOException { simHashBuffer.append("0"); } } + this.strSimHash = simHashBuffer.toString(); return fingerprint; } @@ -190,12 +192,13 @@ public List subByDistance(SimHash simHash, int distance) { public static void main(String[] args) throws IOException { - String s = "传统的 hash 算法只负责将原始内容尽量均匀随机地映射为一个签名值," - + "原理上相当于伪随机数产生算法。产生的两个签名,如果相等,说明原始内容在一定概 率 下是相等的;" - + "如果不相等,除了说明原始内容不相等外,不再提供任何信息,因为即使原始内容只相差一个字节," - + "所产生的签名也很可能差别极大。从这个意义 上来 说,要设计一个 hash 算法," - + "对相似的内容产生的签名也相近,是更为艰难的任务,因为它的签名值除了提供原始内容是否相等的信息外," - + "还能额外提供不相等的 原始内容的差异程度的信息。"; +// String s = "传统的 hash 算法只负责将原始内容尽量均匀随机地映射为一个签名值," +// + "原理上相当于伪随机数产生算法。产生的两个签名,如果相等,说明原始内容在一定概 率 下是相等的;" +// + "如果不相等,除了说明原始内容不相等外,不再提供任何信息,因为即使原始内容只相差一个字节," +// + "所产生的签名也很可能差别极大。从这个意义 上来 说,要设计一个 hash 算法," +// + "对相似的内容产生的签名也相近,是更为艰难的任务,因为它的签名值除了提供原始内容是否相等的信息外," +// + "还能额外提供不相等的 原始内容的差异程度的信息。"; + String s = "作业查重系统是基于SpringBoot框架的"; SimHash hash1 = new SimHash(s, 64); System.out.println(hash1.intSimHash + " " + hash1.intSimHash.bitLength()); // 计算 海明距离 在 3 以内的各块签名的 hash 值 diff --git a/src/main/resources/templates/student/checkInforms.html b/src/main/resources/templates/student/checkInforms.html index 1dda267..17068b3 100644 --- a/src/main/resources/templates/student/checkInforms.html +++ b/src/main/resources/templates/student/checkInforms.html @@ -147,7 +147,9 @@ var text = $('#toolName').val(); console.log(text); layui.table.reload('demo', { - url: '/student/showInforms?type='+typeSelect+'&department='+departmentSelect+'&realname='+text + // url: '/student/showInforms?type='+typeSelect+'&department='+departmentSelect+'&realname='+text + // url: '/student/showInforms?type='+typeSelect+'&realname='+text + url: '/student/recentInform?realname='+text , page: { curr: 1 //重新从第 1 页开始 } diff --git a/src/main/resources/templates/student/courses.html b/src/main/resources/templates/student/courses.html index 3115745..2fdc0b2 100644 --- a/src/main/resources/templates/student/courses.html +++ b/src/main/resources/templates/student/courses.html @@ -1,90 +1,279 @@ - - - + - - Layui - - - - - + + + + + + + + + + + + + + + + + + + + - - - \ No newline at end of file diff --git a/src/main/resources/templates/teacher/courses.html b/src/main/resources/templates/teacher/courses.html index 3115745..574022f 100644 --- a/src/main/resources/templates/teacher/courses.html +++ b/src/main/resources/templates/teacher/courses.html @@ -1,90 +1,123 @@ - - - + - - Layui - - - - - + + + -
-
-
+ + + + + + + + + + + + + + - - - \ No newline at end of file diff --git a/src/main/resources/templates/teacher/informs.html b/src/main/resources/templates/teacher/informs.html index 81c14d1..3308ec8 100644 --- a/src/main/resources/templates/teacher/informs.html +++ b/src/main/resources/templates/teacher/informs.html @@ -25,6 +25,24 @@ + +
+ +
+ +
+
+