diff --git a/src/dianping/.gitignore b/src/dianping/.gitignore new file mode 100644 index 00000000..549e00a2 --- /dev/null +++ b/src/dianping/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/src/dianping/.mvn/wrapper/maven-wrapper.jar b/src/dianping/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 00000000..bf82ff01 Binary files /dev/null and b/src/dianping/.mvn/wrapper/maven-wrapper.jar differ diff --git a/src/dianping/.mvn/wrapper/maven-wrapper.properties b/src/dianping/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 00000000..ca5ab4ba --- /dev/null +++ b/src/dianping/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,18 @@ +# 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. +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.7/apache-maven-3.8.7-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar diff --git a/src/dianping/mvnw b/src/dianping/mvnw new file mode 100644 index 00000000..8a8fb228 --- /dev/null +++ b/src/dianping/mvnw @@ -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 "$@" diff --git a/src/dianping/mvnw.cmd b/src/dianping/mvnw.cmd new file mode 100644 index 00000000..1d8ab018 --- /dev/null +++ b/src/dianping/mvnw.cmd @@ -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% diff --git a/src/dianping/pom.xml b/src/dianping/pom.xml new file mode 100644 index 00000000..540d4f3a --- /dev/null +++ b/src/dianping/pom.xml @@ -0,0 +1,123 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.7.16 + + + com.imooc + dianping + 0.0.1-SNAPSHOT + dianping + dianping + + 1.8 + UTF-8 + 1.8 + 1.8 + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + mysql + mysql-connector-java + 5.1.41 + + + com.alibaba + druid + 1.1.3 + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 1.3.1 + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-validation + + + org.mybatis.generator + mybatis-generator-core + 1.3.5 + + + org.springframework.boot + spring-boot-starter-test + test + + + jakarta.validation + jakarta.validation-api + 3.0.0 + + + + + + + + org.mybatis.generator + mybatis-generator-maven-plugin + 1.3.5 + + + org.mybatis.generator + mybatis-generator-core + 1.3.5 + + + mysql + mysql-connector-java + 5.1.41 + + + + + mybatis generator + package + + generate + + + + + + true + + true + + src/main/resources/mybatis-generator.xml + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/src/dianping/src/main/java/com/imooc/dianping/DianpingApplication.java b/src/dianping/src/main/java/com/imooc/dianping/DianpingApplication.java new file mode 100644 index 00000000..48036de0 --- /dev/null +++ b/src/dianping/src/main/java/com/imooc/dianping/DianpingApplication.java @@ -0,0 +1,17 @@ +package com.imooc.dianping; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.EnableAspectJAutoProxy; + +@SpringBootApplication(scanBasePackages = {"com.imooc.dianping"}) +@MapperScan("com.imooc.dianping.dal") +@EnableAspectJAutoProxy(proxyTargetClass = true) +public class DianpingApplication { + + public static void main(String[] args) { + SpringApplication.run(DianpingApplication.class, args); + } + +} diff --git a/src/dianping/src/main/java/com/imooc/dianping/common/BusinessException.java b/src/dianping/src/main/java/com/imooc/dianping/common/BusinessException.java new file mode 100644 index 00000000..60a4448a --- /dev/null +++ b/src/dianping/src/main/java/com/imooc/dianping/common/BusinessException.java @@ -0,0 +1,24 @@ +package com.imooc.dianping.common; + +public class BusinessException extends Exception { + private CommonError commonError; + + public BusinessException(EmBusinessError emBusinessError) { + super(); + this.commonError = new CommonError(emBusinessError); + } + + public BusinessException(EmBusinessError emBusinessError, String errMsg) { + super(); + this.commonError = new CommonError(emBusinessError); + this.commonError.setErrMsg(errMsg); + } + + public CommonError getCommonError() { + return commonError; + } + + public void setCommonError(CommonError commonError) { + this.commonError = commonError; + } +} diff --git a/src/dianping/src/main/java/com/imooc/dianping/common/CommonError.java b/src/dianping/src/main/java/com/imooc/dianping/common/CommonError.java new file mode 100644 index 00000000..9eee2fbf --- /dev/null +++ b/src/dianping/src/main/java/com/imooc/dianping/common/CommonError.java @@ -0,0 +1,35 @@ +package com.imooc.dianping.common; + +public class CommonError { + //错误码 + private Integer errCode; + + //错误描述 + private String errMsg; + + public CommonError(Integer errCode, String errMsg) { + this.errCode = errCode; + this.errMsg = errMsg; + } + + public CommonError(EmBusinessError emBusinessError) { + this.errCode = emBusinessError.getErrCode(); + this.errMsg = emBusinessError.getErrMsg(); + } + + public Integer getErrCode() { + return errCode; + } + + public void setErrCode(Integer errCode) { + this.errCode = errCode; + } + + public String getErrMsg() { + return errMsg; + } + + public void setErrMsg(String errMsg) { + this.errMsg = errMsg; + } +} diff --git a/src/dianping/src/main/java/com/imooc/dianping/common/CommonRes.java b/src/dianping/src/main/java/com/imooc/dianping/common/CommonRes.java new file mode 100644 index 00000000..e17af76d --- /dev/null +++ b/src/dianping/src/main/java/com/imooc/dianping/common/CommonRes.java @@ -0,0 +1,39 @@ +package com.imooc.dianping.common; + +public class CommonRes { + //表明读经请求的返回处理结果,"success"或"fail" + private String status; + + //若status=success时,表明对应的返回的json类数据 + //若status=fail时,则data内将使用通用的错误码对应的格式 + private Object data; + + //定义一个通用的创建返回对象的方法 + public static CommonRes create(Object result) { + return CommonRes.create(result, "success"); + } + + public static CommonRes create(Object result, String status) { + CommonRes commonRes = new CommonRes(); + commonRes.setStatus(status); + commonRes.setData(result); + + return commonRes; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } +} diff --git a/src/dianping/src/main/java/com/imooc/dianping/common/CommonUtil.java b/src/dianping/src/main/java/com/imooc/dianping/common/CommonUtil.java new file mode 100644 index 00000000..a5b2be04 --- /dev/null +++ b/src/dianping/src/main/java/com/imooc/dianping/common/CommonUtil.java @@ -0,0 +1,18 @@ +package com.imooc.dianping.common; + +import org.springframework.validation.BindingResult; +import org.springframework.validation.FieldError; + +public class CommonUtil { + + public static String processErrorString(BindingResult bindingResult) { + if (!bindingResult.hasErrors()) { + return ""; + } + StringBuilder stringBuilder = new StringBuilder(); + for (FieldError fieldError : bindingResult.getFieldErrors()) { + stringBuilder.append(fieldError.getDefaultMessage()).append(","); + } + return stringBuilder.substring(0, stringBuilder.length() - 1); + } +} diff --git a/src/dianping/src/main/java/com/imooc/dianping/common/EmBusinessError.java b/src/dianping/src/main/java/com/imooc/dianping/common/EmBusinessError.java new file mode 100644 index 00000000..365dd292 --- /dev/null +++ b/src/dianping/src/main/java/com/imooc/dianping/common/EmBusinessError.java @@ -0,0 +1,40 @@ +package com.imooc.dianping.common; + +public enum EmBusinessError { + //通用的错误类型10000开头 + NO_OBJECT_FOUND(10001, "请求对象不存在"), + UNKNOWN_ERROR(10002, "未知错误"), + NO_HANDLER_FOUND(10003, "找不到执行的路径操作"), + BIND_EXCEPTION_ERROR(10004, "请求参数错误"), + PARAMETER_VALIDATION_ERROR(10005, "请求参数校验失败"), + + //用户服务相关的错误类型20000开头 + REGISTER_DUP_FAIL(20001, "用户已存在"), + + LOGIN_FAIL(20002, "手机号或密码错误"); + + private Integer errCode; + + private String errMsg; + + EmBusinessError(Integer errCode, String errMsg) { + this.errCode = errCode; + this.errMsg = errMsg; + } + + public Integer getErrCode() { + return errCode; + } + + public void setErrCode(Integer errCode) { + this.errCode = errCode; + } + + public String getErrMsg() { + return errMsg; + } + + public void setErrMsg(String errMsg) { + this.errMsg = errMsg; + } +} diff --git a/src/dianping/src/main/java/com/imooc/dianping/common/GlobalExceptionHandler.java b/src/dianping/src/main/java/com/imooc/dianping/common/GlobalExceptionHandler.java new file mode 100644 index 00000000..8daf0b94 --- /dev/null +++ b/src/dianping/src/main/java/com/imooc/dianping/common/GlobalExceptionHandler.java @@ -0,0 +1,32 @@ +package com.imooc.dianping.common; + +import org.springframework.web.bind.ServletRequestBindingException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.NoHandlerFoundException; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@ControllerAdvice +public class GlobalExceptionHandler { + + @ExceptionHandler(Exception.class) + @ResponseBody + public CommonRes doError(HttpServletRequest servletRequest, HttpServletResponse httpServletResponse, Exception ex) { + if (ex instanceof BusinessException) { + return CommonRes.create(((BusinessException) ex).getCommonError(), "fail"); + } else if (ex instanceof NoHandlerFoundException) { + CommonError commonError = new CommonError(EmBusinessError.NO_HANDLER_FOUND); + return CommonRes.create(commonError, "fail"); + } else if (ex instanceof ServletRequestBindingException) { + CommonError commonError = new CommonError(EmBusinessError.BIND_EXCEPTION_ERROR); + return CommonRes.create(commonError, "fail"); + } else { + CommonError commonError = new CommonError(EmBusinessError.UNKNOWN_ERROR); + return CommonRes.create(commonError, "fail"); + } + + } +} diff --git a/src/dianping/src/main/java/com/imooc/dianping/controller/UserController.java b/src/dianping/src/main/java/com/imooc/dianping/controller/UserController.java new file mode 100644 index 00000000..0fb874ce --- /dev/null +++ b/src/dianping/src/main/java/com/imooc/dianping/controller/UserController.java @@ -0,0 +1,72 @@ +package com.imooc.dianping.controller; + +import com.imooc.dianping.common.BusinessException; +import com.imooc.dianping.common.CommonRes; +import com.imooc.dianping.common.CommonUtil; +import com.imooc.dianping.common.EmBusinessError; +import com.imooc.dianping.model.UserModel; +import com.imooc.dianping.request.RegisterReq; +import com.imooc.dianping.service.UserService; +import jakarta.validation.Valid; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import java.io.UnsupportedEncodingException; +import java.security.NoSuchAlgorithmException; + +@Controller("/user") +@RequestMapping("/user") +public class UserController { + @Autowired + private UserService userService; + + @RequestMapping("/test") + @ResponseBody + public String test() { + return "test"; + } + + @RequestMapping("/index") + public ModelAndView index() { + String userName = "zjh"; + ModelAndView modelAndView = new ModelAndView("/index.html"); + modelAndView.addObject("name", userName); + return modelAndView; + } + + @RequestMapping("/get") + @ResponseBody + public CommonRes getUser(@RequestParam(name = "id") Integer id) throws BusinessException { + UserModel userModel = userService.getUser(id); + if (userModel == null) { + //return CommonRes.create(new CommonError(EmBusinessError.NO_OBJECT_FOUND), "fail"); + throw new BusinessException(EmBusinessError.NO_OBJECT_FOUND); + } else { + return CommonRes.create(userModel); + } + } + + @RequestMapping("/register") + @ResponseBody + public CommonRes register(@Valid @RequestBody RegisterReq registerReq, BindingResult bindingResult) throws BusinessException, UnsupportedEncodingException, NoSuchAlgorithmException { + if (bindingResult.hasErrors()) { + throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR, CommonUtil.processErrorString(bindingResult)); + } + + UserModel registerUser = new UserModel(); + registerUser.setTelephone(registerReq.getTelephone()); + registerUser.setPassword(registerReq.getPassword()); + registerUser.setNickName(registerReq.getNickName()); + registerUser.setGender(registerReq.getGender()); + + UserModel resUserModel = userService.register(registerUser); + + return CommonRes.create(resUserModel); + } +} diff --git a/src/dianping/src/main/java/com/imooc/dianping/dal/UserModelMapper.java b/src/dianping/src/main/java/com/imooc/dianping/dal/UserModelMapper.java new file mode 100644 index 00000000..5e2ee67f --- /dev/null +++ b/src/dianping/src/main/java/com/imooc/dianping/dal/UserModelMapper.java @@ -0,0 +1,53 @@ +package com.imooc.dianping.dal; + +import com.imooc.dianping.model.UserModel; + +public interface UserModelMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table user + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + int deleteByPrimaryKey(Integer id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table user + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + int insert(UserModel record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table user + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + int insertSelective(UserModel record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table user + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + UserModel selectByPrimaryKey(Integer id); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table user + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + int updateByPrimaryKeySelective(UserModel record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table user + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + int updateByPrimaryKey(UserModel record); +} \ No newline at end of file diff --git a/src/dianping/src/main/java/com/imooc/dianping/model/UserModel.java b/src/dianping/src/main/java/com/imooc/dianping/model/UserModel.java new file mode 100644 index 00000000..2be37bba --- /dev/null +++ b/src/dianping/src/main/java/com/imooc/dianping/model/UserModel.java @@ -0,0 +1,236 @@ +package com.imooc.dianping.model; + +import java.util.Date; + +public class UserModel { + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column user.id + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + private Integer id; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column user.created_at + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + private Date createdAt; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column user.updated_at + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + private Date updatedAt; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column user.telephone + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + private String telephone; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column user.password + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + private String password; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column user.nick_name + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + private String nickName; + + /** + * + * This field was generated by MyBatis Generator. + * This field corresponds to the database column user.gender + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + private Integer gender; + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column user.id + * + * @return the value of user.id + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + public Integer getId() { + return id; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column user.id + * + * @param id the value for user.id + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + public void setId(Integer id) { + this.id = id; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column user.created_at + * + * @return the value of user.created_at + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + public Date getCreatedAt() { + return createdAt; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column user.created_at + * + * @param createdAt the value for user.created_at + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column user.updated_at + * + * @return the value of user.updated_at + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + public Date getUpdatedAt() { + return updatedAt; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column user.updated_at + * + * @param updatedAt the value for user.updated_at + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column user.telephone + * + * @return the value of user.telephone + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + public String getTelephone() { + return telephone; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column user.telephone + * + * @param telephone the value for user.telephone + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + public void setTelephone(String telephone) { + this.telephone = telephone == null ? null : telephone.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column user.password + * + * @return the value of user.password + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + public String getPassword() { + return password; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column user.password + * + * @param password the value for user.password + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + public void setPassword(String password) { + this.password = password == null ? null : password.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column user.nick_name + * + * @return the value of user.nick_name + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + public String getNickName() { + return nickName; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column user.nick_name + * + * @param nickName the value for user.nick_name + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + public void setNickName(String nickName) { + this.nickName = nickName == null ? null : nickName.trim(); + } + + /** + * This method was generated by MyBatis Generator. + * This method returns the value of the database column user.gender + * + * @return the value of user.gender + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + public Integer getGender() { + return gender; + } + + /** + * This method was generated by MyBatis Generator. + * This method sets the value of the database column user.gender + * + * @param gender the value for user.gender + * + * @mbg.generated Fri Oct 06 13:41:12 CST 2023 + */ + public void setGender(Integer gender) { + this.gender = gender; + } +} \ No newline at end of file diff --git a/src/dianping/src/main/java/com/imooc/dianping/request/RegisterReq.java b/src/dianping/src/main/java/com/imooc/dianping/request/RegisterReq.java new file mode 100644 index 00000000..f11641fc --- /dev/null +++ b/src/dianping/src/main/java/com/imooc/dianping/request/RegisterReq.java @@ -0,0 +1,48 @@ +package com.imooc.dianping.request; + +import jakarta.validation.constraints.NotBlank; + +public class RegisterReq { + + @NotBlank(message = "手机号不能为空") + private String telephone; + @NotBlank(message = "密码不能为空") + private String password; + @NotBlank(message = "昵称不能为空") + private String nickName; + + //@NotNull(message = "性别不能为空") + private Integer gender; + + public String getTelephone() { + return telephone; + } + + public void setTelephone(String telephone) { + this.telephone = telephone; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getNickName() { + return nickName; + } + + public void setNickName(String nickName) { + this.nickName = nickName; + } + + public Integer getGender() { + return gender; + } + + public void setGender(Integer gender) { + this.gender = gender; + } +} diff --git a/src/dianping/src/main/java/com/imooc/dianping/service/UserService.java b/src/dianping/src/main/java/com/imooc/dianping/service/UserService.java new file mode 100644 index 00000000..5659520a --- /dev/null +++ b/src/dianping/src/main/java/com/imooc/dianping/service/UserService.java @@ -0,0 +1,17 @@ +package com.imooc.dianping.service; + +import com.imooc.dianping.common.BusinessException; +import com.imooc.dianping.model.UserModel; + +import java.io.UnsupportedEncodingException; +import java.security.NoSuchAlgorithmException; + +public interface UserService { + UserModel getUser(Integer id); + + UserModel register(UserModel registerUser) throws BusinessException, UnsupportedEncodingException, NoSuchAlgorithmException; + + UserModel login(String telphone, String password) throws UnsupportedEncodingException, NoSuchAlgorithmException, BusinessException; + + Integer countAllUser(); +} diff --git a/src/dianping/src/main/java/com/imooc/dianping/service/impl/UserServiceImpl.java b/src/dianping/src/main/java/com/imooc/dianping/service/impl/UserServiceImpl.java new file mode 100644 index 00000000..b86e0b21 --- /dev/null +++ b/src/dianping/src/main/java/com/imooc/dianping/service/impl/UserServiceImpl.java @@ -0,0 +1,62 @@ +package com.imooc.dianping.service.impl; + +import com.imooc.dianping.common.BusinessException; +import com.imooc.dianping.common.EmBusinessError; +import com.imooc.dianping.dal.UserModelMapper; +import com.imooc.dianping.model.UserModel; +import com.imooc.dianping.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DuplicateKeyException; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import sun.misc.BASE64Encoder; + +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Date; + +@Service +public class UserServiceImpl implements UserService { + @Autowired + private UserModelMapper userModelMapper; + + @Override + public UserModel getUser(Integer id) { + return userModelMapper.selectByPrimaryKey(id); + } + + @Override + @Transactional + public UserModel register(UserModel registerUser) throws BusinessException, UnsupportedEncodingException, NoSuchAlgorithmException { + registerUser.setPassword(encodeByMd5(registerUser.getPassword())); + registerUser.setCreatedAt(new Date()); + registerUser.setUpdatedAt(new Date()); + + try { + userModelMapper.insertSelective(registerUser); + } catch (DuplicateKeyException ex) { + throw new BusinessException(EmBusinessError.REGISTER_DUP_FAIL); + } + + return getUser(registerUser.getId()); + } + + @Override + public UserModel login(String telphone, String password) throws UnsupportedEncodingException, NoSuchAlgorithmException, BusinessException { + return null; + } + + @Override + public Integer countAllUser() { + return null; + } + + private String encodeByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException { + //确认计算方法MD5 + MessageDigest messageDigest = MessageDigest.getInstance("MD5"); + BASE64Encoder base64Encoder = new BASE64Encoder(); + return base64Encoder.encode(messageDigest.digest(str.getBytes("utf-8"))); + + } +} diff --git a/src/dianping/src/main/resources/application.properties b/src/dianping/src/main/resources/application.properties new file mode 100644 index 00000000..b6a52365 --- /dev/null +++ b/src/dianping/src/main/resources/application.properties @@ -0,0 +1,18 @@ +server.port=8010 +mybatis.mapperLocations=classpath:mapping/*.xml +#??????????? +spring.datasource.name=dianpingdb +spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dianpingdb?useUnicode=true&characterEncoding=UTF-8&useSSL=false +spring.datasource.username=root +spring.datasource.password=123456 +#??druid?????? +spring.datasource.type=com.alibaba.druid.pool.DruidDataSource +spring.datasource.driverClassName=com.mysql.jdbc.Driver +#add-mappings=true???????controller?????????????????????? +spring.web.resources.add-mappings=true +spring.mvc.throw-exception-if-no-handler-found=true +#?????????? +spring.mvc.static-path-pattern=/static/** +#thymeleaf????? +spring.thymeleaf.prefix=classpath:/templates/ +spring.thymeleaf.suffix=.html \ No newline at end of file diff --git a/src/dianping/src/main/resources/ddl.sql b/src/dianping/src/main/resources/ddl.sql new file mode 100644 index 00000000..4afb008a --- /dev/null +++ b/src/dianping/src/main/resources/ddl.sql @@ -0,0 +1,11 @@ +CREATE TABLE `dianpingdb`.`user` ( + `id` int NOT NULL AUTO_INCREMENT, + `created_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `updated_at` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `telephone` varchar(40) NOT NULL DEFAULT '', + `password` varchar(200) NOT NULL DEFAULT '', + `nick_name` varchar(40) NOT NULL DEFAULT '', + `gender` int NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + UNIQUE INDEX `telephone_unique_index`(`telephone`) USING BTREE +); \ No newline at end of file diff --git a/src/dianping/src/main/resources/mapping/UserModelMapper.xml b/src/dianping/src/main/resources/mapping/UserModelMapper.xml new file mode 100644 index 00000000..961174f6 --- /dev/null +++ b/src/dianping/src/main/resources/mapping/UserModelMapper.xml @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + id, created_at, updated_at, telephone, password, nick_name, gender + + + + + delete from user + where id = #{id,jdbcType=INTEGER} + + + + + SELECT LAST_INSERT_ID() + + insert into user (created_at, updated_at, telephone, + password, nick_name, gender + ) + values (#{createdAt,jdbcType=TIMESTAMP}, #{updatedAt,jdbcType=TIMESTAMP}, #{telephone,jdbcType=VARCHAR}, + #{password,jdbcType=VARCHAR}, #{nickName,jdbcType=VARCHAR}, #{gender,jdbcType=INTEGER} + ) + + + + + SELECT LAST_INSERT_ID() + + insert into user + + + created_at, + + + updated_at, + + + telephone, + + + password, + + + nick_name, + + + gender, + + + + + #{createdAt,jdbcType=TIMESTAMP}, + + + #{updatedAt,jdbcType=TIMESTAMP}, + + + #{telephone,jdbcType=VARCHAR}, + + + #{password,jdbcType=VARCHAR}, + + + #{nickName,jdbcType=VARCHAR}, + + + #{gender,jdbcType=INTEGER}, + + + + + + update user + + + created_at = #{createdAt,jdbcType=TIMESTAMP}, + + + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + + + telephone = #{telephone,jdbcType=VARCHAR}, + + + password = #{password,jdbcType=VARCHAR}, + + + nick_name = #{nickName,jdbcType=VARCHAR}, + + + gender = #{gender,jdbcType=INTEGER}, + + + where id = #{id,jdbcType=INTEGER} + + + + update user + set created_at = #{createdAt,jdbcType=TIMESTAMP}, + updated_at = #{updatedAt,jdbcType=TIMESTAMP}, + telephone = #{telephone,jdbcType=VARCHAR}, + password = #{password,jdbcType=VARCHAR}, + nick_name = #{nickName,jdbcType=VARCHAR}, + gender = #{gender,jdbcType=INTEGER} + where id = #{id,jdbcType=INTEGER} + + \ No newline at end of file diff --git a/src/dianping/src/main/resources/mybatis-generator.xml b/src/dianping/src/main/resources/mybatis-generator.xml new file mode 100644 index 00000000..843db13b --- /dev/null +++ b/src/dianping/src/main/resources/mybatis-generator.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
\ No newline at end of file diff --git a/src/dianping/src/main/resources/static/index.html b/src/dianping/src/main/resources/static/index.html new file mode 100644 index 00000000..ad16595c --- /dev/null +++ b/src/dianping/src/main/resources/static/index.html @@ -0,0 +1,9 @@ + + + + + + +首页 + + \ No newline at end of file diff --git a/src/dianping/src/main/resources/static/test.html b/src/dianping/src/main/resources/static/test.html new file mode 100644 index 00000000..5ab7ab53 --- /dev/null +++ b/src/dianping/src/main/resources/static/test.html @@ -0,0 +1 @@ +test html file \ No newline at end of file diff --git a/src/dianping/src/main/resources/templates/index.html b/src/dianping/src/main/resources/templates/index.html new file mode 100644 index 00000000..26bbd171 --- /dev/null +++ b/src/dianping/src/main/resources/templates/index.html @@ -0,0 +1,2 @@ +templates index +

\ No newline at end of file diff --git a/src/dianping/src/test/java/com/imooc/dianping/DianpingApplicationTests.java b/src/dianping/src/test/java/com/imooc/dianping/DianpingApplicationTests.java new file mode 100644 index 00000000..8f3420dc --- /dev/null +++ b/src/dianping/src/test/java/com/imooc/dianping/DianpingApplicationTests.java @@ -0,0 +1,13 @@ +package com.imooc.dianping; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class DianpingApplicationTests { + + @Test + void contextLoads() { + } + +}