diff --git a/src/demo/backend/.gitignore b/src/demo/backend/.gitignore new file mode 100644 index 00000000..549e00a2 --- /dev/null +++ b/src/demo/backend/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/src/demo/backend/.mvn/wrapper/MavenWrapperDownloader.java b/src/demo/backend/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 00000000..a45eb6ba --- /dev/null +++ b/src/demo/backend/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,118 @@ +/* + * Copyright 2007-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.net.*; +import java.io.*; +import java.nio.channels.*; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.6"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if (mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if (mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if (!outputFile.getParentFile().exists()) { + if (!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/src/demo/backend/.mvn/wrapper/maven-wrapper.jar b/src/demo/backend/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 00000000..2cc7d4a5 Binary files /dev/null and b/src/demo/backend/.mvn/wrapper/maven-wrapper.jar differ diff --git a/src/demo/backend/.mvn/wrapper/maven-wrapper.properties b/src/demo/backend/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 00000000..ffdc10e5 --- /dev/null +++ b/src/demo/backend/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar diff --git a/src/demo/backend/mvnw b/src/demo/backend/mvnw new file mode 100644 index 00000000..3c8a5537 --- /dev/null +++ b/src/demo/backend/mvnw @@ -0,0 +1,322 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ]; then + + if [ -f /etc/mavenrc ]; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ]; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false +darwin=false +mingw=false +case "$(uname)" in +CYGWIN*) cygwin=true ;; +MINGW*) mingw=true ;; +Darwin*) + darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="$(/usr/libexec/java_home)" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ]; then + if [ -r /etc/gentoo-release ]; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +if [ -z "$M2_HOME" ]; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' >/dev/null; then + PRG="$link" + else + PRG="$(dirname "$PRG")/$link" + fi + done + + saveddir=$(pwd) + + M2_HOME=$(dirname "$PRG")/.. + + # make it fully qualified + M2_HOME=$(cd "$M2_HOME" && pwd) + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --unix "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw; then + [ -n "$M2_HOME" ] && + M2_HOME="$( ( + cd "$M2_HOME" + pwd + ))" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="$( ( + cd "$JAVA_HOME" + pwd + ))" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr \"$javaExecutable\" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! $(expr "$readLink" : '\([^ ]*\)') = "no" ]; then + if $darwin; then + javaHome="$(dirname \"$javaExecutable\")" + javaExecutable="$(cd \"$javaHome\" && pwd -P)/javac" + else + javaExecutable="$(readlink -f \"$javaExecutable\")" + fi + javaHome="$(dirname \"$javaExecutable\")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ]; then + if [ -n "$JAVA_HOME" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$(which java)" + fi +fi + +if [ ! -x "$JAVACMD" ]; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ]; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ]; then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ]; do + if [ -d "$wdir"/.mvn ]; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$( + cd "$wdir/.." + pwd + ) + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' <"$1")" + fi +} + +BASE_DIR=$(find_maven_basedir "$(pwd)") +if [ -z "$BASE_DIR" ]; then + exit 1 +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in wrapperUrl) + jarUrl="$value" + break + ;; + esac + done <"$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl >/dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=$(cygpath --path --windows "$M2_HOME") + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/src/demo/backend/mvnw.cmd b/src/demo/backend/mvnw.cmd new file mode 100644 index 00000000..c8d43372 --- /dev/null +++ b/src/demo/backend/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/src/demo/backend/pom.xml b/src/demo/backend/pom.xml new file mode 100644 index 00000000..db43e84e --- /dev/null +++ b/src/demo/backend/pom.xml @@ -0,0 +1,126 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.5.0 + + + com.example + demo + 0.0.1-SNAPSHOT + demo + recommend project for Spring Boot + + 1.8 + + + + + com.baomidou + mybatis-plus-boot-starter + 3.3.1.tmp + + + mysql + mysql-connector-java + 8.0.18 + + + org.projectlombok + lombok + 1.18.10 + + + + org.apache.velocity + velocity-engine-core + 2.2 + + + + com.baomidou + mybatis-plus-generator + 3.3.1.tmp + + + + com.spring4all + swagger-spring-boot-starter + 1.7.1.RELEASE + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-logging + + + + org.springframework.boot + spring-boot-starter-aop + + + + org.apache.shiro + shiro-spring + 1.4.0 + + + + com.alibaba + fastjson + 1.2.76 + + + + redis.clients + jedis + 3.6.3 + + + org.springframework.data + spring-data-redis + 2.5.3 + + + org.springframework.boot + spring-boot-starter-data-redis + 1.4.1.RELEASE + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + src/main/java + + **/*.xml + + + + src/main/resources + + + + diff --git a/src/demo/backend/src/main/java/com/example/demo/DemoApplication.java b/src/demo/backend/src/main/java/com/example/demo/DemoApplication.java new file mode 100644 index 00000000..d19a89d2 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/DemoApplication.java @@ -0,0 +1,15 @@ +package com.example.demo; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; + +@SpringBootApplication +@MapperScan("com.example.demo.mapper") +@EnableCaching +public class DemoApplication { + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class, args); + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/config/CORSAuthenticationFilter.java b/src/demo/backend/src/main/java/com/example/demo/config/CORSAuthenticationFilter.java new file mode 100644 index 00000000..b85a75d1 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/config/CORSAuthenticationFilter.java @@ -0,0 +1,50 @@ +package com.example.demo.config; + +import org.apache.shiro.web.filter.authc.FormAuthenticationFilter; +import org.springframework.http.HttpStatus; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +// 过滤OPTIONS请求,继承shiro的form表单过滤器,对OPTIONS请求进行过滤,复杂请求中OPTIONS请求不带token信息,不能通过shiro认证 +public class CORSAuthenticationFilter extends FormAuthenticationFilter { + + private static final String REQUEST_TYPE = "OPTIONS"; + + public CORSAuthenticationFilter(){ + super(); + } + + @Override + public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue){ + if (((HttpServletRequest) request).getMethod().toUpperCase().equals(REQUEST_TYPE)) { + return true; + } + return super.isAccessAllowed(request, response, mappedValue); + } + + @Override + protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception{ + HttpServletResponse res = (HttpServletResponse)response; + HttpServletRequest req = (HttpServletRequest)request; + res.addHeader("Access-Control-Allow-Origin", req.getHeader("origin")); + setHeader(req,res); + res.setStatus(HttpServletResponse.SC_OK); + res.setCharacterEncoding("UTF-8"); + return false; + } + // 为response设置header,实现跨域 + private void setHeader(HttpServletRequest request,HttpServletResponse response){ + // 跨域的header设置 + response.setHeader("Access-control-Allow-Origin", request.getHeader("Origin")); + response.setHeader("Access-Control-Allow-Methods", request.getMethod()); + response.setHeader("Access-Control-Allow-Credentials", "true"); + response.setHeader("Access-Control-Allow-Headers", request.getHeader("Access-Control-Request-Headers")); + // 防止乱码,适用于传输JSON数据 + // Content-Type, Content-Length, Authorization, Accept, X-Requested-With, yourHeaderField + response.setHeader("Content-Type","application/json;charset=UTF-8"); + response.setStatus(HttpStatus.OK.value()); + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/config/CorsConfig.java b/src/demo/backend/src/main/java/com/example/demo/config/CorsConfig.java new file mode 100644 index 00000000..96be83f7 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/config/CorsConfig.java @@ -0,0 +1,32 @@ +package com.example.demo.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; + +// 跨域访问控制 +@Configuration +public class CorsConfig { + private CorsConfiguration buildConfig(){ + CorsConfiguration corsConfiguration=new CorsConfiguration(); + // 允许任何域名使用 + corsConfiguration.addAllowedOriginPattern("*"); + // 允许任何请求头使用 + corsConfiguration.addAllowedHeader("*"); + // 允许任何方法 + corsConfiguration.addAllowedMethod("*"); + // 允许携带信息 + corsConfiguration.setAllowCredentials(true); + return corsConfiguration; + } + + @Bean + public CorsFilter corsFilter(){ + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + // 对接口配置跨域设置 + source.registerCorsConfiguration("/**", buildConfig()); + return new CorsFilter(source); + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/config/EnceladusShiroRealm.java b/src/demo/backend/src/main/java/com/example/demo/config/EnceladusShiroRealm.java new file mode 100644 index 00000000..cd2b398c --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/config/EnceladusShiroRealm.java @@ -0,0 +1,66 @@ +package com.example.demo.config; + +import com.example.demo.entity.Permission; +import com.example.demo.entity.Role; +import com.example.demo.entity.User; +import com.example.demo.service.UserService; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.SimpleAuthenticationInfo; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.SimpleAuthorizationInfo; +import org.apache.shiro.realm.AuthorizingRealm; +import org.apache.shiro.subject.PrincipalCollection; +import org.apache.shiro.util.ByteSource; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.ArrayList; +import java.util.List; + +public class EnceladusShiroRealm extends AuthorizingRealm { + + @Autowired + private UserService userService; + + // 进行权限校验时调用 + @Override + protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection){ + SimpleAuthorizationInfo simpleAuthorizationInfo=new SimpleAuthorizationInfo(); + String userName=(String) principalCollection.getPrimaryPrincipal(); + User user=userService.findAllUserInfoByUsername(userName); + List stringRoleList=new ArrayList<>(); + List stringPermissionList=new ArrayList<>(); + List roleList=user.getRoleList(); + + for(Role role:roleList){ + stringRoleList.add(role.getName()); + List permissionList=role.getPermissionList(); + for(Permission p:permissionList){ + if (null != p) { + stringPermissionList.add(p.getName()); + } + } + } + simpleAuthorizationInfo.addRoles(stringRoleList); + simpleAuthorizationInfo.addStringPermissions(stringPermissionList); + SecurityUtils.getSubject().getSession().setAttribute("roleList", stringRoleList); + return simpleAuthorizationInfo; + } + + // 登录校验调用 + @Override + protected SimpleAuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { + + String username=(String) token.getPrincipal(); + System.out.println("principal:"+username); + User user=userService.findAllUserInfoByUsername(username); + System.out.println("principal password:"+user.getPassWord()); + + String passWord=user.getPassWord(); + if(null==passWord|| "".equals(passWord)){ + return null; + } + return new SimpleAuthenticationInfo(user.getUserName(), user.getPassWord(), ByteSource.Util.bytes(user.getSalt()), getName()); + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/config/ShiroConfig.java b/src/demo/backend/src/main/java/com/example/demo/config/ShiroConfig.java new file mode 100644 index 00000000..3294a5f0 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/config/ShiroConfig.java @@ -0,0 +1,86 @@ +package com.example.demo.config; + +import com.example.demo.util.PasswordHelper; +import org.apache.shiro.authc.credential.HashedCredentialsMatcher; +import org.apache.shiro.mgt.SecurityManager; +import org.apache.shiro.session.mgt.SessionManager; +import org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO; +import org.apache.shiro.spring.web.ShiroFilterFactoryBean; +import org.apache.shiro.web.mgt.DefaultWebSecurityManager; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.servlet.Filter; +import java.util.LinkedHashMap; +import java.util.Map; + +@Configuration +public class ShiroConfig { + + @Bean + public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager){ + ShiroFilterFactoryBean shiroFilterFactoryBean=new ShiroFilterFactoryBean(); + shiroFilterFactoryBean.setSecurityManager(securityManager); + + Map customFilterMap = new LinkedHashMap<>(); + customFilterMap.put("corsAuthenticationFilter",new CORSAuthenticationFilter()); + shiroFilterFactoryBean.setFilters(customFilterMap); + + Map filterChainDefinitionMap=new LinkedHashMap<>(); + + //author url定义必须通过认证才可以访问 + //anon url可以匿名访问 + shiroFilterFactoryBean.setLoginUrl("/login"); + shiroFilterFactoryBean.setUnauthorizedUrl("/unauthor"); + shiroFilterFactoryBean.setSuccessUrl("/home/index"); + + // 过滤器 按照顺序进行拦截 + // author 所有已登陆用户可访问 + // roles 有指定角色的用户可访问,通过[ ]指定具体角色,这里的角色名称与数据库中配置一致 + // perms 有指定权限的用户可访问,通过[ ]指定具体权限,这里的权限名称与数据库中配置一致 + // anon 所有用户可访问,通常作为指定页面的静态资源时使用 + filterChainDefinitionMap.put("/*", "anon"); + filterChainDefinitionMap.put("/logout","logout"); + filterChainDefinitionMap.put("/login","anon"); + filterChainDefinitionMap.put("/cart","roles[member]"); + filterChainDefinitionMap.put("/myOrder","roles[member]"); + shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); + return shiroFilterFactoryBean; + } + + @Bean + public HashedCredentialsMatcher hashedCredentialsMatcher(){ + HashedCredentialsMatcher hashedCredentialsMatcher=new HashedCredentialsMatcher(); + hashedCredentialsMatcher.setHashAlgorithmName(PasswordHelper.ALGORITHM_NAME); + hashedCredentialsMatcher.setHashIterations(PasswordHelper.HASH_ITERATIONS); + return hashedCredentialsMatcher; + } + + @Bean + public EnceladusShiroRealm shiroRealm(){ + EnceladusShiroRealm enceladusShiroRealm=new EnceladusShiroRealm(); + enceladusShiroRealm.setCredentialsMatcher(hashedCredentialsMatcher()); + return enceladusShiroRealm; + } + + @Bean + public SecurityManager securityManager(){ + DefaultWebSecurityManager securityManager=new DefaultWebSecurityManager(); + securityManager.setRealm(shiroRealm()); + securityManager.setSessionManager(sessionManager()); + return securityManager; + } + + @Bean + public PasswordHelper passwordHelper(){ + return new PasswordHelper(); + } + + // 将重写的shiro session注册 + @Bean + public SessionManager sessionManager(){ + ShiroSession shiroSession=new ShiroSession(); + shiroSession.setSessionDAO(new EnterpriseCacheSessionDAO()); + return shiroSession; + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/config/ShiroSession.java b/src/demo/backend/src/main/java/com/example/demo/config/ShiroSession.java new file mode 100644 index 00000000..ec1f75ad --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/config/ShiroSession.java @@ -0,0 +1,39 @@ +package com.example.demo.config; + +import org.apache.shiro.web.servlet.ShiroHttpServletRequest; +import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; +import org.apache.shiro.web.util.WebUtils; +import org.springframework.util.StringUtils; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import java.io.Serializable; + +public class ShiroSession extends DefaultWebSessionManager { + // 定义的请求头中使用的标记key,用来传递token + private static final String AUTH_TOKEN = "authToken"; + + private static final String REFERENCED_SESSION_ID_SOURCE = "Stateless request"; + + public ShiroSession(){ + super(); + } + + @Override + protected Serializable getSessionId(ServletRequest request, ServletResponse response){ + // 获取请求头中对token,值即为sessionId + String sessionId = WebUtils.toHttp(request).getHeader(AUTH_TOKEN); + System.out.println("请求头中的token:"+sessionId); + if(StringUtils.isEmpty(sessionId)){ + // 没有携带token,根据父类方法获取sessionId + return super.getSessionId(request,response); + }else { + // 请求头中如果有authToken,则其值为sessionId + request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE, REFERENCED_SESSION_ID_SOURCE); + // sessionId + request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID, sessionId); + request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_IS_VALID, Boolean.TRUE); + return sessionId; + } + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/config/WebMvcConfig.java b/src/demo/backend/src/main/java/com/example/demo/config/WebMvcConfig.java new file mode 100644 index 00000000..5cf02b68 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/config/WebMvcConfig.java @@ -0,0 +1,15 @@ +package com.example.demo.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class WebMvcConfig implements WebMvcConfigurer { + // 配置图片路径 + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + // 和页面有关的图片放在项目的img目录下 + registry.addResourceHandler("/img/**").addResourceLocations("classpath:/img/"); + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/controller/CartItemController.java b/src/demo/backend/src/main/java/com/example/demo/controller/CartItemController.java new file mode 100644 index 00000000..87ca0b86 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/controller/CartItemController.java @@ -0,0 +1,115 @@ +package com.example.demo.controller; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.example.demo.entity.CartItem; +import com.example.demo.entity.Goods; +import com.example.demo.entity.User; +import com.example.demo.service.CartItemService; +import com.example.demo.service.GoodsService; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/cart") +public class CartItemController { + + @Autowired + private CartItemService cartItemService; + + @Autowired + private GoodsService goodsService; + + // 添加租赁物品到购物车 + @RequestMapping("/add") + @Transactional(rollbackFor = {RuntimeException.class, Error.class}) + public String add(@RequestBody Map map){ + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + if(null!=user){ + Integer goodsId= (Integer) map.get("goodsId"); + QueryWrapper goodsQueryWrapper=new QueryWrapper<>(); + goodsQueryWrapper.eq("goods_id",goodsId); + Goods goods=goodsService.getOne(goodsQueryWrapper); + System.out.println(goods); + CartItem cartItem=new CartItem(); + cartItem.setUserId(user.getUserId()); + cartItem.setGoodsId(goods.getGoodsId()); + cartItem.setGoodsCount(1); + cartItem.setIsDeleted(0); + cartItem.setPrice(goods.getGoodsPrice()); + cartItem.setGoodsCoverImg(goods.getGoodsCoverImg()); + cartItem.setGoodsName(goods.getGoodsName()); + System.out.println(cartItem); + cartItemService.save(cartItem); + return cartItem.getCartItemId().toString(); + }else { + return "fail"; + } + } + + // 读取购物车 + @RequestMapping("/list") + public String list(){ + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + if(null!=user){ + Integer id=user.getUserId(); + System.out.println("id:"+id); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("user_id",id); + List cartItemList=cartItemService.list(wrapper); + System.out.println(cartItemList.toString()); + return JSON.toJSONString(cartItemList); + }else { + return "fail"; + } + } + + // 删除购物车租赁物品 + @RequestMapping("/delete") + public String delete(@RequestBody Map map){ + Integer itemId= (Integer) map.get("cartItemId"); + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + if(null!=user){ + Integer id=user.getUserId(); + System.out.println("id:"+id); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.and(i->i.eq("user_id",id).eq("cart_item_id",itemId)); + boolean isDelete=cartItemService.remove(wrapper); + if(isDelete){ + return "success"; + }else { + return "fail"; + } + }else { + return "fail"; + } + } + + // 修改购物车项目 + @RequestMapping("/update") + public String update(@RequestBody CartItem cartItem){ + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + if(null!=user){ + Integer id=user.getUserId(); + Integer carItemId=cartItem.getCartItemId(); + System.out.println("id:"+id); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.and(i->i.eq("user_id",id).eq("cart_item_id", carItemId)); + boolean isUpdate=cartItemService.update(cartItem,wrapper); + if(isUpdate){ + return "success"; + }else { + return "fail"; + } + }else { + return "fail"; + } + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/controller/CategoryController.java b/src/demo/backend/src/main/java/com/example/demo/controller/CategoryController.java new file mode 100644 index 00000000..2bb6e63c --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/controller/CategoryController.java @@ -0,0 +1,45 @@ +package com.example.demo.controller; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.example.demo.entity.Category; +import com.example.demo.service.CategoryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/category") +public class CategoryController { + + @Autowired + private CategoryService categoryService; + + // 列出所有分类 + @RequestMapping("/list") + public String list(){ + QueryWrapper wrapper = new QueryWrapper<>(); + QueryWrapper childrenWrapper = new QueryWrapper<>(); + Map result=new HashMap<>(); + wrapper.eq("parent_id", 0); + List categoryParentList=categoryService.list(wrapper); + childrenWrapper.ne("parent_id", 0); + List categoryChildrenList=categoryService.list(childrenWrapper); + result.put("categoryParentList",categoryParentList); + result.put("categoryChildrenList",categoryChildrenList); + return JSON.toJSONString(result); + } + + // 列出所有子分类 + @RequestMapping("/listChildrenCategory") + public String listChildrenCategory(){ + QueryWrapper childrenWrapper = new QueryWrapper<>(); + childrenWrapper.eq("category_level", 2); + List categoryChildrenList=categoryService.list(childrenWrapper); + return JSON.toJSONString(categoryChildrenList); + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/controller/EntrustController.java b/src/demo/backend/src/main/java/com/example/demo/controller/EntrustController.java new file mode 100644 index 00000000..18c980b8 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/controller/EntrustController.java @@ -0,0 +1,83 @@ +package com.example.demo.controller; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.example.demo.entity.Entrust; +import com.example.demo.entity.User; +import com.example.demo.service.EntrustService; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/entrust") +public class EntrustController { + + @Autowired + private EntrustService entrustService; + + // 用户发布一个委托 + @RequestMapping("/add") + public String add(@RequestBody Map entrustMap){ + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + if(null!=user){ + Entrust entrust=new Entrust(); + entrust.setEGoodsName((String) entrustMap.get("eGoodsName")); + entrust.setEGoodsIntro((String) entrustMap.get("eGoodsIntro")); + entrust.setEGoodsCategory((Integer) entrustMap.get("eGoodsCategory")); + entrust.setEGoodsCoverImg((String) entrustMap.get("eGoodsCoverImg")); + entrust.setEGoodsCarousel((String) entrustMap.get("eGoodsCarousel")); + entrust.setEGoodsDetailContent((String) entrustMap.get("eGoodsDetailContent")); + entrust.setEGoodsPrice(Double.parseDouble((String) entrustMap.get("eGoodsPrice"))); + entrust.setEStockNum((Integer) entrustMap.get("eStockNum")); + System.out.println(entrust); + entrustService.save(entrust); + return entrust.getEntrustId().toString(); + }else { + return "fail"; + } + } + + // 列出所有委托 + @RequestMapping("/list") + public String list(){ + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + boolean isAdmin=SecurityUtils.getSubject().hasRole("admin"); + if(null!=user){ + if(isAdmin){ + List entrustList=entrustService.list(); + return JSON.toJSONString(entrustList); + }else { + return "fail"; + } + }else { + return "fail"; + } + } + + // 根据用户id列出委托 + @RequestMapping("/listById") + public String listById(@RequestBody Map map){ + Integer id= (Integer) map.get("entrustId"); + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + System.out.println("编辑委托:"+id); + boolean isAdmin=SecurityUtils.getSubject().hasRole("admin"); + if(null!=user){ + if(isAdmin){ + QueryWrapper entrustQueryWrapper = new QueryWrapper<>(); + entrustQueryWrapper.eq("entrust_id",id); + Entrust entrust=entrustService.getOne(entrustQueryWrapper); + return JSON.toJSONString(entrust); + }else { + return "fail"; + } + }else { + return "fail"; + } + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/controller/FileController.java b/src/demo/backend/src/main/java/com/example/demo/controller/FileController.java new file mode 100644 index 00000000..0740ec28 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/controller/FileController.java @@ -0,0 +1,55 @@ +package com.example.demo.controller; + +import com.example.demo.entity.User; +import org.apache.shiro.SecurityUtils; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.util.UUID; + +@RestController +@RequestMapping("/file") +public class FileController { + + @RequestMapping("/upload") + public String fileUpload(@RequestParam(value = "img") MultipartFile file){ + System.out.println("进入上传"); + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + System.out.println(user); + if(null!=user){ + if(file.isEmpty()){ + System.out.println("文件是空的"); + return "fail"; + } + System.out.println("有文件"); + // 文件名 + String fileName = file.getOriginalFilename(); + System.out.println(fileName); + // 后缀名 + // String suffixName = fileName.substring(fileName.lastIndexOf(".")); + // 上传后的路径 + String filePath = "/project/gitProject_recommend/src/demo/backend/target/classes/img/"; + // 新文件名 + UUID uuid=UUID.randomUUID(); + fileName = uuid + ".jpg"; + System.out.println(fileName); + File dest = new File(filePath + fileName); + if (!dest.getParentFile().exists()) { + dest.getParentFile().mkdirs(); + } + try { + file.transferTo(dest); + } catch (IOException e) { + e.printStackTrace(); + } + return uuid.toString(); + }else { + System.out.println("没有用户"); + } + return null; + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/controller/GoodsController.java b/src/demo/backend/src/main/java/com/example/demo/controller/GoodsController.java new file mode 100644 index 00000000..0359fd11 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/controller/GoodsController.java @@ -0,0 +1,93 @@ +package com.example.demo.controller; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.example.demo.entity.Goods; +import com.example.demo.entity.User; +import com.example.demo.service.EntrustService; +import com.example.demo.service.GoodsService; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/goods") +public class GoodsController { + + @Autowired + private GoodsService goodsService; + + @Autowired + private EntrustService entrustService; + + // 根据关键字搜索租赁物品 + @RequestMapping("/search") + @Cacheable(value = "platRedis",key = "#map") + public String search(@RequestBody Map map){ + String key= (String) map.get("key"); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.like("goods_name",key); + System.out.println(key); + List goodsList=goodsService.list(wrapper); + return JSON.toJSONString(goodsList); + } + + // 获取物品详情 + @RequestMapping("/detail") + public String detail(@RequestBody Map map){ + Integer key= (Integer) map.get("key"); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("goods_id",key); + System.out.println(key); + Goods goods=goodsService.getOne(wrapper); + return JSON.toJSONString(goods); + } + + // 从委托添加租赁物品 + @RequestMapping("/add") + @Transactional(rollbackFor = {RuntimeException.class, Error.class}) + public String add(@RequestBody Map map){ + Goods goods=JSON.parseObject(JSON.toJSONString(map.get("entrust")),Goods.class); + Double price=Double.valueOf((Integer)map.get("itPrice")); + Integer entrustId=(Integer)map.get("entrustId"); + goods.setGoodsPrice(price); + System.out.println(price); + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + boolean isAdmin=SecurityUtils.getSubject().hasRole("admin"); + if(null!=user){ + if(isAdmin){ + System.out.println(goods); + goods.setGoodsStatus(1); + goodsService.save(goods); + entrustService.removeById(entrustId); + return goods.getGoodsId().toString(); + }else { + return "not admin"; + } + }else { + return "fail"; + } + + } + + @RequestMapping("/searchByOrder") + public String searchByOrder(@RequestBody Map map){ + String key= (String) map.get("key"); + String order= (String) map.get("order"); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.like("goods_name",key); + wrapper.orderByAsc(order); + System.out.println(key); + List goodsList=goodsService.list(wrapper); + return JSON.toJSONString(goodsList); + } +} + diff --git a/src/demo/backend/src/main/java/com/example/demo/controller/HomeController.java b/src/demo/backend/src/main/java/com/example/demo/controller/HomeController.java new file mode 100644 index 00000000..a12efa67 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/controller/HomeController.java @@ -0,0 +1,91 @@ +package com.example.demo.controller; + +import com.example.demo.entity.User; +import com.example.demo.entity.UserRole; +import com.example.demo.service.UserRoleService; +import com.example.demo.service.UserService; +import com.example.demo.util.PasswordHelper; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.IncorrectCredentialsException; +import org.apache.shiro.authc.UnknownAccountException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.io.Serializable; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +@RestController +@RequestMapping("/home") +public class HomeController { + + @Autowired + private UserService userService; + + @Autowired + private UserRoleService userRoleService; + + @Autowired + public PasswordHelper passwordHelper; + + // 登录 + @RequestMapping("/login") + public String login(@RequestBody Map map){ + String userName= (String) map.get("userName"); + String passWord= (String) map.get("passWord"); + UsernamePasswordToken usernamePasswordToken=new UsernamePasswordToken(userName,passWord); + Subject subject= SecurityUtils.getSubject(); + try{ + System.out.println("执行login前:"); + subject.login(usernamePasswordToken); + }catch (IncorrectCredentialsException ice){ + return "password error!"; + }catch (UnknownAccountException uae){ + return "username error!"; + } + + User user=userService.findAllUserInfoByUsername(userName); + subject.getSession().setAttribute("user",user); + Serializable tokenId = subject.getSession().getId(); + boolean isAdmin=SecurityUtils.getSubject().hasRole("admin"); + System.out.println(isAdmin); + System.out.println(SecurityUtils.getSubject().getSession().getAttribute("roleList")); + return String.valueOf(tokenId); + } + + // 注册 + @RequestMapping("/register") + @Transactional(rollbackFor = {RuntimeException.class, Error.class}) + public String register(@RequestBody User user){ + + System.out.println(user); + Date d = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + user.setCreateTime(sdf.format(d)); + passwordHelper.encryptPassword(user); + + userService.register(user); + UserRole userRole=new UserRole(); + userRole.setUserId(user.getUserId()); + userRole.setRoleId(1); + userRoleService.save(userRole); + if(null!=user.getUserId()){ + return "success"; + } + return "fail"; + } + + // 登出 + @RequestMapping("/logout") + public String register(){ + Subject subject = SecurityUtils.getSubject(); + subject.logout(); + return "logout success"; + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/controller/IndexConfigController.java b/src/demo/backend/src/main/java/com/example/demo/controller/IndexConfigController.java new file mode 100644 index 00000000..6333afe9 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/controller/IndexConfigController.java @@ -0,0 +1,35 @@ +package com.example.demo.controller; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.example.demo.entity.IndexConfig; +import com.example.demo.service.IndexConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; +@RestController +@RequestMapping("/index-config") +public class IndexConfigController { + + @Autowired + private IndexConfigService indexConfigService; + + // 获取推荐列表 + @RequestMapping("/list") + public String list(@RequestBody Map map){ + Integer indexType= (Integer) map.get("indexType"); + QueryWrapper indexConfigQueryWrapper=new QueryWrapper<>(); + indexConfigQueryWrapper.eq("config_type",indexType); + List indexConfigList= indexConfigService.list(indexConfigQueryWrapper); + if(null!=indexConfigList){ + return JSON.toJSONString(indexConfigList); + }else { + return "fail"; + } + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/controller/OrderController.java b/src/demo/backend/src/main/java/com/example/demo/controller/OrderController.java new file mode 100644 index 00000000..3d808e47 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/controller/OrderController.java @@ -0,0 +1,151 @@ +package com.example.demo.controller; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.example.demo.entity.CartItem; +import com.example.demo.entity.Order; +import com.example.demo.entity.OrderItem; +import com.example.demo.entity.User; +import com.example.demo.service.CartItemService; +import com.example.demo.service.OrderItemService; +import com.example.demo.service.OrderService; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Random; + +@RestController +@RequestMapping("/order") +public class OrderController { + + @Autowired + private OrderService orderService; + + @Autowired + private OrderItemService orderItemService; + + @Autowired + private CartItemService cartItemService; + + // 添加订单 + @RequestMapping("/add") + public String add(@RequestBody Order order){ + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + if(null!=user){ + System.out.println(order); + order.setUserId(user.getUserId()); + order.setUserAddress(user.getAddress()); + order.setUserName(user.getUserName()); + order.setUserPhone(user.getPhone()); + order.setOrderNum(createNum()); + orderService.save(order); + return order.getOrderId().toString(); + }else { + return "fail"; + } + } + + // 根据用户列出订单列表 + @RequestMapping("/listByUser") + public String listByUser(){ + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + if(null!=user){ + System.out.println(user.getUserId()); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("user_id",user.getUserId()); + List orderList=orderService.list(wrapper); + for(Order order : orderList){ + if(null!=order.getOrderId()){ + QueryWrapper orderItemWrapper = new QueryWrapper<>(); + orderItemWrapper.eq("order_id",order.getOrderId()); + List orderItemList=orderItemService.list(orderItemWrapper); + order.setOrderItemList(orderItemList); + } + } + return JSON.toJSONString(orderList); + }else { + return "fail"; + } + } + + // 随机生成订单号 + private String createNum(){ + // 获取当前时间 + SimpleDateFormat dmDate = new SimpleDateFormat("yyyyMMddHHmmss"); + + // 定义随机数 + Random random = new Random(); + // 随机数长度位数 + int ran = random.nextInt(1000000); + + Date date = new Date(); + String dateran = dmDate.format(date); + String randomMath = dateran+ran; + return randomMath; + } + + // 从购物车直接下单 + @RequestMapping("/addOrderByCart") + @Transactional(rollbackFor = {RuntimeException.class, Error.class}) + public String addOrderByCart(@RequestBody Map map) throws ParseException { + List cartItemList=JSON.parseArray(JSON.toJSONString(map.get("cartItemList")), CartItem.class); + Double totalPrice= Double.parseDouble((String) map.get("totalPrice")); + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + if(null!=user){ + System.out.println(cartItemList); + System.out.println(totalPrice); + Order order=new Order(); + order.setOrderNum(createNum()); + order.setUserId(user.getUserId()); + order.setTotalPrice(totalPrice); + order.setPayStatus(1); + Date dNow = new Date( ); + SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss"); + order.setPayTime(ft.format(dNow)); + order.setOrderStatus(1); + order.setUserName(user.getUserName()); + order.setUserPhone(user.getPhone()); + order.setUserAddress(user.getAddress()); + order.setCreateTime(ft.format(dNow)); + boolean isSaveOrder=orderService.save(order); + if(isSaveOrder){ + Integer orderId=order.getOrderId(); + for(CartItem item:cartItemList){ + OrderItem tmp=new OrderItem(); + tmp.setOrderId(orderId); + tmp.setGoodsId(item.getGoodsId()); + tmp.setGoodsName(item.getGoodsName()); + tmp.setGoodsCoverImg(item.getGoodsCoverImg()); + tmp.setPrice(item.getSingleTotalPrice()); + tmp.setGoodsCount(item.getGoodsCount()); + String format = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; + SimpleDateFormat sdf = new SimpleDateFormat(format); + tmp.setCreateTime(item.getCreateTime().split("T")[0]); + tmp.setEndTime(item.getEndTime().split("T")[0]); + tmp.setUserId(user.getUserId()); + boolean isSaveOrderItem=orderItemService.save(tmp); + if(isSaveOrderItem){ + QueryWrapper cartItemQueryWrapper=new QueryWrapper<>(); + cartItemQueryWrapper.eq("cart_item_id",item.getCartItemId()); + cartItemService.remove(cartItemQueryWrapper); + }else { + return "fail"; + } + } + + } + return "success"; + }else { + return "fail"; + } + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/controller/OrderItemController.java b/src/demo/backend/src/main/java/com/example/demo/controller/OrderItemController.java new file mode 100644 index 00000000..f211624b --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/controller/OrderItemController.java @@ -0,0 +1,68 @@ +package com.example.demo.controller; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.example.demo.entity.OrderItem; +import com.example.demo.entity.User; +import com.example.demo.service.OrderItemService; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/orderItem") +public class OrderItemController { + + @Autowired + private OrderItemService orderItemService; + + // 增加物品项 + @RequestMapping("/add") + public String add(@RequestBody OrderItem orderItem){ + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + if(null!=user){ + System.out.println(orderItem); + orderItem.setUserId(user.getUserId()); + orderItemService.save(orderItem); + return orderItem.getOrderItemId().toString(); + }else { + return "fail"; + } + } + + // 根据订单列出订单项 + @RequestMapping("/listByOrder") + public String listByOrder(@RequestBody Map map){ + Integer orderId= (Integer) map.get("orderId"); + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + if(null!=user){ + System.out.println(orderId); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("order_id",orderId); + List orderItemList=orderItemService.list(wrapper); + return JSON.toJSONString(orderItemList); + }else { + return "fail"; + } + } + + // 根据用户列出订单项 + @RequestMapping("/listByUser") + public List listByUser(){ + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + if(null!=user){ + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("user_id",user.getUserId()); + List orderItemList=orderItemService.list(wrapper); + return orderItemList; + }else { + return null; + } + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/controller/PermissionController.java b/src/demo/backend/src/main/java/com/example/demo/controller/PermissionController.java new file mode 100644 index 00000000..ebe78dd2 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/controller/PermissionController.java @@ -0,0 +1,11 @@ +package com.example.demo.controller; + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/demo/permission") +public class PermissionController { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/controller/RoleController.java b/src/demo/backend/src/main/java/com/example/demo/controller/RoleController.java new file mode 100644 index 00000000..29084396 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/controller/RoleController.java @@ -0,0 +1,11 @@ +package com.example.demo.controller; + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/demo/role") +public class RoleController { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/controller/RolePermissionController.java b/src/demo/backend/src/main/java/com/example/demo/controller/RolePermissionController.java new file mode 100644 index 00000000..9a85176a --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/controller/RolePermissionController.java @@ -0,0 +1,11 @@ +package com.example.demo.controller; + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/demo/role-permission") +public class RolePermissionController { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/controller/UserController.java b/src/demo/backend/src/main/java/com/example/demo/controller/UserController.java new file mode 100644 index 00000000..ce79d04e --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/controller/UserController.java @@ -0,0 +1,66 @@ +package com.example.demo.controller; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.example.demo.entity.User; +import com.example.demo.service.UserService; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/user") +public class UserController { + + @Autowired + private UserService userService; + + // 获取用户信息 + @RequestMapping("/userInfo") + public String userInfo(){ + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + String result; + if(null!=user){ + User tmp=new User(); + tmp.setName(user.getName()); + tmp.setPhone(user.getPhone()); + tmp.setAddress(user.getAddress()); + tmp.setSex(user.getSex()); + tmp.setUserId(user.getUserId()); + result=JSON.toJSONString(tmp); + return result; + } + return "not login"; + } + + // 判断是否为管理员 + @RequestMapping("/isAdmin") + public boolean isAdmin(){ + User user = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + boolean isAdmin=SecurityUtils.getSubject().hasRole("admin"); + return isAdmin; + } + + @RequestMapping("/editUserInfo") + public String editUserInfo(@RequestBody User user){ + User tmp = (User) SecurityUtils.getSubject().getSession().getAttribute("user"); + String result; + System.out.println(user); + if(null!=user){ + Integer id=tmp.getUserId(); + QueryWrapper userQueryWrapper=new QueryWrapper<>(); + userQueryWrapper.eq("user_id",id); + boolean isEdit=userService.update(user,userQueryWrapper); + if(isEdit){ + return "success"; + }else { + return "fail"; + } + }else { + return "fail"; + } + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/controller/UserRoleController.java b/src/demo/backend/src/main/java/com/example/demo/controller/UserRoleController.java new file mode 100644 index 00000000..6bfd9266 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/controller/UserRoleController.java @@ -0,0 +1,11 @@ +package com.example.demo.controller; + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/demo/user-role") +public class UserRoleController { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/entity/CartItem.java b/src/demo/backend/src/main/java/com/example/demo/entity/CartItem.java new file mode 100644 index 00000000..44b290d2 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/entity/CartItem.java @@ -0,0 +1,61 @@ +package com.example.demo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="CartItem对象", description="") +public class CartItem implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "购物项id") + @TableId(value = "cart_item_id", type = IdType.AUTO) + private Integer cartItemId; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + @ApiModelProperty(value = "物品id") + private Integer goodsId; + + @ApiModelProperty(value = "物品数量") + private Integer goodsCount; + + @ApiModelProperty(value = "删除标识字段(0-未删除 1-已删除)") + private Integer isDeleted; + + @ApiModelProperty(value = "开始时间") + private String createTime; + + @ApiModelProperty(value = "结束时间") + private String endTime; + + @ApiModelProperty(value = "单项价") + private double price; + + @ApiModelProperty(value = "物品图片") + private String goodsCoverImg; + + @ApiModelProperty(value = "物品名称") + private String goodsName; + + @ApiModelProperty(value = "总租赁天数") + @TableField(exist = false) + private Integer totalDay; + + @ApiModelProperty(value = "单项总价") + @TableField(exist = false) + private double singleTotalPrice; + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/entity/Category.java b/src/demo/backend/src/main/java/com/example/demo/entity/Category.java new file mode 100644 index 00000000..83a4e764 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/entity/Category.java @@ -0,0 +1,40 @@ +package com.example.demo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="Category对象", description="") +public class Category implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "分类id") + @TableId(value = "category_id", type = IdType.AUTO) + private Integer categoryId; + + @ApiModelProperty(value = "分类级别") + private String categoryLevel; + + @ApiModelProperty(value = "父分类ID") + private Integer parentId; + + @ApiModelProperty(value = "分类名称") + private String categoryName; + + @ApiModelProperty(value = "删除标识(0-未删除,1-已删除)") + private Integer isDeleted; + + @ApiModelProperty(value = "图片id") + private String categoryImg; + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/entity/Entrust.java b/src/demo/backend/src/main/java/com/example/demo/entity/Entrust.java new file mode 100644 index 00000000..377f14dc --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/entity/Entrust.java @@ -0,0 +1,49 @@ +package com.example.demo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="Entrust对象", description="") +public class Entrust implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "委托id") + @TableId(value = "entrust_id", type = IdType.AUTO) + private Integer entrustId; + + @ApiModelProperty(value = "委托物品名称") + private String eGoodsName; + + @ApiModelProperty(value = "物品简介") + private String eGoodsIntro; + + @ApiModelProperty(value = "物品分类id") + private Integer eGoodsCategory; + + @ApiModelProperty(value = "物品主图片") + private String eGoodsCoverImg; + + @ApiModelProperty(value = "物品轮播图片") + private String eGoodsCarousel; + + @ApiModelProperty(value = "物品详情") + private String eGoodsDetailContent; + + @ApiModelProperty(value = "委托租赁单价 元/天") + private Double eGoodsPrice; + + @ApiModelProperty(value = "委托数量") + private Integer eStockNum; + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/entity/Goods.java b/src/demo/backend/src/main/java/com/example/demo/entity/Goods.java new file mode 100644 index 00000000..8d478aad --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/entity/Goods.java @@ -0,0 +1,55 @@ +package com.example.demo.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="Goods对象", description="") +public class Goods implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "物品ID") + @TableId(value = "goods_id", type = IdType.AUTO) + private Integer goodsId; + + @ApiModelProperty(value = "物品名称") + private String goodsName; + + @ApiModelProperty(value = "物品简介") + private String goodsIntro; + + @ApiModelProperty(value = "物品分类id") + private Integer goodsCategoryId; + + @ApiModelProperty(value = "物品主图片") + private String goodsCoverImg; + + @ApiModelProperty(value = "物品轮播图片") + private String goodsCarousel; + + @ApiModelProperty(value = "物品详情") + private String goodsDetailContent; + + @ApiModelProperty(value = "物品价格") + private double goodsPrice; + + @ApiModelProperty(value = "物品数量") + private Integer stockNum; + + @ApiModelProperty(value = "物品上架状态(0下架,1上架)") + private Integer goodsStatus; + + @ApiModelProperty(value = "物品评价分数(满分5)") + private double goodsScore; + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/entity/IndexConfig.java b/src/demo/backend/src/main/java/com/example/demo/entity/IndexConfig.java new file mode 100644 index 00000000..4dc34f53 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/entity/IndexConfig.java @@ -0,0 +1,40 @@ +package com.example.demo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="IndexConfig对象", description="") +public class IndexConfig implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "首页配置项id") + @TableId(value = "config_id", type = IdType.AUTO) + private Integer configId; + + @ApiModelProperty(value = "显示名称") + private String configName; + + @ApiModelProperty(value = "1-今日推进 2-今日优惠 3-为您推荐") + private Integer configType; + + @ApiModelProperty(value = "物品id") + private Integer goodsId; + + @ApiModelProperty(value = "删除标识字段(0-未删除 1-已删除)") + private Integer isDeleted; + + @ApiModelProperty(value = "物品图片") + private String goodsCoverImg; + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/entity/Order.java b/src/demo/backend/src/main/java/com/example/demo/entity/Order.java new file mode 100644 index 00000000..c946b144 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/entity/Order.java @@ -0,0 +1,72 @@ +package com.example.demo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="Order对象", description="") +@TableName(value = "orderKK") +public class Order implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单表id") + @TableId(value = "order_id", type = IdType.AUTO) + private Integer orderId; + + @ApiModelProperty(value = "订单号") + private String orderNum; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + @ApiModelProperty(value = "订单总价") + private Double totalPrice; + + @ApiModelProperty(value = "支付状态:0.未支付,1.支付成功,-1:支付失败") + private Integer payStatus; + + @ApiModelProperty(value = "支付时间") + private String payTime; + + @ApiModelProperty(value = "订单状态:0.待支付 1.已支付 2.配货完成 3:出库成功 4.交易成功 -1.手动关闭 -2.超时关闭 -3.商家关闭") + private Integer orderStatus; + + @ApiModelProperty(value = "订单内容描述") + private String extraInfo; + + @ApiModelProperty(value = "收货人姓名") + private String userName; + + @ApiModelProperty(value = "收货人手机号") + private String userPhone; + + @ApiModelProperty(value = "收货人地址") + private String userAddress; + + @ApiModelProperty(value = "删除标识字段(0-未删除 1-已删除)") + private Integer isDeleted; + + @ApiModelProperty(value = "创建时间") + private String createTime; + + @ApiModelProperty(value = "结束租赁时间") + private String endTime; + + @ApiModelProperty(value = "订单项列表") + @TableField(exist = false) //非数据库字段 + private List orderItemList; + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/entity/OrderItem.java b/src/demo/backend/src/main/java/com/example/demo/entity/OrderItem.java new file mode 100644 index 00000000..24d9e43b --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/entity/OrderItem.java @@ -0,0 +1,52 @@ +package com.example.demo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="OrderItem对象", description="") +public class OrderItem implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "订单项id") + @TableId(value = "order_item_id", type = IdType.AUTO) + private Integer orderItemId; + + @ApiModelProperty(value = "关联订单id") + private Integer orderId; + + @ApiModelProperty(value = "关联物品id") + private Integer goodsId; + + @ApiModelProperty(value = "物品名称") + private String goodsName; + + @ApiModelProperty(value = "物品主图") + private String goodsCoverImg; + + @ApiModelProperty(value = "物品价格") + private Double price; + + @ApiModelProperty(value = "物品数量") + private Integer goodsCount; + + @ApiModelProperty(value = "创建时间") + private String createTime; + + @ApiModelProperty(value = "结束租赁时间") + private String endTime; + + @ApiModelProperty(value = "用户id") + private Integer userId; + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/entity/Permission.java b/src/demo/backend/src/main/java/com/example/demo/entity/Permission.java new file mode 100644 index 00000000..eafd7e4d --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/entity/Permission.java @@ -0,0 +1,30 @@ +package com.example.demo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="Permission对象", description="") +public class Permission implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "权限名称") + private String name; + + @ApiModelProperty(value = "接口路径") + private String url; + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/entity/Role.java b/src/demo/backend/src/main/java/com/example/demo/entity/Role.java new file mode 100644 index 00000000..173af1c5 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/entity/Role.java @@ -0,0 +1,38 @@ +package com.example.demo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="Role对象", description="") +public class Role implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "角色名称") + private String name; + + @ApiModelProperty(value = "描述") + private String description; + + // 权限集合 + @ApiModelProperty(value = "权限集合") + @TableField(exist = false) //非数据库字段 + private List permissionList = new ArrayList<>(); + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/entity/RolePermission.java b/src/demo/backend/src/main/java/com/example/demo/entity/RolePermission.java new file mode 100644 index 00000000..13b7b7ff --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/entity/RolePermission.java @@ -0,0 +1,30 @@ +package com.example.demo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="RolePermission对象", description="") +public class RolePermission implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "角色id") + private Integer roleId; + + @ApiModelProperty(value = "权限id") + private Integer permissionId; + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/entity/User.java b/src/demo/backend/src/main/java/com/example/demo/entity/User.java new file mode 100644 index 00000000..ec8b3e68 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/entity/User.java @@ -0,0 +1,60 @@ +package com.example.demo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="User对象", description="") +public class User implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "用户主键id") + @TableId(value = "user_id", type = IdType.AUTO) + private Integer userId; + + @ApiModelProperty(value = "用户昵称") + private String name; + + @ApiModelProperty(value = "性别") + private String sex; + + @ApiModelProperty(value = "电话号码") + private String phone; + + @ApiModelProperty(value = "登录用户名") + @TableField("userName") + private String userName; + + @ApiModelProperty(value = "MD5加密后的密码") + @TableField("passWord") + private String passWord; + + @ApiModelProperty(value = "收货地址") + private String address; + + @ApiModelProperty(value = "注册时间") + @TableField("createTime") + private String createTime; + + @ApiModelProperty(value = "加密盐") + @TableField("createTime") + private String salt; + // 角色集合 + @ApiModelProperty(value = "角色集合") + @TableField(exist = false) //非数据库字段 + private List roleList = new ArrayList<>(); + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/entity/UserRole.java b/src/demo/backend/src/main/java/com/example/demo/entity/UserRole.java new file mode 100644 index 00000000..15d4c2ba --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/entity/UserRole.java @@ -0,0 +1,32 @@ +package com.example.demo.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="UserRole对象", description="") +public class UserRole implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "角色id") + private Integer roleId; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + private String remarks; + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/CartItemMapper.java b/src/demo/backend/src/main/java/com/example/demo/mapper/CartItemMapper.java new file mode 100644 index 00000000..f163f374 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/CartItemMapper.java @@ -0,0 +1,8 @@ +package com.example.demo.mapper; + +import com.example.demo.entity.CartItem; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface CartItemMapper extends BaseMapper { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/CategoryMapper.java b/src/demo/backend/src/main/java/com/example/demo/mapper/CategoryMapper.java new file mode 100644 index 00000000..00b039f6 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/CategoryMapper.java @@ -0,0 +1,8 @@ +package com.example.demo.mapper; + +import com.example.demo.entity.Category; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface CategoryMapper extends BaseMapper { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/EntrustMapper.java b/src/demo/backend/src/main/java/com/example/demo/mapper/EntrustMapper.java new file mode 100644 index 00000000..5426b0f4 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/EntrustMapper.java @@ -0,0 +1,8 @@ +package com.example.demo.mapper; + +import com.example.demo.entity.Entrust; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface EntrustMapper extends BaseMapper { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/GoodsMapper.java b/src/demo/backend/src/main/java/com/example/demo/mapper/GoodsMapper.java new file mode 100644 index 00000000..508ef0ed --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/GoodsMapper.java @@ -0,0 +1,8 @@ +package com.example.demo.mapper; + +import com.example.demo.entity.Goods; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface GoodsMapper extends BaseMapper { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/IndexConfigMapper.java b/src/demo/backend/src/main/java/com/example/demo/mapper/IndexConfigMapper.java new file mode 100644 index 00000000..4b3ddbc5 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/IndexConfigMapper.java @@ -0,0 +1,8 @@ +package com.example.demo.mapper; + +import com.example.demo.entity.IndexConfig; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface IndexConfigMapper extends BaseMapper { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/OrderItemMapper.java b/src/demo/backend/src/main/java/com/example/demo/mapper/OrderItemMapper.java new file mode 100644 index 00000000..b1d182df --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/OrderItemMapper.java @@ -0,0 +1,8 @@ +package com.example.demo.mapper; + +import com.example.demo.entity.OrderItem; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface OrderItemMapper extends BaseMapper { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/OrderMapper.java b/src/demo/backend/src/main/java/com/example/demo/mapper/OrderMapper.java new file mode 100644 index 00000000..5b473502 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/OrderMapper.java @@ -0,0 +1,8 @@ +package com.example.demo.mapper; + +import com.example.demo.entity.Order; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface OrderMapper extends BaseMapper { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/PermissionMapper.java b/src/demo/backend/src/main/java/com/example/demo/mapper/PermissionMapper.java new file mode 100644 index 00000000..ddc09e8c --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/PermissionMapper.java @@ -0,0 +1,10 @@ +package com.example.demo.mapper; + +import com.example.demo.entity.Permission; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface PermissionMapper extends BaseMapper { + + public Permission listPermissionCascadeByRole(Integer roleId); + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/RoleMapper.java b/src/demo/backend/src/main/java/com/example/demo/mapper/RoleMapper.java new file mode 100644 index 00000000..cafc83d9 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/RoleMapper.java @@ -0,0 +1,10 @@ +package com.example.demo.mapper; + +import com.example.demo.entity.Role; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +public interface RoleMapper extends BaseMapper { + public List listRoleCascadeByUser(Integer userId); +} diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/RolePermissionMapper.java b/src/demo/backend/src/main/java/com/example/demo/mapper/RolePermissionMapper.java new file mode 100644 index 00000000..564caec6 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/RolePermissionMapper.java @@ -0,0 +1,8 @@ +package com.example.demo.mapper; + +import com.example.demo.entity.RolePermission; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface RolePermissionMapper extends BaseMapper { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/UserMapper.java b/src/demo/backend/src/main/java/com/example/demo/mapper/UserMapper.java new file mode 100644 index 00000000..07719b1e --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/UserMapper.java @@ -0,0 +1,10 @@ +package com.example.demo.mapper; + +import com.example.demo.entity.User; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +public interface UserMapper extends BaseMapper { + + public User findAllUserInfoByUsername(String userName); + + public void register(User user); +} diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/UserRoleMapper.java b/src/demo/backend/src/main/java/com/example/demo/mapper/UserRoleMapper.java new file mode 100644 index 00000000..ea3dbc9f --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/UserRoleMapper.java @@ -0,0 +1,8 @@ +package com.example.demo.mapper; + +import com.example.demo.entity.UserRole; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface UserRoleMapper extends BaseMapper { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/xml/CartItemMapper.xml b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/CartItemMapper.xml new file mode 100644 index 00000000..f936c116 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/CartItemMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/xml/CategoryMapper.xml b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/CategoryMapper.xml new file mode 100644 index 00000000..5562c13a --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/CategoryMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/xml/EntrustMapper.xml b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/EntrustMapper.xml new file mode 100644 index 00000000..6ca4de8f --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/EntrustMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/xml/GoodsMapper.xml b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/GoodsMapper.xml new file mode 100644 index 00000000..1c460ce6 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/GoodsMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/xml/IndexConfigMapper.xml b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/IndexConfigMapper.xml new file mode 100644 index 00000000..7bad22f0 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/IndexConfigMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/xml/OrderItemMapper.xml b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/OrderItemMapper.xml new file mode 100644 index 00000000..83c9036b --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/OrderItemMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/xml/OrderMapper.xml b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/OrderMapper.xml new file mode 100644 index 00000000..81ebd399 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/OrderMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/xml/PermissionMapper.xml b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/PermissionMapper.xml new file mode 100644 index 00000000..410ce6c4 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/PermissionMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/xml/RoleMapper.xml b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/RoleMapper.xml new file mode 100644 index 00000000..04193d55 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/RoleMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/xml/RolePermissionMapper.xml b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/RolePermissionMapper.xml new file mode 100644 index 00000000..c30f8f1b --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/RolePermissionMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/xml/UserMapper.xml b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/UserMapper.xml new file mode 100644 index 00000000..21543baa --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/UserMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + INSERT into user(`name`,`sex`,`phone`,userName,`passWord`,`address`,`createTime`,salt) VALUES(#{name},#{sex},#{phone},#{userName},#{passWord},#{address},#{createTime},#{salt}); + + diff --git a/src/demo/backend/src/main/java/com/example/demo/mapper/xml/UserRoleMapper.xml b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/UserRoleMapper.xml new file mode 100644 index 00000000..9146e281 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/mapper/xml/UserRoleMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/demo/backend/src/main/java/com/example/demo/service/CartItemService.java b/src/demo/backend/src/main/java/com/example/demo/service/CartItemService.java new file mode 100644 index 00000000..4b7dd7d8 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/CartItemService.java @@ -0,0 +1,8 @@ +package com.example.demo.service; + +import com.example.demo.entity.CartItem; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface CartItemService extends IService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/CategoryService.java b/src/demo/backend/src/main/java/com/example/demo/service/CategoryService.java new file mode 100644 index 00000000..ab384bda --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/CategoryService.java @@ -0,0 +1,8 @@ +package com.example.demo.service; + +import com.example.demo.entity.Category; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface CategoryService extends IService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/EntrustService.java b/src/demo/backend/src/main/java/com/example/demo/service/EntrustService.java new file mode 100644 index 00000000..02869a8a --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/EntrustService.java @@ -0,0 +1,8 @@ +package com.example.demo.service; + +import com.example.demo.entity.Entrust; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface EntrustService extends IService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/GoodsService.java b/src/demo/backend/src/main/java/com/example/demo/service/GoodsService.java new file mode 100644 index 00000000..212d438e --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/GoodsService.java @@ -0,0 +1,8 @@ +package com.example.demo.service; + +import com.example.demo.entity.Goods; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface GoodsService extends IService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/IndexConfigService.java b/src/demo/backend/src/main/java/com/example/demo/service/IndexConfigService.java new file mode 100644 index 00000000..9c666508 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/IndexConfigService.java @@ -0,0 +1,8 @@ +package com.example.demo.service; + +import com.example.demo.entity.IndexConfig; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface IndexConfigService extends IService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/OrderItemService.java b/src/demo/backend/src/main/java/com/example/demo/service/OrderItemService.java new file mode 100644 index 00000000..933a55da --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/OrderItemService.java @@ -0,0 +1,8 @@ +package com.example.demo.service; + +import com.example.demo.entity.OrderItem; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface OrderItemService extends IService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/OrderService.java b/src/demo/backend/src/main/java/com/example/demo/service/OrderService.java new file mode 100644 index 00000000..31bdc2ab --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/OrderService.java @@ -0,0 +1,8 @@ +package com.example.demo.service; + +import com.example.demo.entity.Order; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface OrderService extends IService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/PermissionService.java b/src/demo/backend/src/main/java/com/example/demo/service/PermissionService.java new file mode 100644 index 00000000..7bce24ce --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/PermissionService.java @@ -0,0 +1,8 @@ +package com.example.demo.service; + +import com.example.demo.entity.Permission; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface PermissionService extends IService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/RolePermissionService.java b/src/demo/backend/src/main/java/com/example/demo/service/RolePermissionService.java new file mode 100644 index 00000000..d08b11ac --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/RolePermissionService.java @@ -0,0 +1,8 @@ +package com.example.demo.service; + +import com.example.demo.entity.RolePermission; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface RolePermissionService extends IService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/RoleService.java b/src/demo/backend/src/main/java/com/example/demo/service/RoleService.java new file mode 100644 index 00000000..36c2ba0e --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/RoleService.java @@ -0,0 +1,8 @@ +package com.example.demo.service; + +import com.example.demo.entity.Role; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface RoleService extends IService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/UserRoleService.java b/src/demo/backend/src/main/java/com/example/demo/service/UserRoleService.java new file mode 100644 index 00000000..e8bcf7de --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/UserRoleService.java @@ -0,0 +1,8 @@ +package com.example.demo.service; + +import com.example.demo.entity.UserRole; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface UserRoleService extends IService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/UserService.java b/src/demo/backend/src/main/java/com/example/demo/service/UserService.java new file mode 100644 index 00000000..daf3300b --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/UserService.java @@ -0,0 +1,11 @@ +package com.example.demo.service; + +import com.example.demo.entity.User; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface UserService extends IService { + + public User findAllUserInfoByUsername(String username); + + public void register(User user); +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/impl/CartItemServiceImpl.java b/src/demo/backend/src/main/java/com/example/demo/service/impl/CartItemServiceImpl.java new file mode 100644 index 00000000..fefff144 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/impl/CartItemServiceImpl.java @@ -0,0 +1,12 @@ +package com.example.demo.service.impl; + +import com.example.demo.entity.CartItem; +import com.example.demo.mapper.CartItemMapper; +import com.example.demo.service.CartItemService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class CartItemServiceImpl extends ServiceImpl implements CartItemService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/impl/CategoryServiceImpl.java b/src/demo/backend/src/main/java/com/example/demo/service/impl/CategoryServiceImpl.java new file mode 100644 index 00000000..48d8a0d8 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/impl/CategoryServiceImpl.java @@ -0,0 +1,12 @@ +package com.example.demo.service.impl; + +import com.example.demo.entity.Category; +import com.example.demo.mapper.CategoryMapper; +import com.example.demo.service.CategoryService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class CategoryServiceImpl extends ServiceImpl implements CategoryService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/impl/EntrustServiceImpl.java b/src/demo/backend/src/main/java/com/example/demo/service/impl/EntrustServiceImpl.java new file mode 100644 index 00000000..5919b240 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/impl/EntrustServiceImpl.java @@ -0,0 +1,12 @@ +package com.example.demo.service.impl; + +import com.example.demo.entity.Entrust; +import com.example.demo.mapper.EntrustMapper; +import com.example.demo.service.EntrustService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class EntrustServiceImpl extends ServiceImpl implements EntrustService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/impl/GoodsServiceImpl.java b/src/demo/backend/src/main/java/com/example/demo/service/impl/GoodsServiceImpl.java new file mode 100644 index 00000000..bc4eb2ca --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/impl/GoodsServiceImpl.java @@ -0,0 +1,12 @@ +package com.example.demo.service.impl; + +import com.example.demo.entity.Goods; +import com.example.demo.mapper.GoodsMapper; +import com.example.demo.service.GoodsService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class GoodsServiceImpl extends ServiceImpl implements GoodsService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/impl/IndexConfigServiceImpl.java b/src/demo/backend/src/main/java/com/example/demo/service/impl/IndexConfigServiceImpl.java new file mode 100644 index 00000000..f8887f04 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/impl/IndexConfigServiceImpl.java @@ -0,0 +1,12 @@ +package com.example.demo.service.impl; + +import com.example.demo.entity.IndexConfig; +import com.example.demo.mapper.IndexConfigMapper; +import com.example.demo.service.IndexConfigService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class IndexConfigServiceImpl extends ServiceImpl implements IndexConfigService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/impl/OrderItemServiceImpl.java b/src/demo/backend/src/main/java/com/example/demo/service/impl/OrderItemServiceImpl.java new file mode 100644 index 00000000..4512fa69 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/impl/OrderItemServiceImpl.java @@ -0,0 +1,12 @@ +package com.example.demo.service.impl; + +import com.example.demo.entity.OrderItem; +import com.example.demo.mapper.OrderItemMapper; +import com.example.demo.service.OrderItemService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class OrderItemServiceImpl extends ServiceImpl implements OrderItemService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/impl/OrderServiceImpl.java b/src/demo/backend/src/main/java/com/example/demo/service/impl/OrderServiceImpl.java new file mode 100644 index 00000000..c5ad2d76 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/impl/OrderServiceImpl.java @@ -0,0 +1,12 @@ +package com.example.demo.service.impl; + +import com.example.demo.entity.Order; +import com.example.demo.mapper.OrderMapper; +import com.example.demo.service.OrderService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class OrderServiceImpl extends ServiceImpl implements OrderService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/impl/PermissionServiceImpl.java b/src/demo/backend/src/main/java/com/example/demo/service/impl/PermissionServiceImpl.java new file mode 100644 index 00000000..5f1024d2 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/impl/PermissionServiceImpl.java @@ -0,0 +1,12 @@ +package com.example.demo.service.impl; + +import com.example.demo.entity.Permission; +import com.example.demo.mapper.PermissionMapper; +import com.example.demo.service.PermissionService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class PermissionServiceImpl extends ServiceImpl implements PermissionService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/impl/RolePermissionServiceImpl.java b/src/demo/backend/src/main/java/com/example/demo/service/impl/RolePermissionServiceImpl.java new file mode 100644 index 00000000..34f5c994 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/impl/RolePermissionServiceImpl.java @@ -0,0 +1,12 @@ +package com.example.demo.service.impl; + +import com.example.demo.entity.RolePermission; +import com.example.demo.mapper.RolePermissionMapper; +import com.example.demo.service.RolePermissionService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class RolePermissionServiceImpl extends ServiceImpl implements RolePermissionService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/impl/RoleServiceImpl.java b/src/demo/backend/src/main/java/com/example/demo/service/impl/RoleServiceImpl.java new file mode 100644 index 00000000..958d8b13 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/impl/RoleServiceImpl.java @@ -0,0 +1,12 @@ +package com.example.demo.service.impl; + +import com.example.demo.entity.Role; +import com.example.demo.mapper.RoleMapper; +import com.example.demo.service.RoleService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class RoleServiceImpl extends ServiceImpl implements RoleService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/impl/UserRoleServiceImpl.java b/src/demo/backend/src/main/java/com/example/demo/service/impl/UserRoleServiceImpl.java new file mode 100644 index 00000000..5d71a7ac --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/impl/UserRoleServiceImpl.java @@ -0,0 +1,12 @@ +package com.example.demo.service.impl; + +import com.example.demo.entity.UserRole; +import com.example.demo.mapper.UserRoleMapper; +import com.example.demo.service.UserRoleService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class UserRoleServiceImpl extends ServiceImpl implements UserRoleService { + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/service/impl/UserServiceImpl.java b/src/demo/backend/src/main/java/com/example/demo/service/impl/UserServiceImpl.java new file mode 100644 index 00000000..9f5b3bfb --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/service/impl/UserServiceImpl.java @@ -0,0 +1,26 @@ +package com.example.demo.service.impl; + +import com.example.demo.entity.User; +import com.example.demo.mapper.UserMapper; +import com.example.demo.service.UserService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class UserServiceImpl extends ServiceImpl implements UserService { + + @Autowired + private UserMapper userMapper; + + @Override + public User findAllUserInfoByUsername(String username){ + return userMapper.findAllUserInfoByUsername(username); + } + + @Override + public void register(User user) { + userMapper.register(user); + } + +} diff --git a/src/demo/backend/src/main/java/com/example/demo/util/LogAspect.java b/src/demo/backend/src/main/java/com/example/demo/util/LogAspect.java new file mode 100644 index 00000000..447227e5 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/util/LogAspect.java @@ -0,0 +1,39 @@ +package com.example.demo.util; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; + +// 日志切面 +@Component +@Aspect +public class LogAspect { + private final Logger logger= LoggerFactory.getLogger(LogAspect.class); + + // controller包,所有类方法切入点 + @Pointcut("execution(public * com.example.demo.controller..*.*(..))") + public void controllerLog(){}; + + // controller前置通知,输出基本请求信息到日志 + @Before("controllerLog()") + public void log(JoinPoint joinPoint){ + RequestAttributes requestAttributes= RequestContextHolder.getRequestAttributes(); + HttpServletRequest request=((ServletRequestAttributes)requestAttributes).getRequest(); + logger.info("+++++++++请求地址:"+request.getRequestURL().toString()+"+++++++++"); + logger.info("+++++++++方法:"+request.getMethod()+"+++++++++"); + logger.info("+++++++++源ip地址:"+request.getRemoteAddr()+"+++++++++"); + logger.info("+++++++++源端口:"+request.getRemotePort()+"+++++++++"); + logger.info("+++++++++类与方法名 : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName()+"+++++++++"); + logger.info("+++++++++请求参数:"+ Arrays.toString(joinPoint.getArgs())+"+++++++++"); + } +} diff --git a/src/demo/backend/src/main/java/com/example/demo/util/PasswordHelper.java b/src/demo/backend/src/main/java/com/example/demo/util/PasswordHelper.java new file mode 100644 index 00000000..3719f354 --- /dev/null +++ b/src/demo/backend/src/main/java/com/example/demo/util/PasswordHelper.java @@ -0,0 +1,21 @@ +package com.example.demo.util; + +import com.example.demo.entity.User; +import org.apache.shiro.crypto.RandomNumberGenerator; +import org.apache.shiro.crypto.SecureRandomNumberGenerator; +import org.apache.shiro.crypto.hash.SimpleHash; +import org.apache.shiro.util.ByteSource; + +// 密码加密 +public class PasswordHelper { + private RandomNumberGenerator randomNumberGenerator = new SecureRandomNumberGenerator(); + public static final String ALGORITHM_NAME = "md5"; // 基础散列算法 + public static final int HASH_ITERATIONS = 2; // 自定义散列次数 + + public void encryptPassword(User user) { + user.setSalt(randomNumberGenerator.nextBytes().toHex()); + String newPassword = new SimpleHash(ALGORITHM_NAME, user.getPassWord(), + ByteSource.Util.bytes(user.getSalt()), HASH_ITERATIONS).toHex(); + user.setPassWord(newPassword); + } +} diff --git a/src/demo/backend/src/main/resources/application.yml b/src/demo/backend/src/main/resources/application.yml new file mode 100644 index 00000000..82bbbd3b --- /dev/null +++ b/src/demo/backend/src/main/resources/application.yml @@ -0,0 +1,27 @@ +spring: + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + username: root + password: 123456 + url: jdbc:mysql://localhost:3306/recommend?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT + redis: + database: 0 + host: 127.0.0.1 + port: 6379 + jedis: + pool: + max-active: 8 + max-wait: -1 + max-idle: 8 + min-idle: 0 + timeout: 0 + +mybatis-plus: + mapperLocations: classpath*:com/example/**/xml/*Mapper.xml + typeAliasesPackage: com.example.demo.entity +server: + #端口号 + port: 8088 +logging: + file: + path: "./logs" \ No newline at end of file diff --git a/src/demo/backend/src/main/resources/img/00475900-05cb-4c39-b968-27106a169b66.jpg b/src/demo/backend/src/main/resources/img/00475900-05cb-4c39-b968-27106a169b66.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/00475900-05cb-4c39-b968-27106a169b66.jpg differ diff --git a/src/demo/backend/src/main/resources/img/0fc2d397-f78f-4c28-9391-039cf0cf1789.jpg b/src/demo/backend/src/main/resources/img/0fc2d397-f78f-4c28-9391-039cf0cf1789.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/0fc2d397-f78f-4c28-9391-039cf0cf1789.jpg differ diff --git a/src/demo/backend/src/main/resources/img/1.jpg b/src/demo/backend/src/main/resources/img/1.jpg new file mode 100644 index 00000000..265d0642 Binary files /dev/null and b/src/demo/backend/src/main/resources/img/1.jpg differ diff --git a/src/demo/backend/src/main/resources/img/12.jpg b/src/demo/backend/src/main/resources/img/12.jpg new file mode 100644 index 00000000..97e9ff5c Binary files /dev/null and b/src/demo/backend/src/main/resources/img/12.jpg differ diff --git a/src/demo/backend/src/main/resources/img/13.jpg b/src/demo/backend/src/main/resources/img/13.jpg new file mode 100644 index 00000000..c821f252 Binary files /dev/null and b/src/demo/backend/src/main/resources/img/13.jpg differ diff --git a/src/demo/backend/src/main/resources/img/173f2300-83a2-45ea-b613-09a894ab3be0.jpg b/src/demo/backend/src/main/resources/img/173f2300-83a2-45ea-b613-09a894ab3be0.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/173f2300-83a2-45ea-b613-09a894ab3be0.jpg differ diff --git a/src/demo/backend/src/main/resources/img/19.jpg b/src/demo/backend/src/main/resources/img/19.jpg new file mode 100644 index 00000000..e48dff01 Binary files /dev/null and b/src/demo/backend/src/main/resources/img/19.jpg differ diff --git a/src/demo/backend/src/main/resources/img/1b0df365-5e28-42d5-a5e2-79eaef6c9735.jpg b/src/demo/backend/src/main/resources/img/1b0df365-5e28-42d5-a5e2-79eaef6c9735.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/1b0df365-5e28-42d5-a5e2-79eaef6c9735.jpg differ diff --git a/src/demo/backend/src/main/resources/img/2.jpg b/src/demo/backend/src/main/resources/img/2.jpg new file mode 100644 index 00000000..435d198f Binary files /dev/null and b/src/demo/backend/src/main/resources/img/2.jpg differ diff --git a/src/demo/backend/src/main/resources/img/21.jpg b/src/demo/backend/src/main/resources/img/21.jpg new file mode 100644 index 00000000..24a36c4b Binary files /dev/null and b/src/demo/backend/src/main/resources/img/21.jpg differ diff --git a/src/demo/backend/src/main/resources/img/3.jpg b/src/demo/backend/src/main/resources/img/3.jpg new file mode 100644 index 00000000..1354cd9d Binary files /dev/null and b/src/demo/backend/src/main/resources/img/3.jpg differ diff --git a/src/demo/backend/src/main/resources/img/3f41b68f-60d4-48fd-a079-ed9354111bea.jpg b/src/demo/backend/src/main/resources/img/3f41b68f-60d4-48fd-a079-ed9354111bea.jpg new file mode 100644 index 00000000..cc51a336 Binary files /dev/null and b/src/demo/backend/src/main/resources/img/3f41b68f-60d4-48fd-a079-ed9354111bea.jpg differ diff --git a/src/demo/backend/src/main/resources/img/4.jpg b/src/demo/backend/src/main/resources/img/4.jpg new file mode 100644 index 00000000..60ba2f12 Binary files /dev/null and b/src/demo/backend/src/main/resources/img/4.jpg differ diff --git a/src/demo/backend/src/main/resources/img/4b5f392f-43e1-473e-807e-24c46321d00f.jpg b/src/demo/backend/src/main/resources/img/4b5f392f-43e1-473e-807e-24c46321d00f.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/4b5f392f-43e1-473e-807e-24c46321d00f.jpg differ diff --git a/src/demo/backend/src/main/resources/img/4e8b8334-cfb7-451a-a673-91ba66c88411.jpg b/src/demo/backend/src/main/resources/img/4e8b8334-cfb7-451a-a673-91ba66c88411.jpg new file mode 100644 index 00000000..07f55c54 Binary files /dev/null and b/src/demo/backend/src/main/resources/img/4e8b8334-cfb7-451a-a673-91ba66c88411.jpg differ diff --git a/src/demo/backend/src/main/resources/img/5.jpg b/src/demo/backend/src/main/resources/img/5.jpg new file mode 100644 index 00000000..309b12da Binary files /dev/null and b/src/demo/backend/src/main/resources/img/5.jpg differ diff --git a/src/demo/backend/src/main/resources/img/562e46cb-80c6-4691-b7f2-17c3fec80774.jpg b/src/demo/backend/src/main/resources/img/562e46cb-80c6-4691-b7f2-17c3fec80774.jpg new file mode 100644 index 00000000..a898b4f0 Binary files /dev/null and b/src/demo/backend/src/main/resources/img/562e46cb-80c6-4691-b7f2-17c3fec80774.jpg differ diff --git a/src/demo/backend/src/main/resources/img/5a586e79-eb60-484c-b0cd-d003c2efad8e.jpg b/src/demo/backend/src/main/resources/img/5a586e79-eb60-484c-b0cd-d003c2efad8e.jpg new file mode 100644 index 00000000..a898b4f0 Binary files /dev/null and b/src/demo/backend/src/main/resources/img/5a586e79-eb60-484c-b0cd-d003c2efad8e.jpg differ diff --git a/src/demo/backend/src/main/resources/img/6.jpg b/src/demo/backend/src/main/resources/img/6.jpg new file mode 100644 index 00000000..1985a65f Binary files /dev/null and b/src/demo/backend/src/main/resources/img/6.jpg differ diff --git a/src/demo/backend/src/main/resources/img/61495a21-f50d-496d-aebc-cd5f9744f969.jpg b/src/demo/backend/src/main/resources/img/61495a21-f50d-496d-aebc-cd5f9744f969.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/61495a21-f50d-496d-aebc-cd5f9744f969.jpg differ diff --git a/src/demo/backend/src/main/resources/img/67953a38-7c19-44d2-958d-3d89c903e3ac.jpg b/src/demo/backend/src/main/resources/img/67953a38-7c19-44d2-958d-3d89c903e3ac.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/67953a38-7c19-44d2-958d-3d89c903e3ac.jpg differ diff --git a/src/demo/backend/src/main/resources/img/6bf848e2-2855-4fa3-9ec4-c7ed06189e78.jpeg b/src/demo/backend/src/main/resources/img/6bf848e2-2855-4fa3-9ec4-c7ed06189e78.jpeg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/6bf848e2-2855-4fa3-9ec4-c7ed06189e78.jpeg differ diff --git a/src/demo/backend/src/main/resources/img/6d2007ce-16c9-4f0e-850e-d651dabe3687.jpg b/src/demo/backend/src/main/resources/img/6d2007ce-16c9-4f0e-850e-d651dabe3687.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/6d2007ce-16c9-4f0e-850e-d651dabe3687.jpg differ diff --git a/src/demo/backend/src/main/resources/img/6f8d7b70-0e70-414e-9be9-9fd2e2d081cf.jpg b/src/demo/backend/src/main/resources/img/6f8d7b70-0e70-414e-9be9-9fd2e2d081cf.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/6f8d7b70-0e70-414e-9be9-9fd2e2d081cf.jpg differ diff --git a/src/demo/backend/src/main/resources/img/7.jpg b/src/demo/backend/src/main/resources/img/7.jpg new file mode 100644 index 00000000..02bff5d9 Binary files /dev/null and b/src/demo/backend/src/main/resources/img/7.jpg differ diff --git a/src/demo/backend/src/main/resources/img/76a2fced-121d-4bbd-9094-1723eaa50707.jpg b/src/demo/backend/src/main/resources/img/76a2fced-121d-4bbd-9094-1723eaa50707.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/76a2fced-121d-4bbd-9094-1723eaa50707.jpg differ diff --git a/src/demo/backend/src/main/resources/img/7b21af5a-e73c-4059-aecf-848f95470186.jpg b/src/demo/backend/src/main/resources/img/7b21af5a-e73c-4059-aecf-848f95470186.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/7b21af5a-e73c-4059-aecf-848f95470186.jpg differ diff --git a/src/demo/backend/src/main/resources/img/8.jpg b/src/demo/backend/src/main/resources/img/8.jpg new file mode 100644 index 00000000..485b4cba Binary files /dev/null and b/src/demo/backend/src/main/resources/img/8.jpg differ diff --git a/src/demo/backend/src/main/resources/img/803f3dda-823f-4ac1-82dc-85bcf043f522.jpg b/src/demo/backend/src/main/resources/img/803f3dda-823f-4ac1-82dc-85bcf043f522.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/803f3dda-823f-4ac1-82dc-85bcf043f522.jpg differ diff --git a/src/demo/backend/src/main/resources/img/8378118b-2727-46eb-82a9-c537b3d0fc7c.jpg b/src/demo/backend/src/main/resources/img/8378118b-2727-46eb-82a9-c537b3d0fc7c.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/8378118b-2727-46eb-82a9-c537b3d0fc7c.jpg differ diff --git a/src/demo/backend/src/main/resources/img/87a85406-1b3b-4062-834a-6f30e3ed7977.jpg b/src/demo/backend/src/main/resources/img/87a85406-1b3b-4062-834a-6f30e3ed7977.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/87a85406-1b3b-4062-834a-6f30e3ed7977.jpg differ diff --git a/src/demo/backend/src/main/resources/img/88077d30-22a3-433f-a0de-f9ad085e7e53.jpg b/src/demo/backend/src/main/resources/img/88077d30-22a3-433f-a0de-f9ad085e7e53.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/88077d30-22a3-433f-a0de-f9ad085e7e53.jpg differ diff --git a/src/demo/backend/src/main/resources/img/8c5d5f5f-14e9-43b5-9d41-b69b31f2859a.jpg b/src/demo/backend/src/main/resources/img/8c5d5f5f-14e9-43b5-9d41-b69b31f2859a.jpg new file mode 100644 index 00000000..07f55c54 Binary files /dev/null and b/src/demo/backend/src/main/resources/img/8c5d5f5f-14e9-43b5-9d41-b69b31f2859a.jpg differ diff --git a/src/demo/backend/src/main/resources/img/8f44ddef-4ddc-4860-a873-77d87e29f199.jpeg b/src/demo/backend/src/main/resources/img/8f44ddef-4ddc-4860-a873-77d87e29f199.jpeg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/8f44ddef-4ddc-4860-a873-77d87e29f199.jpeg differ diff --git a/src/demo/backend/src/main/resources/img/91f9af12-45a9-4286-8eaf-c35e07c89ef7.jpg b/src/demo/backend/src/main/resources/img/91f9af12-45a9-4286-8eaf-c35e07c89ef7.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/91f9af12-45a9-4286-8eaf-c35e07c89ef7.jpg differ diff --git a/src/demo/backend/src/main/resources/img/9316db6d-1f0d-412c-90a5-31fda3d754b5.jpg b/src/demo/backend/src/main/resources/img/9316db6d-1f0d-412c-90a5-31fda3d754b5.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/9316db6d-1f0d-412c-90a5-31fda3d754b5.jpg differ diff --git a/src/demo/backend/src/main/resources/img/984fb033-eea8-4174-ae17-025012ed3a4e.jpg b/src/demo/backend/src/main/resources/img/984fb033-eea8-4174-ae17-025012ed3a4e.jpg new file mode 100644 index 00000000..d22f7de1 Binary files /dev/null and b/src/demo/backend/src/main/resources/img/984fb033-eea8-4174-ae17-025012ed3a4e.jpg differ diff --git a/src/demo/backend/src/main/resources/img/99d1eed4-8475-4c2b-9296-44d98744a1c3.jpg b/src/demo/backend/src/main/resources/img/99d1eed4-8475-4c2b-9296-44d98744a1c3.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/99d1eed4-8475-4c2b-9296-44d98744a1c3.jpg differ diff --git a/src/demo/backend/src/main/resources/img/9ab74473-df00-45e5-a894-0432289d84ac.jpg b/src/demo/backend/src/main/resources/img/9ab74473-df00-45e5-a894-0432289d84ac.jpg new file mode 100644 index 00000000..a898b4f0 Binary files /dev/null and b/src/demo/backend/src/main/resources/img/9ab74473-df00-45e5-a894-0432289d84ac.jpg differ diff --git a/src/demo/backend/src/main/resources/img/9b9101f0-bc5c-4c4a-bbf5-d7cfd72e8264.jpg b/src/demo/backend/src/main/resources/img/9b9101f0-bc5c-4c4a-bbf5-d7cfd72e8264.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/9b9101f0-bc5c-4c4a-bbf5-d7cfd72e8264.jpg differ diff --git a/src/demo/backend/src/main/resources/img/9d29ec5b-5c5c-4792-ba56-b790d0cf8b16.jpg b/src/demo/backend/src/main/resources/img/9d29ec5b-5c5c-4792-ba56-b790d0cf8b16.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/9d29ec5b-5c5c-4792-ba56-b790d0cf8b16.jpg differ diff --git a/src/demo/backend/src/main/resources/img/9d782103-eb93-4bcb-b3a0-e943f11b1fe2.jpg b/src/demo/backend/src/main/resources/img/9d782103-eb93-4bcb-b3a0-e943f11b1fe2.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/9d782103-eb93-4bcb-b3a0-e943f11b1fe2.jpg differ diff --git a/src/demo/backend/src/main/resources/img/afd21638-200f-4986-88f5-32ea1a24fb09.jpg b/src/demo/backend/src/main/resources/img/afd21638-200f-4986-88f5-32ea1a24fb09.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/afd21638-200f-4986-88f5-32ea1a24fb09.jpg differ diff --git a/src/demo/backend/src/main/resources/img/bd71b488-f6bd-498d-92f6-2eae00554cc4.jpeg b/src/demo/backend/src/main/resources/img/bd71b488-f6bd-498d-92f6-2eae00554cc4.jpeg new file mode 100644 index 00000000..e48dff01 Binary files /dev/null and b/src/demo/backend/src/main/resources/img/bd71b488-f6bd-498d-92f6-2eae00554cc4.jpeg differ diff --git a/src/demo/backend/src/main/resources/img/ca2cde9b-f643-4e05-90e9-477597fd681c.jpg b/src/demo/backend/src/main/resources/img/ca2cde9b-f643-4e05-90e9-477597fd681c.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/ca2cde9b-f643-4e05-90e9-477597fd681c.jpg differ diff --git a/src/demo/backend/src/main/resources/img/d6949492-8051-49e2-9863-366bfc850d2a.jpg b/src/demo/backend/src/main/resources/img/d6949492-8051-49e2-9863-366bfc850d2a.jpg new file mode 100644 index 00000000..309b12da Binary files /dev/null and b/src/demo/backend/src/main/resources/img/d6949492-8051-49e2-9863-366bfc850d2a.jpg differ diff --git a/src/demo/backend/src/main/resources/img/e06676f9-3b34-426c-979e-c916f1d85c03.jpg b/src/demo/backend/src/main/resources/img/e06676f9-3b34-426c-979e-c916f1d85c03.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/e06676f9-3b34-426c-979e-c916f1d85c03.jpg differ diff --git a/src/demo/backend/src/main/resources/img/e6d78f17-267a-4173-88e6-93c330a9bfc4.jpg b/src/demo/backend/src/main/resources/img/e6d78f17-267a-4173-88e6-93c330a9bfc4.jpg new file mode 100644 index 00000000..a898b4f0 Binary files /dev/null and b/src/demo/backend/src/main/resources/img/e6d78f17-267a-4173-88e6-93c330a9bfc4.jpg differ diff --git a/src/demo/backend/src/main/resources/img/ecba6487-5cb0-44dc-be4d-2bef71dab6d1.jpg b/src/demo/backend/src/main/resources/img/ecba6487-5cb0-44dc-be4d-2bef71dab6d1.jpg new file mode 100644 index 00000000..e8e2372a Binary files /dev/null and b/src/demo/backend/src/main/resources/img/ecba6487-5cb0-44dc-be4d-2bef71dab6d1.jpg differ diff --git a/src/demo/backend/src/main/resources/img6899c1fa-167c-4aff-8564-8cec675016de.jpeg b/src/demo/backend/src/main/resources/img6899c1fa-167c-4aff-8564-8cec675016de.jpeg new file mode 100644 index 00000000..e48dff01 Binary files /dev/null and b/src/demo/backend/src/main/resources/img6899c1fa-167c-4aff-8564-8cec675016de.jpeg differ diff --git a/src/demo/backend/src/main/resources/imga96ec535-f329-4c5c-b3f9-6e1d41f74d76.jpeg b/src/demo/backend/src/main/resources/imga96ec535-f329-4c5c-b3f9-6e1d41f74d76.jpeg new file mode 100644 index 00000000..e48dff01 Binary files /dev/null and b/src/demo/backend/src/main/resources/imga96ec535-f329-4c5c-b3f9-6e1d41f74d76.jpeg differ diff --git a/src/demo/backend/src/main/resources/imgcfd85891-7cf1-4fbf-b1bd-3c296f10692e.jpeg b/src/demo/backend/src/main/resources/imgcfd85891-7cf1-4fbf-b1bd-3c296f10692e.jpeg new file mode 100644 index 00000000..e48dff01 Binary files /dev/null and b/src/demo/backend/src/main/resources/imgcfd85891-7cf1-4fbf-b1bd-3c296f10692e.jpeg differ diff --git a/src/demo/backend/src/test/java/com/example/demo/DemoApplicationTests.java b/src/demo/backend/src/test/java/com/example/demo/DemoApplicationTests.java new file mode 100644 index 00000000..eaa99696 --- /dev/null +++ b/src/demo/backend/src/test/java/com/example/demo/DemoApplicationTests.java @@ -0,0 +1,13 @@ +package com.example.demo; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class DemoApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/src/demo/backend/src/test/java/com/example/demo/TestAutoGenerate.java b/src/demo/backend/src/test/java/com/example/demo/TestAutoGenerate.java new file mode 100644 index 00000000..cc16dccb --- /dev/null +++ b/src/demo/backend/src/test/java/com/example/demo/TestAutoGenerate.java @@ -0,0 +1,65 @@ +package com.example.demo; + +public class TestAutoGenerate { +// @Test +// public void autoGenerate(){ +// 1、创建代码生成器 +// AutoGenerator mpg = new AutoGenerator(); +// +// // 2、全局配置 +// GlobalConfig gc = new GlobalConfig(); +// String projectPath = System.getProperty("user.dir"); +// // 此处写项目/src/main/java源代码的绝对路径 +// gc.setOutputDir("project/gitProject_recommend/src/demo/backend" + "/src/main/java"); +// // 生成注释时的作者 +// gc.setAuthor("zjh"); +// //生成后是否打开资源管理器 +// gc.setOpen(false); +// gc.setFileOverride(false); //重新生成时文件是否覆盖 +// gc.setServiceName("%sService"); //去掉Service接口的首字母I +// gc.setIdType(IdType.ID_WORKER_STR); //主键策略 +// gc.setDateType(DateType.ONLY_DATE); //定义生成的实体类中日期类型 +// // 如果开启Swagger,要引入相应的包 +// gc.setSwagger2(true); //开启Swagger2模式 +// +// mpg.setGlobalConfig(gc); +// +// // 3、数据源配置 +// DataSourceConfig dsc = new DataSourceConfig(); +// dsc.setUrl("jdbc:mysql://localhost:3306/recommend?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT"); +// dsc.setDriverName("com.mysql.cj.jdbc.Driver"); +// dsc.setUsername("root"); +// dsc.setPassword("123456"); +// dsc.setDbType(DbType.MYSQL); +// mpg.setDataSource(dsc); +// +// // 4、包配置 +// PackageConfig pc = new PackageConfig(); +// // 此处要注意:parent + moduleName 为包的名字,在这个包下,创建对应的controller... +// pc.setParent("com.demo"); +// pc.setModuleName("demo"); //模块名 +// pc.setController("controller"); +// pc.setEntity("entity"); +// pc.setService("service"); +// pc.setMapper("mapper"); +// mpg.setPackageInfo(pc); +// +// // 5、策略配置 +// StrategyConfig strategy = new StrategyConfig(); +// // 数据库中表的名字,表示要对哪些表进行自动生成controller service、mapper... +// strategy.setInclude("entrust"); +// // 数据库表映射到实体的命名策略,驼峰命名法 +// strategy.setNaming(NamingStrategy.underline_to_camel); +// //数据库表字段映射到实体的命名策略 +// strategy.setColumnNaming(NamingStrategy.underline_to_camel); +// strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作 +// +//// strategy.setRestControllerStyle(true); //restful api风格控制器 +// strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符 +// +// mpg.setStrategy(strategy); +// +// // 6、执行 +// mpg.execute(); +// } +}