├── .gitattributes ├── .gitignore ├── .mvn └── wrapper │ ├── MavenWrapperDownloader.java │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── README.md ├── image ├── image-20200425171249691.png ├── image-20200425171323896.png ├── image-20200425171358952.png ├── image-20200425174549579.png ├── image-20200425175151456.png └── image-20200429214217604.png ├── mvnw ├── mvnw.cmd ├── pom.xml ├── src ├── main │ ├── java │ │ └── com │ │ │ └── dh │ │ │ └── tourism │ │ │ ├── TourismApplication.java │ │ │ ├── commom │ │ │ ├── JsonResult.java │ │ │ └── PageResult.java │ │ │ ├── controller │ │ │ ├── CarController.java │ │ │ ├── CarOrderController.java │ │ │ ├── GuideController.java │ │ │ ├── HotalController.java │ │ │ ├── HotalOrderController.java │ │ │ ├── PersonController.java │ │ │ ├── RoleController.java │ │ │ ├── ScenicController.java │ │ │ ├── ScenicOrderController.java │ │ │ ├── TeamController.java │ │ │ └── UserController.java │ │ │ ├── dao │ │ │ ├── CarMapper.java │ │ │ ├── CarOrderMapper.java │ │ │ ├── GuideMapper.java │ │ │ ├── HotalMapper.java │ │ │ ├── HotalOrderMapper.java │ │ │ ├── PersonMapper.java │ │ │ ├── RoleMapper.java │ │ │ ├── ScenicMapper.java │ │ │ ├── ScenicOrderMapper.java │ │ │ ├── TeamMapper.java │ │ │ ├── UserMapper.java │ │ │ └── UserRoleMapper.java │ │ │ ├── exception │ │ │ ├── BusinessException.java │ │ │ ├── IException.java │ │ │ ├── MyExceptionHandler.java │ │ │ └── ParameterException.java │ │ │ ├── model │ │ │ ├── Car.java │ │ │ ├── CarOrder.java │ │ │ ├── Guide.java │ │ │ ├── Hotal.java │ │ │ ├── HotalOrder.java │ │ │ ├── Person.java │ │ │ ├── Role.java │ │ │ ├── Scenic.java │ │ │ ├── ScenicOrder.java │ │ │ ├── Team.java │ │ │ ├── User.java │ │ │ └── UserRole.java │ │ │ └── service │ │ │ ├── CarOrderService.java │ │ │ ├── CarService.java │ │ │ ├── GuideService.java │ │ │ ├── HotalOrderService.java │ │ │ ├── HotalService.java │ │ │ ├── PersonService.java │ │ │ ├── RoleService.java │ │ │ ├── ScenicOrderService.java │ │ │ ├── ScenicService.java │ │ │ ├── TeamService.java │ │ │ ├── UserRoleService.java │ │ │ ├── UserService.java │ │ │ └── impl │ │ │ ├── CarOrderServiceImpl.java │ │ │ ├── CarServiceImpl.java │ │ │ ├── GuideServiceImpl.java │ │ │ ├── HotalOrderServiceImpl.java │ │ │ ├── HotalServiceImpl.java │ │ │ ├── PersonServiceImpl.java │ │ │ ├── RoleServiceImpl.java │ │ │ ├── ScenicOrderServiceImpl.java │ │ │ ├── ScenicServiceImpl.java │ │ │ ├── TeamServiceImpl.java │ │ │ ├── UserRoleServiceImpl.java │ │ │ └── UserServiceImpl.java │ └── resources │ │ ├── Mapper │ │ ├── CarMapper.xml │ │ ├── CarOrderMapper.xml │ │ ├── GuideMapper.xml │ │ ├── HotalMapper.xml │ │ ├── HotalOrderMapper.xml │ │ ├── PersonMapper.xml │ │ ├── ScenicMapper.xml │ │ ├── ScenicOrderMapper.xml │ │ ├── TeamMapper.xml │ │ └── UserMapper.xml │ │ ├── application.properties │ │ └── static │ │ ├── assets │ │ ├── common.css │ │ ├── common.js │ │ ├── images │ │ │ ├── car │ │ │ │ ├── benchi.jpg │ │ │ │ └── bingcar.jpg │ │ │ ├── favicon.ico │ │ │ ├── head.png │ │ │ ├── head2.PNG │ │ │ ├── hotal │ │ │ │ ├── binfen.jpg │ │ │ │ └── hotal2.jpg │ │ │ ├── logo.png │ │ │ └── recommend │ │ │ │ ├── 2014120217200910085.jpg │ │ │ │ └── qingcheng.png │ │ ├── libs │ │ │ ├── jquery │ │ │ │ ├── clipboard.min.js │ │ │ │ ├── jquery-3.2.1.min.js │ │ │ │ ├── jquery-ui.css │ │ │ │ ├── jquery-ui.js │ │ │ │ └── jquery.cookie.js │ │ │ ├── layui │ │ │ │ ├── css │ │ │ │ │ ├── layui.css │ │ │ │ │ ├── layui.mobile.css │ │ │ │ │ └── modules │ │ │ │ │ │ ├── code.css │ │ │ │ │ │ ├── laydate │ │ │ │ │ │ └── default │ │ │ │ │ │ │ └── laydate.css │ │ │ │ │ │ └── layer │ │ │ │ │ │ └── default │ │ │ │ │ │ ├── icon-ext.png │ │ │ │ │ │ ├── icon.png │ │ │ │ │ │ ├── layer.css │ │ │ │ │ │ ├── loading-0.gif │ │ │ │ │ │ ├── loading-1.gif │ │ │ │ │ │ └── loading-2.gif │ │ │ │ ├── font │ │ │ │ │ ├── iconfont.eot │ │ │ │ │ ├── iconfont.svg │ │ │ │ │ ├── iconfont.ttf │ │ │ │ │ └── iconfont.woff │ │ │ │ ├── images │ │ │ │ │ └── face │ │ │ │ │ │ ├── 0.gif │ │ │ │ │ │ ├── 1.gif │ │ │ │ │ │ ├── 10.gif │ │ │ │ │ │ ├── 11.gif │ │ │ │ │ │ ├── 12.gif │ │ │ │ │ │ ├── 13.gif │ │ │ │ │ │ ├── 14.gif │ │ │ │ │ │ ├── 15.gif │ │ │ │ │ │ ├── 16.gif │ │ │ │ │ │ ├── 17.gif │ │ │ │ │ │ ├── 18.gif │ │ │ │ │ │ ├── 19.gif │ │ │ │ │ │ ├── 2.gif │ │ │ │ │ │ ├── 20.gif │ │ │ │ │ │ ├── 21.gif │ │ │ │ │ │ ├── 22.gif │ │ │ │ │ │ ├── 23.gif │ │ │ │ │ │ ├── 24.gif │ │ │ │ │ │ ├── 25.gif │ │ │ │ │ │ ├── 26.gif │ │ │ │ │ │ ├── 27.gif │ │ │ │ │ │ ├── 28.gif │ │ │ │ │ │ ├── 29.gif │ │ │ │ │ │ ├── 3.gif │ │ │ │ │ │ ├── 30.gif │ │ │ │ │ │ ├── 31.gif │ │ │ │ │ │ ├── 32.gif │ │ │ │ │ │ ├── 33.gif │ │ │ │ │ │ ├── 34.gif │ │ │ │ │ │ ├── 35.gif │ │ │ │ │ │ ├── 36.gif │ │ │ │ │ │ ├── 37.gif │ │ │ │ │ │ ├── 38.gif │ │ │ │ │ │ ├── 39.gif │ │ │ │ │ │ ├── 4.gif │ │ │ │ │ │ ├── 40.gif │ │ │ │ │ │ ├── 41.gif │ │ │ │ │ │ ├── 42.gif │ │ │ │ │ │ ├── 43.gif │ │ │ │ │ │ ├── 44.gif │ │ │ │ │ │ ├── 45.gif │ │ │ │ │ │ ├── 46.gif │ │ │ │ │ │ ├── 47.gif │ │ │ │ │ │ ├── 48.gif │ │ │ │ │ │ ├── 49.gif │ │ │ │ │ │ ├── 5.gif │ │ │ │ │ │ ├── 50.gif │ │ │ │ │ │ ├── 51.gif │ │ │ │ │ │ ├── 52.gif │ │ │ │ │ │ ├── 53.gif │ │ │ │ │ │ ├── 54.gif │ │ │ │ │ │ ├── 55.gif │ │ │ │ │ │ ├── 56.gif │ │ │ │ │ │ ├── 57.gif │ │ │ │ │ │ ├── 58.gif │ │ │ │ │ │ ├── 59.gif │ │ │ │ │ │ ├── 6.gif │ │ │ │ │ │ ├── 60.gif │ │ │ │ │ │ ├── 61.gif │ │ │ │ │ │ ├── 62.gif │ │ │ │ │ │ ├── 63.gif │ │ │ │ │ │ ├── 64.gif │ │ │ │ │ │ ├── 65.gif │ │ │ │ │ │ ├── 66.gif │ │ │ │ │ │ ├── 67.gif │ │ │ │ │ │ ├── 68.gif │ │ │ │ │ │ ├── 69.gif │ │ │ │ │ │ ├── 7.gif │ │ │ │ │ │ ├── 70.gif │ │ │ │ │ │ ├── 71.gif │ │ │ │ │ │ ├── 8.gif │ │ │ │ │ │ └── 9.gif │ │ │ │ ├── lay │ │ │ │ │ └── modules │ │ │ │ │ │ ├── carousel.js │ │ │ │ │ │ ├── code.js │ │ │ │ │ │ ├── colorpicker.js │ │ │ │ │ │ ├── element.js │ │ │ │ │ │ ├── flow.js │ │ │ │ │ │ ├── form.js │ │ │ │ │ │ ├── jquery.js │ │ │ │ │ │ ├── laydate.js │ │ │ │ │ │ ├── layedit.js │ │ │ │ │ │ ├── layer.js │ │ │ │ │ │ ├── laypage.js │ │ │ │ │ │ ├── laytpl.js │ │ │ │ │ │ ├── mobile.js │ │ │ │ │ │ ├── rate.js │ │ │ │ │ │ ├── slider.js │ │ │ │ │ │ ├── table.js │ │ │ │ │ │ ├── tree.js │ │ │ │ │ │ ├── upload.js │ │ │ │ │ │ └── util.js │ │ │ │ ├── layui.all.js │ │ │ │ └── layui.js │ │ │ └── tagsinput │ │ │ │ ├── jquery.tagsinput-revisited.min.css │ │ │ │ └── jquery.tagsinput-revisited.min.js │ │ ├── module │ │ │ ├── admin.js │ │ │ └── formSelects │ │ │ │ ├── formSelects-v4.css │ │ │ │ ├── formSelects-v4.js │ │ │ │ └── formSelects-v4.min.js │ │ ├── vue-resoures.js │ │ └── vue.min.js │ │ ├── index.html │ │ ├── login.html │ │ ├── page │ │ ├── car.html │ │ ├── hotal.html │ │ ├── index.html │ │ ├── myTeam.html │ │ ├── scenic.html │ │ └── scenicOrder.html │ │ └── userpage │ │ ├── car.html │ │ ├── guide.html │ │ ├── hotal.html │ │ ├── person.html │ │ ├── scenic.html │ │ ├── team.html │ │ └── user.html └── test │ └── java │ └── com │ └── dh │ └── tourism │ └── TourismApplicationTests.java └── tourism.sql /.gitattributes: -------------------------------------------------------------------------------- 1 | *.html linguist-language=java 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | /target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | 5 | ### STS ### 6 | .apt_generated 7 | .classpath 8 | .factorypath 9 | .project 10 | .settings 11 | .springBeans 12 | .sts4-cache 13 | 14 | ### IntelliJ IDEA ### 15 | .idea 16 | *.iws 17 | *.iml 18 | *.ipr 19 | 20 | ### NetBeans ### 21 | /nbproject/private/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ 26 | /build/ 27 | 28 | ### VS Code ### 29 | .vscode/ 30 | -------------------------------------------------------------------------------- /.mvn/wrapper/MavenWrapperDownloader.java: -------------------------------------------------------------------------------- 1 | /* 2 | Licensed to the Apache Software Foundation (ASF) under one 3 | or more contributor license agreements. See the NOTICE file 4 | distributed with this work for additional information 5 | regarding copyright ownership. The ASF licenses this file 6 | to you under the Apache License, Version 2.0 (the 7 | "License"); you may not use this file except in compliance 8 | with the License. You may obtain a copy of the License at 9 | 10 | https://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, 13 | software distributed under the License is distributed on an 14 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | KIND, either express or implied. See the License for the 16 | specific language governing permissions and limitations 17 | under the License. 18 | */ 19 | 20 | import java.io.File; 21 | import java.io.FileInputStream; 22 | import java.io.FileOutputStream; 23 | import java.io.IOException; 24 | import java.net.URL; 25 | import java.nio.channels.Channels; 26 | import java.nio.channels.ReadableByteChannel; 27 | import java.util.Properties; 28 | 29 | public class MavenWrapperDownloader { 30 | 31 | /** 32 | * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. 33 | */ 34 | private static final String DEFAULT_DOWNLOAD_URL = 35 | "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"; 36 | 37 | /** 38 | * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to 39 | * use instead of the default one. 40 | */ 41 | private static final String MAVEN_WRAPPER_PROPERTIES_PATH = 42 | ".mvn/wrapper/maven-wrapper.properties"; 43 | 44 | /** 45 | * Path where the maven-wrapper.jar will be saved to. 46 | */ 47 | private static final String MAVEN_WRAPPER_JAR_PATH = 48 | ".mvn/wrapper/maven-wrapper.jar"; 49 | 50 | /** 51 | * Name of the property which should be used to override the default download url for the wrapper. 52 | */ 53 | private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; 54 | 55 | public static void main(String args[]) { 56 | System.out.println("- Downloader started"); 57 | File baseDirectory = new File(args[0]); 58 | System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); 59 | 60 | // If the maven-wrapper.properties exists, read it and check if it contains a custom 61 | // wrapperUrl parameter. 62 | File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); 63 | String url = DEFAULT_DOWNLOAD_URL; 64 | if(mavenWrapperPropertyFile.exists()) { 65 | FileInputStream mavenWrapperPropertyFileInputStream = null; 66 | try { 67 | mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); 68 | Properties mavenWrapperProperties = new Properties(); 69 | mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); 70 | url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); 71 | } catch (IOException e) { 72 | System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); 73 | } finally { 74 | try { 75 | if(mavenWrapperPropertyFileInputStream != null) { 76 | mavenWrapperPropertyFileInputStream.close(); 77 | } 78 | } catch (IOException e) { 79 | // Ignore ... 80 | } 81 | } 82 | } 83 | System.out.println("- Downloading from: : " + url); 84 | 85 | File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); 86 | if(!outputFile.getParentFile().exists()) { 87 | if(!outputFile.getParentFile().mkdirs()) { 88 | System.out.println( 89 | "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'"); 90 | } 91 | } 92 | System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); 93 | try { 94 | downloadFileFromURL(url, outputFile); 95 | System.out.println("Done"); 96 | System.exit(0); 97 | } catch (Throwable e) { 98 | System.out.println("- Error downloading"); 99 | e.printStackTrace(); 100 | System.exit(1); 101 | } 102 | } 103 | 104 | private static void downloadFileFromURL(String urlString, File destination) throws Exception { 105 | URL website = new URL(urlString); 106 | ReadableByteChannel rbc; 107 | rbc = Channels.newChannel(website.openStream()); 108 | FileOutputStream fos = new FileOutputStream(destination); 109 | fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); 110 | fos.close(); 111 | rbc.close(); 112 | } 113 | 114 | } 115 | -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/.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.0/apache-maven-3.6.0-bin.zip 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # tourism 2 | 旅行社后台管理系统 3 | 4 | 打开IDEA,打开pom.xml文件,等待下载相关依赖 5 | 6 | 打开navicat 创建名称为tourism的数据库,右键数据库运行tourism.sql文件 创建表并导入数据 7 | 8 | -------------------------------------------------------------------------------- /image/image-20200425171249691.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/image/image-20200425171249691.png -------------------------------------------------------------------------------- /image/image-20200425171323896.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/image/image-20200425171323896.png -------------------------------------------------------------------------------- /image/image-20200425171358952.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/image/image-20200425171358952.png -------------------------------------------------------------------------------- /image/image-20200425174549579.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/image/image-20200425174549579.png -------------------------------------------------------------------------------- /image/image-20200425175151456.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/image/image-20200425175151456.png -------------------------------------------------------------------------------- /image/image-20200429214217604.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/image/image-20200429214217604.png -------------------------------------------------------------------------------- /mvnw.cmd: -------------------------------------------------------------------------------- 1 | @REM ---------------------------------------------------------------------------- 2 | @REM Licensed to the Apache Software Foundation (ASF) under one 3 | @REM or more contributor license agreements. See the NOTICE file 4 | @REM distributed with this work for additional information 5 | @REM regarding copyright ownership. The ASF licenses this file 6 | @REM to you under the Apache License, Version 2.0 (the 7 | @REM "License"); you may not use this file except in compliance 8 | @REM with the License. You may obtain a copy of the License at 9 | @REM 10 | @REM https://www.apache.org/licenses/LICENSE-2.0 11 | @REM 12 | @REM Unless required by applicable law or agreed to in writing, 13 | @REM software distributed under the License is distributed on an 14 | @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | @REM KIND, either express or implied. See the License for the 16 | @REM specific language governing permissions and limitations 17 | @REM under the License. 18 | @REM ---------------------------------------------------------------------------- 19 | 20 | @REM ---------------------------------------------------------------------------- 21 | @REM Maven2 Start Up Batch script 22 | @REM 23 | @REM Required ENV vars: 24 | @REM JAVA_HOME - location of a JDK home dir 25 | @REM 26 | @REM Optional ENV vars 27 | @REM M2_HOME - location of maven2's installed home dir 28 | @REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands 29 | @REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending 30 | @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven 31 | @REM e.g. to debug Maven itself, use 32 | @REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 33 | @REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files 34 | @REM ---------------------------------------------------------------------------- 35 | 36 | @REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' 37 | @echo off 38 | @REM set title of command window 39 | title %0 40 | @REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' 41 | @if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% 42 | 43 | @REM set %HOME% to equivalent of $HOME 44 | if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") 45 | 46 | @REM Execute a user defined script before this one 47 | if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre 48 | @REM check for pre script, once with legacy .bat ending and once with .cmd ending 49 | if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" 50 | if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" 51 | :skipRcPre 52 | 53 | @setlocal 54 | 55 | set ERROR_CODE=0 56 | 57 | @REM To isolate internal variables from possible post scripts, we use another setlocal 58 | @setlocal 59 | 60 | @REM ==== START VALIDATION ==== 61 | if not "%JAVA_HOME%" == "" goto OkJHome 62 | 63 | echo. 64 | echo Error: JAVA_HOME not found in your environment. >&2 65 | echo Please set the JAVA_HOME variable in your environment to match the >&2 66 | echo location of your Java installation. >&2 67 | echo. 68 | goto error 69 | 70 | :OkJHome 71 | if exist "%JAVA_HOME%\bin\java.exe" goto init 72 | 73 | echo. 74 | echo Error: JAVA_HOME is set to an invalid directory. >&2 75 | echo JAVA_HOME = "%JAVA_HOME%" >&2 76 | echo Please set the JAVA_HOME variable in your environment to match the >&2 77 | echo location of your Java installation. >&2 78 | echo. 79 | goto error 80 | 81 | @REM ==== END VALIDATION ==== 82 | 83 | :init 84 | 85 | @REM Find the project base dir, i.e. the directory that contains the folder ".mvn". 86 | @REM Fallback to current working directory if not found. 87 | 88 | set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% 89 | IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir 90 | 91 | set EXEC_DIR=%CD% 92 | set WDIR=%EXEC_DIR% 93 | :findBaseDir 94 | IF EXIST "%WDIR%"\.mvn goto baseDirFound 95 | cd .. 96 | IF "%WDIR%"=="%CD%" goto baseDirNotFound 97 | set WDIR=%CD% 98 | goto findBaseDir 99 | 100 | :baseDirFound 101 | set MAVEN_PROJECTBASEDIR=%WDIR% 102 | cd "%EXEC_DIR%" 103 | goto endDetectBaseDir 104 | 105 | :baseDirNotFound 106 | set MAVEN_PROJECTBASEDIR=%EXEC_DIR% 107 | cd "%EXEC_DIR%" 108 | 109 | :endDetectBaseDir 110 | 111 | IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig 112 | 113 | @setlocal EnableExtensions EnableDelayedExpansion 114 | for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a 115 | @endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% 116 | 117 | :endReadAdditionalConfig 118 | 119 | SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" 120 | set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" 121 | set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain 122 | 123 | set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar" 124 | FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO ( 125 | IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B 126 | ) 127 | 128 | @REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central 129 | @REM This allows using the maven wrapper in projects that prohibit checking in binary data. 130 | if exist %WRAPPER_JAR% ( 131 | echo Found %WRAPPER_JAR% 132 | ) else ( 133 | echo Couldn't find %WRAPPER_JAR%, downloading it ... 134 | echo Downloading from: %DOWNLOAD_URL% 135 | powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')" 136 | echo Finished downloading %WRAPPER_JAR% 137 | ) 138 | @REM End of extension 139 | 140 | %MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* 141 | if ERRORLEVEL 1 goto error 142 | goto end 143 | 144 | :error 145 | set ERROR_CODE=1 146 | 147 | :end 148 | @endlocal & set ERROR_CODE=%ERROR_CODE% 149 | 150 | if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost 151 | @REM check for post script, once with legacy .bat ending and once with .cmd ending 152 | if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" 153 | if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" 154 | :skipRcPost 155 | 156 | @REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' 157 | if "%MAVEN_BATCH_PAUSE%" == "on" pause 158 | 159 | if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% 160 | 161 | exit /B %ERROR_CODE% 162 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.springframework.boot 7 | spring-boot-starter-parent 8 | 2.1.2.RELEASE 9 | 10 | 11 | com.dh 12 | tourism 13 | 0.0.1-SNAPSHOT 14 | tourism 15 | Demo project for Spring Boot 16 | 17 | 18 | UTF-8 19 | UTF-8 20 | 1.8 21 | 22 | 23 | 24 | 25 | 26 | org.springframework.boot 27 | spring-boot-starter-web 28 | 29 | 30 | org.springframework.boot 31 | spring-boot-starter-test 32 | test 33 | 34 | 35 | org.springframework.boot 36 | spring-boot-devtools 37 | true 38 | 39 | 40 | 41 | 42 | mysql 43 | mysql-connector-java 44 | runtime 45 | 46 | 47 | org.mybatis.spring.boot 48 | mybatis-spring-boot-starter 49 | 1.3.2 50 | 51 | 52 | com.alibaba 53 | druid-spring-boot-starter 54 | 1.1.9 55 | 56 | 57 | 58 | 59 | com.baomidou 60 | mybatis-plus-boot-starter 61 | 2.3 62 | 63 | 64 | 65 | 66 | org.springframework.boot 67 | spring-boot-starter-data-redis 68 | 69 | 70 | 71 | 72 | io.springfox 73 | springfox-swagger2 74 | 2.2.2 75 | 76 | 77 | io.springfox 78 | springfox-swagger-ui 79 | 2.2.2 80 | 81 | 82 | 83 | 84 | com.alibaba 85 | fastjson 86 | 1.2.47 87 | 88 | 89 | 90 | 91 | com.github.whvcse.JwtPermission 92 | jwtp-spring-boot-starter 93 | 2.0.2 94 | 95 | 96 | 97 | 98 | com.github.whvcse 99 | EndecryptUtil 100 | 1.0.5 101 | 102 | 103 | org.projectlombok 104 | lombok 105 | provided 106 | 107 | 108 | org.springframework.boot 109 | spring-boot-starter-thymeleaf 110 | 111 | 112 | 113 | com.alibaba 114 | fastjson 115 | 1.2.47 116 | 117 | 118 | org.springframework.security 119 | org.springframework.security.core 120 | 3.0.5.RELEASE 121 | 122 | 123 | 124 | 125 | jitpack.io 126 | https://jitpack.io 127 | 128 | 129 | 130 | 131 | 132 | org.springframework.boot 133 | spring-boot-maven-plugin 134 | 135 | 136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/TourismApplication.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class TourismApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(TourismApplication.class, args); 11 | System.out.println(11111); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/commom/JsonResult.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.commom; 2 | 3 | import java.util.HashMap; 4 | 5 | /** 6 | * 返回结果对象 7 | * 8 | * @author wangfan 9 | * @date 2017-6-10 上午10:10:07 10 | */ 11 | public class JsonResult extends HashMap { 12 | private static final long serialVersionUID = 1L; 13 | 14 | private JsonResult() { 15 | } 16 | 17 | /** 18 | * 返回成功 19 | */ 20 | public static JsonResult ok() { 21 | return ok("操作成功"); 22 | } 23 | 24 | /** 25 | * 返回成功 26 | */ 27 | public static JsonResult ok(String message) { 28 | return ok(200, message); 29 | } 30 | 31 | /** 32 | * 返回成功 33 | */ 34 | public static JsonResult ok(int code, String message) { 35 | JsonResult jsonResult = new JsonResult(); 36 | jsonResult.put("code", code); 37 | jsonResult.put("msg", message); 38 | return jsonResult; 39 | } 40 | 41 | /** 42 | * 返回失败 43 | */ 44 | public static JsonResult error() { 45 | return error("操作失败"); 46 | } 47 | 48 | /** 49 | * 返回失败 50 | */ 51 | public static JsonResult error(String messag) { 52 | return error(500, messag); 53 | } 54 | 55 | /** 56 | * 返回失败 57 | */ 58 | public static JsonResult error(int code, String message) { 59 | return ok(code, message); 60 | } 61 | 62 | /** 63 | * 设置code 64 | */ 65 | public JsonResult setCode(int code) { 66 | super.put("code", code); 67 | return this; 68 | } 69 | 70 | /** 71 | * 设置message 72 | */ 73 | public JsonResult setMessage(String message) { 74 | super.put("msg", message); 75 | return this; 76 | } 77 | 78 | /** 79 | * 放入object 80 | */ 81 | @Override 82 | public JsonResult put(String key, Object object) { 83 | super.put(key, object); 84 | return this; 85 | } 86 | } -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/commom/PageResult.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.commom; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 分页结果对象,这里以layui框架的table为标准 7 | * 8 | * @author wangfan 9 | * @date 2017-7-24 下午4:28:59 10 | */ 11 | public class PageResult { 12 | 13 | private int code; // 状态码, 0 表示成功 14 | 15 | private String msg; // 提示信息 16 | 17 | private long count; // 总数量, bootstrapTable是total 18 | 19 | private List data; // 当前数据, bootstrapTable是rows 20 | 21 | public PageResult() { 22 | } 23 | 24 | public PageResult(List rows) { 25 | this.data = rows; 26 | this.count = rows.size(); 27 | this.code = 0; 28 | this.msg = ""; 29 | } 30 | 31 | public PageResult(List rows, long total) { 32 | this.count = total; 33 | this.data = rows; 34 | this.code = 0; 35 | this.msg = ""; 36 | } 37 | 38 | public PageResult(String msg) { 39 | this.count = 0; 40 | this.data = null; 41 | this.code = 0; 42 | this.msg = msg; 43 | } 44 | public PageResult(int code, String msg, long count, List data) { 45 | this.code = code; 46 | this.msg = msg; 47 | this.count = count; 48 | this.data = data; 49 | } 50 | 51 | public PageResult(String msg, int code) { 52 | this.msg = msg; 53 | this.code = code; 54 | } 55 | 56 | public int getCode() { 57 | return code; 58 | } 59 | 60 | public void setCode(int code) { 61 | this.code = code; 62 | } 63 | 64 | public String getMsg() { 65 | return msg; 66 | } 67 | 68 | public void setMsg(String msg) { 69 | this.msg = msg; 70 | } 71 | 72 | public long getCount() { 73 | return count; 74 | } 75 | 76 | public void setCount(long count) { 77 | this.count = count; 78 | } 79 | 80 | public List getData() { 81 | return data; 82 | } 83 | 84 | public void setData(List data) { 85 | this.data = data; 86 | } 87 | 88 | } 89 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/controller/CarController.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.controller; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.plugins.Page; 5 | import com.dh.tourism.commom.JsonResult; 6 | import com.dh.tourism.commom.PageResult; 7 | import com.dh.tourism.model.*; 8 | import com.dh.tourism.service.CarService; 9 | import io.swagger.annotations.ApiImplicitParam; 10 | import io.swagger.annotations.ApiImplicitParams; 11 | import io.swagger.annotations.ApiOperation; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | import org.springframework.web.bind.annotation.*; 14 | 15 | import java.util.ArrayList; 16 | import java.util.List; 17 | 18 | /** 19 | * @author duhan 20 | * @title: CarController 21 | * @projectName tourism 22 | * @description: TODO 23 | * @date 2019/4/1622:14 24 | */ 25 | @RestController 26 | @RequestMapping("/car") 27 | public class CarController { 28 | private static Integer count=2; 29 | @Autowired 30 | private CarService carService; 31 | 32 | @RequestMapping("insert") 33 | public PageResult insert(Car car){ 34 | car.setId(count); 35 | count++; 36 | car.setCarNum(car.getCarSum()); 37 | if(!carService.insert(car)){ 38 | return new PageResult("添加失败",400); 39 | } 40 | return new PageResult("添加成功",200); 41 | } 42 | 43 | @RequestMapping("/update") 44 | public PageResult updatePerson(Car car){ 45 | 46 | car.setCarNum(car.getCarSum()-car.getCarOut()); 47 | if(carService.updateById(car)){ 48 | return new PageResult("修改成功",200); 49 | } 50 | return new PageResult("修改失败",400); 51 | } 52 | 53 | @RequestMapping("/delete/{carId}") 54 | public PageResult deltePerson(@PathVariable("carId") Integer carId){ 55 | 56 | if(carService.deleteById(carId)){ 57 | return new PageResult("删除成功",200); 58 | } 59 | return new PageResult("删除失败",400); 60 | } 61 | 62 | @PutMapping("/statu") 63 | public JsonResult updatestatu(Integer carId, Integer statu) { 64 | if (statu == null || (statu != 0 && statu != 1)) { 65 | return JsonResult.error("statu值需要在[0,1]中"); 66 | } 67 | Car car=new Car(); 68 | car.setStatu(statu); 69 | car.setId(carId); 70 | if (carService.updateById(car)) { 71 | return JsonResult.ok(); 72 | } 73 | return JsonResult.error(); 74 | } 75 | 76 | @RequestMapping("/query") 77 | public PageResult list(Integer page, Integer limit, String searchKey, String searchValue) { 78 | if (page == null) { 79 | page = 0; 80 | } 81 | if (limit == null) { 82 | limit = 10; 83 | } 84 | Page carPage = new Page<>(page, limit); 85 | EntityWrapper wrapper = new EntityWrapper<>(); 86 | if (searchKey != null && !searchKey.trim().isEmpty() && searchValue != null && !searchValue.trim().isEmpty()) { 87 | wrapper.eq(searchKey, searchValue); 88 | } 89 | wrapper.orderBy("create_time", true); 90 | carService.selectPage(carPage, wrapper); 91 | List count=carService.selectList(wrapper); 92 | List carList = carPage.getRecords(); 93 | return new PageResult<>(carList, count.size()); 94 | } 95 | 96 | /** 97 | * 查询所有的车辆信息,展示车辆信息用 98 | * @return 99 | */ 100 | @RequestMapping("queryAll") 101 | public PageResult queryAll(){ 102 | EntityWrapper entityWrapper=new EntityWrapper<>(); 103 | entityWrapper.eq("statu",0); 104 | List carList=carService.selectList(entityWrapper); 105 | return new PageResult<>(200,"查询成功",carList.size(),carList); 106 | } 107 | 108 | @RequestMapping("queryById") 109 | public PageResult queryById(Integer id){ 110 | 111 | Car car=carService.queryById(id); 112 | List carList=new ArrayList<>(); 113 | carList.add(car); 114 | return new PageResult<>(200,"查询成功",carList.size(),carList); 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/controller/CarOrderController.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.controller; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.plugins.Page; 5 | import com.dh.tourism.commom.JsonResult; 6 | import com.dh.tourism.commom.PageResult; 7 | import com.dh.tourism.model.Guide; 8 | import com.dh.tourism.model.Car; 9 | import com.dh.tourism.model.CarOrder; 10 | import com.dh.tourism.model.Team; 11 | import com.dh.tourism.service.GuideService; 12 | import com.dh.tourism.service.CarOrderService; 13 | import com.dh.tourism.service.CarService; 14 | import com.dh.tourism.service.TeamService; 15 | import org.springframework.beans.factory.annotation.Autowired; 16 | import org.springframework.web.bind.annotation.PathVariable; 17 | import org.springframework.web.bind.annotation.PutMapping; 18 | import org.springframework.web.bind.annotation.RequestMapping; 19 | import org.springframework.web.bind.annotation.RestController; 20 | 21 | import java.util.List; 22 | 23 | /** 24 | * @author duhan 25 | * @title: CarOrderController 26 | * @projectName tourism 27 | * @description: TODO 28 | * @date 2019/4/1923:24 29 | */ 30 | @RestController 31 | @RequestMapping("/carOrder") 32 | public class CarOrderController { 33 | 34 | private static Integer count=1; 35 | @Autowired 36 | private CarOrderService carOrderService; 37 | @Autowired 38 | private GuideService guideService; 39 | @Autowired 40 | private TeamService teamService; 41 | 42 | @Autowired 43 | private CarService carService; 44 | 45 | @RequestMapping("insert") 46 | public PageResult insert(CarOrder carOrder){ 47 | carOrder.setId(count); 48 | count++; 49 | if(carOrder.getTeamId()==null){ 50 | return new PageResult("请选择团队",400); 51 | } 52 | Integer guideId=carOrder.getGuideId(); 53 | Guide guide=guideService.getGuideById(guideId); 54 | carOrder.setGuideName(guide.getGuideName()); 55 | //计算订单总价 56 | Integer teamId=carOrder.getTeamId(); 57 | //设置团队名 58 | Team team=teamService.queryById(teamId); 59 | carOrder.setTeamName(team.getTeamName()); 60 | Integer personNum=teamService.queryPersonNumById(teamId); 61 | Car car=carService.queryById(carOrder.getCarId()); 62 | carOrder.setCarName(car.getCarName()); 63 | carOrder.setCarType(car.getCarType()); 64 | //更改该种汽车剩余数量 65 | Integer leaseCarNum=carOrder.getCarNum();//该订单租车数量 66 | Double price=(Double.valueOf(car.getPrice())*leaseCarNum); 67 | carOrder.setPrice(String.valueOf(price)); 68 | car.setCarNum(car.getCarNum()-leaseCarNum); 69 | car.setCarOut(car.getCarOut()+leaseCarNum); 70 | carService.updateById(car); 71 | if(!carOrderService.insert(carOrder)){ 72 | return new PageResult("预订失败",400); 73 | } 74 | return new PageResult("预订成功",200); 75 | } 76 | 77 | @RequestMapping("/update") 78 | public PageResult updatePerson(CarOrder carOrder){ 79 | 80 | Integer teamId=carOrder.getTeamId(); 81 | //设置团队名 82 | Team team=teamService.queryById(teamId); 83 | carOrder.setTeamName(team.getTeamName()); 84 | Car car=carService.queryById(carOrder.getCarId()); 85 | Integer leaseCarNum=carOrder.getCarNum();//该订单租车数量 86 | Double price=(Double.valueOf(car.getPrice())*leaseCarNum); 87 | carOrder.setPrice(String.valueOf(price)); 88 | car.setCarNum(car.getCarNum()-leaseCarNum); 89 | car.setCarOut(car.getCarOut()+leaseCarNum); 90 | carService.updateById(car); 91 | if(carOrderService.updateById(carOrder)){ 92 | return new PageResult("修改成功",200); 93 | } 94 | return new PageResult("修改失败",400); 95 | } 96 | 97 | @RequestMapping("/delete/{carOrderId}") 98 | public PageResult deltePerson(@PathVariable("carOrderId") Integer carOrderId){ 99 | 100 | CarOrder carOrder=carOrderService.queryById(carOrderId); 101 | Car car=carService.queryById(carOrder.getCarId()); 102 | Integer leaseCarNum=carOrder.getCarNum();//该订单租车数量 103 | //删除订单后,要修改该种汽车剩余数量 104 | car.setCarNum(car.getCarNum()+leaseCarNum); 105 | car.setCarOut(car.getCarOut()-leaseCarNum); 106 | carService.updateById(car); 107 | if(carOrderService.deleteById(carOrderId)){ 108 | return new PageResult("删除成功",200); 109 | } 110 | return new PageResult("删除失败",400); 111 | } 112 | 113 | @PutMapping("/statu") 114 | public JsonResult updatestatu(Integer carOrderId, Integer statu) { 115 | if (statu == null || (statu != 0 && statu != 1)) { 116 | return JsonResult.error("statu值需要在[0,1]中"); 117 | } 118 | CarOrder carOrder=new CarOrder(); 119 | carOrder.setStatu(statu); 120 | carOrder.setId(carOrderId); 121 | if (carOrderService.updateById(carOrder)) { 122 | return JsonResult.ok(); 123 | } 124 | return JsonResult.error(); 125 | } 126 | 127 | @RequestMapping("/query") 128 | public PageResult list(Integer page, Integer limit, String searchKey, String searchValue,Integer guideId) { 129 | if (page == null) { 130 | page = 0; 131 | } 132 | if (limit == null) { 133 | limit = 10; 134 | } 135 | Page carOrderPage = new Page<>(page, limit); 136 | EntityWrapper wrapper = new EntityWrapper<>(); 137 | if (searchKey != null && !searchKey.trim().isEmpty() && searchValue != null && !searchValue.trim().isEmpty()) { 138 | wrapper.eq(searchKey, searchValue); 139 | } 140 | wrapper.orderBy("create_time", true); 141 | if(guideId!=null){ 142 | wrapper.eq("guide_id",guideId); 143 | } 144 | carOrderService.selectPage(carOrderPage, wrapper); 145 | List count=carOrderService.selectList(wrapper); 146 | List carOrderList = carOrderPage.getRecords(); 147 | return new PageResult<>(carOrderList, count.size()); 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/controller/GuideController.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.controller; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.plugins.Page; 5 | import com.dh.tourism.commom.JsonResult; 6 | import com.dh.tourism.commom.PageResult; 7 | import com.dh.tourism.model.Guide; 8 | import com.dh.tourism.service.GuideService; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.web.bind.annotation.PathVariable; 11 | import org.springframework.web.bind.annotation.PutMapping; 12 | import org.springframework.web.bind.annotation.RequestMapping; 13 | import org.springframework.web.bind.annotation.RestController; 14 | 15 | import java.util.List; 16 | 17 | /** 18 | * @author duhan 19 | * @title: GuideController 20 | * @projectName tourism 21 | * @description: TODO 22 | * @date 2019/4/1623:40 23 | */ 24 | @RestController 25 | @RequestMapping("/guide") 26 | public class GuideController { 27 | 28 | private static Integer count=2; 29 | @Autowired 30 | private GuideService guideService; 31 | 32 | @RequestMapping("/query") 33 | public PageResult list(Integer page, Integer limit, String searchKey, String searchValue) { 34 | if (page == null) { 35 | page = 0; 36 | } 37 | if (limit == null) { 38 | limit = 10; 39 | } 40 | Page guidePage = new Page<>(page, limit); 41 | EntityWrapper wrapper = new EntityWrapper<>(); 42 | if (searchKey != null && !searchKey.trim().isEmpty() && searchValue != null && !searchValue.trim().isEmpty()) { 43 | if(searchKey.equals("guide_name")||searchKey.equals("phone")){ 44 | wrapper.like(searchKey,searchValue); 45 | }else { 46 | wrapper.eq(searchKey, searchValue); 47 | } 48 | } 49 | wrapper.orderBy("create_time", true); 50 | guideService.selectPage(guidePage, wrapper); 51 | List count=guideService.selectList(wrapper); 52 | List userList = guidePage.getRecords(); 53 | return new PageResult<>(userList, count.size()); 54 | } 55 | 56 | @RequestMapping("/insert") 57 | public PageResult insertGuide(Guide guide){ 58 | 59 | guide.setId(count); 60 | count++; 61 | if(guideService.insert(guide)){ 62 | return new PageResult("添加成功",200); 63 | } 64 | return new PageResult("添加失败",400); 65 | } 66 | 67 | @RequestMapping("/update") 68 | public PageResult updateGuide(Guide guide){ 69 | 70 | if(guideService.updateById(guide)){ 71 | return new PageResult("修改成功",200); 72 | } 73 | return new PageResult("修改失败",400); 74 | } 75 | 76 | @RequestMapping("/delete/{guideId}") 77 | public PageResult delteGuide(@PathVariable("guideId") Integer guideId){ 78 | 79 | if(guideService.deleteById(guideId)){ 80 | return new PageResult("删除成功",200); 81 | } 82 | return new PageResult("删除失败",400); 83 | } 84 | @PutMapping("/statu") 85 | public JsonResult updatestatu(Integer id, Integer statu) { 86 | if (statu == null || (statu != 0 && statu != 1)) { 87 | return JsonResult.error("statu值需要在[0,1]中"); 88 | } 89 | Guide guide=new Guide(); 90 | guide.setStatu(statu); 91 | guide.setId(id); 92 | if (guideService.updateById(guide)) { 93 | return JsonResult.ok(); 94 | } 95 | return JsonResult.error(); 96 | } 97 | 98 | /** 99 | * 查询所有状态正常的导游 100 | * @return 101 | */ 102 | @RequestMapping("/queryAllStatu") 103 | public PageResult queryAllStatu(){ 104 | EntityWrapper entity=new EntityWrapper(); 105 | entity.eq("statu",0); 106 | List guides=guideService.selectList(entity); 107 | return new PageResult<>(200,"查询成功",guides.size(),guides); 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/controller/HotalController.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.controller; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.plugins.Page; 5 | import com.dh.tourism.commom.JsonResult; 6 | import com.dh.tourism.commom.PageResult; 7 | import com.dh.tourism.model.Hotal; 8 | import com.dh.tourism.service.HotalService; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.web.bind.annotation.PathVariable; 11 | import org.springframework.web.bind.annotation.PutMapping; 12 | import org.springframework.web.bind.annotation.RequestMapping; 13 | import org.springframework.web.bind.annotation.RestController; 14 | 15 | import java.util.List; 16 | 17 | /** 18 | * @author duhan 19 | * @title: HotalController 20 | * @projectName tourism 21 | * @description: TODO 22 | * @date 2019/4/1622:14 23 | */ 24 | @RestController 25 | @RequestMapping("/hotal") 26 | public class HotalController { 27 | private static Integer count=1; 28 | @Autowired 29 | private HotalService hotalService; 30 | 31 | @RequestMapping("insert") 32 | public PageResult insert(Hotal hotal){ 33 | hotal.setId(count); 34 | count++; 35 | if(!hotalService.insert(hotal)){ 36 | return new PageResult("添加失败",400); 37 | } 38 | return new PageResult("添加成功",200); 39 | } 40 | 41 | @RequestMapping("/update") 42 | public PageResult updatePerson(Hotal hotal){ 43 | 44 | if(hotalService.updateById(hotal)){ 45 | return new PageResult("修改成功",200); 46 | } 47 | return new PageResult("修改失败",400); 48 | } 49 | 50 | @RequestMapping("/delete/{hotalId}") 51 | public PageResult deltePerson(@PathVariable("hotalId") Integer hotalId){ 52 | 53 | if(hotalService.deleteById(hotalId)){ 54 | return new PageResult("删除成功",200); 55 | } 56 | return new PageResult("删除失败",400); 57 | } 58 | 59 | @PutMapping("/statu") 60 | public JsonResult updatestatu(Integer hotalId, Integer statu) { 61 | if (statu == null || (statu != 0 && statu != 1)) { 62 | return JsonResult.error("statu值需要在[0,1]中"); 63 | } 64 | Hotal hotal=new Hotal(); 65 | hotal.setStatu(statu); 66 | hotal.setId(hotalId); 67 | if (hotalService.updateById(hotal)) { 68 | return JsonResult.ok(); 69 | } 70 | return JsonResult.error(); 71 | } 72 | 73 | @RequestMapping("/query") 74 | public PageResult list(Integer page, Integer limit, String searchKey, String searchValue) { 75 | if (page == null) { 76 | page = 0; 77 | } 78 | if (limit == null) { 79 | limit = 10; 80 | } 81 | Page hotalPage = new Page<>(page, limit); 82 | EntityWrapper wrapper = new EntityWrapper<>(); 83 | if (searchKey != null && !searchKey.trim().isEmpty() && searchValue != null && !searchValue.trim().isEmpty()) { 84 | if(searchKey.equals("hotal_name")||searchKey.equals("address")){ 85 | wrapper.like(searchKey,searchValue); 86 | }else { 87 | wrapper.eq(searchKey, searchValue); 88 | } 89 | } 90 | wrapper.orderBy("create_time", true); 91 | hotalService.selectPage(hotalPage, wrapper); 92 | List count=hotalService.selectList(wrapper); 93 | List hotalList = hotalPage.getRecords(); 94 | return new PageResult<>(hotalList, count.size()); 95 | } 96 | 97 | @RequestMapping("queryById") 98 | public PageResult queryById(Integer id){ 99 | EntityWrapper entityWrapper=new EntityWrapper(); 100 | entityWrapper.eq("id",id); 101 | List hotalList=hotalService.selectList(entityWrapper); 102 | 103 | return new PageResult<>(200,"查询成功",hotalList.size(),hotalList); 104 | } 105 | 106 | @RequestMapping("queryAll") 107 | public PageResult queryAll(){ 108 | EntityWrapper entityWrapper=new EntityWrapper(); 109 | entityWrapper.eq("statu",0); 110 | List hotalList=hotalService.selectList(entityWrapper); 111 | 112 | return new PageResult<>(200,"查询成功",hotalList.size(),hotalList); 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/controller/PersonController.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.controller; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.plugins.Page; 5 | import com.dh.tourism.commom.JsonResult; 6 | import com.dh.tourism.commom.PageResult; 7 | import com.dh.tourism.model.Person; 8 | import com.dh.tourism.model.Team; 9 | import com.dh.tourism.service.PersonService; 10 | import com.dh.tourism.service.TeamService; 11 | import io.swagger.annotations.ApiImplicitParam; 12 | import io.swagger.annotations.ApiImplicitParams; 13 | import io.swagger.annotations.ApiOperation; 14 | import org.springframework.beans.factory.annotation.Autowired; 15 | import org.springframework.web.bind.annotation.PathVariable; 16 | import org.springframework.web.bind.annotation.PutMapping; 17 | import org.springframework.web.bind.annotation.RequestMapping; 18 | import org.springframework.web.bind.annotation.RestController; 19 | 20 | import java.util.ArrayList; 21 | import java.util.Arrays; 22 | import java.util.List; 23 | 24 | 25 | @RestController 26 | @RequestMapping("/person") 27 | public class PersonController { 28 | 29 | private static Integer count=2; 30 | @Autowired 31 | private PersonService personService; 32 | @Autowired 33 | private TeamService teamService; 34 | 35 | @RequestMapping("/insert") 36 | public PageResult insertPerson(Person person){ 37 | 38 | person.setPersonId(count); 39 | count++; 40 | if(personService.insert(person)){ 41 | return new PageResult("添加成功",200); 42 | } 43 | return new PageResult("添加失败",400); 44 | } 45 | 46 | @RequestMapping("/update") 47 | public PageResult updatePerson(Person person){ 48 | 49 | if(personService.updateById(person)){ 50 | return new PageResult("修改成功",200); 51 | } 52 | return new PageResult("修改失败",400); 53 | } 54 | 55 | @RequestMapping("/delete/{personId}") 56 | public PageResult deltePerson(@PathVariable("personId") Integer personId){ 57 | 58 | if(personService.deleteById(personId)){ 59 | return new PageResult("删除成功",200); 60 | } 61 | return new PageResult("删除失败",400); 62 | } 63 | 64 | @RequestMapping("/query") 65 | public PageResult list(Integer page, Integer limit, String searchKey, String searchValue) { 66 | if (page == null) { 67 | page = 0; 68 | } 69 | if (limit == null) { 70 | limit = 10; 71 | } 72 | Page userPage = new Page<>(page, limit); 73 | EntityWrapper wrapper = new EntityWrapper<>(); 74 | if (searchKey != null && !searchKey.trim().isEmpty() && searchValue != null && !searchValue.trim().isEmpty()) { 75 | if(searchKey.equals("person_name")||searchKey.equals("phone")){ 76 | wrapper.like(searchKey,searchValue); 77 | }else { 78 | wrapper.eq(searchKey, searchValue); 79 | } 80 | } 81 | wrapper.orderBy("create_time", true); 82 | personService.selectPage(userPage, wrapper); 83 | List count=personService.selectList(wrapper); 84 | List userList = userPage.getRecords(); 85 | return new PageResult<>(userList, count.size()); 86 | } 87 | 88 | 89 | @PutMapping("/statu") 90 | public JsonResult updatestatu(Integer personId, Integer statu) { 91 | if (statu == null || (statu != 0 && statu != 1)) { 92 | return JsonResult.error("statu值需要在[0,1]中"); 93 | } 94 | Person person=new Person(); 95 | person.setStatu(statu); 96 | person.setPersonId(personId); 97 | if (personService.updateById(person)) { 98 | return JsonResult.ok(); 99 | } 100 | return JsonResult.error(); 101 | } 102 | 103 | /** 104 | * 查询指定id的游客 105 | * @param personIds 106 | * @return 107 | */ 108 | @RequestMapping("queryByPersonIds") 109 | public PageResult queryByPersonIds(Integer page, Integer limit,String personIds){ 110 | if (page == null) { 111 | page = 0; 112 | } 113 | if (limit == null) { 114 | limit = 10; 115 | } 116 | Page personPage = new Page<>(page, limit); 117 | EntityWrapper wrapper = new EntityWrapper<>(); 118 | wrapper.orderBy("create_time", true); 119 | List personIdsInt=new ArrayList<>(); 120 | List personIdsString= Arrays.asList(personIds.split(",")); 121 | for(String personId:personIdsString){ 122 | personIdsInt.add(Integer.valueOf(personId)); 123 | } 124 | wrapper.in("person_id",personIdsInt); 125 | personService.selectPage(personPage, wrapper); 126 | List count=personService.selectList(wrapper); 127 | List userList = personPage.getRecords(); 128 | return new PageResult<>(userList, count.size()); 129 | } 130 | 131 | /** 132 | * 查询所有状态为0 的游客 133 | * @return 134 | */ 135 | @RequestMapping("/queryAllStatu") 136 | public PageResult queryAll(){ 137 | EntityWrapper entityWrapper=new EntityWrapper(); 138 | entityWrapper.eq("statu",0); 139 | List personList =personService.selectList(entityWrapper); 140 | return new PageResult<>(200,"查询游客成功",personList.size(),personList); 141 | } 142 | 143 | @RequestMapping("queryNotRepact") 144 | public PageResult queryNotRepact(){ 145 | EntityWrapper entityWrapper=new EntityWrapper(); 146 | entityWrapper.eq("statu",0); 147 | //查询所有状态正常的旅游 148 | List personList =personService.selectList(entityWrapper); 149 | //查询所有状态正常的团队 150 | List teamList=teamService.selectList(entityWrapper); 151 | List teamPersonIds=new ArrayList<>();//团队里的所有游客ids 152 | for (Team team:teamList){ 153 | teamPersonIds.add(team.getPersonIds()); 154 | } 155 | List teamPersonIdsInt=new ArrayList<>(); 156 | for(String personId:teamPersonIds){ 157 | for(String personid:personId.split(",")){ 158 | teamPersonIdsInt.add(Integer.valueOf(personid)); 159 | } 160 | } 161 | List finalPersonList=new ArrayList<>(); 162 | finalPersonList.addAll(personList); 163 | for(Person person:personList){ 164 | 165 | if(teamPersonIdsInt.contains(person.getPersonId())){ 166 | finalPersonList.remove(person); 167 | } 168 | } 169 | return new PageResult<>(200,"查询成功",finalPersonList.size(),finalPersonList); 170 | } 171 | 172 | } 173 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/controller/RoleController.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.controller; 2 | 3 | 4 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 5 | import com.dh.tourism.commom.JsonResult; 6 | import com.dh.tourism.commom.PageResult; 7 | import com.dh.tourism.model.Role; 8 | import com.dh.tourism.service.RoleService; 9 | import io.swagger.annotations.Api; 10 | import io.swagger.annotations.ApiImplicitParam; 11 | import io.swagger.annotations.ApiImplicitParams; 12 | import io.swagger.annotations.ApiOperation; 13 | import org.springframework.beans.factory.annotation.Autowired; 14 | import org.springframework.web.bind.annotation.*; 15 | 16 | import java.util.Iterator; 17 | import java.util.List; 18 | 19 | @Api(value = "角色相关的接口", tags = "role") 20 | @RestController 21 | @RequestMapping("/role") 22 | public class RoleController { 23 | @Autowired 24 | private RoleService roleService; 25 | 26 | @ApiOperation(value = "查询所有角色") 27 | @ApiImplicitParams({ 28 | @ApiImplicitParam(name = "keyword", value = "搜索关键字", required = false, dataType = "String", paramType = "query"), 29 | @ApiImplicitParam(name = "access_token", value = "令牌", required = true, dataType = "String", paramType = "query") 30 | }) 31 | @GetMapping() 32 | public PageResult list(String keyword) { 33 | List list = roleService.selectList(new EntityWrapper().orderBy("create_time", true)); 34 | // 筛选结果 35 | if (keyword != null && !keyword.trim().isEmpty()) { 36 | keyword = keyword.trim(); 37 | Iterator iterator = list.iterator(); 38 | while (iterator.hasNext()) { 39 | Role next = iterator.next(); 40 | boolean b = next.getRoleName().contains(keyword) || next.getComments().contains(keyword); 41 | if (!b) { 42 | iterator.remove(); 43 | } 44 | } 45 | } 46 | return new PageResult<>(list); 47 | } 48 | 49 | @ApiOperation(value = "添加角色") 50 | @ApiImplicitParams({ 51 | @ApiImplicitParam(name = "role", value = "角色信息", required = true, dataType = "Role", paramType = "form"), 52 | @ApiImplicitParam(name = "access_token", value = "令牌", required = true, dataType = "String", paramType = "form") 53 | }) 54 | @PostMapping() 55 | public JsonResult add(Role role) { 56 | if (roleService.insert(role)) { 57 | return JsonResult.ok("添加成功"); 58 | } 59 | return JsonResult.error("添加失败"); 60 | } 61 | 62 | @ApiOperation(value = "修改角色") 63 | @ApiImplicitParams({ 64 | @ApiImplicitParam(name = "role", value = "角色信息", required = true, dataType = "Role", paramType = "form"), 65 | @ApiImplicitParam(name = "access_token", value = "令牌", required = true, dataType = "String", paramType = "form") 66 | }) 67 | @PutMapping() 68 | public JsonResult update(Role role) { 69 | if (roleService.updateById(role)) { 70 | return JsonResult.ok("修改成功!"); 71 | } 72 | return JsonResult.error("修改失败!"); 73 | } 74 | 75 | @ApiOperation(value = "删除角色") 76 | @ApiImplicitParams({ 77 | @ApiImplicitParam(name = "roleId", value = "角色id", required = true, dataType = "String", paramType = "path"), 78 | @ApiImplicitParam(name = "access_token", value = "令牌", required = true, dataType = "String", paramType = "query") 79 | }) 80 | @DeleteMapping("/{id}") 81 | public JsonResult delete(@PathVariable("id") String roleId) { 82 | if (roleService.deleteById(roleId)) { 83 | return JsonResult.ok("删除成功"); 84 | } 85 | return JsonResult.error("删除失败"); 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/controller/ScenicController.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.controller; 2 | 3 | 4 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 5 | import com.dh.tourism.commom.JsonResult; 6 | import com.dh.tourism.commom.PageResult; 7 | import com.dh.tourism.model.Scenic; 8 | 9 | import com.dh.tourism.service.ScenicService; 10 | import org.springframework.beans.factory.annotation.Autowired; 11 | import org.springframework.web.bind.annotation.PathVariable; 12 | import org.springframework.web.bind.annotation.PutMapping; 13 | import org.springframework.web.bind.annotation.RequestMapping; 14 | import org.springframework.web.bind.annotation.RestController; 15 | import java.util.List; 16 | 17 | /** 18 | * @author duhan 19 | * @title: ScenicController 20 | * @projectName tourism 21 | * @description: TODO 22 | * @date 2019/4/1515:22 23 | */ 24 | @RestController 25 | @RequestMapping("/scenic") 26 | public class ScenicController { 27 | @Autowired 28 | private ScenicService scenicService; 29 | 30 | private static Integer count=8; 31 | @RequestMapping("/query") 32 | public PageResult list(Integer page, Integer limit, String searchKey, String searchValue) { 33 | if (page == null) { 34 | page = 0; 35 | } 36 | if (limit == null) { 37 | limit = 10; 38 | } 39 | com.baomidou.mybatisplus.plugins.Page scenicPage = new com.baomidou.mybatisplus.plugins.Page<>(page, limit); 40 | EntityWrapper wrapper = new EntityWrapper<>(); 41 | if (searchKey != null && !searchKey.trim().isEmpty() && searchValue != null && !searchValue.trim().isEmpty()) { 42 | if(searchKey.equals("name")){ 43 | wrapper.like(searchKey,searchValue); 44 | }else { 45 | wrapper.eq(searchKey, searchValue); 46 | } 47 | } 48 | wrapper.orderBy("create_time", true); 49 | scenicService.selectPage(scenicPage, wrapper); 50 | List count=scenicService.selectList(wrapper); 51 | List scenicList = scenicPage.getRecords(); 52 | return new PageResult<>(scenicList, count.size()); 53 | } 54 | 55 | /** 56 | * 查询推荐旅游景点 57 | * @return 58 | */ 59 | @RequestMapping("queryRecommend") 60 | public PageResult queryRecommend(){ 61 | EntityWrapper entityWrapper=new EntityWrapper(); 62 | entityWrapper.eq("type","recommend"); 63 | List recommendScenicList=scenicService.selectList(entityWrapper); 64 | return new PageResult<>(200,"查询成功",recommendScenicList.size(),recommendScenicList); 65 | } 66 | 67 | /** 68 | * 查询国内旅游景点 69 | * @return 70 | */ 71 | @RequestMapping("queryDomestic") 72 | public PageResult queryDomestic(){ 73 | EntityWrapper entityWrapper=new EntityWrapper(); 74 | entityWrapper.eq("type","domestic"); 75 | List recommendScenicList=scenicService.selectList(entityWrapper); 76 | return new PageResult<>(200,"查询成功",recommendScenicList.size(),recommendScenicList); 77 | } 78 | 79 | /** 80 | * 查询境外旅游 景点 81 | * @return 82 | */ 83 | @RequestMapping("queryAbroad") 84 | public PageResult queryAbroad(){ 85 | EntityWrapper entityWrapper=new EntityWrapper(); 86 | entityWrapper.eq("type","abroad"); 87 | List recommendScenicList=scenicService.selectList(entityWrapper); 88 | return new PageResult<>(200,"查询成功",recommendScenicList.size(),recommendScenicList); 89 | } 90 | 91 | /** 92 | * 通过id查询景点详细信息 93 | * @param id 94 | * @return 95 | */ 96 | @RequestMapping("queryById") 97 | public PageResult queryById(Integer id){ 98 | EntityWrapper entityWrapper=new EntityWrapper<>(); 99 | entityWrapper.eq("id",id); 100 | List scenics=scenicService.selectList(entityWrapper); 101 | 102 | return new PageResult<>(200,"查询成功",scenics.size(),scenics); 103 | } 104 | @RequestMapping("insert") 105 | public PageResult insert(Scenic scenic){ 106 | scenic.setId(count); 107 | count++; 108 | scenicService.insert(scenic); 109 | return new PageResult("新增成功",200); 110 | } 111 | 112 | 113 | @RequestMapping("/update") 114 | public PageResult updateScenic(Scenic scenic){ 115 | 116 | if(scenicService.updateById(scenic)){ 117 | return new PageResult("修改成功",200); 118 | } 119 | return new PageResult("修改失败",400); 120 | } 121 | 122 | @RequestMapping("/delete/{scenicId}") 123 | public PageResult delteScenic(@PathVariable("scenicId") Integer scenicId){ 124 | 125 | if(scenicService.deleteById(scenicId)){ 126 | return new PageResult("删除成功",200); 127 | } 128 | return new PageResult("删除失败",400); 129 | } 130 | 131 | @PutMapping("/statu") 132 | public JsonResult updatestatu(Integer id, Integer statu) { 133 | if (statu == null || (statu != 0 && statu != 1)) { 134 | return JsonResult.error("statu值需要在[0,1]中"); 135 | } 136 | Scenic scenic=new Scenic(); 137 | scenic.setStatu(statu); 138 | scenic.setId(id); 139 | if (scenicService.updateById(scenic)) { 140 | return JsonResult.ok(); 141 | } 142 | return JsonResult.error(); 143 | } 144 | } 145 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/controller/ScenicOrderController.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.controller; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.plugins.Page; 5 | import com.dh.tourism.commom.JsonResult; 6 | import com.dh.tourism.commom.PageResult; 7 | import com.dh.tourism.model.Guide; 8 | import com.dh.tourism.model.Scenic; 9 | import com.dh.tourism.model.ScenicOrder; 10 | import com.dh.tourism.model.Team; 11 | import com.dh.tourism.service.GuideService; 12 | import com.dh.tourism.service.ScenicOrderService; 13 | import com.dh.tourism.service.ScenicService; 14 | import com.dh.tourism.service.TeamService; 15 | import org.springframework.beans.factory.annotation.Autowired; 16 | import org.springframework.web.bind.annotation.PathVariable; 17 | import org.springframework.web.bind.annotation.PutMapping; 18 | import org.springframework.web.bind.annotation.RequestMapping; 19 | import org.springframework.web.bind.annotation.RestController; 20 | 21 | import java.util.List; 22 | 23 | /** 24 | * @author duhan 25 | * @title: ScenicOrderController 26 | * @projectName tourism 27 | * @description: TODO 28 | * @date 2019/4/1923:24 29 | */ 30 | @RestController 31 | @RequestMapping("/scenicOrder") 32 | public class ScenicOrderController { 33 | 34 | private static Integer count=1; 35 | @Autowired 36 | private ScenicOrderService scenicOrderService; 37 | @Autowired 38 | private GuideService guideService; 39 | @Autowired 40 | private TeamService teamService; 41 | 42 | @Autowired 43 | private ScenicService scenicService; 44 | 45 | @RequestMapping("insert") 46 | public PageResult insert(ScenicOrder scenicOrder){ 47 | scenicOrder.setId(count); 48 | count++; 49 | if(scenicOrder.getTeamId()==null){ 50 | return new PageResult("请选择团队",400); 51 | } 52 | 53 | Integer guideId=scenicOrder.getGuideId(); 54 | Guide guide=guideService.getGuideById(guideId); 55 | scenicOrder.setGuideName(guide.getGuideName()); 56 | //计算订单总价 57 | Integer teamId=scenicOrder.getTeamId(); 58 | //设置团队名 59 | Team team=teamService.queryById(teamId); 60 | scenicOrder.setTeamName(team.getTeamName()); 61 | Integer personNum=teamService.queryPersonNumById(teamId); 62 | //查询景点的单价 63 | Scenic scenic=scenicService.queryById(scenicOrder.getScenicId()); 64 | Double price=(Double.valueOf(scenic.getPrice())*personNum); 65 | scenicOrder.setPrice(String.valueOf(price)); 66 | scenicOrder.setScenicName(scenic.getName()); 67 | if(!scenicOrderService.insert(scenicOrder)){ 68 | return new PageResult("预订失败",400); 69 | } 70 | return new PageResult("预订成功",200); 71 | } 72 | 73 | @RequestMapping("/update") 74 | public PageResult updatePerson(ScenicOrder scenicOrder){ 75 | 76 | if(scenicOrderService.updateById(scenicOrder)){ 77 | return new PageResult("修改成功",200); 78 | } 79 | return new PageResult("修改失败",400); 80 | } 81 | 82 | @RequestMapping("/delete/{scenicOrderId}") 83 | public PageResult deltePerson(@PathVariable("scenicOrderId") Integer scenicOrderId){ 84 | 85 | if(scenicOrderService.deleteById(scenicOrderId)){ 86 | return new PageResult("删除成功",200); 87 | } 88 | return new PageResult("删除失败",400); 89 | } 90 | 91 | @PutMapping("/statu") 92 | public JsonResult updatestatu(Integer scenicOrderId, Integer statu) { 93 | if (statu == null || (statu != 0 && statu != 1)) { 94 | return JsonResult.error("statu值需要在[0,1]中"); 95 | } 96 | ScenicOrder scenicOrder=new ScenicOrder(); 97 | scenicOrder.setStatu(statu); 98 | scenicOrder.setId(scenicOrderId); 99 | if (scenicOrderService.updateById(scenicOrder)) { 100 | return JsonResult.ok(); 101 | } 102 | return JsonResult.error(); 103 | } 104 | 105 | @RequestMapping("/query") 106 | public PageResult list(Integer page, Integer limit, String searchKey, String searchValue,Integer guideId) { 107 | if (page == null) { 108 | page = 0; 109 | } 110 | if (limit == null) { 111 | limit = 10; 112 | } 113 | Page scenicOrderPage = new Page<>(page, limit); 114 | EntityWrapper wrapper = new EntityWrapper<>(); 115 | if (searchKey != null && !searchKey.trim().isEmpty() && searchValue != null && !searchValue.trim().isEmpty()) { 116 | wrapper.eq(searchKey, searchValue); 117 | } 118 | wrapper.orderBy("create_time", true); 119 | if(guideId!=null){ 120 | wrapper.eq("guide_id",guideId); 121 | } 122 | scenicOrderService.selectPage(scenicOrderPage, wrapper); 123 | List count=scenicOrderService.selectList(wrapper); 124 | List scenicOrderList = scenicOrderPage.getRecords(); 125 | return new PageResult<>(scenicOrderList, count.size()); 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/dao/CarMapper.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.dao; 2 | 3 | 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | import com.dh.tourism.model.Car; 6 | import com.dh.tourism.model.User; 7 | import org.apache.ibatis.annotations.Mapper; 8 | 9 | @Mapper 10 | public interface CarMapper extends BaseMapper { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/dao/CarOrderMapper.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.dao; 2 | 3 | 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | import com.dh.tourism.model.Car; 6 | import com.dh.tourism.model.CarOrder; 7 | import org.apache.ibatis.annotations.Mapper; 8 | 9 | @Mapper 10 | public interface CarOrderMapper extends BaseMapper { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/dao/GuideMapper.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.dao; 2 | 3 | 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | import com.dh.tourism.model.Car; 6 | import com.dh.tourism.model.Guide; 7 | import org.apache.ibatis.annotations.Mapper; 8 | 9 | @Mapper 10 | public interface GuideMapper extends BaseMapper { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/dao/HotalMapper.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.dao; 2 | 3 | 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | import com.dh.tourism.model.Car; 6 | import com.dh.tourism.model.Hotal; 7 | import org.apache.ibatis.annotations.Mapper; 8 | 9 | @Mapper 10 | public interface HotalMapper extends BaseMapper { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/dao/HotalOrderMapper.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.dao; 2 | 3 | 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | import com.dh.tourism.model.CarOrder; 6 | import com.dh.tourism.model.HotalOrder; 7 | import org.apache.ibatis.annotations.Mapper; 8 | 9 | @Mapper 10 | public interface HotalOrderMapper extends BaseMapper { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/dao/PersonMapper.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.dao; 2 | 3 | 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | import com.dh.tourism.model.Person; 6 | import com.dh.tourism.model.Role; 7 | import org.apache.ibatis.annotations.Mapper; 8 | 9 | @Mapper 10 | public interface PersonMapper extends BaseMapper { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/dao/RoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.dao; 2 | 3 | 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | 6 | import com.dh.tourism.model.Role; 7 | import org.apache.ibatis.annotations.Mapper; 8 | 9 | @Mapper 10 | public interface RoleMapper extends BaseMapper { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/dao/ScenicMapper.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.dao; 2 | 3 | 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | import com.dh.tourism.model.Scenic; 6 | import com.dh.tourism.model.User; 7 | import org.apache.ibatis.annotations.Mapper; 8 | 9 | @Mapper 10 | public interface ScenicMapper extends BaseMapper { 11 | 12 | void insertOne(Scenic scenic); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/dao/ScenicOrderMapper.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.dao; 2 | 3 | 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | import com.dh.tourism.model.Car; 6 | import com.dh.tourism.model.ScenicOrder; 7 | import org.apache.ibatis.annotations.Mapper; 8 | 9 | @Mapper 10 | public interface ScenicOrderMapper extends BaseMapper { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/dao/TeamMapper.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.dao; 2 | 3 | 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | import com.dh.tourism.model.Team; 6 | import org.apache.ibatis.annotations.Mapper; 7 | 8 | @Mapper 9 | public interface TeamMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/dao/UserMapper.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.dao; 2 | 3 | 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | import com.dh.tourism.model.User; 6 | import org.apache.ibatis.annotations.Mapper; 7 | 8 | @Mapper 9 | public interface UserMapper extends BaseMapper { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/dao/UserRoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.dao; 2 | 3 | 4 | import com.baomidou.mybatisplus.mapper.BaseMapper; 5 | 6 | import com.dh.tourism.model.UserRole; 7 | import org.apache.ibatis.annotations.Mapper; 8 | 9 | @Mapper 10 | public interface UserRoleMapper extends BaseMapper { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/exception/BusinessException.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.exception; 2 | 3 | /** 4 | * 业务异常 5 | * Created by wangfan on 2018-02-22 上午 11:29. 6 | */ 7 | public class BusinessException extends IException { 8 | private static final long serialVersionUID = 5450935008012318697L; 9 | 10 | public BusinessException() { 11 | super(); 12 | } 13 | 14 | public BusinessException(String message) { 15 | super(message); 16 | } 17 | 18 | public BusinessException(Integer code, String message) { 19 | super(code, message); 20 | } 21 | 22 | @Override 23 | public Integer getCode() { 24 | Integer code = super.getCode(); 25 | if (code == null) { 26 | code = 500; 27 | } 28 | return code; 29 | } 30 | 31 | @Override 32 | public String getMessage() { 33 | String message = super.getMessage(); 34 | if (message == null) { 35 | message = "服务器错误"; 36 | } 37 | return message; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/exception/IException.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.exception; 2 | 3 | /** 4 | * 自定义异常基类 5 | * Created by wangfan on 2018-02-22 上午 11:29. 6 | */ 7 | public abstract class IException extends RuntimeException { 8 | private static final long serialVersionUID = -1582874427218948396L; 9 | private Integer code; 10 | 11 | public IException() { 12 | } 13 | 14 | public IException(String message) { 15 | super(message); 16 | } 17 | 18 | public IException(Integer code, String message) { 19 | super(message); 20 | this.code = code; 21 | } 22 | 23 | public Integer getCode() { 24 | return code; 25 | } 26 | 27 | public void setCode(Integer code) { 28 | this.code = code; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/exception/MyExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.exception; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.web.bind.annotation.ControllerAdvice; 6 | import org.springframework.web.bind.annotation.ExceptionHandler; 7 | import org.springframework.web.bind.annotation.ResponseBody; 8 | import org.wf.jwtp.exception.TokenException; 9 | 10 | import java.util.HashMap; 11 | import java.util.Map; 12 | 13 | /** 14 | * 全局异常处理器 15 | * Created by wangfan on 2018-02-22 上午 11:29. 16 | */ 17 | @ControllerAdvice 18 | public class MyExceptionHandler { 19 | private Logger logger = LoggerFactory.getLogger("MyExceptionHandler"); 20 | 21 | @ResponseBody 22 | @ExceptionHandler(Exception.class) 23 | public Map errorHandler(Exception ex) { 24 | Map map = new HashMap<>(); 25 | // 根据不同错误获取错误信息 26 | if (ex instanceof IException) { 27 | map.put("code", ((IException) ex).getCode()); 28 | map.put("msg", ex.getMessage()); 29 | } else if (ex instanceof TokenException) { 30 | map.put("code", ((TokenException) ex).getCode()); 31 | map.put("msg", ex.getMessage()); 32 | } else { 33 | String message = ex.getMessage(); 34 | map.put("code", 500); 35 | map.put("msg", message == null || message.trim().isEmpty() ? "未知错误" : message); 36 | // map.put("details", message); 37 | logger.error(message, ex); 38 | ex.printStackTrace(); 39 | } 40 | return map; 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/exception/ParameterException.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.exception; 2 | 3 | /** 4 | * 参数异常 5 | * Created by wangfan on 2018-02-22 上午 11:29. 6 | */ 7 | public class ParameterException extends IException { 8 | private static final long serialVersionUID = 7993671808524980055L; 9 | 10 | public ParameterException() { 11 | super(); 12 | } 13 | 14 | public ParameterException(String message) { 15 | super(message); 16 | } 17 | 18 | public ParameterException(Integer code, String message) { 19 | super(code, message); 20 | } 21 | 22 | @Override 23 | public Integer getCode() { 24 | Integer code = super.getCode(); 25 | if (code == null) { 26 | code = 400; 27 | } 28 | return code; 29 | } 30 | 31 | @Override 32 | public String getMessage() { 33 | String message = super.getMessage(); 34 | if (message == null) { 35 | message = "参数错误"; 36 | } 37 | return message; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/model/Car.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.model; 2 | 3 | import com.baomidou.mybatisplus.annotations.TableId; 4 | import com.baomidou.mybatisplus.annotations.TableName; 5 | import lombok.Data; 6 | 7 | import java.util.Date; 8 | 9 | /** 10 | * @author duhan 11 | * @title: Car 12 | * @projectName tourism 13 | * @description: TODO 14 | * @date 2019/4/1622:09 15 | */ 16 | @Data 17 | @TableName("tr_car") 18 | public class Car { 19 | @TableId 20 | private Integer id; 21 | 22 | private String carPicture;//车辆图片 23 | 24 | private String carName; 25 | 26 | private String carType; 27 | 28 | private String price; 29 | 30 | private Integer peopleNum;//限载人数 31 | 32 | private Integer carSum; 33 | 34 | private Integer carNum; 35 | 36 | private Integer carOut; 37 | 38 | private Integer statu; 39 | 40 | private Date createTime; // 注册时间 41 | 42 | private Date updateTime; // 修改时间 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/model/CarOrder.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.model; 2 | 3 | import com.baomidou.mybatisplus.annotations.TableId; 4 | import com.baomidou.mybatisplus.annotations.TableName; 5 | import lombok.Data; 6 | 7 | import java.util.Date; 8 | 9 | /** 10 | * @author duhan 11 | * @title: CarOrder 12 | * @projectName tourism 13 | * @description: TODO 14 | * @date 2019/4/2215:04 15 | */ 16 | @Data 17 | @TableName("tr_car_order") 18 | public class CarOrder { 19 | @TableId 20 | private Integer id; 21 | 22 | private Integer teamId; 23 | 24 | private String teamName; 25 | 26 | private Integer guideId; 27 | 28 | private String guideName; 29 | 30 | private Integer carId; 31 | 32 | private String carName; 33 | 34 | private String carType; 35 | 36 | private Integer carNum; 37 | 38 | private String startTime; 39 | 40 | private String endTime; 41 | 42 | private String price; 43 | 44 | private Integer statu; 45 | 46 | private Date createTime; // 注册时间 47 | 48 | private Date updateTime; // 修改时间 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/model/Guide.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.model; 2 | 3 | import com.baomidou.mybatisplus.annotations.TableId; 4 | import com.baomidou.mybatisplus.annotations.TableName; 5 | import lombok.Data; 6 | 7 | import java.util.Date; 8 | 9 | /** 10 | * @author duhan 11 | * @title: Guide 12 | * @projectName tourism 13 | * @description: TODO 14 | * @date 2019/4/1623:36 15 | */ 16 | @Data 17 | @TableName("tr_guide") 18 | public class Guide { 19 | @TableId 20 | private Integer id; 21 | 22 | private String acount;//账号 23 | 24 | private String guideName; 25 | 26 | private String password; 27 | 28 | private Integer age; 29 | 30 | private String sex; 31 | 32 | private String phone; 33 | 34 | private String salary; 35 | 36 | private String address; 37 | 38 | private Integer statu; 39 | 40 | private Date createTime; // 注册时间 41 | 42 | private Date updateTime; // 修改时间 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/model/Hotal.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.model; 2 | 3 | import com.baomidou.mybatisplus.annotations.TableId; 4 | import com.baomidou.mybatisplus.annotations.TableName; 5 | import lombok.Data; 6 | 7 | import java.util.Date; 8 | 9 | /** 10 | * @author duhan 11 | * @title: Hotal 12 | * @projectName tourism 13 | * @description: TODO 14 | * @date 2019/4/1823:28 15 | */ 16 | @Data 17 | @TableName("tr_hotal") 18 | public class Hotal { 19 | @TableId 20 | private Integer id; 21 | 22 | private String hotalPicture; 23 | 24 | private String hotalName; 25 | 26 | private String grade;//酒店等级 27 | 28 | private String address; 29 | 30 | private String phone; 31 | 32 | private String introduce; 33 | 34 | private String room1; 35 | 36 | private Integer room1Num; 37 | 38 | private String room1Price; 39 | 40 | private String room2; 41 | 42 | private Integer room2Num; 43 | 44 | private String room2Price; 45 | 46 | private String room3; 47 | 48 | private Integer room3Num; 49 | 50 | private String room3Price; 51 | 52 | private String room4; 53 | 54 | private Integer room4Num; 55 | 56 | private String room4Price; 57 | 58 | private String minPrice; 59 | 60 | private Integer statu;//状态 61 | 62 | private Date createTime; // 注册时间 63 | 64 | private Date updateTime; // 修改时间 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/model/HotalOrder.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.model; 2 | 3 | import com.baomidou.mybatisplus.annotations.TableId; 4 | import com.baomidou.mybatisplus.annotations.TableName; 5 | import lombok.Data; 6 | 7 | import java.util.Date; 8 | 9 | /** 10 | * @author duhan 11 | * @title: HotalOrder 12 | * @projectName tourism 13 | * @description: TODO 14 | * @date 2019/4/2218:23 15 | */ 16 | @Data 17 | @TableName("tr_hotal_order") 18 | public class HotalOrder { 19 | @TableId 20 | private Integer id; 21 | 22 | private Integer teamId; 23 | 24 | private String teamName; 25 | 26 | private Integer guideId; 27 | 28 | private String guideName; 29 | 30 | private Integer hotalId; 31 | 32 | private String hotalName; 33 | 34 | private String roomName; 35 | 36 | private Integer roomNum; 37 | 38 | private String startTime; 39 | 40 | private String endTime; 41 | 42 | private String price; 43 | 44 | private Integer statu; 45 | 46 | private Date createTime; // 注册时间 47 | 48 | private Date updateTime; // 修改时间 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/model/Person.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.model; 2 | 3 | import com.baomidou.mybatisplus.annotations.TableId; 4 | import com.baomidou.mybatisplus.annotations.TableName; 5 | import lombok.Data; 6 | 7 | import java.util.Date; 8 | 9 | /** 10 | * @author duhan 11 | * @title: People 12 | * @projectName tourism 13 | * @description: TODO 14 | * @date 2019/4/1523:13 15 | */ 16 | @Data 17 | @TableName("tr_person") 18 | public class Person { 19 | @TableId 20 | private Integer personId;//员工id 21 | 22 | private String personName;//员工姓名 23 | 24 | private String sex;//性别 25 | 26 | private String phone;//手机号 27 | 28 | private String email;//邮箱 29 | 30 | private String birthday;//生日 31 | 32 | private Integer statu; //状态 33 | 34 | private String address;//住址 35 | 36 | private Date createTime; // 注册时间 37 | 38 | private Date updateTime; // 修改时间 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/model/Role.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.model; 2 | 3 | import com.baomidou.mybatisplus.annotations.TableId; 4 | import com.baomidou.mybatisplus.annotations.TableName; 5 | 6 | import java.util.Date; 7 | 8 | @TableName("sys_role") 9 | public class Role { 10 | @TableId 11 | private Integer roleId; 12 | 13 | private String roleName; 14 | 15 | private String comments; 16 | 17 | private Date createTime; 18 | 19 | private Date updateTime; 20 | 21 | public Integer getRoleId() { 22 | return roleId; 23 | } 24 | 25 | public void setRoleId(Integer roleId) { 26 | this.roleId = roleId; 27 | } 28 | 29 | public String getRoleName() { 30 | return roleName; 31 | } 32 | 33 | public void setRoleName(String roleName) { 34 | this.roleName = roleName == null ? null : roleName.trim(); 35 | } 36 | 37 | public String getComments() { 38 | return comments; 39 | } 40 | 41 | public void setComments(String comments) { 42 | this.comments = comments == null ? null : comments.trim(); 43 | } 44 | 45 | public Date getCreateTime() { 46 | return createTime; 47 | } 48 | 49 | public void setCreateTime(Date createTime) { 50 | this.createTime = createTime; 51 | } 52 | 53 | public Date getUpdateTime() { 54 | return updateTime; 55 | } 56 | 57 | public void setUpdateTime(Date updateTime) { 58 | this.updateTime = updateTime; 59 | } 60 | } -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/model/Scenic.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.model; 2 | 3 | import com.baomidou.mybatisplus.annotations.TableId; 4 | import com.baomidou.mybatisplus.annotations.TableName; 5 | import lombok.Data; 6 | 7 | import java.util.Date; 8 | 9 | /** 10 | * @author duhan 11 | * @title: Scenic 12 | * @projectName tourism 13 | * @description: TODO 14 | * @date 2019/4/1515:10 15 | */ 16 | @Data 17 | @TableName("tr_scenic") 18 | public class Scenic { 19 | @TableId 20 | private Integer id; 21 | 22 | private String name; 23 | 24 | private String picture;//图片路径 25 | 26 | private String price; 27 | 28 | private String type; 29 | 30 | private String route;//旅游路线 31 | 32 | private String introduce;//景点介绍 33 | 34 | private String place; 35 | 36 | private Integer statu;//状态 37 | 38 | private Date createTime; // 注册时间 39 | 40 | private Date updateTime; // 修改时间 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/model/ScenicOrder.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.model; 2 | 3 | import com.baomidou.mybatisplus.annotations.TableId; 4 | import com.baomidou.mybatisplus.annotations.TableName; 5 | import lombok.Data; 6 | 7 | import java.util.Date; 8 | 9 | /** 10 | * @author duhan 11 | * @title: ScenicOrder 12 | * @projectName tourism 13 | * @description: TODO 14 | * @date 2019/4/1914:00 15 | */ 16 | @Data 17 | @TableName("tr_scenic_order") 18 | public class ScenicOrder { 19 | @TableId 20 | private Integer id; 21 | 22 | private Integer scenicId; 23 | 24 | private String scenicName; 25 | 26 | private Integer teamId; 27 | 28 | private String teamName; 29 | 30 | private Integer guideId; 31 | 32 | private String guideName; 33 | 34 | private String startTime;//出发时间 35 | 36 | private String endTime; //归回日期 37 | 38 | private String price;//订单总价 39 | 40 | private Integer statu;//状态 41 | 42 | private Date createTime; // 注册时间 43 | 44 | private Date updateTime; // 修改时间 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/model/Team.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.model; 2 | 3 | import com.baomidou.mybatisplus.annotations.TableId; 4 | import com.baomidou.mybatisplus.annotations.TableName; 5 | import lombok.Data; 6 | 7 | import java.util.Date; 8 | 9 | /** 10 | * @author duhan 11 | * @title: Team 12 | * @projectName tourism 13 | * @description: TODO 14 | * @date 2019/4/1816:11 15 | */ 16 | @Data 17 | @TableName("tr_team") 18 | public class Team { 19 | @TableId 20 | private Integer id; 21 | 22 | private String teamName;//团队名称 23 | 24 | private Integer guideId; 25 | 26 | private String guideName; 27 | 28 | private String personIds; 29 | 30 | private String personNames; 31 | 32 | private Integer statu; 33 | 34 | private Date createTime; // 注册时间 35 | 36 | private Date updateTime; // 修改时间 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/model/User.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.model; 2 | 3 | import com.baomidou.mybatisplus.annotations.TableField; 4 | import com.baomidou.mybatisplus.annotations.TableId; 5 | import com.baomidou.mybatisplus.annotations.TableName; 6 | 7 | import java.util.Date; 8 | import java.util.List; 9 | 10 | @TableName("sys_user") 11 | public class User { 12 | private static final long serialVersionUID = 242146703513492331L; 13 | 14 | @TableId 15 | private Integer userId; // 用户id 16 | 17 | private String username; // 账号 18 | 19 | private String password; // 密码 20 | 21 | private String nickName; // 昵称 22 | 23 | private String avatar; // 头像 24 | 25 | private String sex; // 性别 26 | 27 | private String phone; // 手机号 28 | 29 | private String email; // 邮箱 30 | 31 | private Integer emailVerified; // 邮箱是否验证,0未验证,1已验证 32 | 33 | private String trueName; // 真实姓名 34 | 35 | private String idCard; // 身份证号 36 | 37 | private Date birthday; // 出生日期 38 | 39 | private Integer departmentId; // 部门id 40 | 41 | private Integer state; // 状态,0正常,1冻结 42 | 43 | private Date createTime; // 注册时间 44 | 45 | private Date updateTime; // 修改时间 46 | 47 | 48 | @TableField(exist = false) 49 | private List roles; // 角色 50 | 51 | public Integer getUserId() { 52 | return userId; 53 | } 54 | 55 | public void setUserId(Integer userId) { 56 | this.userId = userId; 57 | } 58 | 59 | public void setUsername(String username) { 60 | this.username = username; 61 | } 62 | 63 | public void setPassword(String password) { 64 | this.password = password; 65 | } 66 | 67 | public String getNickName() { 68 | return nickName; 69 | } 70 | 71 | public void setNickName(String nickName) { 72 | this.nickName = nickName; 73 | } 74 | 75 | public String getAvatar() { 76 | return avatar; 77 | } 78 | 79 | public void setAvatar(String avatar) { 80 | this.avatar = avatar; 81 | } 82 | 83 | public String getSex() { 84 | return sex; 85 | } 86 | 87 | public void setSex(String sex) { 88 | this.sex = sex; 89 | } 90 | 91 | public String getPhone() { 92 | return phone; 93 | } 94 | 95 | public void setPhone(String phone) { 96 | this.phone = phone; 97 | } 98 | 99 | public String getEmail() { 100 | return email; 101 | } 102 | 103 | public void setEmail(String email) { 104 | this.email = email; 105 | } 106 | 107 | public Integer getEmailVerified() { 108 | return emailVerified; 109 | } 110 | 111 | public void setEmailVerified(Integer emailVerified) { 112 | this.emailVerified = emailVerified; 113 | } 114 | 115 | public String getTrueName() { 116 | return trueName; 117 | } 118 | 119 | public void setTrueName(String trueName) { 120 | this.trueName = trueName; 121 | } 122 | 123 | public String getIdCard() { 124 | return idCard; 125 | } 126 | 127 | public void setIdCard(String idCard) { 128 | this.idCard = idCard; 129 | } 130 | 131 | public Date getBirthday() { 132 | return birthday; 133 | } 134 | 135 | public void setBirthday(Date birthday) { 136 | this.birthday = birthday; 137 | } 138 | 139 | public Integer getDepartmentId() { 140 | return departmentId; 141 | } 142 | 143 | public void setDepartmentId(Integer departmentId) { 144 | this.departmentId = departmentId; 145 | } 146 | 147 | public Integer getState() { 148 | return state; 149 | } 150 | 151 | public void setState(Integer state) { 152 | this.state = state; 153 | } 154 | 155 | public Date getCreateTime() { 156 | return createTime; 157 | } 158 | 159 | public void setCreateTime(Date createTime) { 160 | this.createTime = createTime; 161 | } 162 | 163 | public Date getUpdateTime() { 164 | return updateTime; 165 | } 166 | 167 | public void setUpdateTime(Date updateTime) { 168 | this.updateTime = updateTime; 169 | } 170 | 171 | public List getRoles() { 172 | return roles; 173 | } 174 | 175 | public void setRoles(List roles) { 176 | this.roles = roles; 177 | } 178 | 179 | public String getPassword() { 180 | return this.password; 181 | } 182 | 183 | public String getUsername() { 184 | return this.username; 185 | } 186 | 187 | } 188 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/model/UserRole.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.model; 2 | 3 | import com.baomidou.mybatisplus.annotations.TableId; 4 | import com.baomidou.mybatisplus.annotations.TableName; 5 | 6 | import java.util.Date; 7 | 8 | @TableName("sys_user_role") 9 | public class UserRole { 10 | @TableId 11 | private Integer id; 12 | 13 | private Integer userId; 14 | 15 | private Integer roleId; 16 | 17 | private Date createTime; 18 | 19 | public Integer getId() { 20 | return id; 21 | } 22 | 23 | public void setId(Integer id) { 24 | this.id = id; 25 | } 26 | 27 | public Integer getUserId() { 28 | return userId; 29 | } 30 | 31 | public void setUserId(Integer userId) { 32 | this.userId = userId; 33 | } 34 | 35 | public Integer getRoleId() { 36 | return roleId; 37 | } 38 | 39 | public void setRoleId(Integer roleId) { 40 | this.roleId = roleId; 41 | } 42 | 43 | public Date getCreateTime() { 44 | return createTime; 45 | } 46 | 47 | public void setCreateTime(Date createTime) { 48 | this.createTime = createTime; 49 | } 50 | 51 | } -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/CarOrderService.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service; 2 | 3 | import com.baomidou.mybatisplus.service.IService; 4 | import com.dh.tourism.model.CarOrder; 5 | import com.dh.tourism.model.ScenicOrder; 6 | 7 | 8 | public interface CarOrderService extends IService{ 9 | 10 | CarOrder queryById(Integer carOrderId); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/CarService.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service; 2 | 3 | import com.baomidou.mybatisplus.service.IService; 4 | import com.dh.tourism.model.Car; 5 | import com.dh.tourism.model.User; 6 | 7 | import java.util.List; 8 | 9 | 10 | public interface CarService extends IService{ 11 | Car queryById(Integer carId); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/GuideService.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service; 2 | 3 | import com.baomidou.mybatisplus.service.IService; 4 | import com.dh.tourism.model.Car; 5 | import com.dh.tourism.model.Guide; 6 | 7 | 8 | public interface GuideService extends IService{ 9 | 10 | Guide getGuideByAcount(String name); 11 | 12 | Guide getGuideById(Integer id); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/HotalOrderService.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service; 2 | 3 | import com.baomidou.mybatisplus.service.IService; 4 | import com.dh.tourism.model.CarOrder; 5 | import com.dh.tourism.model.Hotal; 6 | import com.dh.tourism.model.HotalOrder; 7 | 8 | 9 | public interface HotalOrderService extends IService{ 10 | 11 | HotalOrder queryById(Integer hotalOrderId); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/HotalService.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service; 2 | 3 | import com.baomidou.mybatisplus.service.IService; 4 | import com.dh.tourism.model.Car; 5 | import com.dh.tourism.model.Hotal; 6 | import com.dh.tourism.model.HotalOrder; 7 | 8 | 9 | public interface HotalService extends IService{ 10 | 11 | 12 | Hotal queryById(Integer hotalId); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/PersonService.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service; 2 | 3 | import com.baomidou.mybatisplus.service.IService; 4 | import com.dh.tourism.model.Person; 5 | import com.dh.tourism.model.User; 6 | 7 | import java.util.List; 8 | 9 | 10 | public interface PersonService extends IService{ 11 | List queryAll(); 12 | Person getByUsername(String personName); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/RoleService.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service; 2 | 3 | 4 | import com.baomidou.mybatisplus.service.IService; 5 | import com.dh.tourism.model.Role; 6 | 7 | public interface RoleService extends IService { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/ScenicOrderService.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service; 2 | 3 | import com.baomidou.mybatisplus.service.IService; 4 | import com.dh.tourism.model.Car; 5 | import com.dh.tourism.model.ScenicOrder; 6 | 7 | 8 | public interface ScenicOrderService extends IService{ 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/ScenicService.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service; 2 | 3 | import com.baomidou.mybatisplus.service.IService; 4 | import com.dh.tourism.model.Scenic; 5 | import com.dh.tourism.model.User; 6 | 7 | import java.util.List; 8 | 9 | 10 | public interface ScenicService extends IService{ 11 | List queryAll(); 12 | void insertOne(Scenic scenic); 13 | Scenic queryById(Integer id); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/TeamService.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service; 2 | 3 | import com.baomidou.mybatisplus.service.IService; 4 | import com.dh.tourism.model.Car; 5 | import com.dh.tourism.model.Team; 6 | 7 | 8 | public interface TeamService extends IService{ 9 | 10 | Integer queryPersonNumById(Integer teamId); 11 | 12 | Team queryById(Integer teamId); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/UserRoleService.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service; 2 | 3 | 4 | import com.baomidou.mybatisplus.service.IService; 5 | import com.dh.tourism.model.UserRole; 6 | 7 | /** 8 | * Created by Administrator on 2018-12-19 下午 4:09. 9 | */ 10 | public interface UserRoleService extends IService { 11 | 12 | Integer[] getRoleIds(Integer userId); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service; 2 | 3 | import com.baomidou.mybatisplus.service.IService; 4 | import com.dh.tourism.model.User; 5 | 6 | import java.util.List; 7 | 8 | 9 | public interface UserService extends IService{ 10 | List queryAll(); 11 | User getByUsername(String username); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/impl/CarOrderServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service.impl; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.service.impl.ServiceImpl; 5 | import com.dh.tourism.dao.CarOrderMapper; 6 | import com.dh.tourism.dao.ScenicOrderMapper; 7 | import com.dh.tourism.model.CarOrder; 8 | import com.dh.tourism.model.ScenicOrder; 9 | import com.dh.tourism.service.CarOrderService; 10 | import com.dh.tourism.service.ScenicOrderService; 11 | import org.springframework.stereotype.Service; 12 | import sun.security.krb5.internal.EncTicketPart; 13 | 14 | import java.util.List; 15 | 16 | /** 17 | * @author duhan 18 | * @title: UserServiceImpl 19 | * @projectName tourism 20 | * @description: TODO 21 | * @date 2019/4/1423:14 22 | */ 23 | @Service 24 | public class CarOrderServiceImpl extends ServiceImpl implements CarOrderService{ 25 | 26 | @Override 27 | public CarOrder queryById(Integer carOrderId) { 28 | EntityWrapper carOrderEntityWrapper=new EntityWrapper(); 29 | carOrderEntityWrapper.eq("id",carOrderId); 30 | List carOrderList=baseMapper.selectList(carOrderEntityWrapper); 31 | 32 | return carOrderList.get(0); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/impl/CarServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service.impl; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.service.impl.ServiceImpl; 5 | import com.dh.tourism.dao.CarMapper; 6 | import com.dh.tourism.dao.UserMapper; 7 | import com.dh.tourism.model.Car; 8 | import com.dh.tourism.model.User; 9 | import com.dh.tourism.service.CarService; 10 | import com.dh.tourism.service.UserService; 11 | import org.springframework.stereotype.Service; 12 | 13 | import java.util.List; 14 | 15 | /** 16 | * @author duhan 17 | * @title: UserServiceImpl 18 | * @projectName tourism 19 | * @description: TODO 20 | * @date 2019/4/1423:14 21 | */ 22 | @Service 23 | public class CarServiceImpl extends ServiceImpl implements CarService{ 24 | 25 | @Override 26 | public Car queryById(Integer carId) { 27 | EntityWrapper carEntityWrapper=new EntityWrapper<>(); 28 | carEntityWrapper.eq("id",carId); 29 | List carList=baseMapper.selectList(carEntityWrapper); 30 | return carList.get(0); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/impl/GuideServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service.impl; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.service.impl.ServiceImpl; 5 | import com.dh.tourism.dao.CarMapper; 6 | import com.dh.tourism.dao.GuideMapper; 7 | import com.dh.tourism.model.Car; 8 | import com.dh.tourism.model.Guide; 9 | import com.dh.tourism.service.CarService; 10 | import com.dh.tourism.service.GuideService; 11 | import org.springframework.stereotype.Service; 12 | import org.springframework.util.CollectionUtils; 13 | 14 | import java.util.List; 15 | 16 | /** 17 | * @author duhan 18 | * @title: UserServiceImpl 19 | * @projectName tourism 20 | * @description: TODO 21 | * @date 2019/4/1423:14 22 | */ 23 | @Service 24 | public class GuideServiceImpl extends ServiceImpl implements GuideService{ 25 | 26 | @Override 27 | public Guide getGuideByAcount(String acount) { 28 | EntityWrapper entityWrapper=new EntityWrapper(); 29 | entityWrapper.eq("acount",acount); 30 | List guides= baseMapper.selectList(entityWrapper); 31 | if(guides.size()==0){ 32 | return null; 33 | }else { 34 | return guides.get(0); 35 | } 36 | 37 | } 38 | 39 | @Override 40 | public Guide getGuideById(Integer id) { 41 | EntityWrapper entityWrapper=new EntityWrapper(); 42 | entityWrapper.eq("id",id); 43 | List guideList=baseMapper.selectList(entityWrapper); 44 | if(CollectionUtils.isEmpty(guideList)){ 45 | return null; 46 | } 47 | return guideList.get(0); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/impl/HotalOrderServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service.impl; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.service.impl.ServiceImpl; 5 | import com.dh.tourism.dao.CarOrderMapper; 6 | import com.dh.tourism.dao.HotalOrderMapper; 7 | import com.dh.tourism.model.CarOrder; 8 | import com.dh.tourism.model.HotalOrder; 9 | import com.dh.tourism.service.CarOrderService; 10 | import com.dh.tourism.service.HotalOrderService; 11 | import org.springframework.stereotype.Service; 12 | 13 | import java.util.List; 14 | 15 | /** 16 | * @author duhan 17 | * @title: UserServiceImpl 18 | * @projectName tourism 19 | * @description: TODO 20 | * @date 2019/4/1423:14 21 | */ 22 | @Service 23 | public class HotalOrderServiceImpl extends ServiceImpl implements HotalOrderService{ 24 | 25 | @Override 26 | public HotalOrder queryById(Integer hotalOrderId) { 27 | EntityWrapper hotalOrderEntityWrapper=new EntityWrapper(); 28 | hotalOrderEntityWrapper.eq("id",hotalOrderId); 29 | List hotalOrderList=baseMapper.selectList(hotalOrderEntityWrapper); 30 | 31 | return hotalOrderList.get(0); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/impl/HotalServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service.impl; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.service.impl.ServiceImpl; 5 | import com.dh.tourism.dao.CarMapper; 6 | import com.dh.tourism.dao.HotalMapper; 7 | import com.dh.tourism.model.Car; 8 | import com.dh.tourism.model.Hotal; 9 | import com.dh.tourism.service.CarService; 10 | import com.dh.tourism.service.HotalService; 11 | import org.springframework.stereotype.Service; 12 | 13 | import javax.swing.text.html.parser.Entity; 14 | import java.util.List; 15 | 16 | /** 17 | * @author duhan 18 | * @title: UserServiceImpl 19 | * @projectName tourism 20 | * @description: TODO 21 | * @date 2019/4/1423:14 22 | */ 23 | @Service 24 | public class HotalServiceImpl extends ServiceImpl implements HotalService{ 25 | 26 | @Override 27 | public Hotal queryById(Integer hotalId) { 28 | EntityWrapper hotalEntityWrapper=new EntityWrapper(); 29 | hotalEntityWrapper.eq("id",hotalId); 30 | List hotalList=baseMapper.selectList(hotalEntityWrapper); 31 | return hotalList.get(0); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/impl/PersonServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service.impl; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.service.impl.ServiceImpl; 5 | import com.dh.tourism.dao.PersonMapper; 6 | import com.dh.tourism.dao.UserMapper; 7 | import com.dh.tourism.model.Person; 8 | import com.dh.tourism.model.User; 9 | import com.dh.tourism.service.PersonService; 10 | import com.dh.tourism.service.UserService; 11 | import org.springframework.stereotype.Service; 12 | 13 | import java.util.List; 14 | 15 | /** 16 | * @author duhan 17 | * @title: UserServiceImpl 18 | * @projectName tourism 19 | * @description: TODO 20 | * @date 2019/4/1423:14 21 | */ 22 | @Service 23 | public class PersonServiceImpl extends ServiceImpl implements PersonService{ 24 | @Override 25 | public List queryAll() { 26 | return baseMapper.selectList(null); 27 | } 28 | 29 | @Override 30 | public Person getByUsername(String username) { 31 | EntityWrapper entityWrapper=new EntityWrapper(); 32 | entityWrapper.eq("username",username); 33 | List persons=baseMapper.selectList(entityWrapper); 34 | return persons.get(0); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/impl/RoleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service.impl; 2 | 3 | 4 | import com.baomidou.mybatisplus.service.impl.ServiceImpl; 5 | import com.dh.tourism.dao.RoleMapper; 6 | import com.dh.tourism.model.Role; 7 | import com.dh.tourism.service.RoleService; 8 | 9 | import org.springframework.stereotype.Service; 10 | 11 | @Service 12 | public class RoleServiceImpl extends ServiceImpl implements RoleService { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/impl/ScenicOrderServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service.impl; 2 | 3 | import com.baomidou.mybatisplus.service.impl.ServiceImpl; 4 | import com.dh.tourism.dao.CarMapper; 5 | import com.dh.tourism.dao.ScenicOrderMapper; 6 | import com.dh.tourism.model.Car; 7 | import com.dh.tourism.model.Scenic; 8 | import com.dh.tourism.model.ScenicOrder; 9 | import com.dh.tourism.service.CarService; 10 | import com.dh.tourism.service.ScenicOrderService; 11 | import org.springframework.stereotype.Service; 12 | 13 | /** 14 | * @author duhan 15 | * @title: UserServiceImpl 16 | * @projectName tourism 17 | * @description: TODO 18 | * @date 2019/4/1423:14 19 | */ 20 | @Service 21 | public class ScenicOrderServiceImpl extends ServiceImpl implements ScenicOrderService{ 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/impl/ScenicServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service.impl; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.service.impl.ServiceImpl; 5 | import com.dh.tourism.dao.ScenicMapper; 6 | import com.dh.tourism.dao.UserMapper; 7 | import com.dh.tourism.model.Scenic; 8 | import com.dh.tourism.model.User; 9 | import com.dh.tourism.service.ScenicService; 10 | import com.dh.tourism.service.UserService; 11 | import com.fasterxml.jackson.core.json.ByteSourceJsonBootstrapper; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | import org.springframework.stereotype.Service; 14 | import org.springframework.util.CollectionUtils; 15 | 16 | import java.util.List; 17 | 18 | /** 19 | * @author duhan 20 | * @title: UserServiceImpl 21 | * @projectName tourism 22 | * @description: TODO 23 | * @date 2019/4/1423:14 24 | */ 25 | @Service 26 | public class ScenicServiceImpl extends ServiceImpl implements ScenicService{ 27 | @Override 28 | public List queryAll() { 29 | return baseMapper.selectList(null); 30 | } 31 | 32 | @Override 33 | public void insertOne(Scenic scenic) { 34 | baseMapper.insertOne(scenic); 35 | } 36 | 37 | @Override 38 | public Scenic queryById(Integer id) { 39 | EntityWrapper scenicEntityWrapper=new EntityWrapper(); 40 | List scenicList=baseMapper.selectList(scenicEntityWrapper); 41 | if (CollectionUtils.isEmpty(scenicList)) { 42 | return null; 43 | } 44 | return scenicList.get(0); 45 | } 46 | 47 | } 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/impl/TeamServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service.impl; 2 | 3 | import com.baomidou.mybatisplus.annotations.TableId; 4 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 5 | import com.baomidou.mybatisplus.service.impl.ServiceImpl; 6 | import com.dh.tourism.dao.CarMapper; 7 | import com.dh.tourism.dao.TeamMapper; 8 | import com.dh.tourism.model.Car; 9 | import com.dh.tourism.model.Team; 10 | import com.dh.tourism.service.CarService; 11 | import com.dh.tourism.service.TeamService; 12 | import org.springframework.stereotype.Service; 13 | import org.springframework.util.CollectionUtils; 14 | 15 | import java.util.List; 16 | 17 | /** 18 | * @author duhan 19 | * @title: UserServiceImpl 20 | * @projectName tourism 21 | * @description: TODO 22 | * @date 2019/4/1423:14 23 | */ 24 | @Service 25 | public class TeamServiceImpl extends ServiceImpl implements TeamService{ 26 | 27 | @Override 28 | public Integer queryPersonNumById(Integer teamId) { 29 | EntityWrapper teamEntityWrapper=new EntityWrapper(); 30 | teamEntityWrapper.eq("id",teamId); 31 | List teamList=baseMapper.selectList(teamEntityWrapper); 32 | Team team=teamList.get(0); 33 | String personIds=team.getPersonIds(); 34 | return personIds.split(",").length; 35 | } 36 | 37 | @Override 38 | public Team queryById(Integer teamId) { 39 | EntityWrapper entityWrapper=new EntityWrapper(); 40 | entityWrapper.eq("id",teamId); 41 | List teamList=baseMapper.selectList(entityWrapper); 42 | return teamList.get(0); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/impl/UserRoleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service.impl; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.service.impl.ServiceImpl; 5 | import com.dh.tourism.model.UserRole; 6 | import com.dh.tourism.service.UserRoleService; 7 | import com.dh.tourism.dao.UserRoleMapper; 8 | import com.dh.tourism.model.UserRole; 9 | import org.springframework.stereotype.Service; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * Created by Administrator on 2018-12-19 下午 4:10. 15 | */ 16 | @Service 17 | public class UserRoleServiceImpl extends ServiceImpl implements UserRoleService { 18 | 19 | @Override 20 | public Integer[] getRoleIds(Integer userId) { 21 | 22 | List userRoles = baseMapper.selectList(new EntityWrapper().eq("user_id", userId)); 23 | Integer[] roleIds = new Integer[userRoles.size()]; 24 | for (int i = 0; i < userRoles.size(); i++) { 25 | roleIds[i] = userRoles.get(i).getRoleId(); 26 | } 27 | return roleIds; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/dh/tourism/service/impl/UserServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism.service.impl; 2 | 3 | import com.baomidou.mybatisplus.mapper.EntityWrapper; 4 | import com.baomidou.mybatisplus.service.impl.ServiceImpl; 5 | import com.dh.tourism.dao.UserMapper; 6 | import com.dh.tourism.model.User; 7 | import com.dh.tourism.service.UserService; 8 | import org.springframework.stereotype.Service; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author duhan 14 | * @title: UserServiceImpl 15 | * @projectName tourism 16 | * @description: TODO 17 | * @date 2019/4/1423:14 18 | */ 19 | @Service 20 | public class UserServiceImpl extends ServiceImpl implements UserService{ 21 | @Override 22 | public List queryAll() { 23 | return baseMapper.selectList(null); 24 | } 25 | 26 | @Override 27 | public User getByUsername(String username) { 28 | EntityWrapper entityWrapper=new EntityWrapper(); 29 | entityWrapper.eq("username",username); 30 | List users=baseMapper.selectList(entityWrapper); 31 | if(users.size()==0){ 32 | return null; 33 | }else { 34 | return users.get(0); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/resources/Mapper/CarMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/Mapper/CarOrderMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/Mapper/GuideMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/Mapper/HotalMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/Mapper/HotalOrderMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/Mapper/PersonMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/Mapper/ScenicMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | insert into tr_scenic(name,picture,price,type,place) VALUES (#{scenic.name},#{scenic.picture},#{scenic.price},#{scenic.type},#{scenic.place}) 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/main/resources/Mapper/ScenicOrderMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/Mapper/TeamMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/Mapper/UserMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | ## 端口号 2 | server.port=9999 3 | #数据库连接 4 | spring.datasource.url=jdbc:mysql://localhost:3306/tourism?characterEncoding=utf8 & useSSL=false & serverTimezone=UTC & rewriteBatchedStatements=true 5 | spring.datasource.username=root 6 | spring.datasource.password=123456 7 | spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 8 | -------------------------------------------------------------------------------- /src/main/resources/static/assets/common.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | background: #EEEEEE; 3 | } 4 | 5 | /** 登录界面样式 */ 6 | .login-logo { 7 | text-align: center; 8 | margin-top: 60px; 9 | } 10 | 11 | .login-logo img { 12 | width: 50px; 13 | height: 50px; 14 | } 15 | 16 | .login-logo cite { 17 | font-style: normal; 18 | font-weight: bold; 19 | color: #666; 20 | padding-left: 10px; 21 | font-size: 28px; 22 | vertical-align: middle; 23 | } 24 | 25 | .login-form { 26 | width: 255px; 27 | margin: 30px auto; 28 | background: white; 29 | border-radius: 10px; 30 | padding: 40px 50px; 31 | box-shadow: 0 1px 2px rgba(0, 0, 0, .15); 32 | } 33 | 34 | .login-form .title { 35 | font-size: 20px; 36 | color: #333; 37 | font-weight: bold; 38 | padding-bottom: 15px; 39 | } 40 | 41 | /** //登录界面样式结束 */ 42 | 43 | /** 主界面样式 */ 44 | .admin-iframe { 45 | width: 100%; 46 | height: 100%; 47 | position: absolute; 48 | left: 0; 49 | right: 0; 50 | top: 0; 51 | bottom: 0; 52 | } 53 | 54 | .layui-layout-admin .layui-body { 55 | bottom: 0; 56 | } 57 | 58 | .layui-layout-admin .layui-header a { 59 | cursor: pointer; 60 | } 61 | 62 | .layui-layout-admin .layui-header .layui-nav-child dd { 63 | text-align: center; 64 | } 65 | 66 | a { 67 | cursor: pointer; 68 | } 69 | 70 | /** //主界面样式结束*/ 71 | 72 | /** 公共样式 */ 73 | .layui-fluid { 74 | padding: 15px; 75 | } 76 | 77 | .text-right { 78 | text-align: right; 79 | } 80 | 81 | .layui-form.model-form { 82 | padding: 30px 30px 0px 0px; 83 | } 84 | 85 | .icon-btn { 86 | padding: 0 10px; 87 | } 88 | 89 | .lable-require:before { 90 | content: "*"; 91 | position: absolute; 92 | left: 12px; 93 | top: 14px; 94 | color: red; 95 | font-size: 22px; 96 | } 97 | 98 | .layui-badge-rim + .layui-badge-rim { 99 | margin-left: 5px; 100 | } 101 | 102 | img + span { 103 | vertical-align: middle; 104 | } 105 | 106 | /** //公共样式结束 */ 107 | 108 | /** 标签输入框样式 */ 109 | .tagsinput .tag { 110 | background: #009688; 111 | padding: 3px 19px 3px 4px; 112 | } 113 | 114 | .tagsinput .tag .tag-remove:after, .tagsinput .tag .tag-remove:before { 115 | background: white; 116 | top: 9px; 117 | left: 5px; 118 | } 119 | 120 | .tagsinput { 121 | font-size: 12px; 122 | line-height: 14px; 123 | } 124 | 125 | .tagsinput .tag .tag-remove { 126 | width: 20px; 127 | height: 20px; 128 | line-height: 20px; 129 | } 130 | 131 | .tagsinput div input { 132 | padding: 0px 0px 0px 3px; 133 | } 134 | 135 | .tagsinput div input::-webkit-input-placeholder { 136 | color: #999; 137 | } 138 | 139 | /** // 标签输入框样式end */ 140 | 141 | /** header样式 */ 142 | /** 导航栏下面的线条 */ 143 | .layui-layout-admin .layui-header .layui-nav .layui-this:after, .layui-layout-admin .layui-header .layui-nav-bar { 144 | height: 2px; 145 | background-color: #03152A; 146 | top: 0 !important; 147 | } 148 | 149 | .layui-layout-admin .layui-header .layui-nav-item .layui-icon { 150 | font-size: 16px; /** 图标大小 */ 151 | } 152 | 153 | .layui-layout-admin .layui-header .layui-layout-left { 154 | left: 220px; 155 | padding: 0 10px; 156 | transition: all .3s; 157 | color: #f2f2f2; 158 | } 159 | 160 | .layui-layout-admin .layui-header .layui-layout-right { 161 | padding: 0; 162 | } 163 | 164 | /** 重写header的背景色和字体颜色 */ 165 | .layui-layout-admin .layui-header { 166 | /*background-color: #fff;*/ 167 | width: 1538px; 168 | height: 65px; 169 | box-shadow: 0 1px 0px 0; 170 | position: fixed; 171 | top: 0; 172 | } 173 | 174 | .layui-layout-admin .layui-header a { 175 | /*color: #333;*/ 176 | padding: 0 15px; 177 | } 178 | 179 | .layui-layout-admin .layui-header a:hover { 180 | color: #333; 181 | } 182 | 183 | .layui-layout-admin .layui-header .layui-nav-child a { 184 | color: #333 !important; 185 | } 186 | 187 | .layui-layout-admin .layui-header .layui-nav .layui-nav-more { 188 | border-color: #666 transparent transparent; 189 | } 190 | 191 | .layui-layout-admin .layui-header .layui-nav .layui-nav-mored { 192 | border-color: transparent transparent #666; 193 | } 194 | 195 | .layui-layout-admin .layui-header .layui-nav-child dd { 196 | text-align: center; 197 | } 198 | 199 | .layui-layout-admin .layui-header a { 200 | cursor: pointer; 201 | } 202 | 203 | /** logo部分样式 */ 204 | .layui-layout-admin .layui-header .layui-logo { 205 | width: 220px; 206 | /*background-color: #3A3D49;*/ 207 | color: #f2f2f2; 208 | font-size: 18px; 209 | font-family: Myriad Pro, Helvetica Neue, Arial, Helvetica, sans-serif; 210 | font-weight: bold; 211 | overflow: hidden; 212 | transition: all .3s; 213 | } 214 | 215 | .layui-layout-admin .layui-header .layui-logo img { 216 | height: 35px; 217 | } 218 | 219 | .layui-layout-admin .layui-header .layui-logo cite { 220 | font-style: normal; 221 | } 222 | 223 | .layui-layout-admin .layui-header .layui-nav-img { 224 | margin-right: 5px; 225 | } 226 | 227 | .layui-layout-admin .layui-header .layui-nav-img + cite { 228 | margin-right: 5px; 229 | } 230 | 231 | /** //header样式结束 */ 232 | 233 | /** 主体部分样式 */ 234 | .layui-layout-admin .layui-body { 235 | left: 300px; 236 | transition: left .3s; 237 | overflow: auto; 238 | -webkit-overflow-scrolling: touch; 239 | } 240 | 241 | /** //主体部分样式结束 */ 242 | 243 | /** 侧边栏样式 */ 244 | .layui-layout-admin .layui-side .layui-side-scroll { 245 | width: 240px; 246 | transition: all .3s; 247 | -webkit-transition: all .3s; 248 | } 249 | 250 | .layui-layout-admin .layui-side { 251 | position: absolute; 252 | width: 220px; 253 | background-color: #3A3D49; 254 | transition: all .3s; 255 | -webkit-transition: all .3s; 256 | } 257 | 258 | .layui-layout-admin .layui-side .layui-nav { 259 | width: 220px; 260 | background-color: transparent; 261 | } 262 | 263 | .layui-layout-admin .layui-side .layui-nav .layui-nav-item > a:hover { 264 | background: rgba(255, 255, 255, .03); 265 | } 266 | 267 | .layui-layout-admin .layui-side .layui-nav .layui-nav-item > .layui-nav-child { 268 | padding: 5px 0; 269 | background-color: rgba(0, 0, 0, .3) !important; 270 | } 271 | 272 | .layui-layout-admin .layui-side .layui-nav .layui-nav-more { 273 | right: 15px; 274 | } 275 | 276 | .layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child a { 277 | padding-left: 50px; /** 导航字体位置 */ 278 | cursor: pointer; 279 | } 280 | 281 | .layui-layout-admin .layui-side .layui-nav .layui-nav-item > a { 282 | padding-top: 8px; 283 | padding-bottom: 8px; 284 | cursor: pointer; 285 | } 286 | 287 | /** 侧边栏样式结束 */ -------------------------------------------------------------------------------- /src/main/resources/static/assets/common.js: -------------------------------------------------------------------------------- 1 | var tableName = 'easyweb-open'; // 本地缓存表名 2 | var base_server = 'http://localhost:9999/'; // 接口地址 3 | 4 | // 配置layui模块所在的位置 5 | layui.config({ 6 | base: getProjectUrl() + 'assets/module/' 7 | }).extend({ 8 | formSelects: 'formSelects/formSelects-v4' 9 | }).use(['jquery', 'layer'], function () { 10 | var $ = layui.jquery; 11 | var layer = layui.layer; 12 | 13 | 14 | }); 15 | 16 | // 获取当前项目的绝对路径 17 | function getProjectUrl() { 18 | var layuiDir = layui.cache.dir; 19 | if (!layuiDir) { 20 | var js = document.scripts, last = js.length - 1, src; 21 | for (var i = last; i > 0; i--) { 22 | if (js[i].readyState === 'interactive') { 23 | src = js[i].src; 24 | break; 25 | } 26 | } 27 | var jsPath = src || js[last].src; 28 | layuiDir = jsPath.substring(0, jsPath.lastIndexOf('/') + 1); 29 | } 30 | return layuiDir.substring(0, layuiDir.indexOf('assets')); 31 | } 32 | -------------------------------------------------------------------------------- /src/main/resources/static/assets/images/car/benchi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/images/car/benchi.jpg -------------------------------------------------------------------------------- /src/main/resources/static/assets/images/car/bingcar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/images/car/bingcar.jpg -------------------------------------------------------------------------------- /src/main/resources/static/assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/images/favicon.ico -------------------------------------------------------------------------------- /src/main/resources/static/assets/images/head.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/images/head.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/images/head2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/images/head2.PNG -------------------------------------------------------------------------------- /src/main/resources/static/assets/images/hotal/binfen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/images/hotal/binfen.jpg -------------------------------------------------------------------------------- /src/main/resources/static/assets/images/hotal/hotal2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/images/hotal/hotal2.jpg -------------------------------------------------------------------------------- /src/main/resources/static/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/images/logo.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/images/recommend/2014120217200910085.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/images/recommend/2014120217200910085.jpg -------------------------------------------------------------------------------- /src/main/resources/static/assets/images/recommend/qingcheng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/images/recommend/qingcheng.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/jquery/jquery.cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery Cookie Plugin v1.4.1 3 | * https://github.com/carhartl/jquery-cookie 4 | * 5 | * Copyright 2013 Klaus Hartl 6 | * Released under the MIT license 7 | */ 8 | (function (factory) { 9 | if (typeof define === 'function' && define.amd) { 10 | // AMD 11 | define(['jquery'], factory); 12 | } else if (typeof exports === 'object') { 13 | // CommonJS 14 | factory(require('jquery')); 15 | } else { 16 | // Browser globals 17 | factory(jQuery); 18 | } 19 | }(function ($) { 20 | 21 | var pluses = /\+/g; 22 | 23 | function encode(s) { 24 | return config.raw ? s : encodeURIComponent(s); 25 | } 26 | 27 | function decode(s) { 28 | return config.raw ? s : decodeURIComponent(s); 29 | } 30 | 31 | function stringifyCookieValue(value) { 32 | return encode(config.json ? JSON.stringify(value) : String(value)); 33 | } 34 | 35 | function parseCookieValue(s) { 36 | if (s.indexOf('"') === 0) { 37 | // This is a quoted cookie as according to RFC2068, unescape... 38 | s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); 39 | } 40 | 41 | try { 42 | // Replace server-side written pluses with spaces. 43 | // If we can't decode the cookie, ignore it, it's unusable. 44 | // If we can't parse the cookie, ignore it, it's unusable. 45 | s = decodeURIComponent(s.replace(pluses, ' ')); 46 | return config.json ? JSON.parse(s) : s; 47 | } catch(e) {} 48 | } 49 | 50 | function read(s, converter) { 51 | var value = config.raw ? s : parseCookieValue(s); 52 | return $.isFunction(converter) ? converter(value) : value; 53 | } 54 | 55 | var config = $.cookie = function (key, value, options) { 56 | 57 | // Write 58 | 59 | if (value !== undefined && !$.isFunction(value)) { 60 | options = $.extend({}, config.defaults, options); 61 | 62 | if (typeof options.expires === 'number') { 63 | var days = options.expires, t = options.expires = new Date(); 64 | t.setTime(+t + days * 864e+5); 65 | } 66 | 67 | return (document.cookie = [ 68 | encode(key), '=', stringifyCookieValue(value), 69 | options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 70 | options.path ? '; path=' + options.path : '', 71 | options.domain ? '; domain=' + options.domain : '', 72 | options.secure ? '; secure' : '' 73 | ].join('')); 74 | } 75 | 76 | // Read 77 | 78 | var result = key ? undefined : {}; 79 | 80 | // To prevent the for loop in the first place assign an empty array 81 | // in case there are no cookies at all. Also prevents odd result when 82 | // calling $.cookie(). 83 | var cookies = document.cookie ? document.cookie.split('; ') : []; 84 | 85 | for (var i = 0, l = cookies.length; i < l; i++) { 86 | var parts = cookies[i].split('='); 87 | var name = decode(parts.shift()); 88 | var cookie = parts.join('='); 89 | 90 | if (key && key === name) { 91 | // If second argument (value) is a function it's a converter... 92 | result = read(cookie, value); 93 | break; 94 | } 95 | 96 | // Prevent storing a cookie that we couldn't decode. 97 | if (!key && (cookie = read(cookie)) !== undefined) { 98 | result[name] = cookie; 99 | } 100 | } 101 | 102 | return result; 103 | }; 104 | 105 | config.defaults = {}; 106 | 107 | $.removeCookie = function (key, options) { 108 | if ($.cookie(key) === undefined) { 109 | return false; 110 | } 111 | 112 | // Must not alter options, thus extending a fresh object... 113 | $.cookie(key, '', $.extend({}, options, { expires: -1 })); 114 | return !$.cookie(key); 115 | }; 116 | 117 | })); 118 | -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/css/modules/code.css: -------------------------------------------------------------------------------- 1 | /** layui-v2.4.5 MIT License By https://www.layui.com */ 2 | html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none} -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/css/modules/layer/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/css/modules/layer/default/icon-ext.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/css/modules/layer/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/css/modules/layer/default/icon.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/css/modules/layer/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/css/modules/layer/default/loading-0.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/css/modules/layer/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/css/modules/layer/default/loading-1.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/css/modules/layer/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/css/modules/layer/default/loading-2.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/font/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/font/iconfont.eot -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/font/iconfont.ttf -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/font/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/font/iconfont.woff -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/0.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/1.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/10.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/11.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/12.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/13.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/14.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/15.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/16.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/17.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/18.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/19.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/2.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/20.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/21.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/22.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/23.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/24.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/25.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/26.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/27.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/28.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/29.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/3.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/30.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/31.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/32.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/33.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/34.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/35.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/36.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/37.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/38.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/39.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/4.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/40.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/41.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/42.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/43.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/44.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/45.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/46.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/47.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/48.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/49.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/5.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/50.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/51.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/52.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/53.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/54.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/55.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/56.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/57.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/58.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/59.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/6.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/60.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/61.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/62.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/63.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/64.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/65.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/66.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/67.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/68.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/69.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/7.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/70.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/71.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/8.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/images/face/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ahhhnnn/tourism/d6e38e5e745a2ce2a04b5fd12534c36043d32af7/src/main/resources/static/assets/libs/layui/images/face/9.gif -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/lay/modules/carousel.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.4.5 MIT License By https://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",l=">*[carousel-item]>*",o="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['",'"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['
    ',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("")}),i.join("")}(),"
"].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):a/g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
  1. '+o.replace(/[\r\t\n]+/g,"
  2. ")+"
"),c.find(">.layui-code-h3")[0]||c.prepend('

'+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"

");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/lay/modules/element.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.4.5 MIT License By https://www.layui.com */ 2 | ;layui.define("jquery",function(t){"use strict";var a=layui.$,i=(layui.hint(),layui.device()),e="element",l="layui-this",n="layui-show",s=function(){this.config={}};s.prototype.set=function(t){var i=this;return a.extend(!0,i.config,t),i},s.prototype.on=function(t,a){return layui.onevent.call(this,e,t,a)},s.prototype.tabAdd=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.children(".layui-tab-bar"),o=l.children(".layui-tab-content"),r='
  • "+(i.title||"unnaming")+"
  • ";return s[0]?s.before(r):n.append(r),o.append('
    '+(i.content||"")+"
    "),f.hideTabMore(!0),f.tabAuto(),this},s.prototype.tabDelete=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+i+'"]');return f.tabDelete(null,s),this},s.prototype.tabChange=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+i+'"]');return f.tabClick.call(s[0],null,null,s),this},s.prototype.tab=function(t){t=t||{},b.on("click",t.headerElem,function(i){var e=a(this).index();f.tabClick.call(this,i,e,null,t)})},s.prototype.progress=function(t,i){var e="layui-progress",l=a("."+e+"[lay-filter="+t+"]"),n=l.find("."+e+"-bar"),s=n.find("."+e+"-text");return n.css("width",i),s.text(i),this};var o=".layui-nav",r="layui-nav-item",c="layui-nav-bar",u="layui-nav-tree",d="layui-nav-child",y="layui-nav-more",h="layui-anim layui-anim-upbit",f={tabClick:function(t,i,s,o){o=o||{};var r=s||a(this),i=i||r.parent().children("li").index(r),c=o.headerElem?r.parent():r.parents(".layui-tab").eq(0),u=o.bodyElem?a(o.bodyElem):c.children(".layui-tab-content").children(".layui-tab-item"),d=r.find("a"),y=c.attr("lay-filter");"javascript:;"!==d.attr("href")&&"_blank"===d.attr("target")||(r.addClass(l).siblings().removeClass(l),u.eq(i).addClass(n).siblings().removeClass(n)),layui.event.call(this,e,"tab("+y+")",{elem:c,index:i})},tabDelete:function(t,i){var n=i||a(this).parent(),s=n.index(),o=n.parents(".layui-tab").eq(0),r=o.children(".layui-tab-content").children(".layui-tab-item"),c=o.attr("lay-filter");n.hasClass(l)&&(n.next()[0]?f.tabClick.call(n.next()[0],null,s+1):n.prev()[0]&&f.tabClick.call(n.prev()[0],null,s-1)),n.remove(),r.eq(s).remove(),setTimeout(function(){f.tabAuto()},50),layui.event.call(this,e,"tabDelete("+c+")",{elem:o,index:s})},tabAuto:function(){var t="layui-tab-more",e="layui-tab-bar",l="layui-tab-close",n=this;a(".layui-tab").each(function(){var s=a(this),o=s.children(".layui-tab-title"),r=(s.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),c=a('');if(n===window&&8!=i.ie&&f.hideTabMore(!0),s.attr("lay-allowClose")&&o.find("li").each(function(){var t=a(this);if(!t.find("."+l)[0]){var i=a('');i.on("click",f.tabDelete),t.append(i)}}),"string"!=typeof s.attr("lay-unauto"))if(o.prop("scrollWidth")>o.outerWidth()+1){if(o.find("."+e)[0])return;o.append(c),s.attr("overflow",""),c.on("click",function(a){o[this.title?"removeClass":"addClass"](t),this.title=this.title?"":"收缩"})}else o.find("."+e).remove(),s.removeAttr("overflow")})},hideTabMore:function(t){var i=a(".layui-tab-title");t!==!0&&"tabmore"===a(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=a(this),i=t.parents(o),n=i.attr("lay-filter"),s=t.parent(),c=t.siblings("."+d),y="string"==typeof s.attr("lay-unselect");"javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||y||c[0]||(i.find("."+l).removeClass(l),s.addClass(l)),i.hasClass(u)&&(c.removeClass(h),c[0]&&(s["none"===c.css("display")?"addClass":"removeClass"](r+"ed"),"all"===i.attr("lay-shrink")&&s.siblings().removeClass(r+"ed"))),layui.event.call(this,e,"nav("+n+")",t)},collapse:function(){var t=a(this),i=t.find(".layui-colla-icon"),l=t.siblings(".layui-colla-content"),s=t.parents(".layui-collapse").eq(0),o=s.attr("lay-filter"),r="none"===l.css("display");if("string"==typeof s.attr("lay-accordion")){var c=s.children(".layui-colla-item").children("."+n);c.siblings(".layui-colla-title").children(".layui-colla-icon").html(""),c.removeClass(n)}l[r?"addClass":"removeClass"](n),i.html(r?"":""),layui.event.call(this,e,"collapse("+o+")",{title:t,content:l,show:r})}};s.prototype.init=function(t,e){var l=function(){return e?'[lay-filter="'+e+'"]':""}(),s={tab:function(){f.tabAuto.call({})},nav:function(){var t=200,e={},s={},p={},b=function(l,o,r){var c=a(this),f=c.find("."+d);o.hasClass(u)?l.css({top:c.position().top,height:c.children("a").outerHeight(),opacity:1}):(f.addClass(h),l.css({left:c.position().left+parseFloat(c.css("marginLeft")),top:c.position().top+c.height()-l.height()}),e[r]=setTimeout(function(){l.css({width:c.width(),opacity:1})},i.ie&&i.ie<10?0:t),clearTimeout(p[r]),"block"===f.css("display")&&clearTimeout(s[r]),s[r]=setTimeout(function(){f.addClass(n),c.find("."+y).addClass(y+"d")},300))};a(o+l).each(function(i){var l=a(this),o=a(''),h=l.find("."+r);l.find("."+c)[0]||(l.append(o),h.on("mouseenter",function(){b.call(this,o,l,i)}).on("mouseleave",function(){l.hasClass(u)||(clearTimeout(s[i]),s[i]=setTimeout(function(){l.find("."+d).removeClass(n),l.find("."+y).removeClass(y+"d")},300))}),l.on("mouseleave",function(){clearTimeout(e[i]),p[i]=setTimeout(function(){l.hasClass(u)?o.css({height:0,top:o.position().top+o.height()/2,opacity:0}):o.css({width:0,left:o.position().left+o.width()/2,opacity:0})},t)})),h.find("a").each(function(){var t=a(this),i=(t.parent(),t.siblings("."+d));i[0]&&!t.children("."+y)[0]&&t.append(''),t.off("click",f.clickThis).on("click",f.clickThis)})})},breadcrumb:function(){var t=".layui-breadcrumb";a(t+l).each(function(){var t=a(this),i="lay-separator",e=t.attr(i)||"/",l=t.find("a");l.next("span["+i+"]")[0]||(l.each(function(t){t!==l.length-1&&a(this).after(""+e+"")}),t.css("visibility","visible"))})},progress:function(){var t="layui-progress";a("."+t+l).each(function(){var i=a(this),e=i.find(".layui-progress-bar"),l=e.attr("lay-percent");e.css("width",function(){return/^.+\/.+$/.test(l)?100*new Function("return "+l)()+"%":l}()),i.attr("lay-showPercent")&&setTimeout(function(){e.html(''+l+"")},350)})},collapse:function(){var t="layui-collapse";a("."+t+l).each(function(){var t=a(this).find(".layui-colla-item");t.each(function(){var t=a(this),i=t.find(".layui-colla-title"),e=t.find(".layui-colla-content"),l="none"===e.css("display");i.find(".layui-colla-icon").remove(),i.append(''+(l?"":"")+""),i.off("click",f.collapse).on("click",f.collapse)})})}};return s[t]?s[t]():layui.each(s,function(t,a){a()})},s.prototype.render=s.prototype.init;var p=new s,b=a(document);p.render();var v=".layui-tab-title li";b.on("click",v,f.tabClick),b.on("click",f.hideTabMore),a(window).on("resize",f.tabAuto),t(e,p)}); -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/lay/modules/flow.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.4.5 MIT License By https://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="加载更多",h=l('");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;su)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)}); -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/lay/modules/laypage.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.4.5 MIT License By https://www.layui.com */ 2 | ;layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?''+a.prev+"":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push(''+(a.first||1)+"");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r2&&e.push('');r<=u;r++)r===a.curr?e.push('"+r+""):e.push(''+r+"");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1…'),0!==t&&e.push(''+(a.last||a.pages)+"")),e.join("")}(),next:function(){return a.next?''+a.next+"":""}(),count:'共 '+a.count+" 条",limit:function(){var e=['"}(),refresh:['','',""].join(""),skip:function(){return['到第','','页',""].join("")}()};return['
    ',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"
    "].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;oi.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)}); -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/lay/modules/laytpl.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.4.5 MIT License By https://www.layui.com */ 2 | ;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)}); -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/lay/modules/rate.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.4.5 MIT License By https://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var a=layui.jquery,i={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,a){return layui.onevent.call(this,n,e,a)}},l=function(){var e=this,a=e.config;return{setvalue:function(a){e.setvalue.call(e,a)},config:a}},n="rate",t="layui-rate",o="layui-icon-rate",s="layui-icon-rate-solid",u="layui-icon-rate-half",r="layui-icon-rate-solid layui-icon-rate-half",c="layui-icon-rate-solid layui-icon-rate",f="layui-icon-rate layui-icon-rate-half",v=function(e){var l=this;l.index=++i.index,l.config=a.extend({},l.config,i.config,e),l.render()};v.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},v.prototype.render=function(){var e=this,i=e.config,l=i.theme?'style="color: '+i.theme+';"':"";i.elem=a(i.elem),parseInt(i.value)!==i.value&&(i.half||(i.value=Math.ceil(i.value)-i.value<.5?Math.ceil(i.value):Math.floor(i.value)));for(var n='
      ",u=1;u<=i.length;u++){var r='
    • ";i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?n=n+'
    • ":n+=r}n+="
    "+(i.text?''+i.value+"星":"")+"";var c=i.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),i.span=e.elemTemp.next("span"),i.setText&&i.setText(i.value),c.html(e.elemTemp),c.addClass("layui-inline"),i.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,i=a.config;i.value=e,a.render()},v.prototype.action=function(){var e=this,i=e.config,l=e.elemTemp,n=l.find("i").width();l.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(i.value=t,i.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(i.value=i.value-.5)}i.text&&l.next("span").text(i.value+"星"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),v.on("mousemove",function(e){if(l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+t+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(u).removeClass(s)}}),v.on("mouseleave",function(){l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+Math.floor(i.value)+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half&&parseInt(i.value)!==i.value&&l.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(u).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},i.render=function(e){var a=new v(e);return l.call(a)},e(n,i)}); -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/lay/modules/slider.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.4.5 MIT License By https://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var i=layui.jquery,t={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,n,e,i)}},a=function(){var e=this,i=e.config;return{setValue:function(i,t){return e.slide("set",i,t||0)},config:i}},n="slider",l="layui-disabled",s="layui-slider",r="layui-slider-bar",o="layui-slider-wrap",u="layui-slider-wrap-btn",d="layui-slider-tips",v="layui-slider-input",c="layui-slider-input-txt",m="layui-slider-input-btn",p="layui-slider-hover",f=function(e){var a=this;a.index=++t.index,a.config=i.extend({},a.config,t.config,e),a.render()};f.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#009688"},f.prototype.render=function(){var e=this,t=e.config;if(t.step<1&&(t.step=1),t.maxt.min?a:t.min,t.value[1]=n>t.min?n:t.min,t.value[0]=t.value[0]>t.max?t.max:t.value[0],t.value[1]=t.value[1]>t.max?t.max:t.value[1];var r=Math.floor((t.value[0]-t.min)/(t.max-t.min)*100),v=Math.floor((t.value[1]-t.min)/(t.max-t.min)*100),m=v-r+"%";r+="%",v+="%"}else{"object"==typeof t.value&&(t.value=Math.min.apply(null,t.value)),t.valuet.max&&(t.value=t.max);var m=Math.floor((t.value-t.min)/(t.max-t.min)*100)+"%"}var p=t.disabled?"#c2c2c2":t.theme,f='
    '+(t.tips?'
    ':"")+'
    '+(t.range?'
    ':"")+"
    ",h=i(t.elem),y=h.next("."+s);if(y[0]&&y.remove(),e.elemTemp=i(f),t.range?(e.elemTemp.find("."+o).eq(0).data("value",t.value[0]),e.elemTemp.find("."+o).eq(1).data("value",t.value[1])):e.elemTemp.find("."+o).data("value",t.value),h.html(e.elemTemp),"vertical"===t.type&&e.elemTemp.height(t.height+"px"),t.showstep){for(var g=(t.max-t.min)/t.step,b="",x=1;x')}e.elemTemp.append(b)}if(t.input&&!t.range){var w=i('
    ');h.css("position","relative"),h.append(w),h.find("."+c).children("input").val(t.value),"vertical"===t.type?w.css({left:0,top:-48}):e.elemTemp.css("margin-right",w.outerWidth()+15)}t.disabled?(e.elemTemp.addClass(l),e.elemTemp.find("."+u).addClass(l)):e.slide(),e.elemTemp.find("."+u).on("mouseover",function(){var a="vertical"===t.type?t.height:e.elemTemp[0].offsetWidth,n=e.elemTemp.find("."+o),l="vertical"===t.type?a-i(this).parent()[0].offsetTop-n.height():i(this).parent()[0].offsetLeft,s=l/a*100,r=i(this).parent().data("value"),u=t.setTips?t.setTips(r):r;e.elemTemp.find("."+d).html(u),"vertical"===t.type?e.elemTemp.find("."+d).css({bottom:s+"%","margin-bottom":"20px",display:"inline-block"}):e.elemTemp.find("."+d).css({left:s+"%",display:"inline-block"})}).on("mouseout",function(){e.elemTemp.find("."+d).css("display","none")})},f.prototype.slide=function(e,t,a){var n=this,l=n.config,s=n.elemTemp,f=function(){return"vertical"===l.type?l.height:s[0].offsetWidth},h=s.find("."+o),y=s.next("."+v),g=y.children("."+c).children("input").val(),b=100/((l.max-l.min)/Math.ceil(l.step)),x=function(e,i){e=Math.ceil(e)*b>100?Math.ceil(e)*b:Math.round(e)*b,e=e>100?100:e,h.eq(i).css("vertical"===l.type?"bottom":"left",e+"%");var t=T(h[0].offsetLeft),a=l.range?T(h[1].offsetLeft):0;"vertical"===l.type?(s.find("."+d).css({bottom:e+"%","margin-bottom":"20px"}),t=T(f()-h[0].offsetTop-h.height()),a=l.range?T(f()-h[1].offsetTop-h.height()):0):s.find("."+d).css("left",e+"%"),t=t>100?100:t,a=a>100?100:a;var n=Math.min(t,a),o=Math.abs(t-a);"vertical"===l.type?s.find("."+r).css({height:o+"%",bottom:n+"%"}):s.find("."+r).css({width:o+"%",left:n+"%"});var u=l.min+Math.round((l.max-l.min)*e/100);if(g=u,y.children("."+c).children("input").val(g),h.eq(i).data("value",u),u=l.setTips?l.setTips(u):u,s.find("."+d).html(u),l.range){var v=[h.eq(0).data("value"),h.eq(1).data("value")];v[0]>v[1]&&v.reverse()}l.change&&l.change(l.range?v:u)},T=function(e){var i=e/f()*100/b,t=Math.round(i)*b;return e==f()&&(t=Math.ceil(i)*b),t},w=i(['
    f()&&(r=f());var o=r/f()*100/b;x(o,e),t.addClass(p),s.find("."+d).show(),i.preventDefault()},o=function(){t.removeClass(p),s.find("."+d).hide()};M(r,o)})}),s.on("click",function(e){var t=i("."+u);if(!t.is(event.target)&&0===t.has(event.target).length&&t.length){var a,n="vertical"===l.type?f()-e.clientY+i(this).offset().top:e.clientX-i(this).offset().left;n<0&&(n=0),n>f()&&(n=f());var s=n/f()*100/b;a=l.range?"vertical"===l.type?Math.abs(n-parseInt(i(h[0]).css("bottom")))>Math.abs(n-parseInt(i(h[1]).css("bottom")))?1:0:Math.abs(n-h[0].offsetLeft)>Math.abs(n-h[1].offsetLeft)?1:0:0,x(s,a),e.preventDefault()}}),y.hover(function(){var e=i(this);e.children("."+m).fadeIn("fast")},function(){var e=i(this);e.children("."+m).fadeOut("fast")}),y.children("."+m).children("i").each(function(e){i(this).on("click",function(){g=1==e?g-l.stepl.max?l.max:Number(g)+l.step;var i=(g-l.min)/(l.max-l.min)*100/b;x(i,0)})});var q=function(){var e=this.value;e=isNaN(e)?0:e,e=el.max?l.max:e,this.value=e;var i=(e-l.min)/(l.max-l.min)*100/b;x(i,0)};y.children("."+c).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),q.call(this))}).on("change",q)},f.prototype.events=function(){var e=this;e.config},t.render=function(e){var i=new f(e);return a.call(i)},e(n,t)}); -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/lay/modules/tree.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.4.5 MIT License By https://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var o=layui.$,a=layui.hint(),i="layui-tree-enter",r=function(e){this.options=e},t={arrow:["",""],checkbox:["",""],radio:["",""],branch:["",""],leaf:""};r.prototype.init=function(e){var o=this;e.addClass("layui-box layui-tree"),o.options.skin&&e.addClass("layui-tree-skin-"+o.options.skin),o.tree(e),o.on(e)},r.prototype.tree=function(e,a){var i=this,r=i.options,n=a||r.nodes;layui.each(n,function(a,n){var l=n.children&&n.children.length>0,c=o('
      '),s=o(["
    • ",function(){return l?''+(n.spread?t.arrow[1]:t.arrow[0])+"":""}(),function(){return r.check?''+("checkbox"===r.check?t.checkbox[0]:"radio"===r.check?t.radio[0]:"")+"":""}(),function(){return'"+(''+(l?n.spread?t.branch[1]:t.branch[0]:t.leaf)+"")+(""+(n.name||"未命名")+"")}(),"
    • "].join(""));l&&(s.append(c),i.tree(c,n.children)),e.append(s),"function"==typeof r.click&&i.click(s,n),i.spread(s,n),r.drag&&i.drag(s,n)})},r.prototype.click=function(e,o){var a=this,i=a.options;e.children("a").on("click",function(e){layui.stope(e),i.click(o)})},r.prototype.spread=function(e,o){var a=this,i=(a.options,e.children(".layui-tree-spread")),r=e.children("ul"),n=e.children("a"),l=function(){e.data("spread")?(e.data("spread",null),r.removeClass("layui-show"),i.html(t.arrow[0]),n.find(".layui-icon").html(t.branch[0])):(e.data("spread",!0),r.addClass("layui-show"),i.html(t.arrow[1]),n.find(".layui-icon").html(t.branch[1]))};r[0]&&(i.on("click",l),n.on("dblclick",l))},r.prototype.on=function(e){var a=this,r=a.options,t="layui-tree-drag";e.find("i").on("selectstart",function(e){return!1}),r.drag&&o(document).on("mousemove",function(e){var i=a.move;if(i.from){var r=(i.to,o('
      '));e.preventDefault(),o("."+t)[0]||o("body").append(r);var n=o("."+t)[0]?o("."+t):r;n.addClass("layui-show").html(i.from.elem.children("a").html()),n.css({left:e.pageX+10,top:e.pageY+10})}}).on("mouseup",function(){var e=a.move;e.from&&(e.from.elem.children("a").removeClass(i),e.to&&e.to.elem.children("a").removeClass(i),a.move={},o("."+t).remove())})},r.prototype.move={},r.prototype.drag=function(e,a){var r=this,t=(r.options,e.children("a")),n=function(){var t=o(this),n=r.move;n.from&&(n.to={item:a,elem:e},t.addClass(i))};t.on("mousedown",function(){var o=r.move;o.from={item:a,elem:e}}),t.on("mouseenter",n).on("mousemove",n).on("mouseleave",function(){var e=o(this),a=r.move;a.from&&(delete a.to,e.removeClass(i))})},e("tree",function(e){var i=new r(e=e||{}),t=o(e.elem);return t[0]?void i.init(t):a.error("layui.tree 没有找到"+e.elem+"元素")})}); -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/lay/modules/upload.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.4.5 MIT License By https://www.layui.com */ 2 | ;layui.define("layer",function(e){"use strict";var i=layui.$,t=layui.layer,n=layui.hint(),a=layui.device(),o={config:{},set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,r,e,i)}},l=function(){var e=this;return{upload:function(i){e.upload.call(e,i)},config:e.config}},r="upload",u="layui-upload-file",c="layui-upload-form",f="layui-upload-iframe",s="layui-upload-choose",p=function(e){var t=this;t.config=i.extend({},t.config,o.config,e),t.render()};p.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",field:"file",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},p.prototype.render=function(e){var t=this,e=t.config;e.elem=i(e.elem),e.bindAction=i(e.bindAction),t.file(),t.events()},p.prototype.file=function(){var e=this,t=e.config,n=e.elemFile=i(['"].join("")),o=t.elem.next();(o.hasClass(u)||o.hasClass(c))&&o.remove(),a.ie&&a.ie<10&&t.elem.wrap('
      '),e.isFile()?(e.elemFile=t.elem,t.field=t.elem[0].name):t.elem.after(n),a.ie&&a.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,t=e.config,n=i(''),a=i(['
      ',"
      "].join(""));i("#"+f)[0]||i("body").append(n),t.elem.next().hasClass(c)||(e.elemFile.wrap(a),t.elem.next("."+c).append(function(){var e=[];return layui.each(t.data,function(i,t){t="function"==typeof t?t():t,e.push('')}),e.join("")}()))},p.prototype.msg=function(e){return t.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},p.prototype.preview=function(e){var i=this;window.FileReader&&layui.each(i.chooseFiles,function(i,t){var n=new FileReader;n.readAsDataURL(t),n.onload=function(){e&&e(i,t,this.result)}})},p.prototype.upload=function(e,t){var n,o=this,l=o.config,r=o.elemFile[0],u=function(){var t=0,n=0,a=e||o.files||o.chooseFiles||r.files,u=function(){l.multiple&&t+n===o.fileLength&&"function"==typeof l.allDone&&l.allDone({total:o.fileLength,successful:t,aborted:n})};layui.each(a,function(e,a){var r=new FormData;r.append(l.field,a),layui.each(l.data,function(e,i){i="function"==typeof i?i():i,r.append(e,i)}),i.ajax({url:l.url,type:"post",data:r,contentType:!1,processData:!1,dataType:"json",headers:l.headers||{},success:function(i){t++,d(e,i),u()},error:function(){n++,o.msg("请求上传接口出现异常"),m(e),u()}})})},c=function(){var e=i("#"+f);o.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var i,t=e.contents().find("body");try{i=t.text()}catch(n){o.msg("获取上传后的响应信息出现异常"),clearInterval(p.timer),m()}i&&(clearInterval(p.timer),t.html(""),d(0,i))},30)},d=function(e,i){if(o.elemFile.next("."+s).remove(),r.value="","object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},o.msg("请对上传接口返回有效JSON")}"function"==typeof l.done&&l.done(i,e||0,function(e){o.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){o.upload(e)})},h=l.exts,v=function(){var i=[];return layui.each(e||o.chooseFiles,function(e,t){i.push(t.name)}),i}(),g={preview:function(e){o.preview(e)},upload:function(e,i){var t={};t[e]=i,o.upload(t)},pushFile:function(){return o.files=o.files||{},layui.each(o.chooseFiles,function(e,i){o.files[e]=i}),o.files},resetFile:function(e,i,t){var n=new File([i],t);o.files=o.files||{},o.files[e]=n}},y=function(){if("choose"!==t&&!l.auto||(l.choose&&l.choose(g),"choose"!==t))return l.before&&l.before(g),a.ie?a.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\/\\]+\..+/g)||[]||"":v,0!==v.length){switch(l.accept){case"file":if(h&&!RegExp("\\w\\.("+h+")$","i").test(escape(v)))return o.msg("选择的文件中包含不支持的格式"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(v)))return o.msg("选择的视频中包含不支持的格式"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(v)))return o.msg("选择的音频中包含不支持的格式"),r.value="";break;default:if(layui.each(v,function(e,i){RegExp("\\w\\.("+(h||"jpg|png|gif|bmp|jpeg$")+")","i").test(escape(i))||(n=!0)}),n)return o.msg("选择的图片中包含不支持的格式"),r.value=""}if(o.fileLength=function(){var i=0,t=e||o.files||o.chooseFiles||r.files;return layui.each(t,function(){i++}),i}(),l.number&&o.fileLength>l.number)return o.msg("同时最多只能上传的数量为:"+l.number);if(l.size>0&&!(a.ie&&a.ie<10)){var F;if(layui.each(o.chooseFiles,function(e,i){if(i.size>1024*l.size){var t=l.size/1024;t=t>=1?t.toFixed(2)+"MB":l.size+"KB",r.value="",F=t}}),F)return o.msg("文件不能超过"+F)}y()}},p.prototype.events=function(){var e=this,t=e.config,o=function(i){e.chooseFiles={},layui.each(i,function(i,t){var n=(new Date).getTime();e.chooseFiles[n+"-"+i]=t})},l=function(i,n){var a=e.elemFile,o=i.length>1?i.length+"个文件":(i[0]||{}).name||a[0].value.match(/[^\/\\]+\..+/g)||[]||"";a.next().hasClass(s)&&a.next().remove(),e.upload(null,"choose"),e.isFile()||t.choose||a.after(''+o+"")};t.elem.off("upload.start").on("upload.start",function(){var a=i(this),o=a.attr("lay-data");if(o)try{o=new Function("return "+o)(),e.config=i.extend({},t,o)}catch(l){n.error("Upload element property lay-data configuration item has a syntax error: "+o)}e.config.item=a,e.elemFile[0].click()}),a.ie&&a.ie<10||t.elem.off("upload.over").on("upload.over",function(){var e=i(this);e.attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){var e=i(this);e.removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(n,a){var r=i(this),u=a.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),o(u),t.auto?e.upload(u):l(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var i=this.files||[];o(i),t.auto?e.upload():l(i)}),t.bindAction.off("upload.action").on("upload.action",function(){e.upload()}),t.elem.data("haveEvents")||(e.elemFile.on("change",function(){i(this).trigger("upload.change")}),t.elem.on("click",function(){e.isFile()||i(this).trigger("upload.start")}),t.drag&&t.elem.on("dragover",function(e){e.preventDefault(),i(this).trigger("upload.over")}).on("dragleave",function(e){i(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),i(this).trigger("upload.drop",e)}),t.bindAction.on("click",function(){i(this).trigger("upload.action")}),t.elem.data("haveEvents",!0))},o.render=function(e){var i=new p(e);return l.call(i)},e(r,o)}); -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/lay/modules/util.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.4.5 MIT License By https://www.layui.com */ 2 | ;layui.define("jquery",function(t){"use strict";var e=layui.$,i={fixbar:function(t){var i,a,n="layui-fixbar",r="layui-fixbar-top",o=e(document),l=e("body");t=e.extend({showHeight:200},t),t.bar1=t.bar1===!0?"":t.bar1,t.bar2=t.bar2===!0?"":t.bar2,t.bgcolor=t.bgcolor?"background-color:"+t.bgcolor:"";var c=[t.bar1,t.bar2,""],g=e(['
        ',t.bar1?'
      • '+c[0]+"
      • ":"",t.bar2?'
      • '+c[1]+"
      • ":"",'
      • '+c[2]+"
      • ","
      "].join("")),s=g.find("."+r),u=function(){var e=o.scrollTop();e>=t.showHeight?i||(s.show(),i=1):i&&(s.hide(),i=0)};e("."+n)[0]||("object"==typeof t.css&&g.css(t.css),l.append(g),u(),g.find("li").on("click",function(){var i=e(this),a=i.attr("lay-type");"top"===a&&e("html,body").animate({scrollTop:0},200),t.click&&t.click.call(this,a)}),o.on("scroll",function(){clearTimeout(a),a=setTimeout(function(){u()},100)}))},countdown:function(t,e,i){var a=this,n="function"==typeof e,r=new Date(t).getTime(),o=new Date(!e||n?(new Date).getTime():e).getTime(),l=r-o,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];n&&(i=e);var g=setTimeout(function(){a.countdown(t,o+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],e,g),l<=0&&clearTimeout(g),g},timeAgo:function(t,e){var i=this,a=[[],[]],n=(new Date).getTime()-new Date(t).getTime();return n>6912e5?(n=new Date(t),a[0][0]=i.digit(n.getFullYear(),4),a[0][1]=i.digit(n.getMonth()+1),a[0][2]=i.digit(n.getDate()),e||(a[1][0]=i.digit(n.getHours()),a[1][1]=i.digit(n.getMinutes()),a[1][2]=i.digit(n.getSeconds())),a[0].join("-")+" "+a[1].join(":")):n>=864e5?(n/1e3/60/60/24|0)+"天前":n>=36e5?(n/1e3/60/60|0)+"小时前":n>=12e4?(n/1e3/60|0)+"分钟前":n<0?"未来":"刚刚"},digit:function(t,e){var i="";t=String(t),e=e||2;for(var a=t.length;a/g,">").replace(/'/g,"'").replace(/"/g,""")}};!function(t,e,i){"$:nomunge";function a(){n=e[l](function(){r.each(function(){var e=t(this),i=e.width(),a=e.height(),n=t.data(this,g);(i!==n.w||a!==n.h)&&e.trigger(c,[n.w=i,n.h=a])}),a()},o[s])}var n,r=t([]),o=t.resize=t.extend(t.resize,{}),l="setTimeout",c="resize",g=c+"-special-event",s="delay",u="throttleWindow";o[s]=250,o[u]=!0,t.event.special[c]={setup:function(){if(!o[u]&&this[l])return!1;var e=t(this);r=r.add(e),t.data(this,g,{w:e.width(),h:e.height()}),1===r.length&&a()},teardown:function(){if(!o[u]&&this[l])return!1;var e=t(this);r=r.not(e),e.removeData(g),r.length||clearTimeout(n)},add:function(e){function a(e,a,r){var o=t(this),l=t.data(this,g)||{};l.w=a!==i?a:o.width(),l.h=r!==i?r:o.height(),n.apply(this,arguments)}if(!o[u]&&this[l])return!1;var n;return t.isFunction(e)?(n=e,a):(n=e.handler,void(e.handler=a))}}}(e,window),t("util",i)}); -------------------------------------------------------------------------------- /src/main/resources/static/assets/libs/layui/layui.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.4.5 MIT License By https://www.layui.com */ 2 | ;!function(e){"use strict";var t=document,o={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.4.5"},r=function(){var e=t.currentScript?t.currentScript.src:function(){for(var e,o=t.scripts,n=o.length-1,r=n;r>0;r--)if("interactive"===o[r].readyState){e=o[r].src;break}return e||o[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),i=function(t){e.console&&console.error&&console.error("Layui hint: "+t)},a="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u={layer:"modules/layer",laydate:"modules/laydate",laypage:"modules/laypage",laytpl:"modules/laytpl",layim:"modules/layim",layedit:"modules/layedit",form:"modules/form",upload:"modules/upload",tree:"modules/tree",table:"modules/table",element:"modules/element",rate:"modules/rate",colorpicker:"modules/colorpicker",slider:"modules/slider",carousel:"modules/carousel",flow:"modules/flow",util:"modules/util",code:"modules/code",jquery:"modules/jquery",mobile:"modules/mobile","layui.all":"../layui.all"};n.prototype.cache=o,n.prototype.define=function(e,t){var n=this,r="function"==typeof e,i=function(){var e=function(e,t){layui[e]=t,o.status[e]=!0};return"function"==typeof t&&t(function(n,r){e(n,r),o.callback[n]=function(){t(e)}}),this};return r&&(t=e,e=[]),layui["layui.all"]||!layui["layui.all"]&&layui["layui.mobile"]?i.call(n):(n.use(e,i),n)},n.prototype.use=function(e,n,l){function s(e,t){var n="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===e.type||n.test((e.currentTarget||e.srcElement).readyState))&&(o.modules[f]=t,d.removeChild(v),function r(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void(o.status[f]?c():setTimeout(r,4))}())}function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):"function"==typeof n&&n.apply(layui,l)}var y=this,p=o.dir=o.dir?o.dir:r,d=t.getElementsByTagName("head")[0];e="string"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(y.each(e,function(t,o){"jquery"===o&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var f=e[0],m=0;if(l=l||[],o.host=o.host||(p.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===e.length||layui["layui.all"]&&u[f]||!layui["layui.all"]&&layui["layui.mobile"]&&u[f])return c(),y;if(o.modules[f])!function g(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void("string"==typeof o.modules[f]&&o.status[f]?c():setTimeout(g,4))}();else{var v=t.createElement("script"),h=(u[f]?p+"lay/":/^\{\/\}/.test(y.modules[f])?"":o.base||"")+(y.modules[f]||f)+".js";h=h.replace(/^\{\/\}/,""),v.async=!0,v.charset="utf-8",v.src=h+function(){var e=o.version===!0?o.v||(new Date).getTime():o.version||"";return e?"?v="+e:""}(),d.appendChild(v),!v.attachEvent||v.attachEvent.toString&&v.attachEvent.toString().indexOf("[native code")<0||a?v.addEventListener("load",function(e){s(e,h)},!1):v.attachEvent("onreadystatechange",function(e){s(e,h)}),o.modules[f]=h}return y},n.prototype.getStyle=function(t,o){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](o)},n.prototype.link=function(e,n,r){var a=this,u=t.createElement("link"),l=t.getElementsByTagName("head")[0];"string"==typeof n&&(r=n);var s=(r||e).replace(/\.|\//g,""),c=u.id="layuicss-"+s,y=0;return u.rel="stylesheet",u.href=e+(o.debug?"?v="+(new Date).getTime():""),u.media="all",t.getElementById(c)||l.appendChild(u),"function"!=typeof n?a:(function p(){return++y>1e3*o.timeout/100?i(e+" timeout"):void(1989===parseInt(a.getStyle(t.getElementById(c),"width"))?function(){n()}():setTimeout(p,100))}(),a)},o.callback={},n.prototype.factory=function(e){if(layui[e])return"function"==typeof o.callback[e]?o.callback[e]:null},n.prototype.addcss=function(e,t,n){return layui.link(o.dir+"css/"+e,t,n)},n.prototype.img=function(e,t,o){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,"function"==typeof t&&t(n)},void(n.onerror=function(e){n.onerror=null,"function"==typeof o&&o(e)}))},n.prototype.config=function(e){e=e||{};for(var t in e)o[t]=e[t];return this},n.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),n.prototype.extend=function(e){var t=this;e=e||{};for(var o in e)t[o]||t.modules[o]?i("模块名 "+o+" 已被占用"):t.modules[o]=e[o];return t},n.prototype.router=function(e){var t=this,e=e||location.hash,o={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(e)?(e=e.replace(/^#\//,""),o.href="/"+e,e=e.replace(/([^#])(#.*$)/,"$1").split("/")||[],t.each(e,function(e,t){/^\w+=/.test(t)?function(){t=t.split("="),o.search[t[0]]=t[1]}():o.path.push(t)}),o):o},n.prototype.data=function(t,o,n){if(t=t||"layui",n=n||localStorage,e.JSON&&e.JSON.parse){if(null===o)return delete n[t];o="object"==typeof o?o:{key:o};try{var r=JSON.parse(n[t])}catch(i){var r={}}return"value"in o&&(r[o.key]=o.value),o.remove&&delete r[o.key],n[t]=JSON.stringify(r),o.key?r[o.key]:r}},n.prototype.sessionData=function(e,t){return this.data(e,t,sessionStorage)},n.prototype.device=function(t){var o=navigator.userAgent.toLowerCase(),n=function(e){var t=new RegExp(e+"/([^\\s\\_\\-]+)");return e=(o.match(t)||[])[1],e||!1},r={os:function(){return/windows/.test(o)?"windows":/linux/.test(o)?"linux":/iphone|ipod|ipad|ios/.test(o)?"ios":/mac/.test(o)?"mac":void 0}(),ie:function(){return!!(e.ActiveXObject||"ActiveXObject"in e)&&((o.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:n("micromessenger")};return t&&!r[t]&&(r[t]=n(t)),r.android=/android/.test(o),r.ios="ios"===r.os,r},n.prototype.hint=function(){return{error:i}},n.prototype.each=function(e,t){var o,n=this;if("function"!=typeof t)return n;if(e=e||[],e.constructor===Object){for(o in e)if(t.call(e[o],o,e[o]))break}else for(o=0;oi?1:r",{class:"tag"}).append(a("",{class:"tag-text"}).text(g),a(" 32 | 33 |
      34 | 35 | 36 | 37 | 38 | 39 | 96 | 97 | -------------------------------------------------------------------------------- /src/test/java/com/dh/tourism/TourismApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.dh.tourism; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.boot.test.context.SpringBootTest; 6 | import org.springframework.test.context.junit4.SpringRunner; 7 | 8 | @RunWith(SpringRunner.class) 9 | @SpringBootTest 10 | public class TourismApplicationTests { 11 | 12 | @Test 13 | public void contextLoads() { 14 | } 15 | 16 | } 17 | --------------------------------------------------------------------------------