parent
1f94ae7e3f
commit
c3f5041264
124 changed files with 42673 additions and 0 deletions
@ -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/ |
Binary file not shown.
@ -0,0 +1,2 @@ |
|||||||
|
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip |
||||||
|
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar |
@ -0,0 +1,316 @@ |
|||||||
|
#!/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 /usr/local/etc/mavenrc ] ; then |
||||||
|
. /usr/local/etc/mavenrc |
||||||
|
fi |
||||||
|
|
||||||
|
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="`\\unset -f command; \\command -v 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/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" |
||||||
|
else |
||||||
|
jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.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" || rm -f "$wrapperJarPath" |
||||||
|
else |
||||||
|
wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$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 \ |
||||||
|
$MAVEN_DEBUG_OPTS \ |
||||||
|
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ |
||||||
|
"-Dmaven.home=${M2_HOME}" \ |
||||||
|
"-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ |
||||||
|
${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" |
@ -0,0 +1,188 @@ |
|||||||
|
@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 "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* |
||||||
|
if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\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/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" |
||||||
|
|
||||||
|
FOR /F "usebackq 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%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.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 "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" |
||||||
|
if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\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% |
||||||
|
|
||||||
|
cmd /C exit /B %ERROR_CODE% |
@ -0,0 +1,72 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-parent</artifactId> |
||||||
|
<version>2.7.4</version> |
||||||
|
<relativePath/> <!-- lookup parent from repository --> |
||||||
|
</parent> |
||||||
|
<groupId>com.redis</groupId> |
||||||
|
<artifactId>SpringDataRedisDemo</artifactId> |
||||||
|
<version>0.0.1-SNAPSHOT</version> |
||||||
|
<name>SpringDataRedisDemo</name> |
||||||
|
<description>SpringDataRedisDemo</description> |
||||||
|
<properties> |
||||||
|
<java.version>1.8</java.version> |
||||||
|
</properties> |
||||||
|
<dependencies> |
||||||
|
<!--SpringDataRedis--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.commons</groupId> |
||||||
|
<artifactId>commons-pool2</artifactId> |
||||||
|
<version>2.11.1</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-data-redis</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<!--lombok--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.projectlombok</groupId> |
||||||
|
<artifactId>lombok</artifactId> |
||||||
|
<optional>true</optional> |
||||||
|
</dependency> |
||||||
|
<!--springboot--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-test</artifactId> |
||||||
|
<scope>test</scope> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>com.fasterxml.jackson.core</groupId> |
||||||
|
<artifactId>jackson-databind</artifactId> |
||||||
|
<version>2.14.0-rc1</version> |
||||||
|
<scope>test</scope> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
|
||||||
|
</dependencies> |
||||||
|
|
||||||
|
<build> |
||||||
|
<plugins> |
||||||
|
<plugin> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId> |
||||||
|
<configuration> |
||||||
|
<excludes> |
||||||
|
<exclude> |
||||||
|
<groupId>org.projectlombok</groupId> |
||||||
|
<artifactId>lombok</artifactId> |
||||||
|
</exclude> |
||||||
|
</excludes> |
||||||
|
</configuration> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
</build> |
||||||
|
|
||||||
|
</project> |
@ -0,0 +1,36 @@ |
|||||||
|
package com.redis.config; |
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
import org.springframework.data.redis.connection.RedisConnectionFactory; |
||||||
|
import org.springframework.data.redis.core.RedisTemplate; |
||||||
|
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; |
||||||
|
import org.springframework.data.redis.serializer.RedisSerializer; |
||||||
|
|
||||||
|
|
||||||
|
@Configuration |
||||||
|
public class RedisConfig { |
||||||
|
|
||||||
|
// connectionFactory报错
|
||||||
|
@Bean |
||||||
|
public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory connectionFactory){ |
||||||
|
// 1.创建RedisTemplate对象
|
||||||
|
RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>(); |
||||||
|
|
||||||
|
// 2.设置连接工厂
|
||||||
|
redisTemplate.setConnectionFactory(connectionFactory); |
||||||
|
|
||||||
|
// 3.创建序列化对象
|
||||||
|
GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer(); |
||||||
|
|
||||||
|
// 4.设置key和hashKey采用String的序列化方式
|
||||||
|
redisTemplate.setKeySerializer(RedisSerializer.string()); |
||||||
|
redisTemplate.setHashKeySerializer(RedisSerializer.string()); |
||||||
|
|
||||||
|
// 4.设置value和hashValue采用json的序列化方式
|
||||||
|
redisTemplate.setValueSerializer(jsonRedisSerializer); |
||||||
|
redisTemplate.setHashValueSerializer(jsonRedisSerializer); |
||||||
|
|
||||||
|
return redisTemplate; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
package com.redis.pojo; |
||||||
|
|
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.NoArgsConstructor; |
||||||
|
|
||||||
|
@Data |
||||||
|
@NoArgsConstructor |
||||||
|
@AllArgsConstructor |
||||||
|
public class User { |
||||||
|
private String name; |
||||||
|
private Integer age; |
||||||
|
} |
@ -0,0 +1,13 @@ |
|||||||
|
package com.redis.springdataredisdemo; |
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication; |
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication; |
||||||
|
|
||||||
|
@SpringBootApplication |
||||||
|
public class SpringDataRedisDemoApplication { |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
SpringApplication.run(SpringDataRedisDemoApplication.class, args); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
spring: |
||||||
|
redis: |
||||||
|
host: 192.168.153.130 |
||||||
|
password: admin |
||||||
|
port: 6379 |
||||||
|
lettuce: |
||||||
|
pool: |
||||||
|
max-active: 8 |
||||||
|
max-idle: 8 |
||||||
|
min-idle: 1 |
||||||
|
max-wait: 100ms |
@ -0,0 +1,62 @@ |
|||||||
|
package com.redis.springdataredisdemo; |
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException; |
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper; |
||||||
|
import com.redis.pojo.User; |
||||||
|
import org.junit.jupiter.api.Test; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.boot.test.context.SpringBootTest; |
||||||
|
import org.springframework.data.redis.core.StringRedisTemplate; |
||||||
|
|
||||||
|
import javax.management.ObjectName; |
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@SpringBootTest |
||||||
|
public class RedisStringTemplateTest { |
||||||
|
@Autowired |
||||||
|
private StringRedisTemplate redisTemplate; |
||||||
|
|
||||||
|
private static final ObjectMapper mapper = new ObjectMapper(); |
||||||
|
|
||||||
|
@Test |
||||||
|
void testString() { |
||||||
|
redisTemplate.opsForValue().set("name","李四"); |
||||||
|
|
||||||
|
String name = redisTemplate.opsForValue().get("name"); |
||||||
|
System.out.println("name = " + name); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
void testUser() throws JsonProcessingException { |
||||||
|
User user = new User("张三",15); |
||||||
|
// 手动将对象序列化
|
||||||
|
String JsonStr = mapper.writeValueAsString(user); |
||||||
|
// 写入数据
|
||||||
|
redisTemplate.opsForValue().set("User:1",JsonStr); |
||||||
|
|
||||||
|
// 获取数据
|
||||||
|
String JsonUser = redisTemplate.opsForValue().get("User:1"); |
||||||
|
// 手动反序列化
|
||||||
|
User user1 = mapper.readValue(JsonUser,User.class); |
||||||
|
System.out.println("user1 = " + user1); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
void testHash() { |
||||||
|
redisTemplate.opsForHash().put("User:2","name","admin"); |
||||||
|
redisTemplate.opsForHash().put("User:2","age","18"); |
||||||
|
Map<Object,Object> map = new HashMap<>(); |
||||||
|
map.put("name","zzz"); |
||||||
|
map.put("age","18"); |
||||||
|
redisTemplate.opsForHash().putAll("User:3",map); |
||||||
|
|
||||||
|
Map<Object, Object> user_2 = redisTemplate.opsForHash().entries("User:2"); |
||||||
|
System.out.println("user_2 = " + user_2); |
||||||
|
|
||||||
|
|
||||||
|
Map<Object, Object> user_3 = redisTemplate.opsForHash().entries("User:3"); |
||||||
|
System.out.println("user_3 = " + user_3); |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.redis.springdataredisdemo; |
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test; |
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.boot.test.context.SpringBootTest; |
||||||
|
import org.springframework.data.redis.core.StringRedisTemplate; |
||||||
|
|
||||||
|
@SpringBootTest |
||||||
|
class SpringDataRedisDemoApplicationTests { |
||||||
|
@Autowired |
||||||
|
private StringRedisTemplate redisTemplate; |
||||||
|
|
||||||
|
@Test |
||||||
|
void testString() { |
||||||
|
redisTemplate.opsForValue().set("name", "张三"); |
||||||
|
|
||||||
|
Object name = redisTemplate.opsForValue().get("name"); |
||||||
|
System.out.println("name = " + name); |
||||||
|
} |
||||||
|
} |
@ -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/ |
@ -0,0 +1,79 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
<parent> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-parent</artifactId> |
||||||
|
<version>2.3.12.RELEASE</version> |
||||||
|
<relativePath/> <!-- lookup parent from repository --> |
||||||
|
</parent> |
||||||
|
<groupId>com.hmdp</groupId> |
||||||
|
<artifactId>hm-dianping</artifactId> |
||||||
|
<version>0.0.1-SNAPSHOT</version> |
||||||
|
<name>hm-dianping</name> |
||||||
|
<description>Demo project for Spring Boot</description> |
||||||
|
<properties> |
||||||
|
<java.version>1.8</java.version> |
||||||
|
</properties> |
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-data-redis</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.apache.commons</groupId> |
||||||
|
<artifactId>commons-pool2</artifactId> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-web</artifactId> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>mysql</groupId> |
||||||
|
<artifactId>mysql-connector-java</artifactId> |
||||||
|
<scope>runtime</scope> |
||||||
|
<version>5.1.47</version> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.projectlombok</groupId> |
||||||
|
<artifactId>lombok</artifactId> |
||||||
|
<optional>true</optional> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-starter-test</artifactId> |
||||||
|
<scope>test</scope> |
||||||
|
</dependency> |
||||||
|
<dependency> |
||||||
|
<groupId>com.baomidou</groupId> |
||||||
|
<artifactId>mybatis-plus-boot-starter</artifactId> |
||||||
|
<version>3.4.3</version> |
||||||
|
</dependency> |
||||||
|
<!--hutool--> |
||||||
|
<dependency> |
||||||
|
<groupId>cn.hutool</groupId> |
||||||
|
<artifactId>hutool-all</artifactId> |
||||||
|
<version>5.7.17</version> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
|
||||||
|
<build> |
||||||
|
<plugins> |
||||||
|
<plugin> |
||||||
|
<groupId>org.springframework.boot</groupId> |
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId> |
||||||
|
<configuration> |
||||||
|
<excludes> |
||||||
|
<exclude> |
||||||
|
<groupId>org.projectlombok</groupId> |
||||||
|
<artifactId>lombok</artifactId> |
||||||
|
</exclude> |
||||||
|
</excludes> |
||||||
|
</configuration> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
</build> |
||||||
|
|
||||||
|
</project> |
@ -0,0 +1,15 @@ |
|||||||
|
package com.hmdp; |
||||||
|
|
||||||
|
import org.mybatis.spring.annotation.MapperScan; |
||||||
|
import org.springframework.boot.SpringApplication; |
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication; |
||||||
|
|
||||||
|
@MapperScan("com.hmdp.mapper") |
||||||
|
@SpringBootApplication |
||||||
|
public class HmDianPingApplication { |
||||||
|
|
||||||
|
public static void main(String[] args) { |
||||||
|
SpringApplication.run(HmDianPingApplication.class, args); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
package com.hmdp.config; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.DbType; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; |
||||||
|
import org.springframework.context.annotation.Bean; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
|
||||||
|
@Configuration |
||||||
|
public class MybatisConfig { |
||||||
|
@Bean |
||||||
|
public MybatisPlusInterceptor mybatisPlusInterceptor() { |
||||||
|
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); |
||||||
|
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); |
||||||
|
return interceptor; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
package com.hmdp.config; |
||||||
|
|
||||||
|
import com.hmdp.dto.Result; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.web.bind.annotation.ExceptionHandler; |
||||||
|
import org.springframework.web.bind.annotation.RestControllerAdvice; |
||||||
|
|
||||||
|
@Slf4j |
||||||
|
@RestControllerAdvice |
||||||
|
public class WebExceptionAdvice { |
||||||
|
|
||||||
|
@ExceptionHandler(RuntimeException.class) |
||||||
|
public Result handleRuntimeException(RuntimeException e) { |
||||||
|
log.error(e.toString(), e); |
||||||
|
return Result.fail("服务器异常"); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hmdp.controller; |
||||||
|
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 前端控制器 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequestMapping("/blog-comments") |
||||||
|
public class BlogCommentsController { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,83 @@ |
|||||||
|
package com.hmdp.controller; |
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.hmdp.dto.Result; |
||||||
|
import com.hmdp.dto.UserDTO; |
||||||
|
import com.hmdp.entity.Blog; |
||||||
|
import com.hmdp.entity.User; |
||||||
|
import com.hmdp.service.IBlogService; |
||||||
|
import com.hmdp.service.IUserService; |
||||||
|
import com.hmdp.utils.SystemConstants; |
||||||
|
import com.hmdp.utils.UserHolder; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 前端控制器 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequestMapping("/blog") |
||||||
|
public class BlogController { |
||||||
|
|
||||||
|
@Resource |
||||||
|
private IBlogService blogService; |
||||||
|
@Resource |
||||||
|
private IUserService userService; |
||||||
|
|
||||||
|
@PostMapping |
||||||
|
public Result saveBlog(@RequestBody Blog blog) { |
||||||
|
// 获取登录用户
|
||||||
|
UserDTO user = UserHolder.getUser(); |
||||||
|
blog.setUserId(user.getId()); |
||||||
|
// 保存探店博文
|
||||||
|
blogService.save(blog); |
||||||
|
// 返回id
|
||||||
|
return Result.ok(blog.getId()); |
||||||
|
} |
||||||
|
|
||||||
|
@PutMapping("/like/{id}") |
||||||
|
public Result likeBlog(@PathVariable("id") Long id) { |
||||||
|
// 修改点赞数量
|
||||||
|
blogService.update() |
||||||
|
.setSql("liked = liked + 1").eq("id", id).update(); |
||||||
|
return Result.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
@GetMapping("/of/me") |
||||||
|
public Result queryMyBlog(@RequestParam(value = "current", defaultValue = "1") Integer current) { |
||||||
|
// 获取登录用户
|
||||||
|
UserDTO user = UserHolder.getUser(); |
||||||
|
// 根据用户查询
|
||||||
|
Page<Blog> page = blogService.query() |
||||||
|
.eq("user_id", user.getId()).page(new Page<>(current, SystemConstants.MAX_PAGE_SIZE)); |
||||||
|
// 获取当前页数据
|
||||||
|
List<Blog> records = page.getRecords(); |
||||||
|
return Result.ok(records); |
||||||
|
} |
||||||
|
|
||||||
|
@GetMapping("/hot") |
||||||
|
public Result queryHotBlog(@RequestParam(value = "current", defaultValue = "1") Integer current) { |
||||||
|
// 根据用户查询
|
||||||
|
Page<Blog> page = blogService.query() |
||||||
|
.orderByDesc("liked") |
||||||
|
.page(new Page<>(current, SystemConstants.MAX_PAGE_SIZE)); |
||||||
|
// 获取当前页数据
|
||||||
|
List<Blog> records = page.getRecords(); |
||||||
|
// 查询用户
|
||||||
|
records.forEach(blog ->{ |
||||||
|
Long userId = blog.getUserId(); |
||||||
|
User user = userService.getById(userId); |
||||||
|
blog.setName(user.getNickName()); |
||||||
|
blog.setIcon(user.getIcon()); |
||||||
|
}); |
||||||
|
return Result.ok(records); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hmdp.controller; |
||||||
|
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 前端控制器 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequestMapping("/follow") |
||||||
|
public class FollowController { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,101 @@ |
|||||||
|
package com.hmdp.controller; |
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||||
|
import com.hmdp.dto.Result; |
||||||
|
import com.hmdp.entity.Shop; |
||||||
|
import com.hmdp.service.IShopService; |
||||||
|
import com.hmdp.utils.SystemConstants; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 前端控制器 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequestMapping("/shop") |
||||||
|
public class ShopController { |
||||||
|
|
||||||
|
@Resource |
||||||
|
public IShopService shopService; |
||||||
|
|
||||||
|
/** |
||||||
|
* 根据id查询商铺信息 |
||||||
|
* @param id 商铺id |
||||||
|
* @return 商铺详情数据 |
||||||
|
*/ |
||||||
|
@GetMapping("/{id}") |
||||||
|
public Result queryShopById(@PathVariable("id") Long id) { |
||||||
|
return Result.ok(shopService.getById(id)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 新增商铺信息 |
||||||
|
* @param shop 商铺数据 |
||||||
|
* @return 商铺id |
||||||
|
*/ |
||||||
|
@PostMapping |
||||||
|
public Result saveShop(@RequestBody Shop shop) { |
||||||
|
// 写入数据库
|
||||||
|
shopService.save(shop); |
||||||
|
// 返回店铺id
|
||||||
|
return Result.ok(shop.getId()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 更新商铺信息 |
||||||
|
* @param shop 商铺数据 |
||||||
|
* @return 无 |
||||||
|
*/ |
||||||
|
@PutMapping |
||||||
|
public Result updateShop(@RequestBody Shop shop) { |
||||||
|
// 写入数据库
|
||||||
|
shopService.updateById(shop); |
||||||
|
return Result.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 根据商铺类型分页查询商铺信息 |
||||||
|
* @param typeId 商铺类型 |
||||||
|
* @param current 页码 |
||||||
|
* @return 商铺列表 |
||||||
|
*/ |
||||||
|
@GetMapping("/of/type") |
||||||
|
public Result queryShopByType( |
||||||
|
@RequestParam("typeId") Integer typeId, |
||||||
|
@RequestParam(value = "current", defaultValue = "1") Integer current |
||||||
|
) { |
||||||
|
// 根据类型分页查询
|
||||||
|
Page<Shop> page = shopService.query() |
||||||
|
.eq("type_id", typeId) |
||||||
|
.page(new Page<>(current, SystemConstants.DEFAULT_PAGE_SIZE)); |
||||||
|
// 返回数据
|
||||||
|
return Result.ok(page.getRecords()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 根据商铺名称关键字分页查询商铺信息 |
||||||
|
* @param name 商铺名称关键字 |
||||||
|
* @param current 页码 |
||||||
|
* @return 商铺列表 |
||||||
|
*/ |
||||||
|
@GetMapping("/of/name") |
||||||
|
public Result queryShopByName( |
||||||
|
@RequestParam(value = "name", required = false) String name, |
||||||
|
@RequestParam(value = "current", defaultValue = "1") Integer current |
||||||
|
) { |
||||||
|
// 根据类型分页查询
|
||||||
|
Page<Shop> page = shopService.query() |
||||||
|
.like(StrUtil.isNotBlank(name), "name", name) |
||||||
|
.page(new Page<>(current, SystemConstants.MAX_PAGE_SIZE)); |
||||||
|
// 返回数据
|
||||||
|
return Result.ok(page.getRecords()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
package com.hmdp.controller; |
||||||
|
|
||||||
|
|
||||||
|
import com.hmdp.dto.Result; |
||||||
|
import com.hmdp.entity.ShopType; |
||||||
|
import com.hmdp.service.IShopTypeService; |
||||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 前端控制器 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequestMapping("/shop-type") |
||||||
|
public class ShopTypeController { |
||||||
|
@Resource |
||||||
|
private IShopTypeService typeService; |
||||||
|
|
||||||
|
@GetMapping("list") |
||||||
|
public Result queryTypeList() { |
||||||
|
List<ShopType> typeList = typeService |
||||||
|
.query().orderByAsc("sort").list(); |
||||||
|
return Result.ok(typeList); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,63 @@ |
|||||||
|
package com.hmdp.controller; |
||||||
|
|
||||||
|
import cn.hutool.core.io.FileUtil; |
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
import com.hmdp.dto.Result; |
||||||
|
import com.hmdp.utils.SystemConstants; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
import org.springframework.web.multipart.MultipartFile; |
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
import java.io.IOException; |
||||||
|
import java.util.UUID; |
||||||
|
|
||||||
|
@Slf4j |
||||||
|
@RestController |
||||||
|
@RequestMapping("upload") |
||||||
|
public class UploadController { |
||||||
|
|
||||||
|
@PostMapping("blog") |
||||||
|
public Result uploadImage(@RequestParam("file") MultipartFile image) { |
||||||
|
try { |
||||||
|
// 获取原始文件名称
|
||||||
|
String originalFilename = image.getOriginalFilename(); |
||||||
|
// 生成新文件名
|
||||||
|
String fileName = createNewFileName(originalFilename); |
||||||
|
// 保存文件
|
||||||
|
image.transferTo(new File(SystemConstants.IMAGE_UPLOAD_DIR, fileName)); |
||||||
|
// 返回结果
|
||||||
|
log.debug("文件上传成功,{}", fileName); |
||||||
|
return Result.ok(fileName); |
||||||
|
} catch (IOException e) { |
||||||
|
throw new RuntimeException("文件上传失败", e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@GetMapping("/blog/delete") |
||||||
|
public Result deleteBlogImg(@RequestParam("name") String filename) { |
||||||
|
File file = new File(SystemConstants.IMAGE_UPLOAD_DIR, filename); |
||||||
|
if (file.isDirectory()) { |
||||||
|
return Result.fail("错误的文件名称"); |
||||||
|
} |
||||||
|
FileUtil.del(file); |
||||||
|
return Result.ok(); |
||||||
|
} |
||||||
|
|
||||||
|
private String createNewFileName(String originalFilename) { |
||||||
|
// 获取后缀
|
||||||
|
String suffix = StrUtil.subAfter(originalFilename, ".", true); |
||||||
|
// 生成目录
|
||||||
|
String name = UUID.randomUUID().toString(); |
||||||
|
int hash = name.hashCode(); |
||||||
|
int d1 = hash & 0xF; |
||||||
|
int d2 = (hash >> 4) & 0xF; |
||||||
|
// 判断目录是否存在
|
||||||
|
File dir = new File(SystemConstants.IMAGE_UPLOAD_DIR, StrUtil.format("/blogs/{}/{}", d1, d2)); |
||||||
|
if (!dir.exists()) { |
||||||
|
dir.mkdirs(); |
||||||
|
} |
||||||
|
// 生成文件名
|
||||||
|
return StrUtil.format("/blogs/{}/{}/{}.{}", d1, d2, name, suffix); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,82 @@ |
|||||||
|
package com.hmdp.controller; |
||||||
|
|
||||||
|
|
||||||
|
import com.hmdp.dto.LoginFormDTO; |
||||||
|
import com.hmdp.dto.Result; |
||||||
|
import com.hmdp.entity.UserInfo; |
||||||
|
import com.hmdp.service.IUserInfoService; |
||||||
|
import com.hmdp.service.IUserService; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
import javax.servlet.http.HttpSession; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 前端控制器 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Slf4j |
||||||
|
@RestController |
||||||
|
@RequestMapping("/user") |
||||||
|
public class UserController { |
||||||
|
|
||||||
|
@Resource |
||||||
|
private IUserService userService; |
||||||
|
|
||||||
|
@Resource |
||||||
|
private IUserInfoService userInfoService; |
||||||
|
|
||||||
|
/** |
||||||
|
* 发送手机验证码 |
||||||
|
*/ |
||||||
|
@PostMapping("code") |
||||||
|
public Result sendCode(@RequestParam("phone") String phone, HttpSession session) { |
||||||
|
// TODO 发送短信验证码并保存验证码
|
||||||
|
return Result.fail("功能未完成"); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 登录功能 |
||||||
|
* @param loginForm 登录参数,包含手机号、验证码;或者手机号、密码 |
||||||
|
*/ |
||||||
|
@PostMapping("/login") |
||||||
|
public Result login(@RequestBody LoginFormDTO loginForm, HttpSession session){ |
||||||
|
// TODO 实现登录功能
|
||||||
|
return Result.fail("功能未完成"); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 登出功能 |
||||||
|
* @return 无 |
||||||
|
*/ |
||||||
|
@PostMapping("/logout") |
||||||
|
public Result logout(){ |
||||||
|
// TODO 实现登出功能
|
||||||
|
return Result.fail("功能未完成"); |
||||||
|
} |
||||||
|
|
||||||
|
@GetMapping("/me") |
||||||
|
public Result me(){ |
||||||
|
// TODO 获取当前登录的用户并返回
|
||||||
|
return Result.fail("功能未完成"); |
||||||
|
} |
||||||
|
|
||||||
|
@GetMapping("/info/{id}") |
||||||
|
public Result info(@PathVariable("id") Long userId){ |
||||||
|
// 查询详情
|
||||||
|
UserInfo info = userInfoService.getById(userId); |
||||||
|
if (info == null) { |
||||||
|
// 没有详情,应该是第一次查看详情
|
||||||
|
return Result.ok(); |
||||||
|
} |
||||||
|
info.setCreateTime(null); |
||||||
|
info.setUpdateTime(null); |
||||||
|
// 返回
|
||||||
|
return Result.ok(info); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,57 @@ |
|||||||
|
package com.hmdp.controller; |
||||||
|
|
||||||
|
|
||||||
|
import com.hmdp.dto.Result; |
||||||
|
import com.hmdp.entity.Voucher; |
||||||
|
import com.hmdp.service.IVoucherService; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 前端控制器 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequestMapping("/voucher") |
||||||
|
public class VoucherController { |
||||||
|
|
||||||
|
@Resource |
||||||
|
private IVoucherService voucherService; |
||||||
|
|
||||||
|
/** |
||||||
|
* 新增普通券 |
||||||
|
* @param voucher 优惠券信息 |
||||||
|
* @return 优惠券id |
||||||
|
*/ |
||||||
|
@PostMapping |
||||||
|
public Result addVoucher(@RequestBody Voucher voucher) { |
||||||
|
voucherService.save(voucher); |
||||||
|
return Result.ok(voucher.getId()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 新增秒杀券 |
||||||
|
* @param voucher 优惠券信息,包含秒杀信息 |
||||||
|
* @return 优惠券id |
||||||
|
*/ |
||||||
|
@PostMapping("seckill") |
||||||
|
public Result addSeckillVoucher(@RequestBody Voucher voucher) { |
||||||
|
voucherService.addSeckillVoucher(voucher); |
||||||
|
return Result.ok(voucher.getId()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 查询店铺的优惠券列表 |
||||||
|
* @param shopId 店铺id |
||||||
|
* @return 优惠券列表 |
||||||
|
*/ |
||||||
|
@GetMapping("/list/{shopId}") |
||||||
|
public Result queryVoucherOfShop(@PathVariable("shopId") Long shopId) { |
||||||
|
return voucherService.queryVoucherOfShop(shopId); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
package com.hmdp.controller; |
||||||
|
|
||||||
|
|
||||||
|
import com.hmdp.dto.Result; |
||||||
|
import org.springframework.web.bind.annotation.PathVariable; |
||||||
|
import org.springframework.web.bind.annotation.PostMapping; |
||||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||||
|
import org.springframework.web.bind.annotation.RestController; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 前端控制器 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@RestController |
||||||
|
@RequestMapping("/voucher-order") |
||||||
|
public class VoucherOrderController { |
||||||
|
@PostMapping("seckill/{id}") |
||||||
|
public Result seckillVoucher(@PathVariable("id") Long voucherId) { |
||||||
|
return Result.fail("功能未完成"); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
package com.hmdp.dto; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class LoginFormDTO { |
||||||
|
private String phone; |
||||||
|
private String code; |
||||||
|
private String password; |
||||||
|
} |
@ -0,0 +1,30 @@ |
|||||||
|
package com.hmdp.dto; |
||||||
|
|
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.NoArgsConstructor; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Data |
||||||
|
@NoArgsConstructor |
||||||
|
@AllArgsConstructor |
||||||
|
public class Result { |
||||||
|
private Boolean success; |
||||||
|
private String errorMsg; |
||||||
|
private Object data; |
||||||
|
private Long total; |
||||||
|
|
||||||
|
public static Result ok(){ |
||||||
|
return new Result(true, null, null, null); |
||||||
|
} |
||||||
|
public static Result ok(Object data){ |
||||||
|
return new Result(true, null, data, null); |
||||||
|
} |
||||||
|
public static Result ok(List<?> data, Long total){ |
||||||
|
return new Result(true, null, data, total); |
||||||
|
} |
||||||
|
public static Result fail(String errorMsg){ |
||||||
|
return new Result(false, errorMsg, null, null); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
package com.hmdp.dto; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class ScrollResult { |
||||||
|
private List<?> list; |
||||||
|
private Long minTime; |
||||||
|
private Integer offset; |
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
package com.hmdp.dto; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class UserDTO { |
||||||
|
private Long id; |
||||||
|
private String nickName; |
||||||
|
private String icon; |
||||||
|
} |
@ -0,0 +1,95 @@ |
|||||||
|
package com.hmdp.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 lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@Accessors(chain = true) |
||||||
|
@TableName("tb_blog") |
||||||
|
public class Blog implements Serializable { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* 主键 |
||||||
|
*/ |
||||||
|
@TableId(value = "id", type = IdType.AUTO) |
||||||
|
private Long id; |
||||||
|
/** |
||||||
|
* 商户id |
||||||
|
*/ |
||||||
|
private Long shopId; |
||||||
|
/** |
||||||
|
* 用户id |
||||||
|
*/ |
||||||
|
private Long userId; |
||||||
|
/** |
||||||
|
* 用户图标 |
||||||
|
*/ |
||||||
|
@TableField(exist = false) |
||||||
|
private String icon; |
||||||
|
/** |
||||||
|
* 用户姓名 |
||||||
|
*/ |
||||||
|
@TableField(exist = false) |
||||||
|
private String name; |
||||||
|
/** |
||||||
|
* 是否点赞过了 |
||||||
|
*/ |
||||||
|
@TableField(exist = false) |
||||||
|
private Boolean isLike; |
||||||
|
|
||||||
|
/** |
||||||
|
* 标题 |
||||||
|
*/ |
||||||
|
private String title; |
||||||
|
|
||||||
|
/** |
||||||
|
* 探店的照片,最多9张,多张以","隔开 |
||||||
|
*/ |
||||||
|
private String images; |
||||||
|
|
||||||
|
/** |
||||||
|
* 探店的文字描述 |
||||||
|
*/ |
||||||
|
private String content; |
||||||
|
|
||||||
|
/** |
||||||
|
* 点赞数量 |
||||||
|
*/ |
||||||
|
private Integer liked; |
||||||
|
|
||||||
|
/** |
||||||
|
* 评论数量 |
||||||
|
*/ |
||||||
|
private Integer comments; |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime createTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 更新时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime updateTime; |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,81 @@ |
|||||||
|
package com.hmdp.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@Accessors(chain = true) |
||||||
|
@TableName("tb_blog_comments") |
||||||
|
public class BlogComments implements Serializable { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* 主键 |
||||||
|
*/ |
||||||
|
@TableId(value = "id", type = IdType.AUTO) |
||||||
|
private Long id; |
||||||
|
|
||||||
|
/** |
||||||
|
* 用户id |
||||||
|
*/ |
||||||
|
private Long userId; |
||||||
|
|
||||||
|
/** |
||||||
|
* 探店id |
||||||
|
*/ |
||||||
|
private Long blogId; |
||||||
|
|
||||||
|
/** |
||||||
|
* 关联的1级评论id,如果是一级评论,则值为0 |
||||||
|
*/ |
||||||
|
private Long parentId; |
||||||
|
|
||||||
|
/** |
||||||
|
* 回复的评论id |
||||||
|
*/ |
||||||
|
private Long answerId; |
||||||
|
|
||||||
|
/** |
||||||
|
* 回复的内容 |
||||||
|
*/ |
||||||
|
private String content; |
||||||
|
|
||||||
|
/** |
||||||
|
* 点赞数 |
||||||
|
*/ |
||||||
|
private Integer liked; |
||||||
|
|
||||||
|
/** |
||||||
|
* 状态,0:正常,1:被举报,2:禁止查看 |
||||||
|
*/ |
||||||
|
private Boolean status; |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime createTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 更新时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime updateTime; |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,51 @@ |
|||||||
|
package com.hmdp.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@Accessors(chain = true) |
||||||
|
@TableName("tb_follow") |
||||||
|
public class Follow implements Serializable { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* 主键 |
||||||
|
*/ |
||||||
|
@TableId(value = "id", type = IdType.AUTO) |
||||||
|
private Long id; |
||||||
|
|
||||||
|
/** |
||||||
|
* 用户id |
||||||
|
*/ |
||||||
|
private Long userId; |
||||||
|
|
||||||
|
/** |
||||||
|
* 关联的用户id |
||||||
|
*/ |
||||||
|
private Long followUserId; |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime createTime; |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,61 @@ |
|||||||
|
package com.hmdp.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 秒杀优惠券表,与优惠券是一对一关系 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2022-01-04 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@Accessors(chain = true) |
||||||
|
@TableName("tb_seckill_voucher") |
||||||
|
public class SeckillVoucher implements Serializable { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* 关联的优惠券的id |
||||||
|
*/ |
||||||
|
@TableId(value = "voucher_id", type = IdType.INPUT) |
||||||
|
private Long voucherId; |
||||||
|
|
||||||
|
/** |
||||||
|
* 库存 |
||||||
|
*/ |
||||||
|
private Integer stock; |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime createTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 生效时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime beginTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 失效时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime endTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 更新时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime updateTime; |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,109 @@ |
|||||||
|
package com.hmdp.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 lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@Accessors(chain = true) |
||||||
|
@TableName("tb_shop") |
||||||
|
public class Shop implements Serializable { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* 主键 |
||||||
|
*/ |
||||||
|
@TableId(value = "id", type = IdType.AUTO) |
||||||
|
private Long id; |
||||||
|
|
||||||
|
/** |
||||||
|
* 商铺名称 |
||||||
|
*/ |
||||||
|
private String name; |
||||||
|
|
||||||
|
/** |
||||||
|
* 商铺类型的id |
||||||
|
*/ |
||||||
|
private Long typeId; |
||||||
|
|
||||||
|
/** |
||||||
|
* 商铺图片,多个图片以','隔开 |
||||||
|
*/ |
||||||
|
private String images; |
||||||
|
|
||||||
|
/** |
||||||
|
* 商圈,例如陆家嘴 |
||||||
|
*/ |
||||||
|
private String area; |
||||||
|
|
||||||
|
/** |
||||||
|
* 地址 |
||||||
|
*/ |
||||||
|
private String address; |
||||||
|
|
||||||
|
/** |
||||||
|
* 经度 |
||||||
|
*/ |
||||||
|
private Double x; |
||||||
|
|
||||||
|
/** |
||||||
|
* 维度 |
||||||
|
*/ |
||||||
|
private Double y; |
||||||
|
|
||||||
|
/** |
||||||
|
* 均价,取整数 |
||||||
|
*/ |
||||||
|
private Long avgPrice; |
||||||
|
|
||||||
|
/** |
||||||
|
* 销量 |
||||||
|
*/ |
||||||
|
private Integer sold; |
||||||
|
|
||||||
|
/** |
||||||
|
* 评论数量 |
||||||
|
*/ |
||||||
|
private Integer comments; |
||||||
|
|
||||||
|
/** |
||||||
|
* 评分,1~5分,乘10保存,避免小数 |
||||||
|
*/ |
||||||
|
private Integer score; |
||||||
|
|
||||||
|
/** |
||||||
|
* 营业时间,例如 10:00-22:00 |
||||||
|
*/ |
||||||
|
private String openHours; |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime createTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 更新时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime updateTime; |
||||||
|
|
||||||
|
|
||||||
|
@TableField(exist = false) |
||||||
|
private Double distance; |
||||||
|
} |
@ -0,0 +1,64 @@ |
|||||||
|
package com.hmdp.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@Accessors(chain = true) |
||||||
|
@TableName("tb_shop_type") |
||||||
|
public class ShopType implements Serializable { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* 主键 |
||||||
|
*/ |
||||||
|
@TableId(value = "id", type = IdType.AUTO) |
||||||
|
private Long id; |
||||||
|
|
||||||
|
/** |
||||||
|
* 类型名称 |
||||||
|
*/ |
||||||
|
private String name; |
||||||
|
|
||||||
|
/** |
||||||
|
* 图标 |
||||||
|
*/ |
||||||
|
private String icon; |
||||||
|
|
||||||
|
/** |
||||||
|
* 顺序 |
||||||
|
*/ |
||||||
|
private Integer sort; |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建时间 |
||||||
|
*/ |
||||||
|
@JsonIgnore |
||||||
|
private LocalDateTime createTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 更新时间 |
||||||
|
*/ |
||||||
|
@JsonIgnore |
||||||
|
private LocalDateTime updateTime; |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,66 @@ |
|||||||
|
package com.hmdp.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@Accessors(chain = true) |
||||||
|
@TableName("tb_user") |
||||||
|
public class User implements Serializable { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* 主键 |
||||||
|
*/ |
||||||
|
@TableId(value = "id", type = IdType.AUTO) |
||||||
|
private Long id; |
||||||
|
|
||||||
|
/** |
||||||
|
* 手机号码 |
||||||
|
*/ |
||||||
|
private String phone; |
||||||
|
|
||||||
|
/** |
||||||
|
* 密码,加密存储 |
||||||
|
*/ |
||||||
|
private String password; |
||||||
|
|
||||||
|
/** |
||||||
|
* 昵称,默认是随机字符 |
||||||
|
*/ |
||||||
|
private String nickName; |
||||||
|
|
||||||
|
/** |
||||||
|
* 用户头像 |
||||||
|
*/ |
||||||
|
private String icon = ""; |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime createTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 更新时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime updateTime; |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,87 @@ |
|||||||
|
package com.hmdp.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.time.LocalDate; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-24 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@Accessors(chain = true) |
||||||
|
@TableName("tb_user_info") |
||||||
|
public class UserInfo implements Serializable { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* 主键,用户id |
||||||
|
*/ |
||||||
|
@TableId(value = "user_id", type = IdType.AUTO) |
||||||
|
private Long userId; |
||||||
|
|
||||||
|
/** |
||||||
|
* 城市名称 |
||||||
|
*/ |
||||||
|
private String city; |
||||||
|
|
||||||
|
/** |
||||||
|
* 个人介绍,不要超过128个字符 |
||||||
|
*/ |
||||||
|
private String introduce; |
||||||
|
|
||||||
|
/** |
||||||
|
* 粉丝数量 |
||||||
|
*/ |
||||||
|
private Integer fans; |
||||||
|
|
||||||
|
/** |
||||||
|
* 关注的人的数量 |
||||||
|
*/ |
||||||
|
private Integer followee; |
||||||
|
|
||||||
|
/** |
||||||
|
* 性别,0:男,1:女 |
||||||
|
*/ |
||||||
|
private Boolean gender; |
||||||
|
|
||||||
|
/** |
||||||
|
* 生日 |
||||||
|
*/ |
||||||
|
private LocalDate birthday; |
||||||
|
|
||||||
|
/** |
||||||
|
* 积分 |
||||||
|
*/ |
||||||
|
private Integer credits; |
||||||
|
|
||||||
|
/** |
||||||
|
* 会员级别,0~9级,0代表未开通会员 |
||||||
|
*/ |
||||||
|
private Boolean level; |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime createTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 更新时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime updateTime; |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,105 @@ |
|||||||
|
package com.hmdp.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 lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@Accessors(chain = true) |
||||||
|
@TableName("tb_voucher") |
||||||
|
public class Voucher implements Serializable { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* 主键 |
||||||
|
*/ |
||||||
|
@TableId(value = "id", type = IdType.AUTO) |
||||||
|
private Long id; |
||||||
|
|
||||||
|
/** |
||||||
|
* 商铺id |
||||||
|
*/ |
||||||
|
private Long shopId; |
||||||
|
|
||||||
|
/** |
||||||
|
* 代金券标题 |
||||||
|
*/ |
||||||
|
private String title; |
||||||
|
|
||||||
|
/** |
||||||
|
* 副标题 |
||||||
|
*/ |
||||||
|
private String subTitle; |
||||||
|
|
||||||
|
/** |
||||||
|
* 使用规则 |
||||||
|
*/ |
||||||
|
private String rules; |
||||||
|
|
||||||
|
/** |
||||||
|
* 支付金额 |
||||||
|
*/ |
||||||
|
private Long payValue; |
||||||
|
|
||||||
|
/** |
||||||
|
* 抵扣金额 |
||||||
|
*/ |
||||||
|
private Long actualValue; |
||||||
|
|
||||||
|
/** |
||||||
|
* 优惠券类型 |
||||||
|
*/ |
||||||
|
private Integer type; |
||||||
|
|
||||||
|
/** |
||||||
|
* 优惠券类型 |
||||||
|
*/ |
||||||
|
private Integer status; |
||||||
|
/** |
||||||
|
* 库存 |
||||||
|
*/ |
||||||
|
@TableField(exist = false) |
||||||
|
private Integer stock; |
||||||
|
|
||||||
|
/** |
||||||
|
* 生效时间 |
||||||
|
*/ |
||||||
|
@TableField(exist = false) |
||||||
|
private LocalDateTime beginTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 失效时间 |
||||||
|
*/ |
||||||
|
@TableField(exist = false) |
||||||
|
private LocalDateTime endTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime createTime; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* 更新时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime updateTime; |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,81 @@ |
|||||||
|
package com.hmdp.entity; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.experimental.Accessors; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@Accessors(chain = true) |
||||||
|
@TableName("tb_voucher_order") |
||||||
|
public class VoucherOrder implements Serializable { |
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* 主键 |
||||||
|
*/ |
||||||
|
@TableId(value = "id", type = IdType.INPUT) |
||||||
|
private Long id; |
||||||
|
|
||||||
|
/** |
||||||
|
* 下单的用户id |
||||||
|
*/ |
||||||
|
private Long userId; |
||||||
|
|
||||||
|
/** |
||||||
|
* 购买的代金券id |
||||||
|
*/ |
||||||
|
private Long voucherId; |
||||||
|
|
||||||
|
/** |
||||||
|
* 支付方式 1:余额支付;2:支付宝;3:微信 |
||||||
|
*/ |
||||||
|
private Integer payType; |
||||||
|
|
||||||
|
/** |
||||||
|
* 订单状态,1:未支付;2:已支付;3:已核销;4:已取消;5:退款中;6:已退款 |
||||||
|
*/ |
||||||
|
private Integer status; |
||||||
|
|
||||||
|
/** |
||||||
|
* 下单时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime createTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 支付时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime payTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 核销时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime useTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 退款时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime refundTime; |
||||||
|
|
||||||
|
/** |
||||||
|
* 更新时间 |
||||||
|
*/ |
||||||
|
private LocalDateTime updateTime; |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.mapper; |
||||||
|
|
||||||
|
import com.hmdp.entity.BlogComments; |
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* Mapper 接口 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface BlogCommentsMapper extends BaseMapper<BlogComments> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.mapper; |
||||||
|
|
||||||
|
import com.hmdp.entity.Blog; |
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* Mapper 接口 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface BlogMapper extends BaseMapper<Blog> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.mapper; |
||||||
|
|
||||||
|
import com.hmdp.entity.Follow; |
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* Mapper 接口 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface FollowMapper extends BaseMapper<Follow> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.mapper; |
||||||
|
|
||||||
|
import com.hmdp.entity.SeckillVoucher; |
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 秒杀优惠券表,与优惠券是一对一关系 Mapper 接口 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2022-01-04 |
||||||
|
*/ |
||||||
|
public interface SeckillVoucherMapper extends BaseMapper<SeckillVoucher> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.mapper; |
||||||
|
|
||||||
|
import com.hmdp.entity.Shop; |
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* Mapper 接口 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface ShopMapper extends BaseMapper<Shop> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.mapper; |
||||||
|
|
||||||
|
import com.hmdp.entity.ShopType; |
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* Mapper 接口 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface ShopTypeMapper extends BaseMapper<ShopType> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.mapper; |
||||||
|
|
||||||
|
import com.hmdp.entity.UserInfo; |
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* Mapper 接口 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-24 |
||||||
|
*/ |
||||||
|
public interface UserInfoMapper extends BaseMapper<UserInfo> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.mapper; |
||||||
|
|
||||||
|
import com.hmdp.entity.User; |
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* Mapper 接口 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface UserMapper extends BaseMapper<User> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hmdp.mapper; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
import com.hmdp.entity.Voucher; |
||||||
|
import org.apache.ibatis.annotations.Param; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* Mapper 接口 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface VoucherMapper extends BaseMapper<Voucher> { |
||||||
|
|
||||||
|
List<Voucher> queryVoucherOfShop(@Param("shopId") Long shopId); |
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.mapper; |
||||||
|
|
||||||
|
import com.hmdp.entity.VoucherOrder; |
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* Mapper 接口 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface VoucherOrderMapper extends BaseMapper<VoucherOrder> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.service; |
||||||
|
|
||||||
|
import com.hmdp.entity.BlogComments; |
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface IBlogCommentsService extends IService<BlogComments> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.service; |
||||||
|
|
||||||
|
import com.hmdp.entity.Blog; |
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface IBlogService extends IService<Blog> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.service; |
||||||
|
|
||||||
|
import com.hmdp.entity.Follow; |
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface IFollowService extends IService<Follow> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.service; |
||||||
|
|
||||||
|
import com.hmdp.entity.SeckillVoucher; |
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 秒杀优惠券表,与优惠券是一对一关系 服务类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2022-01-04 |
||||||
|
*/ |
||||||
|
public interface ISeckillVoucherService extends IService<SeckillVoucher> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.service; |
||||||
|
|
||||||
|
import com.hmdp.entity.Shop; |
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface IShopService extends IService<Shop> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.service; |
||||||
|
|
||||||
|
import com.hmdp.entity.ShopType; |
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface IShopTypeService extends IService<ShopType> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.service; |
||||||
|
|
||||||
|
import com.hmdp.entity.UserInfo; |
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-24 |
||||||
|
*/ |
||||||
|
public interface IUserInfoService extends IService<UserInfo> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.service; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
import com.hmdp.entity.User; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface IUserService extends IService<User> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package com.hmdp.service; |
||||||
|
|
||||||
|
import com.hmdp.entity.VoucherOrder; |
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface IVoucherOrderService extends IService<VoucherOrder> { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hmdp.service; |
||||||
|
|
||||||
|
import com.hmdp.dto.Result; |
||||||
|
import com.hmdp.entity.Voucher; |
||||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
public interface IVoucherService extends IService<Voucher> { |
||||||
|
|
||||||
|
Result queryVoucherOfShop(Long shopId); |
||||||
|
|
||||||
|
void addSeckillVoucher(Voucher voucher); |
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hmdp.service.impl; |
||||||
|
|
||||||
|
import com.hmdp.entity.BlogComments; |
||||||
|
import com.hmdp.mapper.BlogCommentsMapper; |
||||||
|
import com.hmdp.service.IBlogCommentsService; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务实现类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class BlogCommentsServiceImpl extends ServiceImpl<BlogCommentsMapper, BlogComments> implements IBlogCommentsService { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hmdp.service.impl; |
||||||
|
|
||||||
|
import com.hmdp.entity.Blog; |
||||||
|
import com.hmdp.mapper.BlogMapper; |
||||||
|
import com.hmdp.service.IBlogService; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务实现类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class BlogServiceImpl extends ServiceImpl<BlogMapper, Blog> implements IBlogService { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hmdp.service.impl; |
||||||
|
|
||||||
|
import com.hmdp.entity.Follow; |
||||||
|
import com.hmdp.mapper.FollowMapper; |
||||||
|
import com.hmdp.service.IFollowService; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务实现类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class FollowServiceImpl extends ServiceImpl<FollowMapper, Follow> implements IFollowService { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hmdp.service.impl; |
||||||
|
|
||||||
|
import com.hmdp.entity.SeckillVoucher; |
||||||
|
import com.hmdp.mapper.SeckillVoucherMapper; |
||||||
|
import com.hmdp.service.ISeckillVoucherService; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 秒杀优惠券表,与优惠券是一对一关系 服务实现类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2022-01-04 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class SeckillVoucherServiceImpl extends ServiceImpl<SeckillVoucherMapper, SeckillVoucher> implements ISeckillVoucherService { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hmdp.service.impl; |
||||||
|
|
||||||
|
import com.hmdp.entity.Shop; |
||||||
|
import com.hmdp.mapper.ShopMapper; |
||||||
|
import com.hmdp.service.IShopService; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务实现类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class ShopServiceImpl extends ServiceImpl<ShopMapper, Shop> implements IShopService { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hmdp.service.impl; |
||||||
|
|
||||||
|
import com.hmdp.entity.ShopType; |
||||||
|
import com.hmdp.mapper.ShopTypeMapper; |
||||||
|
import com.hmdp.service.IShopTypeService; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务实现类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hmdp.service.impl; |
||||||
|
|
||||||
|
import com.hmdp.entity.UserInfo; |
||||||
|
import com.hmdp.mapper.UserInfoMapper; |
||||||
|
import com.hmdp.service.IUserInfoService; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务实现类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-24 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements IUserInfoService { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hmdp.service.impl; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.hmdp.entity.User; |
||||||
|
import com.hmdp.mapper.UserMapper; |
||||||
|
import com.hmdp.service.IUserService; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务实现类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.hmdp.service.impl; |
||||||
|
|
||||||
|
import com.hmdp.entity.VoucherOrder; |
||||||
|
import com.hmdp.mapper.VoucherOrderMapper; |
||||||
|
import com.hmdp.service.IVoucherOrderService; |
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务实现类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class VoucherOrderServiceImpl extends ServiceImpl<VoucherOrderMapper, VoucherOrder> implements IVoucherOrderService { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,51 @@ |
|||||||
|
package com.hmdp.service.impl; |
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||||
|
import com.hmdp.dto.Result; |
||||||
|
import com.hmdp.entity.Voucher; |
||||||
|
import com.hmdp.mapper.VoucherMapper; |
||||||
|
import com.hmdp.entity.SeckillVoucher; |
||||||
|
import com.hmdp.service.ISeckillVoucherService; |
||||||
|
import com.hmdp.service.IVoucherService; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import org.springframework.transaction.annotation.Transactional; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* <p> |
||||||
|
* 服务实现类 |
||||||
|
* </p> |
||||||
|
* |
||||||
|
* @author 虎哥 |
||||||
|
* @since 2021-12-22 |
||||||
|
*/ |
||||||
|
@Service |
||||||
|
public class VoucherServiceImpl extends ServiceImpl<VoucherMapper, Voucher> implements IVoucherService { |
||||||
|
|
||||||
|
@Resource |
||||||
|
private ISeckillVoucherService seckillVoucherService; |
||||||
|
|
||||||
|
@Override |
||||||
|
public Result queryVoucherOfShop(Long shopId) { |
||||||
|
// 查询优惠券信息
|
||||||
|
List<Voucher> vouchers = getBaseMapper().queryVoucherOfShop(shopId); |
||||||
|
// 返回结果
|
||||||
|
return Result.ok(vouchers); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
@Transactional |
||||||
|
public void addSeckillVoucher(Voucher voucher) { |
||||||
|
// 保存优惠券
|
||||||
|
save(voucher); |
||||||
|
// 保存秒杀信息
|
||||||
|
SeckillVoucher seckillVoucher = new SeckillVoucher(); |
||||||
|
seckillVoucher.setVoucherId(voucher.getId()); |
||||||
|
seckillVoucher.setStock(voucher.getStock()); |
||||||
|
seckillVoucher.setBeginTime(voucher.getBeginTime()); |
||||||
|
seckillVoucher.setEndTime(voucher.getEndTime()); |
||||||
|
seckillVoucherService.save(seckillVoucher); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,34 @@ |
|||||||
|
package com.hmdp.utils; |
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.util.RandomUtil; |
||||||
|
import org.springframework.util.DigestUtils; |
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets; |
||||||
|
|
||||||
|
public class PasswordEncoder { |
||||||
|
|
||||||
|
public static String encode(String password) { |
||||||
|
// 生成盐
|
||||||
|
String salt = RandomUtil.randomString(20); |
||||||
|
// 加密
|
||||||
|
return encode(password,salt); |
||||||
|
} |
||||||
|
private static String encode(String password, String salt) { |
||||||
|
// 加密
|
||||||
|
return salt + "@" + DigestUtils.md5DigestAsHex((password + salt).getBytes(StandardCharsets.UTF_8)); |
||||||
|
} |
||||||
|
public static Boolean matches(String encodedPassword, String rawPassword) { |
||||||
|
if (encodedPassword == null || rawPassword == null) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
if(!encodedPassword.contains("@")){ |
||||||
|
throw new RuntimeException("密码格式不正确!"); |
||||||
|
} |
||||||
|
String[] arr = encodedPassword.split("@"); |
||||||
|
// 获取盐
|
||||||
|
String salt = arr[0]; |
||||||
|
// 比较
|
||||||
|
return encodedPassword.equals(encode(rawPassword, salt)); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,22 @@ |
|||||||
|
package com.hmdp.utils; |
||||||
|
|
||||||
|
public class RedisConstants { |
||||||
|
public static final String LOGIN_CODE_KEY = "login:code:"; |
||||||
|
public static final Long LOGIN_CODE_TTL = 2L; |
||||||
|
public static final String LOGIN_USER_KEY = "login:token:"; |
||||||
|
public static final Long LOGIN_USER_TTL = 36000L; |
||||||
|
|
||||||
|
public static final Long CACHE_NULL_TTL = 2L; |
||||||
|
|
||||||
|
public static final Long CACHE_SHOP_TTL = 30L; |
||||||
|
public static final String CACHE_SHOP_KEY = "cache:shop:"; |
||||||
|
|
||||||
|
public static final String LOCK_SHOP_KEY = "lock:shop:"; |
||||||
|
public static final Long LOCK_SHOP_TTL = 10L; |
||||||
|
|
||||||
|
public static final String SECKILL_STOCK_KEY = "seckill:stock:"; |
||||||
|
public static final String BLOG_LIKED_KEY = "blog:liked:"; |
||||||
|
public static final String FEED_KEY = "feed:"; |
||||||
|
public static final String SHOP_GEO_KEY = "shop:geo:"; |
||||||
|
public static final String USER_SIGN_KEY = "sign:"; |
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
package com.hmdp.utils; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
|
||||||
|
import java.time.LocalDateTime; |
||||||
|
|
||||||
|
@Data |
||||||
|
public class RedisData { |
||||||
|
private LocalDateTime expireTime; |
||||||
|
private Object data; |
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
package com.hmdp.utils; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author 虎哥 |
||||||
|
*/ |
||||||
|
public abstract class RegexPatterns { |
||||||
|
/** |
||||||
|
* 手机号正则 |
||||||
|
*/ |
||||||
|
public static final String PHONE_REGEX = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$"; |
||||||
|
/** |
||||||
|
* 邮箱正则 |
||||||
|
*/ |
||||||
|
public static final String EMAIL_REGEX = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"; |
||||||
|
/** |
||||||
|
* 密码正则。4~32位的字母、数字、下划线 |
||||||
|
*/ |
||||||
|
public static final String PASSWORD_REGEX = "^\\w{4,32}$"; |
||||||
|
/** |
||||||
|
* 验证码正则, 6位数字或字母 |
||||||
|
*/ |
||||||
|
public static final String VERIFY_CODE_REGEX = "^[a-zA-Z\\d]{6}$"; |
||||||
|
|
||||||
|
} |
@ -0,0 +1,42 @@ |
|||||||
|
package com.hmdp.utils; |
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author 虎哥 |
||||||
|
*/ |
||||||
|
public class RegexUtils { |
||||||
|
/** |
||||||
|
* 是否是无效手机格式 |
||||||
|
* @param phone 要校验的手机号 |
||||||
|
* @return true:符合,false:不符合 |
||||||
|
*/ |
||||||
|
public static boolean isPhoneInvalid(String phone){ |
||||||
|
return mismatch(phone, RegexPatterns.PHONE_REGEX); |
||||||
|
} |
||||||
|
/** |
||||||
|
* 是否是无效邮箱格式 |
||||||
|
* @param email 要校验的邮箱 |
||||||
|
* @return true:符合,false:不符合 |
||||||
|
*/ |
||||||
|
public static boolean isEmailInvalid(String email){ |
||||||
|
return mismatch(email, RegexPatterns.EMAIL_REGEX); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 是否是无效验证码格式 |
||||||
|
* @param code 要校验的验证码 |
||||||
|
* @return true:符合,false:不符合 |
||||||
|
*/ |
||||||
|
public static boolean isCodeInvalid(String code){ |
||||||
|
return mismatch(code, RegexPatterns.VERIFY_CODE_REGEX); |
||||||
|
} |
||||||
|
|
||||||
|
// 校验是否不符合正则格式
|
||||||
|
private static boolean mismatch(String str, String regex){ |
||||||
|
if (StrUtil.isBlank(str)) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
return !str.matches(regex); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
package com.hmdp.utils; |
||||||
|
|
||||||
|
public class SystemConstants { |
||||||
|
public static final String IMAGE_UPLOAD_DIR = "D:\\lesson\\nginx-1.18.0\\html\\hmdp\\imgs\\"; |
||||||
|
public static final String USER_NICK_NAME_PREFIX = "user_"; |
||||||
|
public static final int DEFAULT_PAGE_SIZE = 5; |
||||||
|
public static final int MAX_PAGE_SIZE = 10; |
||||||
|
} |
@ -0,0 +1,19 @@ |
|||||||
|
package com.hmdp.utils; |
||||||
|
|
||||||
|
import com.hmdp.dto.UserDTO; |
||||||
|
|
||||||
|
public class UserHolder { |
||||||
|
private static final ThreadLocal<UserDTO> tl = new ThreadLocal<>(); |
||||||
|
|
||||||
|
public static void saveUser(UserDTO user){ |
||||||
|
tl.set(user); |
||||||
|
} |
||||||
|
|
||||||
|
public static UserDTO getUser(){ |
||||||
|
return tl.get(); |
||||||
|
} |
||||||
|
|
||||||
|
public static void removeUser(){ |
||||||
|
tl.remove(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,27 @@ |
|||||||
|
server: |
||||||
|
port: 8081 |
||||||
|
spring: |
||||||
|
application: |
||||||
|
name: hmdp |
||||||
|
datasource: |
||||||
|
driver-class-name: com.mysql.jdbc.Driver |
||||||
|
url: jdbc:mysql://192.168.153.130:3306/hmdp?useSSL=false&serverTimezone=UTC |
||||||
|
username: root |
||||||
|
password: zfp251217 |
||||||
|
redis: |
||||||
|
host: 192.168.153.130 |
||||||
|
port: 6379 |
||||||
|
password: admin |
||||||
|
lettuce: |
||||||
|
pool: |
||||||
|
max-active: 10 |
||||||
|
max-idle: 10 |
||||||
|
min-idle: 1 |
||||||
|
time-between-eviction-runs: 10s |
||||||
|
jackson: |
||||||
|
default-property-inclusion: non_null # JSON处理时忽略非空字段 |
||||||
|
mybatis-plus: |
||||||
|
type-aliases-package: com.hmdp.entity # 别名扫描包 |
||||||
|
logging: |
||||||
|
level: |
||||||
|
com.hmdp: debug |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,13 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||||
|
<mapper namespace="com.hmdp.mapper.VoucherMapper"> |
||||||
|
|
||||||
|
<select id="queryVoucherOfShop" resultType="com.hmdp.entity.Voucher" parameterType="java.lang.Long"> |
||||||
|
SELECT |
||||||
|
v.`id`, v.`shop_id`, v.`title`, v.`sub_title`, v.`rules`, v.`pay_value`, |
||||||
|
v.`actual_value`, v.`type`, sv.`stock` , sv.begin_time , sv.end_time |
||||||
|
FROM tb_voucher v |
||||||
|
LEFT JOIN tb_seckill_voucher sv ON v.id = sv.voucher_id |
||||||
|
WHERE v.shop_id = #{shopId} AND v.status = 1 |
||||||
|
</select> |
||||||
|
</mapper> |
@ -0,0 +1,9 @@ |
|||||||
|
package com.hmdp; |
||||||
|
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest; |
||||||
|
|
||||||
|
@SpringBootTest |
||||||
|
class HmDianPingApplicationTests { |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
# Default ignored files |
||||||
|
/shelf/ |
||||||
|
/workspace.xml |
||||||
|
# Editor-based HTTP Client requests |
||||||
|
/httpRequests/ |
||||||
|
# Datasource local storage ignored files |
||||||
|
/dataSources/ |
||||||
|
/dataSources.local.xml |
@ -0,0 +1,13 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project version="4"> |
||||||
|
<component name="CompilerConfiguration"> |
||||||
|
<annotationProcessing> |
||||||
|
<profile name="Maven default annotation processors profile" enabled="true"> |
||||||
|
<sourceOutputDir name="target/generated-sources/annotations" /> |
||||||
|
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> |
||||||
|
<outputRelativeToContentRoot value="true" /> |
||||||
|
<module name="jedis_demo" /> |
||||||
|
</profile> |
||||||
|
</annotationProcessing> |
||||||
|
</component> |
||||||
|
</project> |
@ -0,0 +1,7 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project version="4"> |
||||||
|
<component name="Encoding"> |
||||||
|
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" /> |
||||||
|
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" /> |
||||||
|
</component> |
||||||
|
</project> |
@ -0,0 +1,25 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project version="4"> |
||||||
|
<component name="RemoteRepositoriesConfiguration"> |
||||||
|
<remote-repository> |
||||||
|
<option name="id" value="central" /> |
||||||
|
<option name="name" value="Central Repository" /> |
||||||
|
<option name="url" value="https://repo.maven.apache.org/maven2" /> |
||||||
|
</remote-repository> |
||||||
|
<remote-repository> |
||||||
|
<option name="id" value="central" /> |
||||||
|
<option name="name" value="Maven Central repository" /> |
||||||
|
<option name="url" value="https://repo1.maven.org/maven2" /> |
||||||
|
</remote-repository> |
||||||
|
<remote-repository> |
||||||
|
<option name="id" value="jboss.community" /> |
||||||
|
<option name="name" value="JBoss Community repository" /> |
||||||
|
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" /> |
||||||
|
</remote-repository> |
||||||
|
<remote-repository> |
||||||
|
<option name="id" value="central" /> |
||||||
|
<option name="name" value="Central Repository" /> |
||||||
|
<option name="url" value="https://maven.aliyun.com/repository/public" /> |
||||||
|
</remote-repository> |
||||||
|
</component> |
||||||
|
</project> |
@ -0,0 +1,14 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project version="4"> |
||||||
|
<component name="ExternalStorageConfigurationManager" enabled="true" /> |
||||||
|
<component name="MavenProjectsManager"> |
||||||
|
<option name="originalFiles"> |
||||||
|
<list> |
||||||
|
<option value="$PROJECT_DIR$/pom.xml" /> |
||||||
|
</list> |
||||||
|
</option> |
||||||
|
</component> |
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="corretto-1.8" project-jdk-type="JavaSDK"> |
||||||
|
<output url="file://$PROJECT_DIR$/out" /> |
||||||
|
</component> |
||||||
|
</project> |
@ -0,0 +1,6 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project version="4"> |
||||||
|
<component name="VcsDirectoryMappings"> |
||||||
|
<mapping directory="$PROJECT_DIR$/.." vcs="Git" /> |
||||||
|
</component> |
||||||
|
</project> |
@ -0,0 +1,37 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
|
||||||
|
<groupId>com.redis</groupId> |
||||||
|
<artifactId>jedis_demo</artifactId> |
||||||
|
<version>1.0-SNAPSHOT</version> |
||||||
|
|
||||||
|
<properties> |
||||||
|
<maven.compiler.source>8</maven.compiler.source> |
||||||
|
<maven.compiler.target>8</maven.compiler.target> |
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
||||||
|
</properties> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<!--jedis依赖 --> |
||||||
|
<dependency> |
||||||
|
<groupId>redis.clients</groupId> |
||||||
|
<artifactId>jedis</artifactId> |
||||||
|
<version>4.2.3</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<!--引入单元测试依赖--> |
||||||
|
<dependency> |
||||||
|
<groupId>org.junit.jupiter</groupId> |
||||||
|
<artifactId>junit-jupiter</artifactId> |
||||||
|
<version>5.9.0</version> |
||||||
|
<scope>test</scope> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
|
||||||
|
</dependencies> |
||||||
|
|
||||||
|
|
||||||
|
</project> |
@ -0,0 +1,30 @@ |
|||||||
|
package com.redis; |
||||||
|
|
||||||
|
import redis.clients.jedis.Jedis; |
||||||
|
import redis.clients.jedis.JedisPool; |
||||||
|
import redis.clients.jedis.JedisPoolConfig; |
||||||
|
|
||||||
|
import java.time.Duration; |
||||||
|
|
||||||
|
public class JedisConnectionFactory { |
||||||
|
private static final JedisPool jedisPool; |
||||||
|
static { |
||||||
|
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); |
||||||
|
// 最大连接
|
||||||
|
jedisPoolConfig.setMaxTotal(8); |
||||||
|
// 最大空闲连接
|
||||||
|
jedisPoolConfig.setMaxIdle(8); |
||||||
|
// 最小空闲连接,常备一个空闲连接
|
||||||
|
jedisPoolConfig.setMinIdle(1); |
||||||
|
// 设置最长等待时间,200ms
|
||||||
|
jedisPoolConfig.setMaxWait(Duration.ofMillis(200)); |
||||||
|
|
||||||
|
jedisPool = new JedisPool(jedisPoolConfig, "192.168.153.130", 6379, 1000, "admin"); |
||||||
|
} |
||||||
|
|
||||||
|
// 获取jedis对象
|
||||||
|
public static Jedis getJedis() { |
||||||
|
return jedisPool.getResource(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,53 @@ |
|||||||
|
package com.redis.test; |
||||||
|
|
||||||
|
import com.redis.JedisConnectionFactory; |
||||||
|
import org.junit.jupiter.api.AfterEach; |
||||||
|
import org.junit.jupiter.api.BeforeEach; |
||||||
|
import org.junit.jupiter.api.Test; |
||||||
|
import redis.clients.jedis.Jedis; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
public class JedisTest { |
||||||
|
private Jedis jedis; |
||||||
|
|
||||||
|
@BeforeEach //被该注解修饰的方法每次执行其他方法前自动执行
|
||||||
|
void setUp() { |
||||||
|
// 建立redis连接
|
||||||
|
// jedis = new Jedis("192.168.153.130",6379);
|
||||||
|
// 使用连接池
|
||||||
|
jedis = JedisConnectionFactory.getJedis(); |
||||||
|
// 密码
|
||||||
|
jedis.auth("admin"); |
||||||
|
// 选择数据库
|
||||||
|
jedis.select(0); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
void testString() { |
||||||
|
String result = jedis.set("name","ooo"); |
||||||
|
System.out.println("result: " + result); |
||||||
|
|
||||||
|
String name = jedis.get("name"); |
||||||
|
System.out.println("name: " + name); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
void testHash() { |
||||||
|
jedis.hset("project:user:4","id","4"); |
||||||
|
jedis.hset("project:user:4","name","test"); |
||||||
|
|
||||||
|
|
||||||
|
Map<String, String> map = jedis.hgetAll("project:user:4"); |
||||||
|
System.out.println(map); |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@AfterEach //被该注解修饰的方法会在每次执行其他方法后执行
|
||||||
|
void closerRedis() { |
||||||
|
if (jedis != null) { |
||||||
|
jedis.close(); // 关闭连接
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
Binary file not shown.
Binary file not shown.
@ -0,0 +1,26 @@ |
|||||||
|
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; |
||||||
|
fastcgi_param QUERY_STRING $query_string; |
||||||
|
fastcgi_param REQUEST_METHOD $request_method; |
||||||
|
fastcgi_param CONTENT_TYPE $content_type; |
||||||
|
fastcgi_param CONTENT_LENGTH $content_length; |
||||||
|
|
||||||
|
fastcgi_param SCRIPT_NAME $fastcgi_script_name; |
||||||
|
fastcgi_param REQUEST_URI $request_uri; |
||||||
|
fastcgi_param DOCUMENT_URI $document_uri; |
||||||
|
fastcgi_param DOCUMENT_ROOT $document_root; |
||||||
|
fastcgi_param SERVER_PROTOCOL $server_protocol; |
||||||
|
fastcgi_param REQUEST_SCHEME $scheme; |
||||||
|
fastcgi_param HTTPS $https if_not_empty; |
||||||
|
|
||||||
|
fastcgi_param GATEWAY_INTERFACE CGI/1.1; |
||||||
|
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; |
||||||
|
|
||||||
|
fastcgi_param REMOTE_ADDR $remote_addr; |
||||||
|
fastcgi_param REMOTE_PORT $remote_port; |
||||||
|
fastcgi_param SERVER_ADDR $server_addr; |
||||||
|
fastcgi_param SERVER_PORT $server_port; |
||||||
|
fastcgi_param SERVER_NAME $server_name; |
||||||
|
|
||||||
|
# PHP only, required if PHP was built with --enable-force-cgi-redirect |
||||||
|
fastcgi_param REDIRECT_STATUS 200; |
@ -0,0 +1,25 @@ |
|||||||
|
|
||||||
|
fastcgi_param QUERY_STRING $query_string; |
||||||
|
fastcgi_param REQUEST_METHOD $request_method; |
||||||
|
fastcgi_param CONTENT_TYPE $content_type; |
||||||
|
fastcgi_param CONTENT_LENGTH $content_length; |
||||||
|
|
||||||
|
fastcgi_param SCRIPT_NAME $fastcgi_script_name; |
||||||
|
fastcgi_param REQUEST_URI $request_uri; |
||||||
|
fastcgi_param DOCUMENT_URI $document_uri; |
||||||
|
fastcgi_param DOCUMENT_ROOT $document_root; |
||||||
|
fastcgi_param SERVER_PROTOCOL $server_protocol; |
||||||
|
fastcgi_param REQUEST_SCHEME $scheme; |
||||||
|
fastcgi_param HTTPS $https if_not_empty; |
||||||
|
|
||||||
|
fastcgi_param GATEWAY_INTERFACE CGI/1.1; |
||||||
|
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; |
||||||
|
|
||||||
|
fastcgi_param REMOTE_ADDR $remote_addr; |
||||||
|
fastcgi_param REMOTE_PORT $remote_port; |
||||||
|
fastcgi_param SERVER_ADDR $server_addr; |
||||||
|
fastcgi_param SERVER_PORT $server_port; |
||||||
|
fastcgi_param SERVER_NAME $server_name; |
||||||
|
|
||||||
|
# PHP only, required if PHP was built with --enable-force-cgi-redirect |
||||||
|
fastcgi_param REDIRECT_STATUS 200; |
@ -0,0 +1,109 @@ |
|||||||
|
|
||||||
|
# This map is not a full koi8-r <> utf8 map: it does not contain |
||||||
|
# box-drawing and some other characters. Besides this map contains |
||||||
|
# several koi8-u and Byelorussian letters which are not in koi8-r. |
||||||
|
# If you need a full and standard map, use contrib/unicode2nginx/koi-utf |
||||||
|
# map instead. |
||||||
|
|
||||||
|
charset_map koi8-r utf-8 { |
||||||
|
|
||||||
|
80 E282AC ; # euro |
||||||
|
|
||||||
|
95 E280A2 ; # bullet |
||||||
|
|
||||||
|
9A C2A0 ; # |
||||||
|
|
||||||
|
9E C2B7 ; # · |
||||||
|
|
||||||
|
A3 D191 ; # small yo |
||||||
|
A4 D194 ; # small Ukrainian ye |
||||||
|
|
||||||
|
A6 D196 ; # small Ukrainian i |
||||||
|
A7 D197 ; # small Ukrainian yi |
||||||
|
|
||||||
|
AD D291 ; # small Ukrainian soft g |
||||||
|
AE D19E ; # small Byelorussian short u |
||||||
|
|
||||||
|
B0 C2B0 ; # ° |
||||||
|
|
||||||
|
B3 D081 ; # capital YO |
||||||
|
B4 D084 ; # capital Ukrainian YE |
||||||
|
|
||||||
|
B6 D086 ; # capital Ukrainian I |
||||||
|
B7 D087 ; # capital Ukrainian YI |
||||||
|
|
||||||
|
B9 E28496 ; # numero sign |
||||||
|
|
||||||
|
BD D290 ; # capital Ukrainian soft G |
||||||
|
BE D18E ; # capital Byelorussian short U |
||||||
|
|
||||||
|
BF C2A9 ; # (C) |
||||||
|
|
||||||
|
C0 D18E ; # small yu |
||||||
|
C1 D0B0 ; # small a |
||||||
|
C2 D0B1 ; # small b |
||||||
|
C3 D186 ; # small ts |
||||||
|
C4 D0B4 ; # small d |
||||||
|
C5 D0B5 ; # small ye |
||||||
|
C6 D184 ; # small f |
||||||
|
C7 D0B3 ; # small g |
||||||
|
C8 D185 ; # small kh |
||||||
|
C9 D0B8 ; # small i |
||||||
|
CA D0B9 ; # small j |
||||||
|
CB D0BA ; # small k |
||||||
|
CC D0BB ; # small l |
||||||
|
CD D0BC ; # small m |
||||||
|
CE D0BD ; # small n |
||||||
|
CF D0BE ; # small o |
||||||
|
|
||||||
|
D0 D0BF ; # small p |
||||||
|
D1 D18F ; # small ya |
||||||
|
D2 D180 ; # small r |
||||||
|
D3 D181 ; # small s |
||||||
|
D4 D182 ; # small t |
||||||
|
D5 D183 ; # small u |
||||||
|
D6 D0B6 ; # small zh |
||||||
|
D7 D0B2 ; # small v |
||||||
|
D8 D18C ; # small soft sign |
||||||
|
D9 D18B ; # small y |
||||||
|
DA D0B7 ; # small z |
||||||
|
DB D188 ; # small sh |
||||||
|
DC D18D ; # small e |
||||||
|
DD D189 ; # small shch |
||||||
|
DE D187 ; # small ch |
||||||
|
DF D18A ; # small hard sign |
||||||
|
|
||||||
|
E0 D0AE ; # capital YU |
||||||
|
E1 D090 ; # capital A |
||||||
|
E2 D091 ; # capital B |
||||||
|
E3 D0A6 ; # capital TS |
||||||
|
E4 D094 ; # capital D |
||||||
|
E5 D095 ; # capital YE |
||||||
|
E6 D0A4 ; # capital F |
||||||
|
E7 D093 ; # capital G |
||||||
|
E8 D0A5 ; # capital KH |
||||||
|
E9 D098 ; # capital I |
||||||
|
EA D099 ; # capital J |
||||||
|
EB D09A ; # capital K |
||||||
|
EC D09B ; # capital L |
||||||
|
ED D09C ; # capital M |
||||||
|
EE D09D ; # capital N |
||||||
|
EF D09E ; # capital O |
||||||
|
|
||||||
|
F0 D09F ; # capital P |
||||||
|
F1 D0AF ; # capital YA |
||||||
|
F2 D0A0 ; # capital R |
||||||
|
F3 D0A1 ; # capital S |
||||||
|
F4 D0A2 ; # capital T |
||||||
|
F5 D0A3 ; # capital U |
||||||
|
F6 D096 ; # capital ZH |
||||||
|
F7 D092 ; # capital V |
||||||
|
F8 D0AC ; # capital soft sign |
||||||
|
F9 D0AB ; # capital Y |
||||||
|
FA D097 ; # capital Z |
||||||
|
FB D0A8 ; # capital SH |
||||||
|
FC D0AD ; # capital E |
||||||
|
FD D0A9 ; # capital SHCH |
||||||
|
FE D0A7 ; # capital CH |
||||||
|
FF D0AA ; # capital hard sign |
||||||
|
} |
@ -0,0 +1,103 @@ |
|||||||
|
|
||||||
|
charset_map koi8-r windows-1251 { |
||||||
|
|
||||||
|
80 88 ; # euro |
||||||
|
|
||||||
|
95 95 ; # bullet |
||||||
|
|
||||||
|
9A A0 ; # |
||||||
|
|
||||||
|
9E B7 ; # · |
||||||
|
|
||||||
|
A3 B8 ; # small yo |
||||||
|
A4 BA ; # small Ukrainian ye |
||||||
|
|
||||||
|
A6 B3 ; # small Ukrainian i |
||||||
|
A7 BF ; # small Ukrainian yi |
||||||
|
|
||||||
|
AD B4 ; # small Ukrainian soft g |
||||||
|
AE A2 ; # small Byelorussian short u |
||||||
|
|
||||||
|
B0 B0 ; # ° |
||||||
|
|
||||||
|
B3 A8 ; # capital YO |
||||||
|
B4 AA ; # capital Ukrainian YE |
||||||
|
|
||||||
|
B6 B2 ; # capital Ukrainian I |
||||||
|
B7 AF ; # capital Ukrainian YI |
||||||
|
|
||||||
|
B9 B9 ; # numero sign |
||||||
|
|
||||||
|
BD A5 ; # capital Ukrainian soft G |
||||||
|
BE A1 ; # capital Byelorussian short U |
||||||
|
|
||||||
|
BF A9 ; # (C) |
||||||
|
|
||||||
|
C0 FE ; # small yu |
||||||
|
C1 E0 ; # small a |
||||||
|
C2 E1 ; # small b |
||||||
|
C3 F6 ; # small ts |
||||||
|
C4 E4 ; # small d |
||||||
|
C5 E5 ; # small ye |
||||||
|
C6 F4 ; # small f |
||||||
|
C7 E3 ; # small g |
||||||
|
C8 F5 ; # small kh |
||||||
|
C9 E8 ; # small i |
||||||
|
CA E9 ; # small j |
||||||
|
CB EA ; # small k |
||||||
|
CC EB ; # small l |
||||||
|
CD EC ; # small m |
||||||
|
CE ED ; # small n |
||||||
|
CF EE ; # small o |
||||||
|
|
||||||
|
D0 EF ; # small p |
||||||
|
D1 FF ; # small ya |
||||||
|
D2 F0 ; # small r |
||||||
|
D3 F1 ; # small s |
||||||
|
D4 F2 ; # small t |
||||||
|
D5 F3 ; # small u |
||||||
|
D6 E6 ; # small zh |
||||||
|
D7 E2 ; # small v |
||||||
|
D8 FC ; # small soft sign |
||||||
|
D9 FB ; # small y |
||||||
|
DA E7 ; # small z |
||||||
|
DB F8 ; # small sh |
||||||
|
DC FD ; # small e |
||||||
|
DD F9 ; # small shch |
||||||
|
DE F7 ; # small ch |
||||||
|
DF FA ; # small hard sign |
||||||
|
|
||||||
|
E0 DE ; # capital YU |
||||||
|
E1 C0 ; # capital A |
||||||
|
E2 C1 ; # capital B |
||||||
|
E3 D6 ; # capital TS |
||||||
|
E4 C4 ; # capital D |
||||||
|
E5 C5 ; # capital YE |
||||||
|
E6 D4 ; # capital F |
||||||
|
E7 C3 ; # capital G |
||||||
|
E8 D5 ; # capital KH |
||||||
|
E9 C8 ; # capital I |
||||||
|
EA C9 ; # capital J |
||||||
|
EB CA ; # capital K |
||||||
|
EC CB ; # capital L |
||||||
|
ED CC ; # capital M |
||||||
|
EE CD ; # capital N |
||||||
|
EF CE ; # capital O |
||||||
|
|
||||||
|
F0 CF ; # capital P |
||||||
|
F1 DF ; # capital YA |
||||||
|
F2 D0 ; # capital R |
||||||
|
F3 D1 ; # capital S |
||||||
|
F4 D2 ; # capital T |
||||||
|
F5 D3 ; # capital U |
||||||
|
F6 C6 ; # capital ZH |
||||||
|
F7 C2 ; # capital V |
||||||
|
F8 DC ; # capital soft sign |
||||||
|
F9 DB ; # capital Y |
||||||
|
FA C7 ; # capital Z |
||||||
|
FB D8 ; # capital SH |
||||||
|
FC DD ; # capital E |
||||||
|
FD D9 ; # capital SHCH |
||||||
|
FE D7 ; # capital CH |
||||||
|
FF DA ; # capital hard sign |
||||||
|
} |
@ -0,0 +1,97 @@ |
|||||||
|
|
||||||
|
types { |
||||||
|
text/html html htm shtml; |
||||||
|
text/css css; |
||||||
|
text/xml xml; |
||||||
|
image/gif gif; |
||||||
|
image/jpeg jpeg jpg; |
||||||
|
application/javascript js; |
||||||
|
application/atom+xml atom; |
||||||
|
application/rss+xml rss; |
||||||
|
|
||||||
|
text/mathml mml; |
||||||
|
text/plain txt; |
||||||
|
text/vnd.sun.j2me.app-descriptor jad; |
||||||
|
text/vnd.wap.wml wml; |
||||||
|
text/x-component htc; |
||||||
|
|
||||||
|
image/png png; |
||||||
|
image/svg+xml svg svgz; |
||||||
|
image/tiff tif tiff; |
||||||
|
image/vnd.wap.wbmp wbmp; |
||||||
|
image/webp webp; |
||||||
|
image/x-icon ico; |
||||||
|
image/x-jng jng; |
||||||
|
image/x-ms-bmp bmp; |
||||||
|
|
||||||
|
font/woff woff; |
||||||
|
font/woff2 woff2; |
||||||
|
|
||||||
|
application/java-archive jar war ear; |
||||||
|
application/json json; |
||||||
|
application/mac-binhex40 hqx; |
||||||
|
application/msword doc; |
||||||
|
application/pdf pdf; |
||||||
|
application/postscript ps eps ai; |
||||||
|
application/rtf rtf; |
||||||
|
application/vnd.apple.mpegurl m3u8; |
||||||
|
application/vnd.google-earth.kml+xml kml; |
||||||
|
application/vnd.google-earth.kmz kmz; |
||||||
|
application/vnd.ms-excel xls; |
||||||
|
application/vnd.ms-fontobject eot; |
||||||
|
application/vnd.ms-powerpoint ppt; |
||||||
|
application/vnd.oasis.opendocument.graphics odg; |
||||||
|
application/vnd.oasis.opendocument.presentation odp; |
||||||
|
application/vnd.oasis.opendocument.spreadsheet ods; |
||||||
|
application/vnd.oasis.opendocument.text odt; |
||||||
|
application/vnd.openxmlformats-officedocument.presentationml.presentation |
||||||
|
pptx; |
||||||
|
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
||||||
|
xlsx; |
||||||
|
application/vnd.openxmlformats-officedocument.wordprocessingml.document |
||||||
|
docx; |
||||||
|
application/vnd.wap.wmlc wmlc; |
||||||
|
application/x-7z-compressed 7z; |
||||||
|
application/x-cocoa cco; |
||||||
|
application/x-java-archive-diff jardiff; |
||||||
|
application/x-java-jnlp-file jnlp; |
||||||
|
application/x-makeself run; |
||||||
|
application/x-perl pl pm; |
||||||
|
application/x-pilot prc pdb; |
||||||
|
application/x-rar-compressed rar; |
||||||
|
application/x-redhat-package-manager rpm; |
||||||
|
application/x-sea sea; |
||||||
|
application/x-shockwave-flash swf; |
||||||
|
application/x-stuffit sit; |
||||||
|
application/x-tcl tcl tk; |
||||||
|
application/x-x509-ca-cert der pem crt; |
||||||
|
application/x-xpinstall xpi; |
||||||
|
application/xhtml+xml xhtml; |
||||||
|
application/xspf+xml xspf; |
||||||
|
application/zip zip; |
||||||
|
|
||||||
|
application/octet-stream bin exe dll; |
||||||
|
application/octet-stream deb; |
||||||
|
application/octet-stream dmg; |
||||||
|
application/octet-stream iso img; |
||||||
|
application/octet-stream msi msp msm; |
||||||
|
|
||||||
|
audio/midi mid midi kar; |
||||||
|
audio/mpeg mp3; |
||||||
|
audio/ogg ogg; |
||||||
|
audio/x-m4a m4a; |
||||||
|
audio/x-realaudio ra; |
||||||
|
|
||||||
|
video/3gpp 3gpp 3gp; |
||||||
|
video/mp2t ts; |
||||||
|
video/mp4 mp4; |
||||||
|
video/mpeg mpeg mpg; |
||||||
|
video/quicktime mov; |
||||||
|
video/webm webm; |
||||||
|
video/x-flv flv; |
||||||
|
video/x-m4v m4v; |
||||||
|
video/x-mng mng; |
||||||
|
video/x-ms-asf asx asf; |
||||||
|
video/x-ms-wmv wmv; |
||||||
|
video/x-msvideo avi; |
||||||
|
} |
@ -0,0 +1,51 @@ |
|||||||
|
|
||||||
|
worker_processes 1; |
||||||
|
|
||||||
|
events { |
||||||
|
worker_connections 1024; |
||||||
|
} |
||||||
|
|
||||||
|
http { |
||||||
|
include mime.types; |
||||||
|
default_type application/json; |
||||||
|
|
||||||
|
sendfile on; |
||||||
|
|
||||||
|
keepalive_timeout 65; |
||||||
|
|
||||||
|
server { |
||||||
|
listen 8080; |
||||||
|
server_name localhost; |
||||||
|
# 指定前端项目所在的位置 |
||||||
|
location / { |
||||||
|
root html/hmdp; |
||||||
|
index index.html index.htm; |
||||||
|
} |
||||||
|
|
||||||
|
error_page 500 502 503 504 /50x.html; |
||||||
|
location = /50x.html { |
||||||
|
root html; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
location /api { |
||||||
|
default_type application/json; |
||||||
|
#internal; |
||||||
|
keepalive_timeout 30s; |
||||||
|
keepalive_requests 1000; |
||||||
|
#支持keep-alive |
||||||
|
proxy_http_version 1.1; |
||||||
|
rewrite /api(/.*) $1 break; |
||||||
|
proxy_pass_request_headers on; |
||||||
|
#more_clear_input_headers Accept-Encoding; |
||||||
|
proxy_next_upstream error timeout; |
||||||
|
proxy_pass http://127.0.0.1:8081; |
||||||
|
#proxy_pass http://backend; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
upstream backend { |
||||||
|
server 127.0.0.1:8081 max_fails=5 fail_timeout=10s weight=1; |
||||||
|
#server 127.0.0.1:8082 max_fails=5 fail_timeout=10s weight=1; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,17 @@ |
|||||||
|
|
||||||
|
scgi_param REQUEST_METHOD $request_method; |
||||||
|
scgi_param REQUEST_URI $request_uri; |
||||||
|
scgi_param QUERY_STRING $query_string; |
||||||
|
scgi_param CONTENT_TYPE $content_type; |
||||||
|
|
||||||
|
scgi_param DOCUMENT_URI $document_uri; |
||||||
|
scgi_param DOCUMENT_ROOT $document_root; |
||||||
|
scgi_param SCGI 1; |
||||||
|
scgi_param SERVER_PROTOCOL $server_protocol; |
||||||
|
scgi_param REQUEST_SCHEME $scheme; |
||||||
|
scgi_param HTTPS $https if_not_empty; |
||||||
|
|
||||||
|
scgi_param REMOTE_ADDR $remote_addr; |
||||||
|
scgi_param REMOTE_PORT $remote_port; |
||||||
|
scgi_param SERVER_PORT $server_port; |
||||||
|
scgi_param SERVER_NAME $server_name; |
@ -0,0 +1,17 @@ |
|||||||
|
|
||||||
|
uwsgi_param QUERY_STRING $query_string; |
||||||
|
uwsgi_param REQUEST_METHOD $request_method; |
||||||
|
uwsgi_param CONTENT_TYPE $content_type; |
||||||
|
uwsgi_param CONTENT_LENGTH $content_length; |
||||||
|
|
||||||
|
uwsgi_param REQUEST_URI $request_uri; |
||||||
|
uwsgi_param PATH_INFO $document_uri; |
||||||
|
uwsgi_param DOCUMENT_ROOT $document_root; |
||||||
|
uwsgi_param SERVER_PROTOCOL $server_protocol; |
||||||
|
uwsgi_param REQUEST_SCHEME $scheme; |
||||||
|
uwsgi_param HTTPS $https if_not_empty; |
||||||
|
|
||||||
|
uwsgi_param REMOTE_ADDR $remote_addr; |
||||||
|
uwsgi_param REMOTE_PORT $remote_port; |
||||||
|
uwsgi_param SERVER_PORT $server_port; |
||||||
|
uwsgi_param SERVER_NAME $server_name; |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue