├── .gitignore ├── .mvn └── wrapper │ ├── MavenWrapperDownloader.java │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── MeetHere Demo.mp4 ├── MeetHere展示PPT.pptx ├── README.md ├── meethere_db.sql ├── pom.xml ├── src ├── main │ ├── java │ │ └── com │ │ │ └── meethere │ │ │ ├── MeetHereApplication.java │ │ │ ├── controller │ │ │ ├── IndexController.java │ │ │ ├── admin │ │ │ │ ├── AdminMessageController.java │ │ │ │ ├── AdminNewsController.java │ │ │ │ ├── AdminOrderController.java │ │ │ │ ├── AdminUserController.java │ │ │ │ └── AdminVenueController.java │ │ │ └── user │ │ │ │ ├── MessageController.java │ │ │ │ ├── NewsController.java │ │ │ │ ├── OrderController.java │ │ │ │ ├── UserController.java │ │ │ │ └── VenueController.java │ │ │ ├── dao │ │ │ ├── MessageDao.java │ │ │ ├── NewsDao.java │ │ │ ├── OrderDao.java │ │ │ ├── UserDao.java │ │ │ └── VenueDao.java │ │ │ ├── entity │ │ │ ├── Message.java │ │ │ ├── News.java │ │ │ ├── Order.java │ │ │ ├── User.java │ │ │ ├── Venue.java │ │ │ └── vo │ │ │ │ ├── MessageVo.java │ │ │ │ ├── OrderVo.java │ │ │ │ └── VenueOrder.java │ │ │ ├── exception │ │ │ └── LoginException.java │ │ │ ├── service │ │ │ ├── MessageService.java │ │ │ ├── MessageVoService.java │ │ │ ├── NewsService.java │ │ │ ├── OrderService.java │ │ │ ├── OrderVoService.java │ │ │ ├── UserService.java │ │ │ ├── VenueService.java │ │ │ └── impl │ │ │ │ ├── MessageServiceImpl.java │ │ │ │ ├── MessageVoServiceImpl.java │ │ │ │ ├── NewsServiceImpl.java │ │ │ │ ├── OrderServiceImpl.java │ │ │ │ ├── OrderVoServiceImpl.java │ │ │ │ ├── UserServiceImpl.java │ │ │ │ └── VenueServiceImpl.java │ │ │ └── utils │ │ │ └── FileUtil.java │ └── resources │ │ ├── application.yml │ │ ├── static │ │ ├── css │ │ │ ├── bootstrap.css │ │ │ └── dashboard.css │ │ ├── default.jpg │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ ├── image.JPG │ │ ├── js │ │ │ ├── bootstrap-table-config.js │ │ │ ├── bootstrap.bundle.js │ │ │ ├── bootstrap.bundle.js.map │ │ │ ├── bootstrap.bundle.min.js │ │ │ ├── bootstrap.bundle.min.js.map │ │ │ ├── bootstrap.js │ │ │ ├── bootstrap.js.map │ │ │ ├── bootstrap.min.js │ │ │ ├── bootstrap.min.js.map │ │ │ ├── jquery-3.4.1.min.js │ │ │ ├── jquery.form.js │ │ │ ├── jquery.twbsPagination.js │ │ │ └── popper.min.js │ │ └── venue.jpg │ │ └── templates │ │ ├── admin │ │ ├── admin_index.html │ │ ├── message_manage.html │ │ ├── news_add.html │ │ ├── news_edit.html │ │ ├── news_manage.html │ │ ├── reservation_manage.html │ │ ├── user_add.html │ │ ├── user_edit.html │ │ ├── user_manage.html │ │ ├── venue_add.html │ │ ├── venue_edit.html │ │ └── venue_manage.html │ │ ├── index.html │ │ ├── layout │ │ ├── footer.html │ │ ├── header.html │ │ └── left.html │ │ ├── login.html │ │ ├── message_list.html │ │ ├── news.html │ │ ├── news_list.html │ │ ├── order_edit.html │ │ ├── order_manage.html │ │ ├── order_place.html │ │ ├── signup.html │ │ ├── user_info.html │ │ ├── venue.html │ │ └── venue_list.html └── test │ └── java │ └── com │ └── meethere │ ├── IntegrationTest │ ├── Controller │ │ ├── Admin │ │ │ ├── AdminMessageApiTest.java │ │ │ ├── AdminNewsApiTest.java │ │ │ ├── AdminOrderApiTest.java │ │ │ ├── AdminUserApiTest.java │ │ │ └── AdminVenueApiTest.java │ │ ├── IndexApiTest.java │ │ └── User │ │ │ ├── UserApiTest.java │ │ │ ├── UserMessageApiTest.java │ │ │ ├── UserNewsApiTest.java │ │ │ ├── UserOrderApiTest.java │ │ │ └── UserVenueApiTest.java │ └── Service │ │ ├── MessageServiceTest.java │ │ ├── NewsServiceTest.java │ │ ├── OrderServiceTest.java │ │ ├── UserServiceTest.java │ │ └── VenueServiceTest.java │ ├── MeetHereApplicationTests.java │ ├── SystemFunctionalTesting │ ├── BaseTest.java │ ├── LoginTest.java │ └── SignUpTest.java │ ├── controller │ ├── IndexControllerTest.java │ ├── admin │ │ ├── AdminMessageControllerTest.java │ │ ├── AdminNewsControllerTest.java │ │ ├── AdminOrderControllerTest.java │ │ ├── AdminUserControllerTest.java │ │ └── AdminVenueControllerTest.java │ └── user │ │ ├── MessageControllerTest.java │ │ ├── NewsControllerTest.java │ │ ├── OrderControllerTest.java │ │ ├── UserControllerTest.java │ │ └── VenueControllerTest.java │ └── service │ └── impl │ ├── MessageServiceImplTest.java │ ├── MessageVoServiceImplTest.java │ ├── NewsServiceImplTest.java │ ├── OrderServiceImplTest.java │ ├── OrderVoServiceImplTest.java │ ├── UserServiceImplTest.java │ └── VenueServiceImplTest.java ├── 性能测试报告.docx ├── 性能测试计划.docx ├── 系统测试报告.doc ├── 系统测试计划 .xlsx ├── 缺陷报告单.xlsx ├── 覆盖度报告.docx └── 静态分析报告.doc /.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/** 5 | !**/src/test/** 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | 30 | ### VS Code ### 31 | .vscode/ 32 | -------------------------------------------------------------------------------- /.mvn/wrapper/MavenWrapperDownloader.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2012-2019 the original author or authors. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import java.net.*; 18 | import java.io.*; 19 | import java.nio.channels.*; 20 | import java.util.Properties; 21 | 22 | public class MavenWrapperDownloader { 23 | 24 | private static final String WRAPPER_VERSION = "0.5.5"; 25 | /** 26 | * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. 27 | */ 28 | private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" 29 | + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; 30 | 31 | /** 32 | * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to 33 | * use instead of the default one. 34 | */ 35 | private static final String MAVEN_WRAPPER_PROPERTIES_PATH = 36 | ".mvn/wrapper/maven-wrapper.properties"; 37 | 38 | /** 39 | * Path where the maven-wrapper.jar will be saved to. 40 | */ 41 | private static final String MAVEN_WRAPPER_JAR_PATH = 42 | ".mvn/wrapper/maven-wrapper.jar"; 43 | 44 | /** 45 | * Name of the property which should be used to override the default download url for the wrapper. 46 | */ 47 | private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; 48 | 49 | public static void main(String args[]) { 50 | System.out.println("- Downloader started"); 51 | File baseDirectory = new File(args[0]); 52 | System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); 53 | 54 | // If the maven-wrapper.properties exists, read it and check if it contains a custom 55 | // wrapperUrl parameter. 56 | File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); 57 | String url = DEFAULT_DOWNLOAD_URL; 58 | if (mavenWrapperPropertyFile.exists()) { 59 | FileInputStream mavenWrapperPropertyFileInputStream = null; 60 | try { 61 | mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); 62 | Properties mavenWrapperProperties = new Properties(); 63 | mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); 64 | url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); 65 | } catch (IOException e) { 66 | System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); 67 | } finally { 68 | try { 69 | if (mavenWrapperPropertyFileInputStream != null) { 70 | mavenWrapperPropertyFileInputStream.close(); 71 | } 72 | } catch (IOException e) { 73 | // Ignore ... 74 | } 75 | } 76 | } 77 | System.out.println("- Downloading from: " + url); 78 | 79 | File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); 80 | if (!outputFile.getParentFile().exists()) { 81 | if (!outputFile.getParentFile().mkdirs()) { 82 | System.out.println( 83 | "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); 84 | } 85 | } 86 | System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); 87 | try { 88 | downloadFileFromURL(url, outputFile); 89 | System.out.println("Done"); 90 | System.exit(0); 91 | } catch (Throwable e) { 92 | System.out.println("- Error downloading"); 93 | e.printStackTrace(); 94 | System.exit(1); 95 | } 96 | } 97 | 98 | private static void downloadFileFromURL(String urlString, File destination) throws Exception { 99 | if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { 100 | String username = System.getenv("MVNW_USERNAME"); 101 | char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); 102 | Authenticator.setDefault(new Authenticator() { 103 | @Override 104 | protected PasswordAuthentication getPasswordAuthentication() { 105 | return new PasswordAuthentication(username, password); 106 | } 107 | }); 108 | } 109 | URL website = new URL(urlString); 110 | ReadableByteChannel rbc; 111 | rbc = Channels.newChannel(website.openStream()); 112 | FileOutputStream fos = new FileOutputStream(destination); 113 | fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); 114 | fos.close(); 115 | rbc.close(); 116 | } 117 | 118 | } 119 | -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.2/apache-maven-3.6.2-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar 3 | -------------------------------------------------------------------------------- /MeetHere Demo.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/MeetHere Demo.mp4 -------------------------------------------------------------------------------- /MeetHere展示PPT.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/MeetHere展示PPT.pptx -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SoftwareTesting-MeetHere 2 | 软件测试学期项目MeetHere场馆预约电子商务网站 3 | 项目运行入口:SoftwareTesting-MeetHere/src/main/java/come/meethereMeetHereApplication.java 4 | MySQL数据库创建脚本:meethere_db.sql 5 | # 代码说明 6 | 前端代码在SoftwareTesting-MeetHere/src/main/resources/templates中 7 | 后端代码在SoftwareTesting-MeetHere/src/main/java/come/meethere中 8 | # 测试脚本 9 | 所有的测试代码都在SoftwareTesting-MeetHere/src/test/java/come/meethere中 10 | controller单元测试代码在SoftwareTesting-MeetHere/src/test/java/come/meethere/controller中 11 | service单元测试代码在SoftwareTesting-MeetHere/src/test/java/come/meethere/service/impl中 12 | 集成测试代码在SoftwareTesting-MeetHere/src/test/java/come/meethere/IntegrationTest中 13 | 系统功能测试代码在SoftwareTesting-MeetHere/src/test/java/come/meethere/SystemFunctionTesting中 14 | # 项目文档 15 | 所有报告及展示PPT和系统Demo演示视频都在根目录下 16 | ### 文档清单: 17 | 《MeetHere Demo》 18 | 《MeetHere展示PPT》 19 | 《覆盖度报告》 20 | 《静态分析报告》 21 | 《系统测试计划》 22 | 《系统测试报告》 23 | 《缺陷报告单》 24 | 《性能测试计划》 25 | 《性能测试报告》 26 | # 人员分工 27 | 项目经理:徐赞博 28 | 项目成员:郭晓康 29 | ### 分工: 30 | 后端开发、单元测试、接口测试:郭晓康 31 | 前端开发、代码静态分析、系统测试、性能测试:徐赞博 32 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.springframework.boot 7 | spring-boot-starter-parent 8 | 2.2.2.RELEASE 9 | 10 | 11 | com 12 | meethere 13 | 0.0.1-SNAPSHOT 14 | meethere 15 | Demo project for Spring Boot 16 | 17 | 18 | 1.8 19 | 20 | 21 | 22 | 23 | org.springframework.boot 24 | spring-boot-starter 25 | 26 | 27 | 28 | org.springframework.boot 29 | spring-boot-starter-web 30 | 31 | 32 | org.springframework.boot 33 | spring-boot-starter-thymeleaf 34 | 35 | 36 | org.thymeleaf.extras 37 | thymeleaf-extras-java8time 38 | 39 | 40 | org.springframework.boot 41 | spring-boot-starter-jdbc 42 | 43 | 44 | 45 | mysql 46 | mysql-connector-java 47 | 8.0.11 48 | 49 | 50 | org.springframework.boot 51 | spring-boot-starter-data-jpa 52 | 53 | 54 | org.projectlombok 55 | lombok 56 | true 57 | 58 | 59 | org.springframework.boot 60 | spring-boot-devtools 61 | true 62 | 63 | 64 | 65 | org.springframework.boot 66 | spring-boot-starter-test 67 | test 68 | 69 | 70 | org.junit.vintage 71 | junit-vintage-engine 72 | 73 | 74 | 75 | 76 | 77 | org.seleniumhq.selenium 78 | selenium-java 79 | 3.141.59 80 | 81 | 82 | 83 | org.hamcrest 84 | hamcrest 85 | 2.2 86 | 87 | 88 | 89 | org.junit.jupiter 90 | junit-jupiter 91 | RELEASE 92 | test 93 | 94 | 95 | org.junit.jupiter 96 | junit-jupiter 97 | 5.5.2 98 | test 99 | 100 | 101 | 102 | 103 | 104 | 105 | org.springframework.boot 106 | spring-boot-maven-plugin 107 | 108 | true 109 | 110 | 111 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/MeetHereApplication.java: -------------------------------------------------------------------------------- 1 | package com.meethere; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class MeetHereApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(MeetHereApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/controller/IndexController.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller; 2 | 3 | import com.meethere.entity.Message; 4 | import com.meethere.entity.News; 5 | import com.meethere.entity.Venue; 6 | import com.meethere.entity.vo.MessageVo; 7 | import com.meethere.service.MessageService; 8 | import com.meethere.service.MessageVoService; 9 | import com.meethere.service.NewsService; 10 | import com.meethere.service.VenueService; 11 | import org.springframework.beans.factory.annotation.Autowired; 12 | import org.springframework.data.domain.Page; 13 | import org.springframework.data.domain.PageRequest; 14 | import org.springframework.data.domain.Pageable; 15 | import org.springframework.data.domain.Sort; 16 | import org.springframework.stereotype.Controller; 17 | import org.springframework.ui.Model; 18 | import org.springframework.web.bind.annotation.GetMapping; 19 | 20 | import java.util.List; 21 | 22 | @Controller 23 | public class IndexController { 24 | @Autowired 25 | private NewsService newsService; 26 | @Autowired 27 | private VenueService venueService; 28 | @Autowired 29 | private MessageVoService messageVoService; 30 | @Autowired 31 | private MessageService messageService; 32 | 33 | @GetMapping("/index") 34 | public String index(Model model){ 35 | Pageable venue_pageable= PageRequest.of(0,5, Sort.by("venueID").ascending()); 36 | Pageable news_pageable= PageRequest.of(0,5, Sort.by("time").descending()); 37 | Pageable message_pageable= PageRequest.of(0,5, Sort.by("time").descending()); 38 | 39 | List venue_list=venueService.findAll(venue_pageable).getContent(); 40 | List news_list= newsService.findAll(news_pageable).getContent(); 41 | Page messages=messageService.findPassState(message_pageable); 42 | List message_list=messageVoService.returnVo(messages.getContent()); 43 | 44 | model.addAttribute("user", null); 45 | model.addAttribute("news_list",news_list); 46 | model.addAttribute("venue_list",venue_list); 47 | model.addAttribute("message_list",message_list); 48 | return "index"; 49 | } 50 | 51 | 52 | @GetMapping("/admin_index") 53 | public String admin_index(Model model){ 54 | return "admin/admin_index"; 55 | } 56 | 57 | 58 | 59 | // @GetMapping("/user_edit") 60 | // public String user_edit(Model model){ 61 | // return "admin/user_edit"; 62 | // } 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/controller/admin/AdminMessageController.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.admin; 2 | 3 | import com.meethere.entity.Message; 4 | import com.meethere.entity.vo.MessageVo; 5 | import com.meethere.service.MessageService; 6 | import com.meethere.service.MessageVoService; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.data.domain.Page; 9 | import org.springframework.data.domain.PageRequest; 10 | import org.springframework.data.domain.Pageable; 11 | import org.springframework.data.domain.Sort; 12 | import org.springframework.stereotype.Controller; 13 | import org.springframework.ui.Model; 14 | import org.springframework.web.bind.annotation.*; 15 | 16 | import java.util.List; 17 | 18 | @Controller 19 | public class AdminMessageController { 20 | @Autowired 21 | private MessageService messageService; 22 | @Autowired 23 | private MessageVoService messageVoService; 24 | 25 | @GetMapping("/message_manage") 26 | public String message_manage(Model model){ 27 | Pageable message_pageable= PageRequest.of(0,10, Sort.by("time").descending()); 28 | model.addAttribute("total",messageService.findWaitState(message_pageable).getTotalPages()); 29 | return "admin/message_manage"; 30 | } 31 | 32 | /** 33 | * 34 | * @param page 35 | * @return 36 | */ 37 | @GetMapping("/messageList.do") 38 | @ResponseBody 39 | public List messageList(@RequestParam(value = "page",defaultValue = "1")int page){ 40 | Pageable message_pageable= PageRequest.of(page-1,10, Sort.by("time").descending()); 41 | List messages=messageService.findWaitState(message_pageable).getContent(); 42 | return messageVoService.returnVo(messages); 43 | } 44 | 45 | @PostMapping("/passMessage.do") 46 | @ResponseBody 47 | public boolean passMessage(int messageID){ 48 | 49 | messageService.confirmMessage(messageID); 50 | return true; 51 | } 52 | 53 | @PostMapping("/rejectMessage.do") 54 | @ResponseBody 55 | public boolean rejectMessage(int messageID){ 56 | 57 | messageService.rejectMessage(messageID); 58 | return true; 59 | } 60 | 61 | @RequestMapping("/delMessage.do") 62 | @ResponseBody 63 | public boolean delMessage(int messageID){ 64 | messageService.delById(messageID); 65 | return true; 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/controller/admin/AdminNewsController.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.admin; 2 | 3 | import com.meethere.entity.News; 4 | import com.meethere.entity.User; 5 | import com.meethere.service.NewsService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.data.domain.Page; 8 | import org.springframework.data.domain.PageRequest; 9 | import org.springframework.data.domain.Pageable; 10 | import org.springframework.data.domain.Sort; 11 | import org.springframework.stereotype.Controller; 12 | import org.springframework.ui.Model; 13 | import org.springframework.web.bind.annotation.*; 14 | 15 | import javax.servlet.http.HttpServletResponse; 16 | import java.io.IOException; 17 | import java.time.LocalDateTime; 18 | import java.util.Date; 19 | import java.util.List; 20 | 21 | @Controller 22 | public class AdminNewsController { 23 | @Autowired 24 | private NewsService newsService; 25 | 26 | @GetMapping("/news_manage") 27 | public String news_manage(Model model){ 28 | Pageable news_pageable= PageRequest.of(0,10, Sort.by("time").ascending()); 29 | Page news=newsService.findAll(news_pageable); 30 | model.addAttribute("total",news.getTotalPages()); 31 | return "admin/news_manage"; 32 | } 33 | 34 | @RequestMapping("/news_add") 35 | public String news_add(){ 36 | return "/admin/news_add"; 37 | } 38 | 39 | @RequestMapping("/news_edit") 40 | public String news_edit(int newsID,Model model){ 41 | News news=newsService.findById(newsID); 42 | model.addAttribute("news",news); 43 | return "/admin/news_edit"; 44 | } 45 | 46 | @RequestMapping("/newsList.do") 47 | @ResponseBody 48 | public List newsList(@RequestParam(value = "page",defaultValue = "1")int page){ 49 | Pageable news_pageable= PageRequest.of(page-1,10, Sort.by("time").descending()); 50 | Page news=newsService.findAll(news_pageable); 51 | return news.getContent(); 52 | } 53 | 54 | @PostMapping("/delNews.do") 55 | @ResponseBody 56 | public boolean delNews(int newsID){ 57 | newsService.delById(newsID); 58 | return true; 59 | 60 | } 61 | 62 | @PostMapping("/modifyNews.do") 63 | public void modifyNews(int newsID,String title,String content,HttpServletResponse response) throws IOException { 64 | News news= newsService.findById(newsID); 65 | news.setTitle(title); 66 | news.setContent(content); 67 | news.setTime(LocalDateTime.now()); 68 | newsService.update(news); 69 | response.sendRedirect("news_manage"); 70 | } 71 | 72 | @PostMapping("/addNews.do") 73 | public void addNews(String title, String content, HttpServletResponse response) throws IOException { 74 | News news= new News(); 75 | news.setTitle(title); 76 | news.setContent(content); 77 | news.setTime(LocalDateTime.now()); 78 | newsService.create(news); 79 | response.sendRedirect("news_manage"); 80 | } 81 | 82 | } 83 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/controller/admin/AdminOrderController.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.admin; 2 | 3 | import com.meethere.entity.Order; 4 | import com.meethere.entity.vo.OrderVo; 5 | import com.meethere.service.OrderService; 6 | import com.meethere.service.OrderVoService; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.data.domain.PageRequest; 9 | import org.springframework.data.domain.Pageable; 10 | import org.springframework.data.domain.Sort; 11 | import org.springframework.stereotype.Controller; 12 | import org.springframework.ui.Model; 13 | import org.springframework.web.bind.annotation.GetMapping; 14 | import org.springframework.web.bind.annotation.PostMapping; 15 | import org.springframework.web.bind.annotation.RequestParam; 16 | import org.springframework.web.bind.annotation.ResponseBody; 17 | 18 | import java.util.List; 19 | 20 | @Controller 21 | public class AdminOrderController { 22 | @Autowired 23 | private OrderService orderService; 24 | @Autowired 25 | private OrderVoService orderVoService; 26 | 27 | @GetMapping("/reservation_manage") 28 | public String reservation_manage(Model model){ 29 | List orders= orderService.findAuditOrder(); 30 | List orderVos=orderVoService.returnVo(orders); 31 | Pageable order_pageable= PageRequest.of(0,10, Sort.by("orderTime").descending()); 32 | model.addAttribute("order_list",orderVos); 33 | model.addAttribute("total",orderService.findNoAuditOrder(order_pageable).getTotalPages()); 34 | 35 | return "admin/reservation_manage"; 36 | } 37 | 38 | /** 39 | * 管理员查看未审核订单 40 | * @param page 41 | * @return 42 | */ 43 | @GetMapping("/admin/getOrderList.do") 44 | @ResponseBody 45 | public List getNoAuditOrder(@RequestParam(value = "page",defaultValue = "1")int page){ 46 | Pageable order_pageable= PageRequest.of(page-1,10, Sort.by("orderTime").descending()); 47 | List orders=orderService.findNoAuditOrder(order_pageable).getContent(); 48 | return orderVoService.returnVo(orders); 49 | } 50 | 51 | @PostMapping("/passOrder.do") 52 | @ResponseBody 53 | public boolean confirmOrder(int orderID) { 54 | orderService.confirmOrder(orderID); 55 | return true; 56 | } 57 | 58 | @PostMapping("/rejectOrder.do") 59 | @ResponseBody 60 | public boolean rejectOrder(int orderID) { 61 | orderService.rejectOrder(orderID); 62 | return true; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/controller/admin/AdminUserController.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.admin; 2 | 3 | import com.meethere.entity.Message; 4 | import com.meethere.entity.User; 5 | import com.meethere.entity.vo.MessageVo; 6 | import com.meethere.service.UserService; 7 | import com.meethere.utils.FileUtil; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.data.domain.Page; 10 | import org.springframework.data.domain.PageRequest; 11 | import org.springframework.data.domain.Pageable; 12 | import org.springframework.data.domain.Sort; 13 | import org.springframework.stereotype.Controller; 14 | import org.springframework.ui.Model; 15 | import org.springframework.web.bind.annotation.GetMapping; 16 | import org.springframework.web.bind.annotation.PostMapping; 17 | import org.springframework.web.bind.annotation.RequestParam; 18 | import org.springframework.web.bind.annotation.ResponseBody; 19 | import org.springframework.web.multipart.MultipartFile; 20 | 21 | import javax.servlet.http.HttpServletRequest; 22 | import javax.servlet.http.HttpServletResponse; 23 | import java.io.IOException; 24 | import java.util.List; 25 | 26 | @Controller 27 | public class AdminUserController { 28 | @Autowired 29 | private UserService userService; 30 | 31 | 32 | @GetMapping("/user_manage") 33 | public String user_manage(Model model){ 34 | Pageable user_pageable= PageRequest.of(0,10, Sort.by("id").ascending()); 35 | Page users=userService.findByUserID(user_pageable); 36 | model.addAttribute("total",users.getTotalPages()); 37 | return "admin/user_manage"; 38 | } 39 | 40 | @GetMapping("/user_add") 41 | public String user_add(){ 42 | return "admin/user_add"; 43 | } 44 | 45 | @GetMapping("/userList.do") 46 | @ResponseBody 47 | public List userList(@RequestParam(value = "page",defaultValue = "1")int page){ 48 | Pageable user_pageable= PageRequest.of(page-1,10, Sort.by("id").ascending()); 49 | Page users=userService.findByUserID(user_pageable); 50 | return users.getContent(); 51 | } 52 | 53 | 54 | @GetMapping("/user_edit") 55 | public String user_edit(Model model,int id){ 56 | User user=userService.findById(id); 57 | model.addAttribute("user",user); 58 | return "admin/user_edit"; 59 | } 60 | 61 | @PostMapping("/modifyUser.do") 62 | public void modifyUser(String userID,String oldUserID,String userName, String password, String email, String phone, 63 | HttpServletRequest request, HttpServletResponse response) throws IOException{ 64 | User user=userService.findByUserID(oldUserID); 65 | user.setUserID(userID); 66 | user.setUserName(userName); 67 | user.setPassword(password); 68 | user.setEmail(email); 69 | user.setPhone(phone); 70 | userService.updateUser(user); 71 | response.sendRedirect("user_manage"); 72 | } 73 | 74 | @PostMapping("/addUser.do") 75 | public void addUser(String userID,String userName, String password, String email, String phone, 76 | HttpServletRequest request, HttpServletResponse response) throws IOException{ 77 | User user=new User(); 78 | user.setUserID(userID); 79 | user.setUserName(userName); 80 | user.setPassword(password); 81 | user.setEmail(email); 82 | user.setPhone(phone); 83 | user.setPicture(""); 84 | userService.create(user); 85 | response.sendRedirect("user_manage"); 86 | } 87 | 88 | @PostMapping("/checkUserID.do") 89 | @ResponseBody 90 | public boolean checkUserID(String userID){ 91 | int count=userService.countUserID(userID); 92 | return count < 1; 93 | } 94 | @PostMapping("/delUser.do") 95 | @ResponseBody 96 | public boolean delUser(int id){ 97 | userService.delByID(id); 98 | return true; 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/controller/admin/AdminVenueController.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.admin; 2 | 3 | import antlr.StringUtils; 4 | import com.meethere.entity.Venue; 5 | import com.meethere.service.VenueService; 6 | import com.meethere.utils.FileUtil; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.data.domain.PageRequest; 9 | import org.springframework.data.domain.Pageable; 10 | import org.springframework.data.domain.Sort; 11 | import org.springframework.stereotype.Controller; 12 | import org.springframework.ui.Model; 13 | import org.springframework.web.bind.annotation.*; 14 | import org.springframework.web.multipart.MultipartFile; 15 | 16 | import javax.servlet.http.HttpServletRequest; 17 | import javax.servlet.http.HttpServletResponse; 18 | import java.io.File; 19 | import java.io.IOException; 20 | import java.util.List; 21 | import java.util.Objects; 22 | import java.util.UUID; 23 | 24 | @Controller 25 | public class AdminVenueController { 26 | @Autowired 27 | private VenueService venueService; 28 | 29 | 30 | @RequestMapping("/venue_manage") 31 | public String venue_manage(Model model){ 32 | Pageable pageable= PageRequest.of(0,10, Sort.by("venueID").ascending()); 33 | model.addAttribute("total",venueService.findAll(pageable).getTotalPages()); 34 | return "admin/venue_manage"; 35 | } 36 | 37 | @RequestMapping("/venue_edit") 38 | public String editVenue(Model model,int venueID){ 39 | Venue venue=venueService.findByVenueID(venueID); 40 | model.addAttribute("venue",venue); 41 | return "/admin/venue_edit"; 42 | } 43 | 44 | @RequestMapping("/venue_add") 45 | public String venue_add(){ 46 | return "/admin/venue_add"; 47 | } 48 | 49 | @GetMapping("/venueList.do") 50 | @ResponseBody 51 | public List getVenueList(@RequestParam(value = "page",defaultValue = "1")int page){ 52 | Pageable pageable= PageRequest.of(page-1,10, Sort.by("venueID").ascending()); 53 | return venueService.findAll(pageable).getContent(); 54 | 55 | } 56 | 57 | @PostMapping("/addVenue.do") 58 | @ResponseBody 59 | public void addVenue(String venueName, String address, String description, 60 | int price, MultipartFile picture, String open_time,String close_time,HttpServletRequest request, 61 | HttpServletResponse response) throws Exception { 62 | Venue venue=new Venue(); 63 | venue.setVenueName(venueName); 64 | venue.setAddress(address); 65 | venue.setDescription(description); 66 | venue.setPrice(price); 67 | venue.setOpen_time(open_time); 68 | venue.setClose_time(close_time); 69 | 70 | if(!Objects.equals(picture.getOriginalFilename(), "")){ 71 | venue.setPicture(FileUtil.saveVenueFile(picture)); 72 | }else{ 73 | venue.setPicture(""); 74 | } 75 | 76 | int id=venueService.create(venue); 77 | if (id <= 0) { 78 | request.setAttribute("message", "添加失败!"); 79 | response.sendRedirect("venue_add"); 80 | } else { 81 | response.sendRedirect("venue_manage"); 82 | } 83 | } 84 | 85 | @PostMapping("/modifyVenue.do") 86 | @ResponseBody 87 | public void modifyVenue(int venueID,String venueName, String address, String description, 88 | int price, MultipartFile picture, String open_time,String close_time,HttpServletRequest request, 89 | HttpServletResponse response) throws Exception { 90 | Venue venue=venueService.findByVenueID(venueID); 91 | venue.setVenueName(venueName); 92 | venue.setAddress(address); 93 | venue.setDescription(description); 94 | venue.setPrice(price); 95 | if(!Objects.equals(picture.getOriginalFilename(), "")){ 96 | venue.setPicture(FileUtil.saveVenueFile(picture)); 97 | } 98 | venue.setOpen_time(open_time); 99 | venue.setClose_time(close_time); 100 | venueService.update(venue); 101 | response.sendRedirect("venue_manage"); 102 | } 103 | 104 | @PostMapping("/delVenue.do") 105 | @ResponseBody 106 | public boolean delVenue(int venueID) throws IOException { 107 | venueService.delById(venueID); 108 | return true; 109 | } 110 | 111 | @PostMapping("/checkVenueName.do") 112 | @ResponseBody 113 | public boolean checkVenueName(String venueName){ 114 | int count=venueService.countVenueName(venueName); 115 | return count < 1; 116 | } 117 | 118 | } 119 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/controller/user/MessageController.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.user; 2 | 3 | import com.meethere.entity.Message; 4 | import com.meethere.entity.User; 5 | import com.meethere.entity.vo.MessageVo; 6 | import com.meethere.service.MessageService; 7 | import com.meethere.service.MessageVoService; 8 | import com.meethere.exception.LoginException; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.data.domain.Page; 11 | import org.springframework.data.domain.PageRequest; 12 | import org.springframework.data.domain.Pageable; 13 | import org.springframework.data.domain.Sort; 14 | import org.springframework.stereotype.Controller; 15 | import org.springframework.ui.Model; 16 | import org.springframework.web.bind.annotation.*; 17 | 18 | import javax.servlet.http.HttpServletRequest; 19 | import javax.servlet.http.HttpServletResponse; 20 | import java.io.IOException; 21 | import java.time.LocalDateTime; 22 | import java.util.List; 23 | 24 | @Controller 25 | public class MessageController { 26 | @Autowired 27 | private MessageService messageService; 28 | @Autowired 29 | private MessageVoService messageVoService; 30 | 31 | @GetMapping("/message_list") 32 | public String message_list(Model model,HttpServletRequest request)throws Exception{ 33 | Pageable message_pageable= PageRequest.of(0,5, Sort.by("time").descending()); 34 | Page messages=messageService.findPassState(message_pageable); 35 | List message_list=messageVoService.returnVo(messages.getContent()); 36 | 37 | model.addAttribute("total",messages.getTotalPages()); 38 | 39 | Object user=request.getSession().getAttribute("user"); 40 | if(user==null) { 41 | throw new LoginException("请登录!"); 42 | } 43 | User loginUser=(User)user; 44 | 45 | Pageable user_message_pageable = PageRequest.of(0,5, Sort.by("time").descending()); 46 | model.addAttribute("user_total",messageService.findByUser(loginUser.getUserID(),user_message_pageable).getTotalPages()); 47 | 48 | 49 | 50 | return "message_list"; 51 | } 52 | 53 | //只显示通过状态的留言 54 | @GetMapping("/message/getMessageList") 55 | @ResponseBody 56 | public List message_list(@RequestParam(value = "page",defaultValue = "1")int page){ 57 | System.out.println("success"); 58 | Pageable message_pageable= PageRequest.of(page-1,5, Sort.by("time").descending()); 59 | Page messages=messageService.findPassState(message_pageable); 60 | List message_list=messageVoService.returnVo(messages.getContent()); 61 | 62 | return message_list; 63 | } 64 | 65 | //User的留言不管是否通过都显示 66 | @GetMapping("/message/findUserList") 67 | @ResponseBody 68 | public List user_message_list(@RequestParam(value = "page",defaultValue = "1")int page,HttpServletRequest request){ 69 | System.out.println("find user messages"); 70 | // if(request.getSession().getAttribute("user")!=null) { 71 | Object user=request.getSession().getAttribute("user"); 72 | if(user==null) { 73 | throw new LoginException("请登录!"); 74 | } 75 | User loginUser=(User)user; 76 | 77 | Pageable message_pageable = PageRequest.of(page - 1, 5, Sort.by("time").descending()); 78 | List user_messages = messageService.findByUser(loginUser.getUserID(), message_pageable).getContent(); 79 | return messageVoService.returnVo(user_messages); 80 | // } 81 | // return null; 82 | } 83 | 84 | @PostMapping("/sendMessage") 85 | @ResponseBody 86 | public void sendMessage(String userID, String content, HttpServletResponse response) throws IOException { 87 | Message message=new Message(); 88 | message.setUserID(userID); 89 | message.setContent(content); 90 | message.setState(1); 91 | message.setTime(LocalDateTime.now()); 92 | messageService.create(message); 93 | response.sendRedirect("/message_list"); 94 | } 95 | 96 | @PostMapping("/modifyMessage.do") 97 | @ResponseBody 98 | public boolean modifyMessage(int messageID,String content, HttpServletResponse response) throws IOException { 99 | Message message=messageService.findById(messageID); 100 | message.setContent(content); 101 | message.setTime(LocalDateTime.now()); 102 | message.setState(1); 103 | messageService.update(message); 104 | return true; 105 | } 106 | 107 | @PostMapping("/delMessage.do") 108 | @ResponseBody 109 | public boolean delMessage(int messageID) 110 | { 111 | messageService.delById(messageID); 112 | return true; 113 | } 114 | 115 | } 116 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/controller/user/NewsController.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.user; 2 | 3 | import com.meethere.entity.News; 4 | import com.meethere.service.NewsService; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.data.domain.Page; 7 | import org.springframework.data.domain.PageRequest; 8 | import org.springframework.data.domain.Pageable; 9 | import org.springframework.data.domain.Sort; 10 | import org.springframework.stereotype.Controller; 11 | import org.springframework.ui.Model; 12 | import org.springframework.web.bind.annotation.GetMapping; 13 | import org.springframework.web.bind.annotation.RequestParam; 14 | import org.springframework.web.bind.annotation.ResponseBody; 15 | 16 | import java.util.List; 17 | 18 | @Controller 19 | public class NewsController { 20 | @Autowired 21 | private NewsService newsService; 22 | 23 | @GetMapping("/news") 24 | public String news(Model model,int newsID){ 25 | News news= newsService.findById(newsID); 26 | model.addAttribute("news",news); 27 | return "news"; 28 | } 29 | 30 | @GetMapping("/news/getNewsList") 31 | @ResponseBody 32 | public Page news_list(@RequestParam(value = "page",defaultValue = "1")int page){ 33 | System.out.println("success"); 34 | Pageable news_pageable= PageRequest.of(page-1,5, Sort.by("time").descending()); 35 | return newsService.findAll(news_pageable); 36 | } 37 | 38 | @GetMapping("/news_list") 39 | public String news_list(Model model){ 40 | Pageable news_pageable= PageRequest.of(0,5, Sort.by("time").descending()); 41 | List news_list= newsService.findAll(news_pageable).getContent(); 42 | model.addAttribute("news_list",news_list); 43 | model.addAttribute("total", newsService.findAll(news_pageable).getTotalPages()); 44 | return "news_list"; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/controller/user/OrderController.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.user; 2 | 3 | import com.meethere.entity.Order; 4 | import com.meethere.entity.User; 5 | import com.meethere.entity.Venue; 6 | import com.meethere.entity.vo.OrderVo; 7 | import com.meethere.entity.vo.VenueOrder; 8 | import com.meethere.service.OrderService; 9 | import com.meethere.service.OrderVoService; 10 | import com.meethere.service.VenueService; 11 | import com.meethere.exception.LoginException; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | import org.springframework.data.domain.Page; 14 | import org.springframework.data.domain.PageRequest; 15 | import org.springframework.data.domain.Pageable; 16 | import org.springframework.data.domain.Sort; 17 | import org.springframework.stereotype.Controller; 18 | import org.springframework.ui.Model; 19 | import org.springframework.web.bind.annotation.*; 20 | 21 | import javax.servlet.http.HttpServletRequest; 22 | import javax.servlet.http.HttpServletResponse; 23 | import java.time.LocalDateTime; 24 | import java.time.format.DateTimeFormatter; 25 | import java.util.List; 26 | 27 | @Controller 28 | public class OrderController { 29 | @Autowired 30 | private OrderService orderService; 31 | @Autowired 32 | private OrderVoService orderVoService; 33 | @Autowired 34 | private VenueService venueService; 35 | 36 | @GetMapping("/order_manage") 37 | public String order_manage(Model model,HttpServletRequest request){ 38 | Pageable order_pageable = PageRequest.of(0,5, Sort.by("orderTime").descending()); 39 | Object user=request.getSession().getAttribute("user"); 40 | if(user==null) { 41 | throw new LoginException("请登录!"); 42 | } 43 | User loginUser=(User)user; 44 | Page page=orderService.findUserOrder(loginUser.getUserID(),order_pageable); 45 | 46 | model.addAttribute("total",page.getTotalPages()); 47 | return "order_manage"; 48 | } 49 | 50 | @GetMapping("/order_place.do") 51 | public String order_place(Model model,int venueID) { 52 | 53 | Venue venue=venueService.findByVenueID(venueID); 54 | model.addAttribute("venue",venue); 55 | return "order_place"; 56 | } 57 | 58 | @GetMapping("/order_place") 59 | public String order_place(Model model) { 60 | return "order_place"; 61 | } 62 | 63 | @GetMapping("/getOrderList.do") 64 | @ResponseBody 65 | public List order_list(@RequestParam(value = "page",defaultValue = "1")int page, HttpServletRequest request){ 66 | Pageable order_pageable = PageRequest.of(page-1,5, Sort.by("orderTime").descending()); 67 | Object user=request.getSession().getAttribute("user"); 68 | if(user==null) { 69 | throw new LoginException("请登录!"); 70 | } 71 | User loginUser=(User)user; 72 | Page page1=orderService.findUserOrder(loginUser.getUserID(),order_pageable); 73 | return orderVoService.returnVo(page1.getContent()); 74 | } 75 | 76 | @PostMapping("/addOrder.do") 77 | public void addOrder(String venueName, String date, String startTime, int hours,HttpServletRequest request, HttpServletResponse response) throws Exception { 78 | date=startTime+":00"; 79 | DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); 80 | LocalDateTime ldt = LocalDateTime.parse(date,df); 81 | Object user=request.getSession().getAttribute("user"); 82 | if(user==null) { 83 | throw new LoginException("请登录!"); 84 | } 85 | User loginUser=(User)user; 86 | orderService.submit(venueName,ldt,hours,loginUser.getUserID()); 87 | response.sendRedirect("order_manage"); 88 | } 89 | 90 | @PostMapping("/finishOrder.do") 91 | @ResponseBody 92 | public void finishOrder(int orderID) { 93 | orderService.finishOrder(orderID); 94 | } 95 | 96 | @GetMapping("/modifyOrder.do") 97 | public String editOrder(Model model,int orderID){ 98 | Order order=orderService.findById(orderID); 99 | Venue venue=venueService.findByVenueID(order.getVenueID()); 100 | model.addAttribute("venue",venue); 101 | model.addAttribute("order",order); 102 | return "order_edit"; 103 | } 104 | 105 | @PostMapping("/modifyOrder") 106 | @ResponseBody 107 | public boolean modifyOrder(String venueName, String date, String startTime, int hours,int orderID, HttpServletRequest request, HttpServletResponse response) throws Exception { 108 | date=startTime+":00"; 109 | DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); 110 | LocalDateTime ldt = LocalDateTime.parse(date,df); 111 | Object user=request.getSession().getAttribute("user"); 112 | if(user==null) { 113 | throw new LoginException("请登录!"); 114 | } 115 | User loginUser=(User)user; 116 | orderService.updateOrder(orderID,venueName,ldt,hours,loginUser.getUserID()); 117 | response.sendRedirect("order_manage"); 118 | return true; 119 | } 120 | 121 | @PostMapping("/delOrder.do") 122 | @ResponseBody 123 | public boolean delOrder(int orderID) { 124 | orderService.delOrder(orderID); 125 | return true; 126 | } 127 | 128 | @GetMapping("/order/getOrderList.do") 129 | @ResponseBody 130 | public VenueOrder getOrder(String venueName,String date){ 131 | Venue venue=venueService.findByVenueName(venueName); 132 | VenueOrder venueOrder=new VenueOrder(); 133 | date=date+" 00:00:00"; 134 | DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); 135 | LocalDateTime ldt = LocalDateTime.parse(date,df); 136 | LocalDateTime ldt2=ldt.plusDays(1); 137 | System.out.println(ldt); 138 | System.out.println(ldt2); 139 | 140 | venueOrder.setVenue(venue); 141 | venueOrder.setOrders(orderService.findDateOrder(venue.getVenueID(),ldt,ldt2)); 142 | System.out.println(venueOrder); 143 | return venueOrder; 144 | 145 | } 146 | } 147 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/controller/user/UserController.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.user; 2 | 3 | import com.meethere.entity.User; 4 | import com.meethere.service.UserService; 5 | import com.meethere.utils.FileUtil; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Controller; 8 | import org.springframework.ui.Model; 9 | import org.springframework.web.bind.annotation.*; 10 | import org.springframework.web.multipart.MultipartFile; 11 | 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpServletResponse; 14 | import java.io.IOException; 15 | import java.util.Objects; 16 | 17 | @Controller 18 | public class UserController { 19 | @Autowired 20 | private UserService userService; 21 | 22 | @GetMapping("/signup") 23 | public String signUp(){ 24 | return "signup"; 25 | } 26 | 27 | @GetMapping("/login") 28 | public String login(){ 29 | return "login"; 30 | } 31 | 32 | 33 | 34 | 35 | @PostMapping("/loginCheck.do") 36 | @ResponseBody 37 | public String login(String userID,String password, HttpServletRequest request) throws IOException { 38 | User user=userService.checkLogin(userID,password); 39 | if(user!=null){ 40 | if(user.getIsadmin()==0){ 41 | request.getSession().setAttribute("user",user); 42 | System.out.println("user login!"); 43 | return "/index"; 44 | } 45 | else if(user.getIsadmin()==1){ 46 | request.getSession().setAttribute("admin",user); 47 | System.out.println("admin login!"); 48 | return "/admin_index"; 49 | } 50 | } 51 | return "false"; 52 | 53 | } 54 | 55 | @PostMapping("/register.do") 56 | public void register(String userID,String userName, String password, String email, String phone, 57 | HttpServletResponse response) throws IOException{ 58 | User user=new User(); 59 | user.setUserID(userID); 60 | user.setUserName(userName); 61 | user.setPassword(password); 62 | user.setEmail(email); 63 | user.setPhone(phone); 64 | user.setPicture(""); 65 | userService.create(user); 66 | response.sendRedirect("login"); 67 | } 68 | 69 | @GetMapping("/logout.do") 70 | public void logout(HttpServletRequest request, HttpServletResponse response) throws IOException { 71 | request.getSession().removeAttribute("user"); 72 | System.out.println("log out success!"); 73 | response.sendRedirect("/index"); 74 | } 75 | @GetMapping("/quit.do") 76 | public void quit(HttpServletRequest request, HttpServletResponse response) throws IOException { 77 | request.getSession().removeAttribute("admin"); 78 | System.out.println("log out success!"); 79 | response.sendRedirect("/index"); 80 | } 81 | 82 | 83 | 84 | @PostMapping("/updateUser.do") 85 | public void updateUser(String userName, String userID, String passwordNew,String email, String phone, MultipartFile picture,HttpServletRequest request, HttpServletResponse response) throws Exception { 86 | User user=userService.findByUserID(userID); 87 | user.setUserName(userName); 88 | if(passwordNew!=null&& !"".equals(passwordNew)){ 89 | user.setPassword(passwordNew); 90 | } 91 | user.setEmail(email); 92 | user.setPhone(phone); 93 | if(!Objects.equals(picture.getOriginalFilename(), "")){ 94 | user.setPicture(FileUtil.saveUserFile(picture)); 95 | } 96 | 97 | userService.updateUser(user); 98 | request.getSession().removeAttribute("user"); 99 | request.getSession().setAttribute("user",user); 100 | response.sendRedirect("user_info"); 101 | } 102 | 103 | 104 | @GetMapping("/checkPassword.do") 105 | @ResponseBody 106 | public boolean checkPassword(String userID,String password) 107 | { 108 | User user=userService.findByUserID(userID); 109 | return user.getPassword().equals(password); 110 | } 111 | 112 | @GetMapping("/user_info") 113 | public String user_info(Model model){ 114 | return "user_info"; 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/controller/user/VenueController.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.user; 2 | 3 | import com.meethere.entity.Venue; 4 | import com.meethere.service.VenueService; 5 | import com.sun.org.apache.xerces.internal.util.SynchronizedSymbolTable; 6 | import org.hibernate.annotations.Parameter; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.data.domain.Page; 9 | import org.springframework.data.domain.PageRequest; 10 | import org.springframework.data.domain.Pageable; 11 | import org.springframework.data.domain.Sort; 12 | import org.springframework.data.repository.query.Param; 13 | import org.springframework.stereotype.Controller; 14 | import org.springframework.ui.Model; 15 | import org.springframework.web.bind.annotation.GetMapping; 16 | import org.springframework.web.bind.annotation.RequestMapping; 17 | import org.springframework.web.bind.annotation.RequestParam; 18 | import org.springframework.web.bind.annotation.ResponseBody; 19 | 20 | import java.util.List; 21 | 22 | @Controller 23 | public class VenueController { 24 | @Autowired 25 | private VenueService venueService; 26 | 27 | /** 28 | * 场馆详情页面 29 | */ 30 | @GetMapping("/venue") 31 | public String toGymPage(Model model,int venueID){ 32 | Venue venue = venueService.findByVenueID(venueID); 33 | model.addAttribute("venue", venue); 34 | return "venue"; 35 | } 36 | 37 | /** 38 | * 分页查看场馆 39 | *@param page 40 | */ 41 | @ResponseBody 42 | @GetMapping("/venuelist/getVenueList") 43 | public Page venue_list(@RequestParam(value = "page",defaultValue = "1")int page){ 44 | System.out.println("success"); 45 | Pageable venue_pageable= PageRequest.of(page-1,5, Sort.by("venueID").ascending()); 46 | return venueService.findAll(venue_pageable); 47 | } 48 | 49 | @GetMapping("/venue_list") 50 | public String venue_list(Model model){ 51 | Pageable venue_pageable= PageRequest.of(0,5, Sort.by("venueID").ascending()); 52 | List venue_list=venueService.findAll(venue_pageable).getContent(); 53 | model.addAttribute("venue_list",venue_list); 54 | model.addAttribute("total", venueService.findAll(venue_pageable).getTotalPages()); 55 | return "venue_list"; 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/dao/MessageDao.java: -------------------------------------------------------------------------------- 1 | package com.meethere.dao; 2 | 3 | import com.meethere.entity.Message; 4 | import org.springframework.data.domain.Page; 5 | import org.springframework.data.domain.Pageable; 6 | import org.springframework.data.jpa.repository.JpaRepository; 7 | import org.springframework.data.jpa.repository.Modifying; 8 | import org.springframework.data.jpa.repository.Query; 9 | 10 | import javax.transaction.Transactional; 11 | import java.util.List; 12 | 13 | public interface MessageDao extends JpaRepository { 14 | Message findByMessageID(int messageID); 15 | 16 | Page findAllByUserID(String userID,Pageable pageable); 17 | 18 | Page findAllByState(int state,Pageable pageable); 19 | 20 | @Transactional 21 | @Modifying 22 | @Query(value="update Message o set o.state=?1 where o.messageID=?2",nativeQuery =true) 23 | void updateState(int state, int messageID); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/dao/NewsDao.java: -------------------------------------------------------------------------------- 1 | package com.meethere.dao; 2 | 3 | import com.meethere.entity.News; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | 6 | public interface NewsDao extends JpaRepository { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/dao/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.meethere.dao; 2 | 3 | import com.meethere.entity.Order; 4 | import org.springframework.data.domain.Page; 5 | import org.springframework.data.domain.Pageable; 6 | import org.springframework.data.jpa.repository.JpaRepository; 7 | import org.springframework.data.jpa.repository.Modifying; 8 | import org.springframework.data.jpa.repository.Query; 9 | 10 | import javax.transaction.Transactional; 11 | import java.time.LocalDateTime; 12 | import java.util.List; 13 | 14 | public interface OrderDao extends JpaRepository { 15 | 16 | Order findByOrderID(int orderID); 17 | 18 | Page findAllByState(int state,Pageable pageable); 19 | 20 | List findByVenueIDAndStartTimeIsBetween(int venueID, LocalDateTime startTime, LocalDateTime startTime2); 21 | 22 | @Query(value = "select * from `order` o where o.state = ?1 or o.state = ?2 ", nativeQuery = true) 23 | List findAudit(int state1,int state2); 24 | 25 | Page findAllByUserID(String userID, Pageable pageable); 26 | 27 | @Transactional 28 | @Modifying 29 | @Query(value="update `order` o set o.state=?1 where o.orderID=?2",nativeQuery =true) 30 | void updateState(int state, int orderID); 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/dao/UserDao.java: -------------------------------------------------------------------------------- 1 | package com.meethere.dao; 2 | 3 | import com.meethere.entity.User; 4 | import org.springframework.data.domain.Page; 5 | import org.springframework.data.domain.Pageable; 6 | import org.springframework.data.jpa.repository.JpaRepository; 7 | 8 | public interface UserDao extends JpaRepository { 9 | User findByUserIDAndPassword(String userID, String password); 10 | User findByUserID(String userID); 11 | Page findAllByIsadmin(int isadmin, Pageable pageable); 12 | int countByUserID(String userID); 13 | User findById(int id); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/dao/VenueDao.java: -------------------------------------------------------------------------------- 1 | package com.meethere.dao; 2 | 3 | import com.meethere.entity.Venue; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.data.jpa.repository.Query; 6 | 7 | import java.util.List; 8 | 9 | public interface VenueDao extends JpaRepository { 10 | Venue findByVenueID(int venueID); 11 | 12 | Venue findByVenueName(String venueName); 13 | 14 | @Override 15 | @Query(value = "select * from venue",nativeQuery = true) 16 | List findAll(); 17 | 18 | int countByVenueName(String venueName); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/entity/Message.java: -------------------------------------------------------------------------------- 1 | package com.meethere.entity; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import javax.persistence.Entity; 9 | import javax.persistence.GeneratedValue; 10 | import javax.persistence.GenerationType; 11 | import javax.persistence.Id; 12 | import java.time.LocalDateTime; 13 | import java.util.Date; 14 | 15 | @Data 16 | @Entity 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | public class Message { 20 | 21 | @Id 22 | @GeneratedValue(strategy = GenerationType.IDENTITY) 23 | private int messageID; 24 | 25 | private String userID; 26 | 27 | private String content; 28 | 29 | @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss") 30 | private LocalDateTime time; 31 | 32 | /** 33 | * 1未审核 2审核通过 3拒绝留言发表 34 | */ 35 | private int state; 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/entity/News.java: -------------------------------------------------------------------------------- 1 | package com.meethere.entity; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | import org.apache.tomcat.jni.Local; 8 | 9 | import javax.persistence.Entity; 10 | import javax.persistence.GeneratedValue; 11 | import javax.persistence.GenerationType; 12 | import javax.persistence.Id; 13 | import java.time.LocalDateTime; 14 | import java.util.Date; 15 | 16 | @Data 17 | @Entity 18 | @NoArgsConstructor 19 | @AllArgsConstructor 20 | public class News { 21 | @Id 22 | @GeneratedValue(strategy = GenerationType.IDENTITY) 23 | private int newsID; 24 | 25 | private String title; 26 | 27 | private String content; 28 | 29 | @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss") 30 | private LocalDateTime time; 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/entity/Order.java: -------------------------------------------------------------------------------- 1 | package com.meethere.entity; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.apache.tomcat.jni.Local; 7 | 8 | import javax.persistence.*; 9 | import java.io.Serializable; 10 | import java.time.LocalDateTime; 11 | import java.util.Date; 12 | 13 | @Data 14 | @Entity 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | @Table(name="`order`") 18 | public class Order { 19 | @Id 20 | @GeneratedValue(strategy = GenerationType.IDENTITY) 21 | private int orderID; 22 | 23 | private String userID; 24 | 25 | private int venueID; 26 | 27 | /** 28 | * 1未审核 2已审核 3已完成 4失效 29 | */ 30 | @Column(name="state") 31 | private int state; 32 | 33 | @Column(name="order_time") 34 | private LocalDateTime orderTime; 35 | 36 | @Column(name="start_time") 37 | private LocalDateTime startTime; 38 | 39 | private int hours; 40 | 41 | private int total; 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/entity/User.java: -------------------------------------------------------------------------------- 1 | package com.meethere.entity; 2 | 3 | 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import javax.persistence.*; 9 | 10 | @Data 11 | @Entity 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class User { 15 | 16 | @Id 17 | @GeneratedValue(strategy = GenerationType.IDENTITY) 18 | private int id; 19 | 20 | private String userID; 21 | 22 | @Column(name="user_name") 23 | private String userName; 24 | 25 | private String password; 26 | 27 | private String email; 28 | 29 | private String phone; 30 | 31 | private int isadmin; 32 | 33 | private String picture; 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/entity/Venue.java: -------------------------------------------------------------------------------- 1 | package com.meethere.entity; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import javax.persistence.*; 9 | 10 | import java.time.LocalTime; 11 | import java.util.Date; 12 | 13 | @Data 14 | @Entity 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class Venue { 18 | @Id 19 | @GeneratedValue(strategy = GenerationType.IDENTITY) 20 | private int venueID; 21 | 22 | @Column(name="venue_name") 23 | private String venueName; 24 | 25 | private String description; 26 | 27 | private int price; 28 | 29 | private String picture; 30 | 31 | private String address; 32 | 33 | private String open_time; 34 | 35 | private String close_time; 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/entity/vo/MessageVo.java: -------------------------------------------------------------------------------- 1 | package com.meethere.entity.vo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.time.LocalDateTime; 9 | import java.util.Date; 10 | 11 | @Data 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class MessageVo { 15 | 16 | private int messageID; 17 | 18 | private String userID; 19 | 20 | private String content; 21 | 22 | @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss") 23 | private LocalDateTime time; 24 | 25 | private String userName; 26 | 27 | private String picture; 28 | 29 | private int state; 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/entity/vo/OrderVo.java: -------------------------------------------------------------------------------- 1 | package com.meethere.entity.vo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import javax.persistence.Column; 9 | import javax.persistence.GeneratedValue; 10 | import javax.persistence.Id; 11 | import java.time.LocalDateTime; 12 | import java.util.Date; 13 | 14 | @Data 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class OrderVo { 18 | private int orderID; 19 | 20 | private String userID; 21 | 22 | private int venueID; 23 | 24 | private String venueName; 25 | 26 | /** 27 | * 1未审核 2已审核 3已完成 4失效 28 | */ 29 | private int state; 30 | 31 | @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss") 32 | private LocalDateTime orderTime; 33 | 34 | @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss") 35 | private LocalDateTime startTime; 36 | 37 | private int hours; 38 | 39 | private int total; 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/entity/vo/VenueOrder.java: -------------------------------------------------------------------------------- 1 | package com.meethere.entity.vo; 2 | 3 | import com.meethere.entity.Order; 4 | import com.meethere.entity.Venue; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Data; 7 | import lombok.NoArgsConstructor; 8 | 9 | import java.util.List; 10 | 11 | @Data 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class VenueOrder { 15 | Venue venue; 16 | List orders; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/exception/LoginException.java: -------------------------------------------------------------------------------- 1 | package com.meethere.exception; 2 | 3 | public class LoginException extends RuntimeException { 4 | public LoginException() { 5 | } 6 | 7 | public LoginException(String message) { 8 | super(message); 9 | } 10 | 11 | public LoginException(String message, Throwable cause) { 12 | super(message, cause); 13 | } 14 | 15 | public LoginException(Throwable cause) { 16 | super(cause); 17 | } 18 | 19 | public LoginException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { 20 | super(message, cause, enableSuppression, writableStackTrace); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/service/MessageService.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service; 2 | 3 | import com.meethere.entity.Message; 4 | import org.springframework.data.domain.Page; 5 | import org.springframework.data.domain.Pageable; 6 | 7 | import javax.servlet.http.HttpServletRequest; 8 | import java.util.List; 9 | 10 | public interface MessageService { 11 | 12 | int STATE_NO_AUDIT=1; 13 | int STATE_PASS=2; 14 | int STATE_REJECT=3; 15 | 16 | Message findById(int messageID); 17 | 18 | /** 19 | * 分页返回用户留言 20 | * @param pageable 21 | * @return 22 | */ 23 | Page findByUser(String userID,Pageable pageable); 24 | 25 | /** 26 | * 添加留言 27 | * 28 | * @param message 29 | * @return 30 | */ 31 | int create(Message message); 32 | 33 | /** 34 | * 删除留言 35 | * 36 | * @param messageID 37 | */ 38 | void delById(int messageID); 39 | 40 | void update(Message message); 41 | 42 | void confirmMessage(int messageID); 43 | 44 | void rejectMessage(int messageID); 45 | 46 | Page findWaitState(Pageable pageable); 47 | 48 | Page findPassState(Pageable pageable); 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/service/MessageVoService.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service; 2 | 3 | import com.meethere.entity.Message; 4 | import com.meethere.entity.vo.MessageVo; 5 | import org.springframework.data.domain.Page; 6 | import org.springframework.data.domain.Pageable; 7 | 8 | import javax.servlet.http.HttpServletRequest; 9 | import java.util.List; 10 | 11 | public interface MessageVoService { 12 | MessageVo returnMessageVoByMessageID(int messageID); 13 | List returnVo(List messages); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/service/NewsService.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service; 2 | 3 | import com.meethere.entity.News; 4 | import org.springframework.data.domain.Page; 5 | import org.springframework.data.domain.Pageable 6 | ; 7 | import java.util.List; 8 | 9 | public interface NewsService { 10 | Page findAll(Pageable pageable); 11 | 12 | News findById(int newsID); 13 | 14 | int create(News news); 15 | 16 | void delById(int newsID); 17 | 18 | void update(News news); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/service/OrderService.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service; 2 | 3 | import com.meethere.entity.Order; 4 | import org.springframework.data.domain.Page; 5 | import org.springframework.data.domain.Pageable; 6 | import org.springframework.http.HttpRequest; 7 | 8 | import javax.servlet.http.HttpServletRequest; 9 | import javax.servlet.http.HttpServletResponse; 10 | import java.io.IOException; 11 | import java.time.LocalDateTime; 12 | import java.util.Date; 13 | import java.util.List; 14 | 15 | public interface OrderService { 16 | int STATE_NO_AUDIT=1; 17 | int STATE_WAIT=2; 18 | int STATE_FINISH=3; 19 | int STATE_REJECT=4; 20 | 21 | /** 22 | * 根据orderID查看订单 23 | * 24 | * @param OrderID 25 | * @return 26 | */ 27 | Order findById(int OrderID); 28 | 29 | 30 | Page findNoAuditOrder(Pageable pageable); 31 | 32 | List findAuditOrder(); 33 | 34 | 35 | List findDateOrder(int venueID, LocalDateTime startTime, LocalDateTime startTime2); 36 | 37 | Page findUserOrder(String userID,Pageable pageable); 38 | 39 | void updateOrder(int orderID,String venueName, LocalDateTime startTime, int hours, String userID); 40 | /** 41 | * 新建订单 42 | * @param venueName 43 | * @param startTime 44 | * @param hours 45 | */ 46 | void submit(String venueName, LocalDateTime startTime, int hours, String userID); 47 | 48 | /** 49 | * 删除订单 50 | * @param orderID 51 | */ 52 | void delOrder(int orderID); 53 | 54 | /** 55 | * 通过订单 56 | * @param orderID 57 | */ 58 | void confirmOrder(int orderID); 59 | 60 | /** 61 | * 完成订单 62 | * @param orderID 63 | */ 64 | void finishOrder(int orderID); 65 | 66 | /** 67 | *拒绝预定 68 | * @param orderID 69 | */ 70 | void rejectOrder(int orderID); 71 | } 72 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/service/OrderVoService.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service; 2 | 3 | 4 | import com.meethere.entity.Order; 5 | import com.meethere.entity.vo.OrderVo; 6 | 7 | import java.util.List; 8 | 9 | public interface OrderVoService { 10 | OrderVo returnOrderVoByOrderID(int orderID); 11 | List returnVo(List list); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service; 2 | 3 | import com.meethere.entity.User; 4 | import org.springframework.data.domain.Page; 5 | import org.springframework.data.domain.Pageable; 6 | 7 | public interface UserService { 8 | /** 9 | * 根据用户id查找用户 10 | * 11 | * @param userID 12 | * @return 13 | */ 14 | User findByUserID(String userID); 15 | User findById(int id); 16 | /** 17 | * 管理员分页查看用户 18 | * 19 | * @param pageable 20 | * @return 21 | */ 22 | Page findByUserID(Pageable pageable); 23 | 24 | /** 25 | * 检查登录 26 | * 27 | * @param userID 28 | * @param password 29 | * @return 30 | */ 31 | User checkLogin(String userID, String password); 32 | 33 | /** 34 | * 创建用户 35 | * 36 | * @param user 37 | * @return 38 | */ 39 | int create(User user); 40 | 41 | /** 42 | * 根据id删除用户 43 | * 44 | * @param id 45 | */ 46 | void delByID(int id); 47 | 48 | void updateUser(User user); 49 | 50 | int countUserID(String userID); 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/service/VenueService.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service; 2 | 3 | import com.meethere.entity.Venue; 4 | import org.springframework.data.domain.Page; 5 | import org.springframework.data.domain.Pageable; 6 | 7 | import java.util.List; 8 | 9 | public interface VenueService { 10 | /** 11 | * 根据体育馆id查看 12 | * 13 | * @param id 14 | * @return 15 | */ 16 | Venue findByVenueID(int id); 17 | 18 | Venue findByVenueName(String venueName); 19 | /** 20 | * 分页查看所有场馆 21 | * @param pageable 22 | * @return 23 | */ 24 | Page findAll(Pageable pageable); 25 | 26 | List findAll(); 27 | /** 28 | * 创建新的场馆 29 | * 30 | * @param venue 31 | * @return 32 | */ 33 | int create(Venue venue); 34 | 35 | /** 36 | * 更新场馆信息 37 | * 38 | * @param venue 39 | */ 40 | void update(Venue venue); 41 | 42 | /** 43 | * 删除场馆 44 | * 45 | * @param id 46 | */ 47 | void delById(int id); 48 | 49 | int countVenueName(String venueName); 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/service/impl/MessageServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service.impl; 2 | 3 | import com.meethere.dao.MessageDao; 4 | import com.meethere.entity.Message; 5 | import com.meethere.service.MessageService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.data.domain.Page; 8 | import org.springframework.data.domain.Pageable; 9 | import org.springframework.stereotype.Service; 10 | 11 | @Service 12 | public class MessageServiceImpl implements MessageService { 13 | @Autowired 14 | private MessageDao messageDao; 15 | 16 | @Override 17 | public Message findById(int messageID) { 18 | return messageDao.getOne(messageID); 19 | } 20 | 21 | @Override 22 | public Page findByUser(String userID,Pageable pageable) { 23 | 24 | Page page=messageDao.findAllByUserID(userID,pageable); 25 | return page; 26 | } 27 | 28 | @Override 29 | public int create(Message message) { 30 | return messageDao.save(message).getMessageID(); 31 | } 32 | 33 | @Override 34 | public void delById(int messageID) { 35 | messageDao.deleteById(messageID); 36 | } 37 | 38 | @Override 39 | public void update(Message message) { 40 | messageDao.save(message); 41 | } 42 | 43 | @Override 44 | public void confirmMessage(int messageID) { 45 | Message message=messageDao.findByMessageID(messageID); 46 | if(message==null) { 47 | throw new RuntimeException("留言不存在"); 48 | } 49 | messageDao.updateState(STATE_PASS,message.getMessageID()); 50 | } 51 | 52 | @Override 53 | public void rejectMessage(int messageID) { 54 | Message message=messageDao.findByMessageID(messageID); 55 | if(message==null) { 56 | throw new RuntimeException("留言不存在"); 57 | } 58 | messageDao.updateState(STATE_REJECT,message.getMessageID()); 59 | } 60 | 61 | @Override 62 | public Page findWaitState(Pageable pageable) { 63 | return messageDao.findAllByState(STATE_NO_AUDIT,pageable); 64 | } 65 | 66 | @Override 67 | public Page findPassState(Pageable pageable) { 68 | return messageDao.findAllByState(STATE_PASS,pageable); 69 | } 70 | 71 | } 72 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/service/impl/MessageVoServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service.impl; 2 | 3 | import com.meethere.dao.MessageDao; 4 | import com.meethere.dao.UserDao; 5 | import com.meethere.entity.Message; 6 | import com.meethere.entity.User; 7 | import com.meethere.entity.vo.MessageVo; 8 | import com.meethere.service.MessageVoService; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.stereotype.Service; 11 | 12 | import java.util.ArrayList; 13 | import java.util.List; 14 | 15 | @Service 16 | public class MessageVoServiceImpl implements MessageVoService { 17 | @Autowired 18 | private MessageDao messageDao; 19 | @Autowired 20 | private UserDao userDao; 21 | 22 | @Override 23 | public MessageVo returnMessageVoByMessageID(int messageID) { 24 | Message message=messageDao.findByMessageID(messageID); 25 | User user=userDao.findByUserID(message.getUserID()); 26 | MessageVo messageVo=new MessageVo(message.getMessageID(),user.getUserID(),message.getContent(),message.getTime(),user.getUserName(),user.getPicture(),message.getState()); 27 | 28 | return messageVo; 29 | } 30 | 31 | @Override 32 | public List returnVo(List messages) { 33 | List list=new ArrayList<>(); 34 | for(int i=0;i findAll(Pageable pageable) { 18 | return newsDao.findAll(pageable); 19 | } 20 | 21 | @Override 22 | public News findById(int newsID) { 23 | return newsDao.getOne(newsID); 24 | } 25 | 26 | @Override 27 | public int create(News news) { 28 | return newsDao.save(news).getNewsID(); 29 | } 30 | 31 | @Override 32 | public void delById(int newsID) { 33 | newsDao.deleteById(newsID); 34 | } 35 | 36 | @Override 37 | public void update(News news) { 38 | newsDao.save(news); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/service/impl/OrderServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service.impl; 2 | 3 | import com.meethere.dao.OrderDao; 4 | 5 | import com.meethere.dao.VenueDao; 6 | import com.meethere.entity.Venue; 7 | import com.meethere.entity.Order; 8 | import com.meethere.service.OrderService; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.data.domain.Page; 11 | 12 | import org.springframework.data.domain.Pageable; 13 | import org.springframework.stereotype.Service; 14 | 15 | import java.time.LocalDateTime; 16 | import java.util.List; 17 | 18 | @Service 19 | public class OrderServiceImpl implements OrderService { 20 | @Autowired 21 | private OrderDao orderDao; 22 | 23 | @Autowired 24 | private VenueDao venueDao; 25 | 26 | @Override 27 | public Order findById(int OrderID) { 28 | return orderDao.getOne(OrderID); 29 | } 30 | 31 | @Override 32 | public List findDateOrder(int venueID, LocalDateTime startTime, LocalDateTime startTime2) { 33 | return orderDao.findByVenueIDAndStartTimeIsBetween(venueID,startTime,startTime2); 34 | } 35 | 36 | @Override 37 | public Page findUserOrder(String userID, Pageable pageable) { 38 | return orderDao.findAllByUserID(userID,pageable); 39 | } 40 | 41 | 42 | @Override 43 | public void updateOrder(int orderID, String venueName, LocalDateTime startTime, int hours,String userID) { 44 | Venue venue =venueDao.findByVenueName(venueName); 45 | Order order=orderDao.findByOrderID(orderID); 46 | order.setState(STATE_NO_AUDIT); 47 | order.setHours(hours); 48 | order.setVenueID(venue.getVenueID()); 49 | order.setOrderTime(LocalDateTime.now()); 50 | order.setStartTime(startTime); 51 | order.setUserID(userID); 52 | order.setTotal(hours* venue.getPrice()); 53 | 54 | orderDao.save(order); 55 | } 56 | 57 | @Override 58 | public void submit(String venueName, LocalDateTime startTime, int hours, String userID) { 59 | 60 | Venue venue =venueDao.findByVenueName(venueName); 61 | 62 | Order order=new Order(); 63 | order.setState(STATE_NO_AUDIT); 64 | order.setHours(hours); 65 | order.setVenueID(venue.getVenueID()); 66 | order.setOrderTime(LocalDateTime.now()); 67 | order.setStartTime(startTime); 68 | order.setUserID(userID); 69 | order.setTotal(hours* venue.getPrice()); 70 | orderDao.save(order); 71 | } 72 | 73 | @Override 74 | public void delOrder(int orderID) { 75 | orderDao.deleteById(orderID); 76 | } 77 | 78 | @Override 79 | public void confirmOrder(int orderID) { 80 | Order order=orderDao.findByOrderID(orderID); 81 | if(order == null) { 82 | throw new RuntimeException("订单不存在"); 83 | } 84 | orderDao.updateState(STATE_WAIT,order.getOrderID()); 85 | } 86 | 87 | @Override 88 | public void finishOrder(int orderID) { 89 | Order order=orderDao.findByOrderID(orderID); 90 | if(order == null) { 91 | throw new RuntimeException("订单不存在"); 92 | } 93 | orderDao.updateState(STATE_FINISH,order.getOrderID()); 94 | } 95 | 96 | @Override 97 | public void rejectOrder(int orderID) { 98 | Order order=orderDao.findByOrderID(orderID); 99 | if(order == null) { 100 | throw new RuntimeException("订单不存在"); 101 | } 102 | orderDao.updateState(STATE_REJECT,order.getOrderID()); 103 | } 104 | 105 | @Override 106 | public Page findNoAuditOrder(Pageable pageable) { 107 | return orderDao.findAllByState(STATE_NO_AUDIT,pageable); 108 | } 109 | 110 | @Override 111 | public List findAuditOrder() { 112 | return orderDao.findAudit(STATE_WAIT,STATE_FINISH); 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/service/impl/OrderVoServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service.impl; 2 | 3 | 4 | import com.meethere.dao.OrderDao; 5 | import com.meethere.dao.VenueDao; 6 | import com.meethere.entity.Order; 7 | import com.meethere.entity.Venue; 8 | import com.meethere.entity.vo.OrderVo; 9 | import com.meethere.service.OrderService; 10 | import com.meethere.service.OrderVoService; 11 | import org.springframework.beans.factory.annotation.Autowired; 12 | import org.springframework.stereotype.Service; 13 | 14 | import java.util.ArrayList; 15 | import java.util.List; 16 | 17 | @Service 18 | public class OrderVoServiceImpl implements OrderVoService { 19 | @Autowired 20 | private OrderDao orderDao; 21 | @Autowired 22 | private VenueDao venueDao; 23 | 24 | 25 | @Override 26 | public OrderVo returnOrderVoByOrderID(int orderID) { 27 | Order order=orderDao.findByOrderID(orderID); 28 | Venue venue=venueDao.findByVenueID(order.getVenueID()); 29 | OrderVo orderVo=new OrderVo(order.getOrderID(),order.getUserID(),order.getVenueID(),venue.getVenueName(), 30 | order.getState(),order.getOrderTime(),order.getStartTime(),order.getHours(),order.getTotal()); 31 | 32 | return orderVo; 33 | } 34 | 35 | @Override 36 | public List returnVo(List list) { 37 | List list1=new ArrayList<>(); 38 | for(int i=0;i findByUserID(Pageable pageable) { 28 | return userDao.findAllByIsadmin(0,pageable); 29 | } 30 | 31 | @Override 32 | public User checkLogin(String userID, String password) { 33 | return userDao.findByUserIDAndPassword(userID,password); 34 | } 35 | 36 | @Override 37 | public int create(User user) { 38 | userDao.save(user); 39 | return userDao.findAll().size(); 40 | } 41 | 42 | @Override 43 | public void delByID(int id) { 44 | userDao.deleteById(id); 45 | } 46 | 47 | 48 | @Override 49 | public void updateUser(User user) { 50 | userDao.save(user); 51 | } 52 | 53 | @Override 54 | public int countUserID(String userID) { 55 | return userDao.countByUserID(userID); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/service/impl/VenueServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service.impl; 2 | 3 | import com.meethere.dao.VenueDao; 4 | import com.meethere.entity.Venue; 5 | import com.meethere.service.VenueService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.data.domain.Page; 8 | import org.springframework.data.domain.Pageable; 9 | import org.springframework.stereotype.Service; 10 | 11 | import java.util.List; 12 | 13 | @Service 14 | public class VenueServiceImpl implements VenueService { 15 | @Autowired 16 | private VenueDao venueDao; 17 | 18 | @Override 19 | public Venue findByVenueID(int id) { 20 | return venueDao.getOne(id); 21 | } 22 | 23 | @Override 24 | public Venue findByVenueName(String venueName) { 25 | return venueDao.findByVenueName(venueName); 26 | } 27 | 28 | @Override 29 | public Page findAll(Pageable pageable) { 30 | return venueDao.findAll(pageable); 31 | } 32 | 33 | @Override 34 | public List findAll() { 35 | return venueDao.findAll(); 36 | } 37 | 38 | @Override 39 | public int create(Venue venue) { 40 | return venueDao.save(venue).getVenueID(); 41 | } 42 | 43 | @Override 44 | public void update(Venue venue) { 45 | venueDao.save(venue); 46 | } 47 | 48 | @Override 49 | public void delById(int id) { 50 | venueDao.deleteById(id); 51 | } 52 | 53 | @Override 54 | public int countVenueName(String venueName) { 55 | return venueDao.countByVenueName(venueName); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/meethere/utils/FileUtil.java: -------------------------------------------------------------------------------- 1 | package com.meethere.utils; 2 | 3 | import org.springframework.util.ClassUtils; 4 | import org.springframework.util.ResourceUtils; 5 | import org.springframework.web.multipart.MultipartFile; 6 | 7 | import java.io.File; 8 | import java.io.FileNotFoundException; 9 | import java.nio.file.Files; 10 | import java.nio.file.Paths; 11 | import java.nio.file.StandardOpenOption; 12 | import java.security.MessageDigest; 13 | import java.util.UUID; 14 | 15 | public class FileUtil { 16 | 17 | /** 18 | * 保存上传的文件 19 | * 20 | * @param picture 21 | * @return 文件下载的url 22 | * @throws Exception 23 | */ 24 | public static String saveVenueFile(MultipartFile picture) throws Exception { 25 | 26 | if (picture.isEmpty()) { 27 | return ""; 28 | } 29 | String fileDirPath = ClassUtils.getDefaultClassLoader().getResource("static").getPath() + "/file/venue"; 30 | return "file/venue/" + savePicture(fileDirPath, picture); 31 | } 32 | 33 | public static String saveUserFile(MultipartFile picture) throws Exception{ 34 | if (picture.isEmpty()) { 35 | return ""; 36 | } 37 | String fileDirPath = ClassUtils.getDefaultClassLoader().getResource("static").getPath() + "/file/user"; 38 | return "file/user/" + savePicture(fileDirPath, picture); 39 | } 40 | 41 | public static String savePicture(String filePath, MultipartFile picture) throws Exception{ 42 | File fileDir = new File(filePath); 43 | System.out.println(fileDir.mkdirs()); 44 | 45 | String filename = picture.getOriginalFilename(); 46 | 47 | System.out.println(fileDir.getAbsolutePath()); 48 | String suffixName = filename.substring(filename.lastIndexOf(".")); 49 | filename = UUID.randomUUID() + suffixName; 50 | File newFile = new File(fileDir.getAbsolutePath() + File.separator + filename); 51 | System.out.println(newFile.getAbsolutePath()); 52 | // 上传图片到 -》 “绝对路径” 53 | picture.transferTo(newFile); 54 | return filename; 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8888 3 | spring: 4 | thymeleaf: 5 | cache: false 6 | check-template-location: true 7 | enabled: true 8 | encoding: UTF-8 9 | excluded-view-names: 10 | mode: HTML 11 | prefix: classpath:/templates/ 12 | suffix: .html 13 | devtools: 14 | restart: 15 | enabled: true 16 | additional-paths: src/main/java 17 | datasource: 18 | url: jdbc:mysql://localhost:3306/meethere_db?useSSL=false&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_To_NULL&serverTimezone=Asia/Shanghai 19 | username: root 20 | password: 1234 21 | driver-class-name: com.mysql.cj.jdbc.Driver 22 | jpa: 23 | hibernate: 24 | ddl-auto: update 25 | database: mysql 26 | show-sql: true 27 | servlet: 28 | multipart: 29 | max-file-size: 10MB 30 | max-request-size: 100MB 31 | -------------------------------------------------------------------------------- /src/main/resources/static/css/dashboard.css: -------------------------------------------------------------------------------- 1 | body { 2 | /*font-size: .875rem;*/ 3 | } 4 | 5 | .feather { 6 | width: 16px; 7 | height: 16px; 8 | vertical-align: text-bottom; 9 | } 10 | 11 | /* 12 | * Sidebar 13 | */ 14 | 15 | .sidebar { 16 | position: fixed; 17 | top: 0; 18 | bottom: 0; 19 | left: 0; 20 | z-index: 100; /* Behind the navbar */ 21 | padding: 48px 0 0; /* Height of navbar */ 22 | box-shadow: inset -1px 0 0 rgba(0, 0, 0, .1); 23 | } 24 | 25 | .side-link { 26 | 27 | } 28 | 29 | .sidebar-sticky { 30 | position: relative; 31 | top: 0; 32 | height: calc(100vh - 48px); 33 | padding-top: .5rem; 34 | overflow-x: hidden; 35 | overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */ 36 | } 37 | 38 | @supports ((position: -webkit-sticky) or (position: sticky)) { 39 | .sidebar-sticky { 40 | position: -webkit-sticky; 41 | position: sticky; 42 | } 43 | } 44 | 45 | .sidebar .nav-link { 46 | font-weight: 500; 47 | color: #333; 48 | } 49 | 50 | .sidebar .nav-link .feather { 51 | margin-right: 4px; 52 | color: #999; 53 | } 54 | 55 | .sidebar .nav-link.active { 56 | color: #007bff; 57 | } 58 | 59 | .sidebar .nav-link:hover .feather, 60 | .sidebar .nav-link.active .feather { 61 | color: inherit; 62 | } 63 | 64 | .sidebar-heading { 65 | font-size: .75rem; 66 | text-transform: uppercase; 67 | } 68 | 69 | /* 70 | * Content 71 | */ 72 | 73 | [role="main"] { 74 | padding-top: 133px; /* Space for fixed navbar */ 75 | } 76 | 77 | @media (min-width: 768px) { 78 | [role="main"] { 79 | padding-top: 55px; /* Space for fixed navbar */ 80 | } 81 | } 82 | 83 | /* 84 | * Navbar 85 | */ 86 | 87 | /*.navbar-brand {*/ 88 | /* padding-top: .75rem;*/ 89 | /* padding-bottom: .75rem;*/ 90 | /* font-size: 1rem;*/ 91 | /* background-color: rgba(0, 0, 0, .25);*/ 92 | /* box-shadow: inset -1px 0 0 rgba(0, 0, 0, .25);*/ 93 | /*}*/ 94 | 95 | /*.navbar .form-control {*/ 96 | /* padding: .75rem 1rem;*/ 97 | /* border-width: 0;*/ 98 | /* border-radius: 0;*/ 99 | /*}*/ 100 | 101 | /*.form-control-dark {*/ 102 | /* color: #fff;*/ 103 | /* background-color: rgba(255, 255, 255, .1);*/ 104 | /* border-color: rgba(255, 255, 255, .1);*/ 105 | /*}*/ 106 | 107 | /*.form-control-dark:focus {*/ 108 | /* border-color: transparent;*/ 109 | /* box-shadow: 0 0 0 3px rgba(255, 255, 255, .25);*/ 110 | /*}*/ 111 | -------------------------------------------------------------------------------- /src/main/resources/static/default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/src/main/resources/static/default.jpg -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/src/main/resources/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/src/main/resources/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/src/main/resources/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/src/main/resources/static/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/image.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/src/main/resources/static/image.JPG -------------------------------------------------------------------------------- /src/main/resources/static/js/bootstrap-table-config.js: -------------------------------------------------------------------------------- 1 | var $table; 2 | //初始化bootstrap-table的内容 3 | function InitMainTable () { 4 | //记录页面bootstrap-table全局变量$table,方便应用 5 | var queryUrl = '/TestUser/FindWithPager?rnd=' + Math.random() 6 | $table = $('#grid').bootstrapTable({ 7 | url: queryUrl, //请求后台的URL(*) 8 | method: 'GET', //请求方式(*) 9 | //toolbar: '#toolbar', //工具按钮用哪个容器 10 | striped: true, //是否显示行间隔色 11 | cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) 12 | pagination: true, //是否显示分页(*) 13 | sortable: true, //是否启用排序 14 | sortOrder: "asc", //排序方式 15 | sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*) 16 | pageNumber: 1, //初始化加载第一页,默认第一页,并记录 17 | pageSize: rows, //每页的记录行数(*) 18 | pageList: [10, 25, 50, 100], //可供选择的每页的行数(*) 19 | search: false, //是否显示表格搜索 20 | strictSearch: true, 21 | showColumns: true, //是否显示所有的列(选择显示的列) 22 | showRefresh: true, //是否显示刷新按钮 23 | minimumCountColumns: 2, //最少允许的列数 24 | clickToSelect: true, //是否启用点击选中行 25 | //height: 500, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度 26 | uniqueId: "ID", //每一行的唯一标识,一般为主键列 27 | showToggle: true, //是否显示详细视图和列表视图的切换按钮 28 | cardView: false, //是否显示详细视图 29 | detailView: false, //是否显示父子表 30 | //得到查询的参数 31 | queryParams : function (params) { 32 | //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的 33 | var temp = { 34 | rows: params.limit, //页面大小 35 | page: (params.offset / params.limit) + 1, //页码 36 | sort: params.sort, //排序列名 37 | sortOrder: params.order //排位命令(desc,asc) 38 | }; 39 | return temp; 40 | }, 41 | columns: [{ 42 | checkbox: false, 43 | visible: false //是否显示复选框 44 | }, { 45 | field: 'Name', 46 | title: '姓名', 47 | sortable: true 48 | }, { 49 | field: 'Mobile', 50 | title: '手机', 51 | sortable: true 52 | }, { 53 | field: 'Email', 54 | title: '邮箱', 55 | sortable: true, 56 | formatter: emailFormatter 57 | }, { 58 | field: 'Homepage', 59 | title: '主页', 60 | formatter: linkFormatter 61 | }, { 62 | field: 'Hobby', 63 | title: '兴趣爱好' 64 | }, { 65 | field: 'Gender', 66 | title: '性别', 67 | sortable: true 68 | }, { 69 | field: 'Age', 70 | title: '年龄' 71 | }, { 72 | field: 'BirthDate', 73 | title: '出生日期', 74 | formatter: dateFormatter 75 | }, { 76 | field: 'Height', 77 | title: '身高' 78 | }, { 79 | field: 'Note', 80 | title: '备注' 81 | }, { 82 | field:'ID', 83 | title: '操作', 84 | width: 120, 85 | align: 'center', 86 | valign: 'middle', 87 | formatter: actionFormatter 88 | }, ], 89 | onLoadSuccess: function () { 90 | }, 91 | onLoadError: function () { 92 | showTips("数据加载失败!"); 93 | }, 94 | onDblClickRow: function (row, $element) { 95 | var id = row.ID; 96 | EditViewById(id, 'view'); 97 | }, 98 | }); 99 | }; -------------------------------------------------------------------------------- /src/main/resources/static/venue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/src/main/resources/static/venue.jpg -------------------------------------------------------------------------------- /src/main/resources/templates/admin/admin_index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MeetHere-管理系统 6 | 7 | 8 | 9 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 首页 25 | 26 | 27 | 欢迎使用MeetHere场馆预约管理系统! 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/main/resources/templates/admin/news_add.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MeetHere-管理系统 6 | 7 | 8 | 9 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 新增新闻 39 | 40 | 41 | 42 | 43 | 44 | 标题: 45 | 46 | 47 | 标题 48 | 50 | 51 | 52 | 53 | 54 | 正文: 55 | 56 | 57 | 正文 58 | 59 | 5000 60 | 61 | 62 | 63 | 提交 64 | 取消 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 112 | 113 | -------------------------------------------------------------------------------- /src/main/resources/templates/admin/news_edit.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MeetHere-管理系统 6 | 7 | 8 | 9 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 修改新闻 39 | 40 | 41 | 42 | 43 | 44 | 新闻ID: 45 | 46 | 47 | 新闻ID 48 | 49 | 50 | 51 | 52 | 53 | 54 | 标题: 55 | 56 | 57 | 标题 58 | 60 | 61 | 62 | 63 | 64 | 正文: 65 | 66 | 67 | 正文 68 | 69 | 5000 70 | 71 | 72 | 73 | 提交 74 | 取消 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 136 | 137 | -------------------------------------------------------------------------------- /src/main/resources/templates/layout/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Footer 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/main/resources/templates/layout/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Header 6 | 7 | 8 | 9 | 10 | 11 | Meet Here 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 首页 20 | 21 | 22 | 场馆信息 23 | 24 | 25 | 预约管理 26 | 27 | 场馆预约 28 | 订单管理 29 | 30 | 31 | 32 | 新闻 33 | 34 | 35 | 留言板 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 注销 50 | 51 | 52 | 53 | 54 | 55 | 56 | 登录 57 | 58 | 59 | 注册 60 | 61 | 62 | 63 | 64 | 65 | 66 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /src/main/resources/templates/layout/left.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Title 6 | 7 | 8 | 9 | 10 | 11 | 12 | Meet Here 场馆预约管理系统 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 注销 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 首页 37 | 38 | 39 | 40 | 41 | 42 | 用户管理 43 | 44 | 45 | 46 | 47 | 48 | 场馆信息管理 49 | 50 | 51 | 52 | 53 | 54 | 预约订单管理 55 | 56 | 57 | 58 | 59 | 60 | 新闻动态管理 61 | 62 | 63 | 64 | 65 | 66 | 留言审核 67 | 68 | 69 | 70 | 71 | 72 | 73 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /src/main/resources/templates/login.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 登录-MeetHere 6 | 7 | 8 | 9 | 10 | 11 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 用 户 登 录 25 | 26 | 27 | User Name 28 | 29 | 30 | 31 | 32 | Password 33 | 34 | 35 | 用户名或密码错误,请重新输入! 36 | 37 | 登 录 38 | 39 | 40 | 41 | 42 | 43 | 44 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /src/main/resources/templates/news.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 新闻 6 | 7 | 8 | 9 | 10 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | “统计与数据科学前沿理论及应用”教育部重点实验室建设项目通过验收 42 | 发布时间: 43 | 44 | 45 | 46 | 47 | 48 | 49 | 12月11日,教育部科技司组织专家组在我校召开“统计与数据科学前沿理论及应用”教育部重点实验室建设项目验收会议。 50 | 教育部科技司基础处张楠楠,我校副校长孙真荣、发展规划部部长杨蓉、研究生院培养办主任陈灵犀、科技处副处长杨艳琴、 51 | 经济与管理学部副主任冯学钢、学校各职能部门代表以及重点实验室骨干科研人员出席了会议。会议由张楠楠主持。 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /src/main/resources/templates/news_list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 新闻动态-MeetHere 6 | 7 | 8 | 9 | 10 | 11 | 12 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 新闻 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 91 | 92 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/IntegrationTest/Controller/Admin/AdminMessageApiTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.IntegrationTest.Controller.Admin; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.controller.admin.AdminMessageController; 5 | import com.meethere.entity.Message; 6 | import org.junit.jupiter.api.Test; 7 | import org.junit.jupiter.api.extension.ExtendWith; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; 10 | import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; 11 | import org.springframework.boot.test.context.SpringBootTest; 12 | import org.springframework.data.domain.PageImpl; 13 | import org.springframework.data.domain.PageRequest; 14 | import org.springframework.data.domain.Pageable; 15 | import org.springframework.data.domain.Sort; 16 | import org.springframework.test.context.junit.jupiter.SpringExtension; 17 | import org.springframework.test.web.servlet.MockMvc; 18 | import org.springframework.test.web.servlet.MvcResult; 19 | import org.springframework.test.web.servlet.ResultActions; 20 | import org.springframework.transaction.annotation.Transactional; 21 | import org.springframework.web.servlet.ModelAndView; 22 | 23 | import java.time.LocalDateTime; 24 | import java.util.ArrayList; 25 | import java.util.List; 26 | 27 | import static org.mockito.ArgumentMatchers.any; 28 | import static org.mockito.Mockito.*; 29 | import static org.springframework.test.web.ModelAndViewAssert.assertModelAttributeAvailable; 30 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 31 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; 32 | import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; 33 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 34 | 35 | @ExtendWith(SpringExtension.class) 36 | @SpringBootTest(classes = MeetHereApplication.class) 37 | @AutoConfigureMockMvc 38 | @Transactional 39 | public class AdminMessageApiTest { 40 | @Autowired 41 | private MockMvc mockMvc; 42 | @Test 43 | public void t1() throws Exception { 44 | ResultActions perform=mockMvc.perform(get("/message_manage")); 45 | perform.andExpect(status().isOk()); 46 | 47 | MvcResult mvcResult=mockMvc.perform(get("/message_manage")).andReturn(); 48 | ModelAndView mv=mvcResult.getModelAndView(); 49 | assertModelAttributeAvailable(mv,"total"); 50 | } 51 | 52 | @Test 53 | public void return_message_list_to_audit() throws Exception { 54 | ResultActions perform=mockMvc.perform(get("/messageList.do")); 55 | perform.andExpect(status().isOk()).andDo(print()); 56 | 57 | } 58 | 59 | @Test 60 | public void admin_pass_message() throws Exception { 61 | ResultActions perform=mockMvc.perform(post("/passMessage.do").param("messageID","2")); 62 | perform.andExpect(status().isOk()).andDo(print()); 63 | } 64 | 65 | @Test 66 | public void admin_reject_message() throws Exception { 67 | ResultActions perform=mockMvc.perform(post("/rejectMessage.do").param("messageID","2")); 68 | perform.andExpect(status().isOk()).andDo(print()); 69 | } 70 | 71 | @Test 72 | public void admin_del_message() throws Exception { 73 | ResultActions perform=mockMvc.perform(post("/delMessage.do").param("messageID","2")); 74 | perform.andExpect(status().isOk()); 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/IntegrationTest/Controller/Admin/AdminNewsApiTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.IntegrationTest.Controller.Admin; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.entity.News; 5 | import org.junit.jupiter.api.Test; 6 | import org.junit.jupiter.api.extension.ExtendWith; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; 9 | import org.springframework.boot.test.context.SpringBootTest; 10 | import org.springframework.data.domain.PageImpl; 11 | import org.springframework.data.domain.PageRequest; 12 | import org.springframework.data.domain.Pageable; 13 | import org.springframework.data.domain.Sort; 14 | import org.springframework.test.context.junit.jupiter.SpringExtension; 15 | import org.springframework.test.web.servlet.MockMvc; 16 | import org.springframework.test.web.servlet.MvcResult; 17 | import org.springframework.test.web.servlet.ResultActions; 18 | import org.springframework.transaction.annotation.Transactional; 19 | import org.springframework.web.servlet.ModelAndView; 20 | 21 | import java.time.LocalDateTime; 22 | import java.util.ArrayList; 23 | import java.util.List; 24 | 25 | import static org.mockito.ArgumentMatchers.any; 26 | import static org.mockito.ArgumentMatchers.anyInt; 27 | import static org.mockito.Mockito.*; 28 | import static org.mockito.Mockito.verify; 29 | import static org.springframework.test.web.ModelAndViewAssert.assertModelAttributeAvailable; 30 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 31 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; 32 | import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; 33 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrl; 34 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 35 | 36 | @ExtendWith(SpringExtension.class) 37 | @SpringBootTest(classes = MeetHereApplication.class) 38 | @AutoConfigureMockMvc 39 | @Transactional 40 | public class AdminNewsApiTest { 41 | @Autowired 42 | private MockMvc mockMvc; 43 | 44 | @Test 45 | public void return_news_manage_html() throws Exception{ 46 | ResultActions perform=mockMvc.perform(get("/news_manage")); 47 | perform.andExpect(status().isOk()).andDo(print()); 48 | 49 | MvcResult mvcResult=mockMvc.perform(get("/news_manage")).andReturn(); 50 | ModelAndView mv=mvcResult.getModelAndView(); 51 | assertModelAttributeAvailable(mv,"total"); 52 | } 53 | 54 | @Test 55 | public void return_news_add_html()throws Exception { 56 | ResultActions perform=mockMvc.perform(get("/news_add")); 57 | perform.andExpect(status().isOk()).andDo(print()); 58 | } 59 | 60 | @Test 61 | public void return_news_edit_html() throws Exception { 62 | ResultActions perform=mockMvc.perform(get("/news_edit").param("newsID","1")); 63 | MvcResult mvcResult=perform.andReturn(); 64 | ModelAndView mv=mvcResult.getModelAndView(); 65 | perform.andExpect(status().isOk()).andDo(print()); 66 | assertModelAttributeAvailable(mv,"news"); 67 | } 68 | 69 | @Test 70 | public void return_news_list() throws Exception { 71 | ResultActions perform=mockMvc.perform(get("/newsList.do").param("page","1")); 72 | perform.andExpect(status().isOk()).andDo(print()); 73 | 74 | } 75 | 76 | @Test 77 | public void admin_del_news() throws Exception { 78 | ResultActions perform=mockMvc.perform(post("/delNews.do").param("newsID","1")); 79 | perform.andExpect(status().isOk()).andDo(print()); 80 | } 81 | 82 | @Test 83 | public void admin_modify_news() throws Exception { 84 | ResultActions perform=mockMvc.perform(post("/modifyNews.do").param("newsID","1").param("title","this is title"). 85 | param("content","this is content")); 86 | 87 | perform.andExpect(redirectedUrl("news_manage")).andDo(print()); 88 | } 89 | 90 | @Test 91 | public void admin_add_news() throws Exception { 92 | ResultActions perform=mockMvc.perform(post("/addNews.do").param("title","this is title").param("content","this is content")); 93 | 94 | perform.andExpect(redirectedUrl("news_manage")).andDo(print()); 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/IntegrationTest/Controller/Admin/AdminOrderApiTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.IntegrationTest.Controller.Admin; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.entity.Order; 5 | import org.junit.jupiter.api.Test; 6 | import org.junit.jupiter.api.extension.ExtendWith; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; 9 | import org.springframework.boot.test.context.SpringBootTest; 10 | import org.springframework.data.domain.PageImpl; 11 | import org.springframework.data.domain.PageRequest; 12 | import org.springframework.data.domain.Pageable; 13 | import org.springframework.data.domain.Sort; 14 | import org.springframework.test.context.junit.jupiter.SpringExtension; 15 | import org.springframework.test.web.servlet.MockMvc; 16 | import org.springframework.test.web.servlet.MvcResult; 17 | import org.springframework.test.web.servlet.ResultActions; 18 | import org.springframework.transaction.annotation.Transactional; 19 | import org.springframework.web.servlet.ModelAndView; 20 | 21 | import java.time.LocalDateTime; 22 | import java.util.ArrayList; 23 | import java.util.List; 24 | 25 | import static org.mockito.ArgumentMatchers.any; 26 | import static org.mockito.Mockito.verify; 27 | import static org.mockito.Mockito.when; 28 | import static org.springframework.test.web.ModelAndViewAssert.assertModelAttributeAvailable; 29 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 30 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; 31 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 32 | 33 | @ExtendWith(SpringExtension.class) 34 | @SpringBootTest(classes = MeetHereApplication.class) 35 | @AutoConfigureMockMvc 36 | @Transactional 37 | public class AdminOrderApiTest { 38 | @Autowired 39 | private MockMvc mockMvc; 40 | @Test 41 | public void return_reservation_manage_html() throws Exception { 42 | ResultActions perform=mockMvc.perform(get("/reservation_manage")); 43 | MvcResult mvcResult=perform.andReturn(); 44 | ModelAndView mv=mvcResult.getModelAndView(); 45 | perform.andExpect(status().isOk()); 46 | assertModelAttributeAvailable(mv,"order_list"); 47 | assertModelAttributeAvailable(mv,"total"); 48 | } 49 | 50 | @Test 51 | public void admin_get_no_audit_order_list() throws Exception { 52 | ResultActions perform=mockMvc.perform(get("/admin/getOrderList.do").param("page","1")); 53 | perform.andExpect(status().isOk()); 54 | 55 | } 56 | 57 | @Test 58 | public void admin_confirm_order() throws Exception { 59 | ResultActions perform=mockMvc.perform(post("/passOrder.do").param("orderID","1")); 60 | perform.andExpect(status().isOk()); 61 | } 62 | 63 | @Test 64 | public void admin_reject_order() throws Exception { 65 | ResultActions perform=mockMvc.perform(post("/rejectOrder.do").param("orderID","1")); 66 | perform.andExpect(status().isOk()); 67 | 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/IntegrationTest/Controller/Admin/AdminUserApiTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.IntegrationTest.Controller.Admin; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.entity.User; 5 | import org.junit.jupiter.api.Test; 6 | import org.junit.jupiter.api.extension.ExtendWith; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; 9 | import org.springframework.boot.test.context.SpringBootTest; 10 | import org.springframework.data.domain.PageImpl; 11 | import org.springframework.data.domain.PageRequest; 12 | import org.springframework.data.domain.Pageable; 13 | import org.springframework.data.domain.Sort; 14 | import org.springframework.test.context.junit.jupiter.SpringExtension; 15 | import org.springframework.test.web.servlet.MockMvc; 16 | import org.springframework.test.web.servlet.MvcResult; 17 | import org.springframework.test.web.servlet.ResultActions; 18 | import org.springframework.transaction.annotation.Transactional; 19 | import org.springframework.web.servlet.ModelAndView; 20 | 21 | import java.util.ArrayList; 22 | import java.util.List; 23 | 24 | import static org.mockito.ArgumentMatchers.*; 25 | import static org.mockito.ArgumentMatchers.anyInt; 26 | import static org.mockito.Mockito.verify; 27 | import static org.mockito.Mockito.when; 28 | import static org.springframework.test.web.ModelAndViewAssert.assertModelAttributeAvailable; 29 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 30 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; 31 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; 32 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 33 | 34 | @ExtendWith(SpringExtension.class) 35 | @SpringBootTest(classes = MeetHereApplication.class) 36 | @AutoConfigureMockMvc 37 | @Transactional 38 | public class AdminUserApiTest { 39 | @Autowired 40 | private MockMvc mockMvc; 41 | @Test 42 | public void return_user_manage_html() throws Exception { 43 | ResultActions perform=mockMvc.perform(get("/user_manage")); 44 | MvcResult mvcResult=perform.andReturn(); 45 | ModelAndView mv=mvcResult.getModelAndView(); 46 | perform.andExpect(status().isOk()); 47 | assertModelAttributeAvailable(mv,"total"); 48 | 49 | } 50 | 51 | @Test 52 | public void return_user_add_html() throws Exception { 53 | ResultActions perform=mockMvc.perform(get("/user_add")); 54 | perform.andExpect(status().isOk()); 55 | } 56 | 57 | @Test 58 | public void return_user_list() throws Exception { 59 | ResultActions perform=mockMvc.perform(get("/userList.do").param("page","1")); 60 | perform.andExpect(status().isOk()); 61 | 62 | } 63 | 64 | @Test 65 | public void return_user_edit_html() throws Exception { 66 | ResultActions perform=mockMvc.perform(get("/user_edit").param("id","1")); 67 | MvcResult mvcResult=perform.andReturn(); 68 | ModelAndView mv=mvcResult.getModelAndView(); 69 | perform.andExpect(status().isOk()); 70 | assertModelAttributeAvailable(mv,"user"); 71 | } 72 | 73 | @Test 74 | public void admin_modify_user() throws Exception { 75 | 76 | ResultActions perform=mockMvc.perform(post("/modifyUser.do").param("userID","test").param("name","userName").param("password","password") 77 | .param("email","email").param("phone","phone")); 78 | perform.andExpect(redirectedUrl("user_manage")); 79 | 80 | } 81 | 82 | @Test 83 | public void admin_add_user() throws Exception { 84 | ResultActions perform=mockMvc.perform(post("/addUser.do").param("userID","user").param("name","userName").param("password","password") 85 | .param("email","email").param("phone","phone")); 86 | perform.andExpect(redirectedUrl("user_manage")); 87 | } 88 | 89 | 90 | @Test 91 | public void return_already_exist_same_userID() throws Exception { 92 | ResultActions perform=mockMvc.perform(post("/checkUserID.do").param("userID","test")); 93 | perform.andExpect(status().isOk()).andExpect(content().string("false")); 94 | } 95 | 96 | @Test 97 | public void return_not_exist_same_userID() throws Exception { 98 | ResultActions perform=mockMvc.perform(post("/checkUserID.do").param("userID","user")); 99 | perform.andExpect(status().isOk()).andExpect(content().string("true")); 100 | 101 | } 102 | 103 | @Test 104 | public void admin_del_user() throws Exception { 105 | ResultActions perform=mockMvc.perform(post("/delUser.do").param("id","1")); 106 | perform.andExpect(status().isOk()); 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/IntegrationTest/Controller/IndexApiTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.IntegrationTest.Controller; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.entity.Message; 5 | import com.meethere.entity.News; 6 | import com.meethere.entity.Venue; 7 | import org.junit.jupiter.api.Test; 8 | import org.junit.jupiter.api.extension.ExtendWith; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; 11 | import org.springframework.boot.test.context.SpringBootTest; 12 | import org.springframework.data.domain.PageImpl; 13 | import org.springframework.data.domain.PageRequest; 14 | import org.springframework.data.domain.Pageable; 15 | import org.springframework.data.domain.Sort; 16 | import org.springframework.test.context.junit.jupiter.SpringExtension; 17 | import org.springframework.test.web.servlet.MockMvc; 18 | import org.springframework.test.web.servlet.MvcResult; 19 | import org.springframework.test.web.servlet.ResultActions; 20 | import org.springframework.transaction.annotation.Transactional; 21 | import org.springframework.web.servlet.ModelAndView; 22 | 23 | import java.time.LocalDateTime; 24 | import java.util.ArrayList; 25 | import java.util.List; 26 | 27 | import static org.junit.jupiter.api.Assertions.assertAll; 28 | import static org.mockito.ArgumentMatchers.any; 29 | import static org.mockito.Mockito.*; 30 | import static org.springframework.test.web.ModelAndViewAssert.assertModelAttributeAvailable; 31 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 32 | import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; 33 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 34 | 35 | @ExtendWith(SpringExtension.class) 36 | @SpringBootTest(classes = MeetHereApplication.class) 37 | @AutoConfigureMockMvc 38 | @Transactional 39 | public class IndexApiTest { 40 | @Autowired 41 | private MockMvc mockMvc; 42 | @Test 43 | public void return_index_html() throws Exception { 44 | ResultActions perform=mockMvc.perform(get("/index")); 45 | perform.andExpect(status().isOk()); 46 | 47 | MvcResult mvcResult=perform.andReturn(); 48 | ModelAndView mv=mvcResult.getModelAndView(); 49 | assertAll("",()-> assertModelAttributeAvailable(mv,"user"), 50 | ()-> assertModelAttributeAvailable(mv,"news_list"), 51 | ()->assertModelAttributeAvailable(mv,"venue_list"), 52 | ()->assertModelAttributeAvailable(mv,"message_list")); 53 | 54 | } 55 | 56 | @Test 57 | public void return_admin_index_html() throws Exception { 58 | ResultActions perform=mockMvc.perform(get("/admin_index")); 59 | perform.andExpect(status().isOk()).andDo(print()); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/IntegrationTest/Controller/User/UserMessageApiTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.IntegrationTest.Controller.User; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.entity.Message; 5 | import com.meethere.entity.User; 6 | import org.junit.jupiter.api.Test; 7 | import org.junit.jupiter.api.extension.ExtendWith; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; 10 | import org.springframework.boot.test.context.SpringBootTest; 11 | import org.springframework.data.domain.PageImpl; 12 | import org.springframework.data.domain.PageRequest; 13 | import org.springframework.data.domain.Pageable; 14 | import org.springframework.data.domain.Sort; 15 | import org.springframework.test.context.junit.jupiter.SpringExtension; 16 | import org.springframework.test.web.servlet.MockMvc; 17 | import org.springframework.test.web.servlet.ResultActions; 18 | import org.springframework.transaction.annotation.Transactional; 19 | import org.springframework.web.servlet.ModelAndView; 20 | import org.springframework.web.util.NestedServletException; 21 | 22 | import java.time.LocalDateTime; 23 | import java.util.ArrayList; 24 | import java.util.List; 25 | 26 | import static org.junit.jupiter.api.Assertions.assertThrows; 27 | import static org.mockito.ArgumentMatchers.any; 28 | import static org.mockito.ArgumentMatchers.anyInt; 29 | import static org.mockito.Mockito.verify; 30 | import static org.mockito.Mockito.when; 31 | import static org.springframework.test.web.ModelAndViewAssert.assertModelAttributeAvailable; 32 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 33 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; 34 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; 35 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; 36 | 37 | @ExtendWith(SpringExtension.class) 38 | @SpringBootTest(classes = MeetHereApplication.class) 39 | @AutoConfigureMockMvc 40 | @Transactional 41 | public class UserMessageApiTest { 42 | @Autowired 43 | private MockMvc mockMvc; 44 | @Test 45 | public void fail_return_message_list_html_when_user_not_login() throws Exception { 46 | assertThrows(NestedServletException.class,()->mockMvc.perform(get("/message_list")),"请登录!"); 47 | } 48 | 49 | @Test 50 | public void success_return_message_list_html_when_user_login() throws Exception { 51 | int id=1; 52 | String userID="user"; 53 | String password="password"; 54 | String email="222@qq.com"; 55 | String phone="12345678901"; 56 | int isadmin=0; 57 | String user_name="nickname"; 58 | String picture="picture"; 59 | User user=new User(id,userID,user_name,password,email,phone,isadmin,picture); 60 | 61 | 62 | ResultActions perform=mockMvc.perform(get("/message_list").sessionAttr("user",user)); 63 | ModelAndView mv=perform.andReturn().getModelAndView(); 64 | perform.andExpect(status().isOk()); 65 | assertModelAttributeAvailable(mv,"total"); 66 | assertModelAttributeAvailable(mv,"user_total"); 67 | } 68 | 69 | @Test 70 | public void return_pass_message_list()throws Exception { 71 | ResultActions perform=mockMvc.perform(get("/message/getMessageList")); 72 | perform.andExpect(status().isOk()); 73 | 74 | } 75 | 76 | @Test 77 | public void success_return_user_message_list_when_user_login() throws Exception{ 78 | String userID="user"; 79 | String password="password"; 80 | String email="222@qq.com"; 81 | String phone="12345678901"; 82 | int isadmin=0; 83 | String user_name="nickname"; 84 | String picture="picture"; 85 | User user=new User(1,userID,user_name,password,email,phone,isadmin,picture); 86 | 87 | ResultActions perform=mockMvc.perform(get("/message/findUserList").sessionAttr("user",user)); 88 | perform.andExpect(status().isOk()); 89 | 90 | } 91 | 92 | @Test 93 | public void fail_return_user_message_list_when_user_not_login() throws Exception{ 94 | assertThrows(NestedServletException.class,()->mockMvc.perform(get("/message/findUserList")),"请登录!"); 95 | } 96 | 97 | @Test 98 | public void user_add_new_message()throws Exception { 99 | ResultActions perform=mockMvc.perform(post("/sendMessage").param("userID","test").param("content","this is content")); 100 | perform.andExpect(redirectedUrl("/message_list")); 101 | } 102 | 103 | 104 | @Test 105 | public void user_modify_message()throws Exception { 106 | ResultActions perform=mockMvc.perform(post("/modifyMessage.do").param("messageID","2").param("userID","user").param("content","this is content")); 107 | perform.andExpect(content().string("true")); 108 | } 109 | 110 | @Test 111 | public void user_del_message()throws Exception { 112 | ResultActions perform=mockMvc.perform(post("/delMessage.do").param("messageID","2")); 113 | perform.andExpect(content().string("true")); 114 | 115 | 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/IntegrationTest/Controller/User/UserNewsApiTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.IntegrationTest.Controller.User; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.entity.News; 5 | import org.junit.jupiter.api.Test; 6 | import org.junit.jupiter.api.extension.ExtendWith; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; 9 | import org.springframework.boot.test.context.SpringBootTest; 10 | import org.springframework.data.domain.PageImpl; 11 | import org.springframework.data.domain.PageRequest; 12 | import org.springframework.data.domain.Pageable; 13 | import org.springframework.data.domain.Sort; 14 | import org.springframework.test.context.junit.jupiter.SpringExtension; 15 | import org.springframework.test.web.servlet.MockMvc; 16 | import org.springframework.test.web.servlet.MvcResult; 17 | import org.springframework.test.web.servlet.ResultActions; 18 | import org.springframework.transaction.annotation.Transactional; 19 | import org.springframework.web.servlet.ModelAndView; 20 | 21 | import java.util.ArrayList; 22 | import java.util.List; 23 | 24 | import static org.mockito.Mockito.*; 25 | import static org.springframework.test.web.ModelAndViewAssert.assertModelAttributeAvailable; 26 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 27 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 28 | 29 | @ExtendWith(SpringExtension.class) 30 | @SpringBootTest(classes = MeetHereApplication.class) 31 | @AutoConfigureMockMvc 32 | @Transactional 33 | public class UserNewsApiTest { 34 | @Autowired 35 | private MockMvc mockMvc; 36 | @Test 37 | public void return_news_detail_html() throws Exception { 38 | ResultActions perform=mockMvc.perform(get("/news").param("newsID","1")); 39 | MvcResult mvcResult=perform.andReturn(); 40 | ModelAndView mv=mvcResult.getModelAndView(); 41 | perform.andExpect(status().isOk()); 42 | assertModelAttributeAvailable(mv,"news"); 43 | 44 | } 45 | 46 | @Test 47 | public void return_news_list_page() throws Exception { 48 | ResultActions perform=mockMvc.perform(get("/news/getNewsList").param("page","1")); 49 | perform.andExpect(status().isOk()); 50 | 51 | } 52 | 53 | @Test 54 | public void return_news_list_html() throws Exception { 55 | ResultActions perform=mockMvc.perform(get("/news_list").param("newsID","1")); 56 | MvcResult mvcResult=perform.andReturn(); 57 | ModelAndView mv=mvcResult.getModelAndView(); 58 | perform.andExpect(status().isOk()); 59 | assertModelAttributeAvailable(mv,"news_list"); 60 | assertModelAttributeAvailable(mv,"total"); 61 | 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/IntegrationTest/Controller/User/UserVenueApiTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.IntegrationTest.Controller.User; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import org.junit.jupiter.api.extension.ExtendWith; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; 7 | import org.springframework.boot.test.context.SpringBootTest; 8 | import org.springframework.test.context.junit.jupiter.SpringExtension; 9 | import org.springframework.test.web.servlet.MockMvc; 10 | import org.springframework.transaction.annotation.Transactional; 11 | 12 | @ExtendWith(SpringExtension.class) 13 | @SpringBootTest(classes = MeetHereApplication.class) 14 | @AutoConfigureMockMvc 15 | @Transactional 16 | public class UserVenueApiTest { 17 | @Autowired 18 | private MockMvc mockMvc; 19 | } 20 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/IntegrationTest/Service/MessageServiceTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.IntegrationTest.Service; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.entity.Message; 5 | import com.meethere.service.MessageService; 6 | import org.junit.jupiter.api.AfterEach; 7 | import org.junit.jupiter.api.BeforeEach; 8 | import org.junit.jupiter.api.Test; 9 | import org.junit.jupiter.api.extension.ExtendWith; 10 | import org.slf4j.Logger; 11 | import org.slf4j.LoggerFactory; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | import org.springframework.boot.test.context.SpringBootTest; 14 | import org.springframework.data.domain.PageRequest; 15 | import org.springframework.data.domain.Pageable; 16 | import org.springframework.data.domain.Sort; 17 | import org.springframework.test.annotation.Rollback; 18 | import org.springframework.test.context.junit.jupiter.SpringExtension; 19 | import sun.rmi.runtime.Log; 20 | 21 | import javax.transaction.Transactional; 22 | import java.time.LocalDateTime; 23 | import java.util.List; 24 | 25 | import static org.junit.jupiter.api.Assertions.assertEquals; 26 | import static org.junit.jupiter.api.Assertions.assertThrows; 27 | import static org.mockito.ArgumentMatchers.any; 28 | import static org.mockito.ArgumentMatchers.anyInt; 29 | import static org.mockito.ArgumentMatchers.anyString; 30 | import static org.mockito.Mockito.*; 31 | import static org.mockito.Mockito.verify; 32 | 33 | @ExtendWith(SpringExtension.class) 34 | @SpringBootTest(classes = MeetHereApplication.class) 35 | @Transactional 36 | public class MessageServiceTest { 37 | private static Logger LOG = LoggerFactory.getLogger(MessageService.class); 38 | 39 | @Autowired 40 | private MessageService messageService; 41 | @BeforeEach 42 | @AfterEach 43 | public void print_all_message(){ 44 | Pageable pageable= PageRequest.of(0,100, Sort.by("time").descending()); 45 | List messages=messageService.findPassState(pageable).getContent(); 46 | List messages1=messageService.findWaitState(pageable).getContent(); 47 | LOG.info("{}",messages); 48 | LOG.info("{}",messages1); 49 | } 50 | 51 | 52 | @Test 53 | public void find_message_by_messageID(){ 54 | int id=2; 55 | Message message=messageService.findById(id); 56 | assertEquals(2,message.getMessageID()); 57 | } 58 | 59 | @Test 60 | public void find_message_by_userID() { 61 | Pageable pageable= PageRequest.of(0,100, Sort.by("time").descending()); 62 | List messages=messageService.findByUser("test",pageable).getContent(); 63 | for(Message i:messages){ 64 | assertEquals("test",i.getUserID()); 65 | } 66 | } 67 | 68 | @Test 69 | public void create_new_message() { 70 | LocalDateTime ldt=LocalDateTime.now().minusDays(1); 71 | Message message=new Message(); 72 | message.setContent("this is a new message"); 73 | message.setState(1); 74 | message.setTime(ldt); 75 | message.setUserID("user"); 76 | messageService.create(message); 77 | } 78 | 79 | @Test 80 | @Transactional 81 | public void del_message_by_messageID() { 82 | messageService.delById(3); 83 | 84 | messageService.delById(2); 85 | 86 | } 87 | 88 | @Test 89 | public void update_message() { 90 | LocalDateTime ldt=LocalDateTime.now().minusDays(1); 91 | Message message=new Message(); 92 | message.setMessageID(1); 93 | message.setContent("this is a new message"); 94 | message.setState(1); 95 | message.setTime(ldt); 96 | message.setUserID("user"); 97 | messageService.update(message); 98 | 99 | } 100 | 101 | @Test 102 | public void confirm_message_success() { 103 | int id=2; 104 | messageService.confirmMessage(id); 105 | messageService.findById(id); 106 | } 107 | 108 | @Test 109 | public void confirm_message_fail(){ 110 | int id=1; 111 | assertThrows(RuntimeException.class, 112 | ()->messageService.confirmMessage(id), 113 | "留言不存在" ); 114 | 115 | } 116 | 117 | @Test 118 | public void reject_message_success() { 119 | int id=2; 120 | messageService.rejectMessage(id); 121 | 122 | } 123 | 124 | @Test 125 | public void reject_message_fail(){ 126 | int id=1; 127 | 128 | assertThrows(RuntimeException.class, 129 | ()->messageService.rejectMessage(id), 130 | "留言不存在" ); 131 | 132 | } 133 | 134 | @Test 135 | public void find_wait_state_message() { 136 | int wait_state=1; 137 | Pageable message_pageable= PageRequest.of(0,10, Sort.by("time").descending()); 138 | 139 | List messages= messageService.findWaitState(message_pageable).getContent(); 140 | for(Message i:messages){ 141 | assertEquals(wait_state,i.getState()); 142 | } 143 | } 144 | 145 | @Test 146 | public void find_pass_state_message() { 147 | int pass_state=2; 148 | Pageable message_pageable= PageRequest.of(0,10, Sort.by("time").descending()); 149 | 150 | List messages= messageService.findPassState(message_pageable).getContent(); 151 | for(Message i:messages){ 152 | assertEquals(pass_state,i.getState()); 153 | } 154 | 155 | } 156 | } 157 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/IntegrationTest/Service/NewsServiceTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.IntegrationTest.Service; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.dao.NewsDao; 5 | import com.meethere.entity.News; 6 | import com.meethere.service.impl.NewsServiceImpl; 7 | import org.junit.jupiter.api.Test; 8 | import org.junit.jupiter.api.extension.ExtendWith; 9 | import org.mockito.InjectMocks; 10 | import org.mockito.Mock; 11 | import org.springframework.beans.factory.annotation.Autowired; 12 | import org.springframework.boot.test.context.SpringBootTest; 13 | import org.springframework.data.domain.PageRequest; 14 | import org.springframework.data.domain.Pageable; 15 | import org.springframework.test.context.junit.jupiter.SpringExtension; 16 | 17 | import javax.transaction.Transactional; 18 | import java.time.LocalDateTime; 19 | 20 | import static org.junit.jupiter.api.Assertions.assertAll; 21 | import static org.junit.jupiter.api.Assertions.assertEquals; 22 | import static org.mockito.ArgumentMatchers.anyInt; 23 | import static org.mockito.Mockito.*; 24 | import static org.mockito.Mockito.verifyNoMoreInteractions; 25 | 26 | @ExtendWith(SpringExtension.class) 27 | @SpringBootTest(classes = MeetHereApplication.class) 28 | @Transactional 29 | public class NewsServiceTest { 30 | @Autowired 31 | private NewsServiceImpl newsService; 32 | 33 | @Test 34 | public void return_all_news_paged_by_page() { 35 | Pageable pageable= PageRequest.of(0,10); 36 | newsService.findAll(pageable); 37 | } 38 | 39 | @Test 40 | void return_news_by_newsID() { 41 | int id=4; 42 | News res= newsService.findById(id); 43 | assertEquals(id,res.getNewsID()); 44 | 45 | } 46 | 47 | @Test 48 | void create_news() { 49 | int id=1; 50 | String title="title"; 51 | String content="this is content"; 52 | LocalDateTime ldt=LocalDateTime.now(); 53 | News news=new News(id,title,content,ldt); 54 | int res = newsService.create(news); 55 | 56 | } 57 | 58 | @Test 59 | void del_news_by_newsID() { 60 | newsService.delById(1); 61 | newsService.delById(2); 62 | } 63 | 64 | @Test 65 | void update_news() { 66 | int id = 1; 67 | String title = "title"; 68 | String content = "this is content"; 69 | LocalDateTime ldt = LocalDateTime.now(); 70 | News news = new News(id, title, content, ldt); 71 | newsService.update(news); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/IntegrationTest/Service/OrderServiceTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.IntegrationTest.Service; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.entity.Order; 5 | import com.meethere.entity.Venue; 6 | import com.meethere.service.OrderService; 7 | import org.junit.jupiter.api.Test; 8 | import org.junit.jupiter.api.extension.ExtendWith; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.boot.test.context.SpringBootTest; 11 | import org.springframework.data.domain.PageRequest; 12 | import org.springframework.data.domain.Pageable; 13 | import org.springframework.test.context.junit.jupiter.SpringExtension; 14 | 15 | import javax.transaction.Transactional; 16 | import java.time.LocalDateTime; 17 | import java.util.ArrayList; 18 | import java.util.List; 19 | 20 | import static org.junit.jupiter.api.Assertions.*; 21 | import static org.mockito.ArgumentMatchers.any; 22 | import static org.mockito.ArgumentMatchers.anyInt; 23 | import static org.mockito.Mockito.*; 24 | 25 | @ExtendWith(SpringExtension.class) 26 | @SpringBootTest(classes = MeetHereApplication.class) 27 | @Transactional 28 | public class OrderServiceTest { 29 | @Autowired 30 | private OrderService orderService; 31 | @Test 32 | void find_order_by_orderID() { 33 | int orderID=1; 34 | 35 | Order res=orderService.findById(orderID); 36 | assertEquals(orderID,res.getOrderID()); 37 | } 38 | 39 | 40 | @Test 41 | void find_order_list_on_someday() { 42 | int venueID=2; 43 | LocalDateTime start_time= LocalDateTime.now().plusDays(1); 44 | 45 | List res=orderService.findDateOrder(venueID,start_time,start_time.plusDays(1)); 46 | assertEquals(0,res.size()); 47 | 48 | } 49 | 50 | @Test 51 | void find_user_orders() { 52 | String user="user"; 53 | Pageable pageable= PageRequest.of(0,10); 54 | 55 | List orders= orderService.findUserOrder(user,pageable).getContent(); 56 | for(Order o:orders){ 57 | assertEquals(user,o.getUserID()); 58 | } 59 | } 60 | 61 | 62 | @Test 63 | void update_order() { 64 | int orderID=1; 65 | String user="user"; 66 | LocalDateTime start_time= LocalDateTime.now().plusDays(1); 67 | int hours=3; 68 | 69 | orderService.updateOrder(orderID,"222",start_time,hours,user); 70 | 71 | } 72 | 73 | @Test 74 | void submit_a_new_order() { 75 | String user="user"; 76 | LocalDateTime start_time= LocalDateTime.now().plusDays(1); 77 | int hours=3; 78 | 79 | orderService.submit("222",start_time,hours,user); 80 | 81 | } 82 | 83 | @Test 84 | void del_order() { 85 | orderService.delOrder(1); 86 | 87 | orderService.delOrder(2); 88 | 89 | } 90 | 91 | @Test 92 | void confirm_order_success() { 93 | int orderID=1; 94 | orderService.confirmOrder(orderID); 95 | 96 | } 97 | 98 | @Test 99 | public void confirm_order_fail(){ 100 | int orderID=100; 101 | assertThrows(RuntimeException.class, 102 | ()->orderService.confirmOrder(orderID), 103 | "订单不存在" ); 104 | } 105 | @Test 106 | void finish_order_success() { 107 | int orderID=1; 108 | orderService.finishOrder(orderID); 109 | 110 | } 111 | @Test 112 | public void finish_order_fail(){ 113 | int orderID=100; 114 | assertThrows(RuntimeException.class, 115 | ()->orderService.finishOrder(orderID), 116 | "订单不存在" ); 117 | } 118 | 119 | @Test 120 | void reject_order_success() { 121 | int orderID=1; 122 | orderService.rejectOrder(orderID); 123 | } 124 | 125 | @Test 126 | public void reject_order_fail(){ 127 | int orderID=100; 128 | assertThrows(RuntimeException.class, 129 | ()->orderService.rejectOrder(orderID), 130 | "订单不存在" ); 131 | } 132 | @Test 133 | void return_noAudit_order_paged() { 134 | int state=1; 135 | Pageable pageable=PageRequest.of(0,10); 136 | List orders= orderService.findNoAuditOrder(pageable).getContent(); 137 | for(Order o:orders){ 138 | assertEquals(state,o.getState()); 139 | } 140 | } 141 | 142 | @Test 143 | void return_audit_order_paged() { 144 | orderService.findAuditOrder(); 145 | } 146 | } 147 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/IntegrationTest/Service/UserServiceTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.IntegrationTest.Service; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.entity.User; 5 | import com.meethere.service.UserService; 6 | import org.junit.jupiter.api.Test; 7 | import org.junit.jupiter.api.extension.ExtendWith; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.boot.test.context.SpringBootTest; 10 | import org.springframework.data.domain.PageRequest; 11 | import org.springframework.data.domain.Pageable; 12 | import org.springframework.test.context.junit.jupiter.SpringExtension; 13 | 14 | import javax.transaction.Transactional; 15 | 16 | import static org.junit.jupiter.api.Assertions.*; 17 | import static org.mockito.ArgumentMatchers.anyInt; 18 | import static org.mockito.Mockito.*; 19 | import static org.mockito.Mockito.times; 20 | 21 | @ExtendWith(SpringExtension.class) 22 | @SpringBootTest(classes = MeetHereApplication.class) 23 | @Transactional 24 | public class UserServiceTest { 25 | @Autowired 26 | private UserService userService; 27 | 28 | @Test 29 | void return_user_ByUserID() { 30 | String userID="user"; 31 | User res=userService.findByUserID(userID); 32 | assertNull(res); 33 | } 34 | 35 | @Test 36 | void return_user_by_id() { 37 | int id=1; 38 | 39 | User res=userService.findById(id); 40 | assertEquals(id,res.getId()); 41 | assertEquals("test",res.getUserID()); 42 | } 43 | 44 | @Test 45 | void return_user_list_paged() { 46 | Pageable pageable= PageRequest.of(0,10); 47 | userService.findByUserID(pageable); 48 | } 49 | 50 | @Test 51 | void check_userID_and_password_matched() { 52 | String userID="test"; 53 | String password="test"; 54 | 55 | User res=userService.checkLogin(userID,password); 56 | assertEquals(userID,res.getUserID()); 57 | assertEquals(password,res.getPassword()); 58 | } 59 | 60 | @Test 61 | void register_a_new_user() { 62 | int id=1; 63 | String userID="user"; 64 | String password="password"; 65 | String email="222@qq.com"; 66 | String phone="12345678901"; 67 | int isadmin=0; 68 | String user_name="nickname"; 69 | String picture="picture"; 70 | User user=new User(id,userID,user_name,password,email,phone,isadmin,picture); 71 | 72 | int res=userService.create(user); 73 | assertTrue(res>0); 74 | } 75 | 76 | @Test 77 | void del_user_by_id() { 78 | userService.delByID(1); 79 | 80 | userService.delByID(6); 81 | } 82 | 83 | @Test 84 | void update_user_info() { 85 | int id=1; 86 | String userID="test"; 87 | String password="password"; 88 | String email="222@qq.com"; 89 | String phone="12345678901"; 90 | int isadmin=0; 91 | String user_name="nickname"; 92 | String picture="picture"; 93 | User user=new User(id,userID,user_name,password,email,phone,isadmin,picture); 94 | 95 | userService.updateUser(user); 96 | } 97 | 98 | @Test 99 | void return_number_of_same_userID() { 100 | String userID="test"; 101 | int res1=userService.countUserID(userID); 102 | assertEquals(1,res1); 103 | 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/IntegrationTest/Service/VenueServiceTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.IntegrationTest.Service; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.entity.Venue; 5 | import com.meethere.service.VenueService; 6 | import com.mysql.cj.log.Log; 7 | import org.junit.jupiter.api.Test; 8 | import org.junit.jupiter.api.extension.ExtendWith; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.boot.test.context.SpringBootTest; 11 | import org.springframework.data.domain.PageRequest; 12 | import org.springframework.data.domain.Pageable; 13 | import org.springframework.test.context.junit.jupiter.SpringExtension; 14 | 15 | import javax.transaction.Transactional; 16 | import java.util.ArrayList; 17 | import java.util.List; 18 | 19 | import static org.junit.jupiter.api.Assertions.*; 20 | import static org.mockito.ArgumentMatchers.any; 21 | import static org.mockito.ArgumentMatchers.anyInt; 22 | import static org.mockito.Mockito.*; 23 | import static org.mockito.Mockito.times; 24 | 25 | @ExtendWith(SpringExtension.class) 26 | @SpringBootTest(classes = MeetHereApplication.class) 27 | @Transactional 28 | public class VenueServiceTest { 29 | @Autowired 30 | private VenueService venueService; 31 | 32 | @Test 33 | void find_venue_by_venueID() { 34 | int venueID=2; 35 | Venue res=venueService.findByVenueID(venueID); 36 | assertEquals(venueID,res.getVenueID()); 37 | } 38 | 39 | @Test 40 | void find_venue_by_venueName() { 41 | int venueID=2; 42 | String venue_name="2222"; 43 | Venue res=venueService.findByVenueName(venue_name); 44 | assertEquals(venueID,res.getVenueID()); 45 | assertEquals(venue_name,res.getVenueName()); 46 | 47 | } 48 | 49 | @Test 50 | void find_all_return_page() { 51 | Pageable pageable= PageRequest.of(0,10); 52 | venueService.findAll(pageable); 53 | } 54 | 55 | @Test 56 | void find_all_return_list() { 57 | List res=venueService.findAll(); 58 | } 59 | 60 | @Test 61 | void create_venue() { 62 | int venueID=1; 63 | String venue_name="venue"; 64 | String description="this is description"; 65 | int price=100; 66 | String picture=""; 67 | String address="address"; 68 | String open_time="08:00"; 69 | String close_time="18:00"; 70 | Venue venue=new Venue(venueID,venue_name,description,price,picture,address,open_time,close_time); 71 | int res=venueService.create(venue); 72 | assertTrue(res>0); 73 | 74 | } 75 | 76 | @Test 77 | void update_venue() { 78 | int venueID=2; 79 | String venue_name="venue"; 80 | String description="this is description"; 81 | int price=100; 82 | String picture=""; 83 | String address="address"; 84 | String open_time="08:00"; 85 | String close_time="18:00"; 86 | Venue venue=new Venue(venueID,venue_name,description,price,picture,address,open_time,close_time); 87 | 88 | venueService.update(venue); 89 | 90 | } 91 | 92 | @Test 93 | void del_venue_by_venueID() { 94 | venueService.delById(2); 95 | 96 | } 97 | 98 | @Test 99 | void count_number_of_same_venueName() { 100 | String venueName="222"; 101 | 102 | int res1=venueService.countVenueName(venueName); 103 | assertEquals(1,res1); 104 | int res2=venueService.countVenueName(""); 105 | assertEquals(0,res2); 106 | 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/MeetHereApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.meethere; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | 6 | @SpringBootTest 7 | class MeetHereApplicationTests { 8 | 9 | @Test 10 | void contextLoads() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/SystemFunctionalTesting/BaseTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.SystemFunctionalTesting; 2 | 3 | import org.junit.jupiter.api.AfterEach; 4 | import org.junit.jupiter.api.BeforeEach; 5 | import org.openqa.selenium.JavascriptExecutor; 6 | import org.openqa.selenium.WebDriver; 7 | import org.openqa.selenium.chrome.ChromeDriver; 8 | 9 | import java.util.HashMap; 10 | import java.util.Map; 11 | 12 | public class BaseTest { 13 | WebDriver driver; 14 | Map vars; 15 | JavascriptExecutor js; 16 | @BeforeEach 17 | public void setUp() { 18 | System.setProperty("webdriver.chrome.driver", "F:\\JetBrains\\IntelliJ IDEA 2019.1.3\\SeleniumWebDriver\\chromedriver.exe"); 19 | driver = new ChromeDriver(); 20 | js = (JavascriptExecutor) driver; 21 | vars = new HashMap(); 22 | } 23 | @AfterEach 24 | public void tearDown() { 25 | driver.quit(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/SystemFunctionalTesting/LoginTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.SystemFunctionalTesting;// Generated by Selenium IDE 2 | import static org.hamcrest.MatcherAssert.assertThat; 3 | import static org.hamcrest.CoreMatchers.is; 4 | 5 | 6 | import org.junit.jupiter.api.MethodOrderer; 7 | import org.junit.jupiter.api.Test; 8 | import org.junit.jupiter.api.TestMethodOrder; 9 | import org.openqa.selenium.By; 10 | import org.springframework.core.annotation.Order; 11 | 12 | @TestMethodOrder(MethodOrderer.OrderAnnotation.class) 13 | public class LoginTest extends BaseTest { 14 | 15 | @Order(1) 16 | @Test 17 | public void login_success_user() { 18 | driver.get("http://localhost:8888/index"); 19 | assertThat(driver.getTitle(), is("MeetHere")); 20 | driver.findElement(By.linkText("登录")).click(); 21 | assertThat(driver.getTitle(), is("登录-MeetHere")); 22 | driver.findElement(By.id("userID")).sendKeys("test001"); 23 | driver.findElement(By.id("password")).click(); 24 | driver.findElement(By.id("password")).sendKeys("1234"); 25 | driver.findElement(By.id("submit")).click(); 26 | assertThat(driver.getTitle(), is("MeetHere")); 27 | driver.close(); 28 | } 29 | 30 | @Order(2) 31 | @Test 32 | public void login_fail_when_userId_is_null() { 33 | driver.get("http://localhost:8888/index"); 34 | assertThat(driver.getTitle(), is("MeetHere")); 35 | driver.findElement(By.linkText("登录")).click(); 36 | assertThat(driver.getTitle(), is("登录-MeetHere")); 37 | driver.findElement(By.id("password")).click(); 38 | driver.findElement(By.id("password")).sendKeys("1234"); 39 | driver.findElement(By.id("submit")).click(); 40 | assertThat(driver.getTitle(), is("登录-MeetHere")); 41 | driver.close(); 42 | } 43 | 44 | @Order(3) 45 | @Test 46 | public void login_fail_when_user_not_exist() { 47 | driver.get("http://localhost:8888/index"); 48 | assertThat(driver.getTitle(), is("MeetHere")); 49 | driver.findElement(By.linkText("登录")).click(); 50 | assertThat(driver.getTitle(), is("登录-MeetHere")); 51 | driver.findElement(By.id("userID")).sendKeys("user000"); 52 | driver.findElement(By.id("password")).click(); 53 | driver.findElement(By.id("password")).sendKeys("1234"); 54 | driver.findElement(By.id("submit")).click(); 55 | assertThat(driver.getTitle(), is("登录-MeetHere")); 56 | assertThat(driver.findElement(By.cssSelector(".alert")).getText(), is("用户名或密码错误,请重新输入!")); 57 | driver.close(); 58 | } 59 | 60 | @Order(4) 61 | @Test 62 | public void login_fail_when_password_is_null() { 63 | driver.get("http://localhost:8888/index"); 64 | assertThat(driver.getTitle(), is("MeetHere")); 65 | driver.findElement(By.linkText("登录")).click(); 66 | assertThat(driver.getTitle(), is("登录-MeetHere")); 67 | driver.findElement(By.id("userID")).sendKeys("test001"); 68 | driver.findElement(By.id("submit")).click(); 69 | assertThat(driver.getTitle(), is("登录-MeetHere")); 70 | driver.close(); 71 | } 72 | 73 | @Order(5) 74 | @Test 75 | public void login_fail_when_password_not_match() { 76 | driver.get("http://localhost:8888/index"); 77 | assertThat(driver.getTitle(), is("MeetHere")); 78 | driver.findElement(By.linkText("登录")).click(); 79 | assertThat(driver.getTitle(), is("登录-MeetHere")); 80 | driver.findElement(By.id("userID")).sendKeys("user001"); 81 | driver.findElement(By.id("password")).click(); 82 | driver.findElement(By.id("password")).sendKeys("1"); 83 | driver.findElement(By.id("submit")).click(); 84 | assertThat(driver.getTitle(), is("登录-MeetHere")); 85 | assertThat(driver.findElement(By.cssSelector(".alert")).getText(), is("用户名或密码错误,请重新输入!")); 86 | driver.close(); 87 | } 88 | 89 | @Order(6) 90 | @Test 91 | public void login_success_admin() { 92 | driver.get("http://localhost:8888/index"); 93 | assertThat(driver.getTitle(), is("MeetHere")); 94 | driver.findElement(By.linkText("登录")).click(); 95 | assertThat(driver.getTitle(), is("登录-MeetHere")); 96 | driver.findElement(By.id("userID")).sendKeys("admin"); 97 | driver.findElement(By.id("password")).click(); 98 | driver.findElement(By.id("password")).sendKeys("admin"); 99 | driver.findElement(By.id("submit")).click(); 100 | assertThat(driver.getTitle(), is("MeetHere-管理系统")); 101 | driver.close(); 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /src/test/java/com/meethere/controller/IndexControllerTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller; 2 | 3 | import com.meethere.entity.Message; 4 | import com.meethere.entity.News; 5 | import com.meethere.entity.Venue; 6 | import com.meethere.service.MessageService; 7 | import com.meethere.service.MessageVoService; 8 | import com.meethere.service.NewsService; 9 | import com.meethere.service.VenueService; 10 | import org.junit.jupiter.api.Test; 11 | import org.junit.jupiter.api.extension.ExtendWith; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; 14 | import org.springframework.boot.test.mock.mockito.MockBean; 15 | import org.springframework.data.domain.PageImpl; 16 | import org.springframework.data.domain.PageRequest; 17 | import org.springframework.data.domain.Pageable; 18 | import org.springframework.data.domain.Sort; 19 | import org.springframework.test.context.junit.jupiter.SpringExtension; 20 | import org.springframework.test.web.servlet.MockMvc; 21 | import org.springframework.test.web.servlet.MvcResult; 22 | import org.springframework.test.web.servlet.ResultActions; 23 | import org.springframework.web.servlet.ModelAndView; 24 | 25 | import java.time.LocalDateTime; 26 | import java.util.ArrayList; 27 | import java.util.List; 28 | 29 | import static org.junit.jupiter.api.Assertions.*; 30 | import static org.mockito.ArgumentMatchers.any; 31 | import static org.mockito.Mockito.*; 32 | import static org.springframework.test.web.ModelAndViewAssert.assertModelAttributeAvailable; 33 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 34 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 35 | 36 | @ExtendWith(SpringExtension.class) 37 | @WebMvcTest(IndexController.class) 38 | class IndexControllerTest { 39 | @Autowired 40 | private MockMvc mockMvc; 41 | @MockBean 42 | private VenueService venueService; 43 | @MockBean 44 | private NewsService newsService; 45 | @MockBean 46 | private MessageService messageService; 47 | @MockBean 48 | private MessageVoService messageVoService; 49 | 50 | @Test 51 | public void return_index_html() throws Exception { 52 | int venueID=1; 53 | String venue_name="venue"; 54 | String description="this is description"; 55 | int price=100; 56 | String picture=""; 57 | String address="address"; 58 | String open_time="08:00"; 59 | String close_time="18:00"; 60 | Venue venue=new Venue(venueID,venue_name,description,price,picture,address,open_time,close_time); 61 | List venues=new ArrayList<>(); 62 | venues.add(venue); 63 | 64 | int id=1; 65 | String title="title"; 66 | String content="this is content"; 67 | LocalDateTime ldt=LocalDateTime.now(); 68 | News news=new News(id,title,content,ldt); 69 | List news1=new ArrayList<>(); 70 | news1.add(news); 71 | 72 | LocalDateTime ldt1=LocalDateTime.now().minusDays(1); 73 | Message message=new Message(id,"user","this is a leave message", ldt1,1); 74 | List messages=new ArrayList<>(); 75 | messages.add(message); 76 | 77 | Pageable venue_pageable= PageRequest.of(0,3, Sort.by("venueID").ascending()); 78 | Pageable news_pageable= PageRequest.of(0,5, Sort.by("time").descending()); 79 | Pageable message_pageable= PageRequest.of(0,5, Sort.by("time").descending()); 80 | 81 | 82 | when(venueService.findAll(any())).thenReturn(new PageImpl<>(venues,venue_pageable,1)); 83 | when(newsService.findAll(any())).thenReturn(new PageImpl<>(news1,news_pageable,1)); 84 | when(messageService.findPassState(any())).thenReturn(new PageImpl<>(messages,message_pageable,1)); 85 | when(messageVoService.returnVo(any())).thenReturn(null); 86 | 87 | ResultActions perform=mockMvc.perform(get("/index")); 88 | perform.andExpect(status().isOk()); 89 | verify(venueService).findAll(any()); 90 | verify(newsService).findAll(any()); 91 | verify(messageService).findPassState(any()); 92 | verify(messageVoService).returnVo(any()); 93 | 94 | MvcResult mvcResult=mockMvc.perform(get("/index")).andReturn(); 95 | ModelAndView mv=mvcResult.getModelAndView(); 96 | assertAll("",()-> assertModelAttributeAvailable(mv,"user"), 97 | ()-> assertModelAttributeAvailable(mv,"news_list"), 98 | ()->assertModelAttributeAvailable(mv,"venue_list"), 99 | ()->assertModelAttributeAvailable(mv,"message_list")); 100 | 101 | verify(venueService,times(2)).findAll(any()); 102 | verify(newsService,times(2)).findAll(any()); 103 | verify(messageService,times(2)).findPassState(any()); 104 | verify(messageVoService,times(2)).returnVo(any()); 105 | } 106 | 107 | @Test 108 | public void return_admin_index_html() throws Exception { 109 | ResultActions perform=mockMvc.perform(get("/admin_index")); 110 | perform.andExpect(status().isOk()); 111 | } 112 | } -------------------------------------------------------------------------------- /src/test/java/com/meethere/controller/admin/AdminMessageControllerTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.admin; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.entity.Message; 5 | import com.meethere.service.MessageService; 6 | import com.meethere.service.MessageVoService; 7 | import org.junit.jupiter.api.Test; 8 | import org.junit.jupiter.api.extension.ExtendWith; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; 11 | import org.springframework.boot.test.context.SpringBootTest; 12 | import org.springframework.boot.test.mock.mockito.MockBean; 13 | import org.springframework.data.domain.PageImpl; 14 | import org.springframework.data.domain.PageRequest; 15 | import org.springframework.data.domain.Pageable; 16 | import org.springframework.data.domain.Sort; 17 | import org.springframework.test.context.junit.jupiter.SpringExtension; 18 | import org.springframework.test.web.servlet.MockMvc; 19 | import org.springframework.test.web.servlet.MvcResult; 20 | import org.springframework.test.web.servlet.ResultActions; 21 | import org.springframework.web.servlet.ModelAndView; 22 | 23 | import javax.annotation.Resource; 24 | 25 | import java.time.LocalDateTime; 26 | import java.util.ArrayList; 27 | import java.util.List; 28 | 29 | import static org.junit.jupiter.api.Assertions.*; 30 | import static org.mockito.ArgumentMatchers.any; 31 | import static org.mockito.ArgumentMatchers.anyInt; 32 | import static org.mockito.Mockito.*; 33 | import static org.springframework.test.web.ModelAndViewAssert.assertModelAttributeAvailable; 34 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 35 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; 36 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 37 | 38 | @ExtendWith(SpringExtension.class) 39 | @WebMvcTest(AdminMessageController.class) 40 | class AdminMessageControllerTest { 41 | @Autowired 42 | private MockMvc mockMvc; 43 | @MockBean 44 | private MessageService messageService; 45 | @MockBean 46 | private MessageVoService messageVoService; 47 | 48 | @Test 49 | public void return_message_manage_html() throws Exception { 50 | int id=1; 51 | LocalDateTime ldt1=LocalDateTime.now().minusDays(1); 52 | Message message=new Message(id,"user","this is a leave message", ldt1,1); 53 | List messages=new ArrayList<>(); 54 | messages.add(message); 55 | Pageable message_pageable= PageRequest.of(0,10, Sort.by("time").descending()); 56 | when(messageService.findWaitState(any())).thenReturn(new PageImpl<>(messages,message_pageable,1)); 57 | 58 | ResultActions perform=mockMvc.perform(get("/message_manage")); 59 | perform.andExpect(status().isOk()); 60 | verify(messageService).findWaitState(any()); 61 | MvcResult mvcResult=mockMvc.perform(get("/message_manage")).andReturn(); 62 | ModelAndView mv=mvcResult.getModelAndView(); 63 | assertModelAttributeAvailable(mv,"total"); 64 | verify(messageService,times(2)).findWaitState(any()); 65 | } 66 | 67 | @Test 68 | public void return_message_list_to_audit() throws Exception { 69 | int id=1; 70 | LocalDateTime ldt1=LocalDateTime.now().minusDays(1); 71 | Message message=new Message(id,"user","this is a leave message", ldt1,1); 72 | List messages=new ArrayList<>(); 73 | messages.add(message); 74 | Pageable message_pageable= PageRequest.of(0,10, Sort.by("time").descending()); 75 | when(messageService.findWaitState(any())).thenReturn(new PageImpl<>(messages,message_pageable,1)); 76 | when(messageVoService.returnVo(messages)).thenReturn(null); 77 | ResultActions perform=mockMvc.perform(get("/messageList.do")); 78 | perform.andExpect(status().isOk()); 79 | verify(messageService).findWaitState(any()); 80 | verify(messageVoService).returnVo(any()); 81 | } 82 | 83 | @Test 84 | public void admin_pass_message() throws Exception { 85 | ResultActions perform=mockMvc.perform(post("/passMessage.do").param("messageID","1")); 86 | perform.andExpect(status().isOk()); 87 | verify(messageService).confirmMessage(1); 88 | } 89 | 90 | @Test 91 | public void admin_reject_message() throws Exception { 92 | ResultActions perform=mockMvc.perform(post("/rejectMessage.do").param("messageID","1")); 93 | perform.andExpect(status().isOk()); 94 | verify(messageService).rejectMessage(1); 95 | } 96 | 97 | @Test 98 | public void admin_del_message() throws Exception { 99 | ResultActions perform=mockMvc.perform(post("/delMessage.do").param("messageID","1")); 100 | perform.andExpect(status().isOk()); 101 | verify(messageService).delById(1); 102 | } 103 | } -------------------------------------------------------------------------------- /src/test/java/com/meethere/controller/admin/AdminNewsControllerTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.admin; 2 | 3 | import com.meethere.entity.News; 4 | import com.meethere.service.NewsService; 5 | import org.junit.jupiter.api.Test; 6 | import org.junit.jupiter.api.extension.ExtendWith; 7 | import org.mockito.Mock; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; 10 | import org.springframework.boot.test.mock.mockito.MockBean; 11 | import org.springframework.data.domain.PageImpl; 12 | import org.springframework.data.domain.PageRequest; 13 | import org.springframework.data.domain.Pageable; 14 | import org.springframework.data.domain.Sort; 15 | import org.springframework.test.context.junit.jupiter.SpringExtension; 16 | import org.springframework.test.web.servlet.MockMvc; 17 | import org.springframework.test.web.servlet.MvcResult; 18 | import org.springframework.test.web.servlet.ResultActions; 19 | import org.springframework.util.LinkedMultiValueMap; 20 | import org.springframework.util.MultiValueMap; 21 | import org.springframework.web.servlet.ModelAndView; 22 | import org.thymeleaf.engine.TemplateData; 23 | 24 | import java.time.LocalDateTime; 25 | import java.util.ArrayList; 26 | import java.util.HashMap; 27 | import java.util.List; 28 | import java.util.Map; 29 | 30 | import static org.junit.jupiter.api.Assertions.*; 31 | import static org.mockito.ArgumentMatchers.any; 32 | import static org.mockito.Mockito.*; 33 | import static org.springframework.test.web.ModelAndViewAssert.assertModelAttributeAvailable; 34 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 35 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; 36 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; 37 | 38 | @ExtendWith(SpringExtension.class) 39 | @WebMvcTest(AdminNewsController.class) 40 | class AdminNewsControllerTest { 41 | @Autowired 42 | private MockMvc mockMvc; 43 | @MockBean 44 | private NewsService newsService; 45 | 46 | @Test 47 | public void return_news_manage_html() throws Exception{ 48 | int id=1; 49 | String title="title"; 50 | String content="this is content"; 51 | LocalDateTime ldt=LocalDateTime.now(); 52 | News news=new News(id,title,content,ldt); 53 | List news1=new ArrayList<>(); 54 | news1.add(news); 55 | Pageable news_pageable= PageRequest.of(0,10, Sort.by("time").ascending()); 56 | when(newsService.findAll(news_pageable)).thenReturn(new PageImpl<>(news1,news_pageable,1)); 57 | 58 | ResultActions perform=mockMvc.perform(get("/news_manage")); 59 | perform.andExpect(status().isOk()); 60 | verify(newsService).findAll(any()); 61 | MvcResult mvcResult=mockMvc.perform(get("/news_manage")).andReturn(); 62 | ModelAndView mv=mvcResult.getModelAndView(); 63 | assertModelAttributeAvailable(mv,"total"); 64 | verify(newsService,times(2)).findAll(any()); 65 | } 66 | 67 | @Test 68 | public void return_news_add_html()throws Exception { 69 | ResultActions perform=mockMvc.perform(get("/news_add")); 70 | perform.andExpect(status().isOk()); 71 | } 72 | 73 | @Test 74 | public void return_news_edit_html() throws Exception { 75 | int id=1; 76 | String title="title"; 77 | String content="this is content"; 78 | LocalDateTime ldt=LocalDateTime.now(); 79 | News news=new News(id,title,content,ldt); 80 | when(newsService.findById(anyInt())).thenReturn(news); 81 | 82 | ResultActions perform=mockMvc.perform(get("/news_edit").param("newsID","1")); 83 | MvcResult mvcResult=perform.andReturn(); 84 | ModelAndView mv=mvcResult.getModelAndView(); 85 | perform.andExpect(status().isOk()); 86 | assertModelAttributeAvailable(mv,"news"); 87 | verify(newsService).findById(anyInt()); 88 | } 89 | 90 | @Test 91 | public void return_news_list() throws Exception { 92 | int id=1; 93 | String title="title"; 94 | String content="this is content"; 95 | LocalDateTime ldt=LocalDateTime.now(); 96 | News news=new News(id,title,content,ldt); 97 | List news1=new ArrayList<>(); 98 | news1.add(news); 99 | Pageable news_pageable= PageRequest.of(1,10, Sort.by("time").ascending()); 100 | when(newsService.findAll(any())).thenReturn(new PageImpl<>(news1,news_pageable,1)); 101 | 102 | ResultActions perform=mockMvc.perform(get("/newsList.do").param("page","1")); 103 | perform.andExpect(status().isOk()); 104 | verify(newsService).findAll(any()); 105 | } 106 | 107 | @Test 108 | public void admin_del_news() throws Exception { 109 | ResultActions perform=mockMvc.perform(post("/delNews.do").param("newsID","1")); 110 | perform.andExpect(status().isOk()); 111 | verify(newsService).delById(1); 112 | } 113 | 114 | @Test 115 | public void admin_modify_news() throws Exception { 116 | when(newsService.findById(1)).thenReturn(new News()); 117 | ResultActions perform=mockMvc.perform(post("/modifyNews.do").param("newsID","1").param("title","this is title"). 118 | param("content","this is content")); 119 | 120 | perform.andExpect(redirectedUrl("news_manage")); 121 | verify(newsService).findById(1); 122 | verify(newsService).update(any()); 123 | } 124 | 125 | @Test 126 | public void admin_add_news() throws Exception { 127 | when(newsService.create(any())).thenReturn(1); 128 | ResultActions perform=mockMvc.perform(post("/addNews.do").param("title","this is title").param("content","this is content")); 129 | 130 | perform.andExpect(redirectedUrl("news_manage")); 131 | verify(newsService).create(any()); 132 | } 133 | } -------------------------------------------------------------------------------- /src/test/java/com/meethere/controller/admin/AdminOrderControllerTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.admin; 2 | 3 | import com.meethere.entity.Order; 4 | import com.meethere.service.OrderService; 5 | import com.meethere.service.OrderVoService; 6 | import org.junit.jupiter.api.Test; 7 | import org.junit.jupiter.api.extension.ExtendWith; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; 10 | import org.springframework.boot.test.mock.mockito.MockBean; 11 | import org.springframework.data.domain.PageImpl; 12 | import org.springframework.data.domain.PageRequest; 13 | import org.springframework.data.domain.Pageable; 14 | import org.springframework.data.domain.Sort; 15 | import org.springframework.test.context.junit.jupiter.SpringExtension; 16 | import org.springframework.test.web.servlet.MockMvc; 17 | import org.springframework.test.web.servlet.MvcResult; 18 | import org.springframework.test.web.servlet.ResultActions; 19 | import org.springframework.web.servlet.ModelAndView; 20 | 21 | import java.time.LocalDateTime; 22 | import java.util.ArrayList; 23 | import java.util.List; 24 | 25 | import static org.junit.jupiter.api.Assertions.*; 26 | import static org.mockito.ArgumentMatchers.any; 27 | import static org.mockito.Mockito.verify; 28 | import static org.mockito.Mockito.when; 29 | import static org.springframework.test.web.ModelAndViewAssert.assertModelAttributeAvailable; 30 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 31 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; 32 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 33 | 34 | @ExtendWith(SpringExtension.class) 35 | @WebMvcTest(AdminOrderController.class) 36 | class AdminOrderControllerTest { 37 | @Autowired 38 | private MockMvc mockMvc; 39 | @MockBean 40 | private OrderService orderService; 41 | @MockBean 42 | private OrderVoService orderVoService; 43 | 44 | @Test 45 | public void return_reservation_manage_html() throws Exception { 46 | int orderID=1; 47 | String user="user"; 48 | int venueID=2; 49 | LocalDateTime order_time=LocalDateTime.now(); 50 | LocalDateTime start_time= LocalDateTime.now().plusDays(1); 51 | int hours=3; 52 | int state=1; 53 | int total=300; 54 | Order order=new Order(orderID,user,venueID,state,order_time,start_time,hours,total); 55 | List orders=new ArrayList<>(); 56 | orders.add(order); 57 | Pageable order_pageable= PageRequest.of(0,10, Sort.by("orderTime").descending()); 58 | 59 | when(orderService.findAuditOrder()).thenReturn(orders); 60 | when(orderVoService.returnVo(orders)).thenReturn(null); 61 | when(orderService.findNoAuditOrder(any())).thenReturn(new PageImpl<>(orders,order_pageable,1)); 62 | ResultActions perform=mockMvc.perform(get("/reservation_manage")); 63 | MvcResult mvcResult=perform.andReturn(); 64 | ModelAndView mv=mvcResult.getModelAndView(); 65 | perform.andExpect(status().isOk()); 66 | assertModelAttributeAvailable(mv,"order_list"); 67 | assertModelAttributeAvailable(mv,"total"); 68 | verify(orderService).findAuditOrder(); 69 | verify(orderService).findNoAuditOrder(any()); 70 | verify(orderVoService).returnVo(orders); 71 | } 72 | 73 | @Test 74 | public void admin_get_no_audit_order_list() throws Exception { 75 | int orderID=1; 76 | String user="user"; 77 | int venueID=2; 78 | LocalDateTime order_time=LocalDateTime.now(); 79 | LocalDateTime start_time= LocalDateTime.now().plusDays(1); 80 | int hours=3; 81 | int state=1; 82 | int total=300; 83 | Order order=new Order(orderID,user,venueID,state,order_time,start_time,hours,total); 84 | List orders=new ArrayList<>(); 85 | orders.add(order); 86 | Pageable order_pageable= PageRequest.of(0,10, Sort.by("orderTime").descending()); 87 | 88 | when(orderVoService.returnVo(orders)).thenReturn(null); 89 | when(orderService.findNoAuditOrder(any())).thenReturn(new PageImpl<>(orders,order_pageable,1)); 90 | ResultActions perform=mockMvc.perform(get("/admin/getOrderList.do").param("page","1")); 91 | perform.andExpect(status().isOk()); 92 | verify(orderService).findNoAuditOrder(any()); 93 | verify(orderVoService).returnVo(orders); 94 | } 95 | 96 | @Test 97 | public void admin_confirm_order() throws Exception { 98 | ResultActions perform=mockMvc.perform(post("/passOrder.do").param("orderID","1")); 99 | perform.andExpect(status().isOk()); 100 | verify(orderService).confirmOrder(1); 101 | } 102 | 103 | @Test 104 | public void admin_reject_order() throws Exception { 105 | ResultActions perform=mockMvc.perform(post("/rejectOrder.do").param("orderID","1")); 106 | perform.andExpect(status().isOk()); 107 | verify(orderService).rejectOrder(1); 108 | } 109 | } -------------------------------------------------------------------------------- /src/test/java/com/meethere/controller/user/NewsControllerTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.user; 2 | 3 | import com.meethere.entity.News; 4 | import com.meethere.service.NewsService; 5 | import org.junit.jupiter.api.Test; 6 | import org.junit.jupiter.api.extension.ExtendWith; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; 9 | import org.springframework.boot.test.mock.mockito.MockBean; 10 | import org.springframework.data.domain.PageImpl; 11 | import org.springframework.data.domain.PageRequest; 12 | import org.springframework.data.domain.Pageable; 13 | import org.springframework.data.domain.Sort; 14 | import org.springframework.test.context.junit.jupiter.SpringExtension; 15 | import org.springframework.test.web.servlet.MockMvc; 16 | import org.springframework.test.web.servlet.MvcResult; 17 | import org.springframework.test.web.servlet.ResultActions; 18 | import org.springframework.web.servlet.ModelAndView; 19 | 20 | import java.util.ArrayList; 21 | import java.util.List; 22 | 23 | import static org.junit.jupiter.api.Assertions.*; 24 | import static org.mockito.Mockito.*; 25 | import static org.springframework.test.web.ModelAndViewAssert.assertModelAttributeAvailable; 26 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 27 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 28 | 29 | @ExtendWith(SpringExtension.class) 30 | @WebMvcTest(NewsController.class) 31 | class NewsControllerTest { 32 | @Autowired 33 | private MockMvc mockMvc; 34 | @MockBean 35 | private NewsService newsService; 36 | 37 | @Test 38 | public void return_news_detail_html() throws Exception { 39 | when(newsService.findById(1)).thenReturn(new News()); 40 | ResultActions perform=mockMvc.perform(get("/news").param("newsID","1")); 41 | MvcResult mvcResult=perform.andReturn(); 42 | ModelAndView mv=mvcResult.getModelAndView(); 43 | perform.andExpect(status().isOk()); 44 | assertModelAttributeAvailable(mv,"news"); 45 | verify(newsService).findById(1); 46 | } 47 | 48 | @Test 49 | public void return_news_list_page() throws Exception { 50 | List newsList=new ArrayList<>(); 51 | newsList.add(new News()); 52 | Pageable news_pageable= PageRequest.of(0,5, Sort.by("time").descending()); 53 | when(newsService.findAll(news_pageable)).thenReturn(new PageImpl<>(newsList,news_pageable,1)); 54 | 55 | ResultActions perform=mockMvc.perform(get("/news/getNewsList").param("page","1")); 56 | perform.andExpect(status().isOk()); 57 | verify(newsService).findAll(news_pageable); 58 | } 59 | 60 | @Test 61 | public void return_news_list_html() throws Exception { 62 | List newsList=new ArrayList<>(); 63 | newsList.add(new News()); 64 | Pageable news_pageable= PageRequest.of(0,5, Sort.by("time").descending()); 65 | when(newsService.findAll(news_pageable)).thenReturn(new PageImpl<>(newsList,news_pageable,1)); 66 | ResultActions perform=mockMvc.perform(get("/news_list").param("newsID","1")); 67 | MvcResult mvcResult=perform.andReturn(); 68 | ModelAndView mv=mvcResult.getModelAndView(); 69 | perform.andExpect(status().isOk()); 70 | assertModelAttributeAvailable(mv,"news_list"); 71 | assertModelAttributeAvailable(mv,"total"); 72 | verify(newsService,times(2)).findAll(news_pageable); 73 | } 74 | } -------------------------------------------------------------------------------- /src/test/java/com/meethere/controller/user/VenueControllerTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.controller.user; 2 | 3 | import com.meethere.entity.Venue; 4 | import com.meethere.service.VenueService; 5 | import org.junit.jupiter.api.Test; 6 | import org.junit.jupiter.api.extension.ExtendWith; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; 9 | import org.springframework.boot.test.mock.mockito.MockBean; 10 | import org.springframework.data.domain.PageImpl; 11 | import org.springframework.data.domain.PageRequest; 12 | import org.springframework.data.domain.Pageable; 13 | import org.springframework.data.domain.Sort; 14 | import org.springframework.test.context.junit.jupiter.SpringExtension; 15 | import org.springframework.test.web.servlet.MockMvc; 16 | import org.springframework.test.web.servlet.ResultActions; 17 | import org.springframework.web.servlet.ModelAndView; 18 | 19 | import java.util.ArrayList; 20 | import java.util.List; 21 | 22 | import static org.junit.jupiter.api.Assertions.*; 23 | import static org.mockito.ArgumentMatchers.any; 24 | import static org.mockito.ArgumentMatchers.anyInt; 25 | import static org.mockito.Mockito.*; 26 | import static org.springframework.test.web.ModelAndViewAssert.assertModelAttributeAvailable; 27 | import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; 28 | import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 29 | 30 | @ExtendWith(SpringExtension.class) 31 | @WebMvcTest(VenueController.class) 32 | class VenueControllerTest { 33 | @Autowired 34 | private MockMvc mockMvc; 35 | @MockBean 36 | private VenueService venueService; 37 | 38 | @Test 39 | public void return_venue_detail_html() throws Exception{ 40 | when(venueService.findByVenueID(anyInt())).thenReturn(new Venue()); 41 | ResultActions perform=mockMvc.perform(get("/venue").param("venueID","1")); 42 | ModelAndView mv=perform.andReturn().getModelAndView(); 43 | perform.andExpect(status().isOk()); 44 | assertModelAttributeAvailable(mv,"venue"); 45 | verify(venueService).findByVenueID(anyInt()); 46 | 47 | } 48 | 49 | @Test 50 | public void return_venue_list_paged() throws Exception{ 51 | int venueID=1; 52 | String venue_name="venue"; 53 | String description="this is description"; 54 | int price=100; 55 | String picture=""; 56 | String address="address"; 57 | String open_time="08:00"; 58 | String close_time="18:00"; 59 | Venue venue=new Venue(venueID,venue_name,description,price,picture,address,open_time,close_time); 60 | List venues=new ArrayList<>(); 61 | venues.add(venue); 62 | Pageable venue_pageable= PageRequest.of(0,5, Sort.by("venueID").ascending()); 63 | when(venueService.findAll(venue_pageable)).thenReturn(new PageImpl<>(venues,venue_pageable,1)); 64 | ResultActions perform=mockMvc.perform(get("/venuelist/getVenueList").param("page","1")); 65 | perform.andExpect(status().isOk()); 66 | verify(venueService).findAll(venue_pageable); 67 | } 68 | 69 | @Test 70 | public void return_venue_list_html() throws Exception{ 71 | int venueID=1; 72 | String venue_name="venue"; 73 | String description="this is description"; 74 | int price=100; 75 | String picture=""; 76 | String address="address"; 77 | String open_time="08:00"; 78 | String close_time="18:00"; 79 | Venue venue=new Venue(venueID,venue_name,description,price,picture,address,open_time,close_time); 80 | List venues=new ArrayList<>(); 81 | venues.add(venue); 82 | Pageable venue_pageable= PageRequest.of(0,5, Sort.by("venueID").ascending()); 83 | 84 | when(venueService.findAll(venue_pageable)).thenReturn(new PageImpl<>(venues,venue_pageable,1)); 85 | ResultActions perform=mockMvc.perform(get("/venue_list").param("page","1")); 86 | ModelAndView mv=perform.andReturn().getModelAndView(); 87 | perform.andExpect(status().isOk()); 88 | assertModelAttributeAvailable(mv,"venue_list"); 89 | assertModelAttributeAvailable(mv,"total"); 90 | 91 | verify(venueService,times(2)).findAll(venue_pageable); 92 | } 93 | } -------------------------------------------------------------------------------- /src/test/java/com/meethere/service/impl/MessageVoServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service.impl; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.dao.MessageDao; 5 | import com.meethere.dao.UserDao; 6 | import com.meethere.entity.Message; 7 | import com.meethere.entity.User; 8 | import com.meethere.entity.vo.MessageVo; 9 | import org.junit.jupiter.api.Test; 10 | import org.junit.jupiter.api.extension.ExtendWith; 11 | import org.mockito.InjectMocks; 12 | import org.mockito.Mock; 13 | import org.springframework.boot.test.context.SpringBootTest; 14 | import org.springframework.test.context.junit.jupiter.SpringExtension; 15 | 16 | import java.time.LocalDateTime; 17 | import java.util.ArrayList; 18 | import java.util.List; 19 | 20 | import static org.junit.jupiter.api.Assertions.*; 21 | import static org.mockito.Mockito.verify; 22 | import static org.mockito.Mockito.when; 23 | 24 | @ExtendWith(SpringExtension.class) 25 | @SpringBootTest(classes = MeetHereApplication.class) 26 | class MessageVoServiceImplTest { 27 | @Mock 28 | private MessageDao messageDao; 29 | @Mock 30 | private UserDao userDao; 31 | @InjectMocks 32 | private MessageVoServiceImpl messageVoService; 33 | 34 | @Test 35 | void return_messageVo_by_messageID() { 36 | int id=1; 37 | LocalDateTime ldt=LocalDateTime.now().minusDays(1); 38 | Message message=new Message(id,"user","this is a leave message", ldt,1); 39 | 40 | String userID="user"; 41 | String password="password"; 42 | String email="222@qq.com"; 43 | String phone="12345678901"; 44 | int isadmin=0; 45 | String user_name="nickname"; 46 | String picture="picture"; 47 | User user=new User(id,userID,user_name,password,email,phone,isadmin,picture); 48 | 49 | when(messageDao.findByMessageID(id)).thenReturn(message); 50 | when(userDao.findByUserID(userID)).thenReturn(user); 51 | MessageVo res=messageVoService.returnMessageVoByMessageID(id); 52 | assertAll(()->assertEquals(id,res.getMessageID()),()->assertEquals(userID,res.getUserID()),()->assertEquals("this is a leave message",res.getContent()), 53 | ()->assertEquals(ldt,res.getTime()),()->assertEquals(user_name,res.getUserName()),()->assertEquals(picture,res.getPicture()), 54 | ()->assertEquals(1,res.getState())); 55 | 56 | verify(messageDao).findByMessageID(id); 57 | verify(userDao).findByUserID(userID); 58 | } 59 | 60 | @Test 61 | void return_messageVo_list_by_message_list() { 62 | int id=1; 63 | LocalDateTime ldt=LocalDateTime.now().minusDays(1); 64 | Message message=new Message(id,"user","this is a leave message", ldt,1); 65 | List messages=new ArrayList<>(); 66 | messages.add(message); 67 | 68 | String userID="user"; 69 | String password="password"; 70 | String email="222@qq.com"; 71 | String phone="12345678901"; 72 | int isadmin=0; 73 | String user_name="nickname"; 74 | String picture="picture"; 75 | User user=new User(id,userID,user_name,password,email,phone,isadmin,picture); 76 | 77 | when(messageDao.findByMessageID(id)).thenReturn(message); 78 | when(userDao.findByUserID(userID)).thenReturn(user); 79 | List res=messageVoService.returnVo(messages); 80 | assertEquals(1,res.size()); 81 | verify(messageDao).findByMessageID(id); 82 | verify(userDao).findByUserID(userID); 83 | } 84 | } -------------------------------------------------------------------------------- /src/test/java/com/meethere/service/impl/NewsServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service.impl; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.dao.NewsDao; 5 | import com.meethere.entity.News; 6 | import org.junit.jupiter.api.Test; 7 | import org.junit.jupiter.api.extension.ExtendWith; 8 | import org.mockito.InjectMocks; 9 | import org.mockito.Mock; 10 | import org.springframework.boot.test.context.SpringBootTest; 11 | import org.springframework.data.domain.PageRequest; 12 | import org.springframework.data.domain.Pageable; 13 | import org.springframework.test.context.junit.jupiter.SpringExtension; 14 | 15 | import java.time.LocalDateTime; 16 | 17 | import static org.junit.jupiter.api.Assertions.*; 18 | import static org.mockito.ArgumentMatchers.any; 19 | import static org.mockito.Mockito.*; 20 | 21 | @ExtendWith(SpringExtension.class) 22 | @SpringBootTest(classes = MeetHereApplication.class) 23 | class NewsServiceImplTest { 24 | @Mock 25 | private NewsDao newsDao; 26 | @InjectMocks 27 | private NewsServiceImpl newsService; 28 | 29 | @Test 30 | public void return_all_news_paged_by_page() { 31 | Pageable pageable= PageRequest.of(0,10); 32 | when(newsDao.findAll(pageable)).thenReturn(null); 33 | newsService.findAll(pageable); 34 | verify(newsDao).findAll(pageable); 35 | } 36 | 37 | @Test 38 | void return_news_by_newsID() { 39 | int id=1; 40 | String title="title"; 41 | String content="this is content"; 42 | LocalDateTime ldt=LocalDateTime.now(); 43 | News news=new News(id,title,content,ldt); 44 | when(newsDao.getOne(id)).thenReturn(news); 45 | News res= newsService.findById(id); 46 | assertAll("test find by newsID",()->assertEquals(id,res.getNewsID()), 47 | ()->assertEquals(title,res.getTitle()), 48 | ()->assertEquals(content,res.getContent()), 49 | ()->assertEquals(ldt,res.getTime())); 50 | 51 | } 52 | 53 | @Test 54 | void create_news() { 55 | int id=1; 56 | String title="title"; 57 | String content="this is content"; 58 | LocalDateTime ldt=LocalDateTime.now(); 59 | News news=new News(id,title,content,ldt); 60 | when(newsDao.save(news)).thenReturn(news); 61 | int res = newsService.create(news); 62 | assertEquals(id,res); 63 | 64 | verify(newsDao).save(news); 65 | verifyNoMoreInteractions(newsDao); 66 | } 67 | 68 | @Test 69 | void del_news_by_newsID() { 70 | newsService.delById(1); 71 | verify(newsDao).deleteById(1); 72 | 73 | newsService.delById(2); 74 | verify(newsDao).deleteById(2); 75 | 76 | verify(newsDao,times(2)).deleteById(anyInt()); 77 | } 78 | 79 | @Test 80 | void update_news() { 81 | int id=1; 82 | String title="title"; 83 | String content="this is content"; 84 | LocalDateTime ldt=LocalDateTime.now(); 85 | News news=new News(id,title,content,ldt); 86 | when(newsDao.save(news)).thenReturn(news); 87 | newsService.update(news); 88 | 89 | verify(newsDao).save(news); 90 | verifyNoMoreInteractions(newsDao); 91 | } 92 | } -------------------------------------------------------------------------------- /src/test/java/com/meethere/service/impl/OrderVoServiceImplTest.java: -------------------------------------------------------------------------------- 1 | package com.meethere.service.impl; 2 | 3 | import com.meethere.MeetHereApplication; 4 | import com.meethere.dao.OrderDao; 5 | import com.meethere.dao.VenueDao; 6 | import com.meethere.entity.Order; 7 | import com.meethere.entity.Venue; 8 | import com.meethere.entity.vo.OrderVo; 9 | import org.junit.jupiter.api.Test; 10 | import org.junit.jupiter.api.extension.ExtendWith; 11 | import org.mockito.InjectMocks; 12 | import org.mockito.Mock; 13 | import org.springframework.boot.test.context.SpringBootTest; 14 | import org.springframework.test.context.junit.jupiter.SpringExtension; 15 | 16 | import java.time.LocalDateTime; 17 | import java.util.ArrayList; 18 | import java.util.List; 19 | 20 | import static org.junit.jupiter.api.Assertions.*; 21 | import static org.mockito.Mockito.verify; 22 | import static org.mockito.Mockito.when; 23 | 24 | @ExtendWith(SpringExtension.class) 25 | @SpringBootTest(classes = MeetHereApplication.class) 26 | class OrderVoServiceImplTest { 27 | @Mock 28 | private VenueDao venueDao; 29 | @Mock 30 | private OrderDao orderDao; 31 | @InjectMocks 32 | private OrderVoServiceImpl orderVoService; 33 | 34 | @Test 35 | public void return_orderVo_by_orderID() { 36 | int orderID=1; 37 | String user="user"; 38 | int venueID=2; 39 | LocalDateTime order_time=LocalDateTime.now(); 40 | LocalDateTime start_time= LocalDateTime.now().plusDays(1); 41 | int hours=3; 42 | int state=1; 43 | int total=300; 44 | 45 | Order order=new Order(orderID,user,venueID,state,order_time,start_time,hours,total); 46 | 47 | String venue_name="venue"; 48 | String description="this is description"; 49 | int price=100; 50 | String picture=""; 51 | String address="address"; 52 | String open_time="08:00"; 53 | String close_time="18:00"; 54 | Venue venue=new Venue(venueID,venue_name,description,price,picture,address,open_time,close_time); 55 | 56 | when(orderDao.findByOrderID(orderID)).thenReturn(order); 57 | when(venueDao.findByVenueID(venueID)).thenReturn(venue); 58 | OrderVo res=orderVoService.returnOrderVoByOrderID(orderID); 59 | assertAll(()->assertEquals(orderID,res.getOrderID()),()->assertEquals(venueID,res.getVenueID()),()->assertEquals(venue_name,res.getVenueName()), 60 | ()->assertEquals(user,res.getUserID()),()->assertEquals(state,res.getState()),()->assertEquals(order_time,res.getOrderTime()), 61 | ()->assertEquals(start_time,res.getStartTime()),()->assertEquals(hours,res.getHours()),()->assertEquals(total,res.getTotal())); 62 | verify(orderDao).findByOrderID(orderID); 63 | verify(venueDao).findByVenueID(venueID); 64 | } 65 | 66 | @Test 67 | public void return_orderVo_list_by_order_list() { 68 | int orderID=1; 69 | String user="user"; 70 | int venueID=2; 71 | LocalDateTime order_time=LocalDateTime.now(); 72 | LocalDateTime start_time= LocalDateTime.now().plusDays(1); 73 | int hours=3; 74 | int state=1; 75 | int total=300; 76 | 77 | Order order=new Order(orderID,user,venueID,state,order_time,start_time,hours,total); 78 | List orders=new ArrayList<>(); 79 | orders.add(order); 80 | 81 | String venue_name="venue"; 82 | String description="this is description"; 83 | int price=100; 84 | String picture=""; 85 | String address="address"; 86 | String open_time="08:00"; 87 | String close_time="18:00"; 88 | Venue venue=new Venue(venueID,venue_name,description,price,picture,address,open_time,close_time); 89 | 90 | when(orderDao.findByOrderID(orderID)).thenReturn(order); 91 | when(venueDao.findByVenueID(venueID)).thenReturn(venue); 92 | List res=orderVoService.returnVo(orders); 93 | assertEquals(1,res.size()); 94 | verify(orderDao).findByOrderID(orderID); 95 | verify(venueDao).findByVenueID(venueID); 96 | } 97 | } -------------------------------------------------------------------------------- /性能测试报告.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/性能测试报告.docx -------------------------------------------------------------------------------- /性能测试计划.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/性能测试计划.docx -------------------------------------------------------------------------------- /系统测试报告.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/系统测试报告.doc -------------------------------------------------------------------------------- /系统测试计划 .xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/系统测试计划 .xlsx -------------------------------------------------------------------------------- /缺陷报告单.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/缺陷报告单.xlsx -------------------------------------------------------------------------------- /覆盖度报告.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/覆盖度报告.docx -------------------------------------------------------------------------------- /静态分析报告.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeetHereTesting/SoftwareTesting-MeetHere/1ebb3f7477f551bf3cd9837b076d02affc2e3c51/静态分析报告.doc --------------------------------------------------------------------------------
5000
49 | 12月11日,教育部科技司组织专家组在我校召开“统计与数据科学前沿理论及应用”教育部重点实验室建设项目验收会议。 50 | 教育部科技司基础处张楠楠,我校副校长孙真荣、发展规划部部长杨蓉、研究生院培养办主任陈灵犀、科技处副处长杨艳琴、 51 | 经济与管理学部副主任冯学钢、学校各职能部门代表以及重点实验室骨干科研人员出席了会议。会议由张楠楠主持。 52 |