Yansen пре 2 година
комит
96ad2e569e

+ 35
- 0
.gitignore Прегледај датотеку

@@ -0,0 +1,35 @@
1
+HELP.md
2
+target/
3
+!.mvn/wrapper/maven-wrapper.jar
4
+!**/src/main/**/target/
5
+!**/src/test/**/target/
6
+
7
+### STS ###
8
+.apt_generated
9
+.classpath
10
+.factorypath
11
+.project
12
+.settings
13
+.springBeans
14
+.sts4-cache
15
+
16
+### IntelliJ IDEA ###
17
+.idea
18
+*.iws
19
+*.iml
20
+*.ipr
21
+
22
+### NetBeans ###
23
+/nbproject/private/
24
+/nbbuild/
25
+/dist/
26
+/nbdist/
27
+/.nb-gradle/
28
+build/
29
+!**/src/main/**/build/
30
+!**/src/test/**/build/
31
+
32
+### VS Code ###
33
+.vscode/
34
+
35
+ssl/

BIN
.mvn/wrapper/maven-wrapper.jar Прегледај датотеку


+ 2
- 0
.mvn/wrapper/maven-wrapper.properties Прегледај датотеку

@@ -0,0 +1,2 @@
1
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip
2
+wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar

+ 316
- 0
mvnw Прегледај датотеку

@@ -0,0 +1,316 @@
1
+#!/bin/sh
2
+# ----------------------------------------------------------------------------
3
+# Licensed to the Apache Software Foundation (ASF) under one
4
+# or more contributor license agreements.  See the NOTICE file
5
+# distributed with this work for additional information
6
+# regarding copyright ownership.  The ASF licenses this file
7
+# to you under the Apache License, Version 2.0 (the
8
+# "License"); you may not use this file except in compliance
9
+# with the License.  You may obtain a copy of the License at
10
+#
11
+#    https://www.apache.org/licenses/LICENSE-2.0
12
+#
13
+# Unless required by applicable law or agreed to in writing,
14
+# software distributed under the License is distributed on an
15
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+# KIND, either express or implied.  See the License for the
17
+# specific language governing permissions and limitations
18
+# under the License.
19
+# ----------------------------------------------------------------------------
20
+
21
+# ----------------------------------------------------------------------------
22
+# Maven Start Up Batch script
23
+#
24
+# Required ENV vars:
25
+# ------------------
26
+#   JAVA_HOME - location of a JDK home dir
27
+#
28
+# Optional ENV vars
29
+# -----------------
30
+#   M2_HOME - location of maven2's installed home dir
31
+#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
32
+#     e.g. to debug Maven itself, use
33
+#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
34
+#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
35
+# ----------------------------------------------------------------------------
36
+
37
+if [ -z "$MAVEN_SKIP_RC" ] ; then
38
+
39
+  if [ -f /usr/local/etc/mavenrc ] ; then
40
+    . /usr/local/etc/mavenrc
41
+  fi
42
+
43
+  if [ -f /etc/mavenrc ] ; then
44
+    . /etc/mavenrc
45
+  fi
46
+
47
+  if [ -f "$HOME/.mavenrc" ] ; then
48
+    . "$HOME/.mavenrc"
49
+  fi
50
+
51
+fi
52
+
53
+# OS specific support.  $var _must_ be set to either true or false.
54
+cygwin=false;
55
+darwin=false;
56
+mingw=false
57
+case "`uname`" in
58
+  CYGWIN*) cygwin=true ;;
59
+  MINGW*) mingw=true;;
60
+  Darwin*) darwin=true
61
+    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
62
+    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
63
+    if [ -z "$JAVA_HOME" ]; then
64
+      if [ -x "/usr/libexec/java_home" ]; then
65
+        export JAVA_HOME="`/usr/libexec/java_home`"
66
+      else
67
+        export JAVA_HOME="/Library/Java/Home"
68
+      fi
69
+    fi
70
+    ;;
71
+esac
72
+
73
+if [ -z "$JAVA_HOME" ] ; then
74
+  if [ -r /etc/gentoo-release ] ; then
75
+    JAVA_HOME=`java-config --jre-home`
76
+  fi
77
+fi
78
+
79
+if [ -z "$M2_HOME" ] ; then
80
+  ## resolve links - $0 may be a link to maven's home
81
+  PRG="$0"
82
+
83
+  # need this for relative symlinks
84
+  while [ -h "$PRG" ] ; do
85
+    ls=`ls -ld "$PRG"`
86
+    link=`expr "$ls" : '.*-> \(.*\)$'`
87
+    if expr "$link" : '/.*' > /dev/null; then
88
+      PRG="$link"
89
+    else
90
+      PRG="`dirname "$PRG"`/$link"
91
+    fi
92
+  done
93
+
94
+  saveddir=`pwd`
95
+
96
+  M2_HOME=`dirname "$PRG"`/..
97
+
98
+  # make it fully qualified
99
+  M2_HOME=`cd "$M2_HOME" && pwd`
100
+
101
+  cd "$saveddir"
102
+  # echo Using m2 at $M2_HOME
103
+fi
104
+
105
+# For Cygwin, ensure paths are in UNIX format before anything is touched
106
+if $cygwin ; then
107
+  [ -n "$M2_HOME" ] &&
108
+    M2_HOME=`cygpath --unix "$M2_HOME"`
109
+  [ -n "$JAVA_HOME" ] &&
110
+    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
111
+  [ -n "$CLASSPATH" ] &&
112
+    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
113
+fi
114
+
115
+# For Mingw, ensure paths are in UNIX format before anything is touched
116
+if $mingw ; then
117
+  [ -n "$M2_HOME" ] &&
118
+    M2_HOME="`(cd "$M2_HOME"; pwd)`"
119
+  [ -n "$JAVA_HOME" ] &&
120
+    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
121
+fi
122
+
123
+if [ -z "$JAVA_HOME" ]; then
124
+  javaExecutable="`which javac`"
125
+  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
126
+    # readlink(1) is not available as standard on Solaris 10.
127
+    readLink=`which readlink`
128
+    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
129
+      if $darwin ; then
130
+        javaHome="`dirname \"$javaExecutable\"`"
131
+        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
132
+      else
133
+        javaExecutable="`readlink -f \"$javaExecutable\"`"
134
+      fi
135
+      javaHome="`dirname \"$javaExecutable\"`"
136
+      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
137
+      JAVA_HOME="$javaHome"
138
+      export JAVA_HOME
139
+    fi
140
+  fi
141
+fi
142
+
143
+if [ -z "$JAVACMD" ] ; then
144
+  if [ -n "$JAVA_HOME"  ] ; then
145
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
146
+      # IBM's JDK on AIX uses strange locations for the executables
147
+      JAVACMD="$JAVA_HOME/jre/sh/java"
148
+    else
149
+      JAVACMD="$JAVA_HOME/bin/java"
150
+    fi
151
+  else
152
+    JAVACMD="`\\unset -f command; \\command -v java`"
153
+  fi
154
+fi
155
+
156
+if [ ! -x "$JAVACMD" ] ; then
157
+  echo "Error: JAVA_HOME is not defined correctly." >&2
158
+  echo "  We cannot execute $JAVACMD" >&2
159
+  exit 1
160
+fi
161
+
162
+if [ -z "$JAVA_HOME" ] ; then
163
+  echo "Warning: JAVA_HOME environment variable is not set."
164
+fi
165
+
166
+CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
167
+
168
+# traverses directory structure from process work directory to filesystem root
169
+# first directory with .mvn subdirectory is considered project base directory
170
+find_maven_basedir() {
171
+
172
+  if [ -z "$1" ]
173
+  then
174
+    echo "Path not specified to find_maven_basedir"
175
+    return 1
176
+  fi
177
+
178
+  basedir="$1"
179
+  wdir="$1"
180
+  while [ "$wdir" != '/' ] ; do
181
+    if [ -d "$wdir"/.mvn ] ; then
182
+      basedir=$wdir
183
+      break
184
+    fi
185
+    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
186
+    if [ -d "${wdir}" ]; then
187
+      wdir=`cd "$wdir/.."; pwd`
188
+    fi
189
+    # end of workaround
190
+  done
191
+  echo "${basedir}"
192
+}
193
+
194
+# concatenates all lines of a file
195
+concat_lines() {
196
+  if [ -f "$1" ]; then
197
+    echo "$(tr -s '\n' ' ' < "$1")"
198
+  fi
199
+}
200
+
201
+BASE_DIR=`find_maven_basedir "$(pwd)"`
202
+if [ -z "$BASE_DIR" ]; then
203
+  exit 1;
204
+fi
205
+
206
+##########################################################################################
207
+# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
208
+# This allows using the maven wrapper in projects that prohibit checking in binary data.
209
+##########################################################################################
210
+if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
211
+    if [ "$MVNW_VERBOSE" = true ]; then
212
+      echo "Found .mvn/wrapper/maven-wrapper.jar"
213
+    fi
214
+else
215
+    if [ "$MVNW_VERBOSE" = true ]; then
216
+      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
217
+    fi
218
+    if [ -n "$MVNW_REPOURL" ]; then
219
+      jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
220
+    else
221
+      jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
222
+    fi
223
+    while IFS="=" read key value; do
224
+      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
225
+      esac
226
+    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
227
+    if [ "$MVNW_VERBOSE" = true ]; then
228
+      echo "Downloading from: $jarUrl"
229
+    fi
230
+    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
231
+    if $cygwin; then
232
+      wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
233
+    fi
234
+
235
+    if command -v wget > /dev/null; then
236
+        if [ "$MVNW_VERBOSE" = true ]; then
237
+          echo "Found wget ... using wget"
238
+        fi
239
+        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
240
+            wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
241
+        else
242
+            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
243
+        fi
244
+    elif command -v curl > /dev/null; then
245
+        if [ "$MVNW_VERBOSE" = true ]; then
246
+          echo "Found curl ... using curl"
247
+        fi
248
+        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
249
+            curl -o "$wrapperJarPath" "$jarUrl" -f
250
+        else
251
+            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
252
+        fi
253
+
254
+    else
255
+        if [ "$MVNW_VERBOSE" = true ]; then
256
+          echo "Falling back to using Java to download"
257
+        fi
258
+        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
259
+        # For Cygwin, switch paths to Windows format before running javac
260
+        if $cygwin; then
261
+          javaClass=`cygpath --path --windows "$javaClass"`
262
+        fi
263
+        if [ -e "$javaClass" ]; then
264
+            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
265
+                if [ "$MVNW_VERBOSE" = true ]; then
266
+                  echo " - Compiling MavenWrapperDownloader.java ..."
267
+                fi
268
+                # Compiling the Java class
269
+                ("$JAVA_HOME/bin/javac" "$javaClass")
270
+            fi
271
+            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
272
+                # Running the downloader
273
+                if [ "$MVNW_VERBOSE" = true ]; then
274
+                  echo " - Running MavenWrapperDownloader.java ..."
275
+                fi
276
+                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
277
+            fi
278
+        fi
279
+    fi
280
+fi
281
+##########################################################################################
282
+# End of extension
283
+##########################################################################################
284
+
285
+export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
286
+if [ "$MVNW_VERBOSE" = true ]; then
287
+  echo $MAVEN_PROJECTBASEDIR
288
+fi
289
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
290
+
291
+# For Cygwin, switch paths to Windows format before running java
292
+if $cygwin; then
293
+  [ -n "$M2_HOME" ] &&
294
+    M2_HOME=`cygpath --path --windows "$M2_HOME"`
295
+  [ -n "$JAVA_HOME" ] &&
296
+    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
297
+  [ -n "$CLASSPATH" ] &&
298
+    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
299
+  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
300
+    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
301
+fi
302
+
303
+# Provide a "standardized" way to retrieve the CLI args that will
304
+# work with both Windows and non-Windows executions.
305
+MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
306
+export MAVEN_CMD_LINE_ARGS
307
+
308
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
309
+
310
+exec "$JAVACMD" \
311
+  $MAVEN_OPTS \
312
+  $MAVEN_DEBUG_OPTS \
313
+  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
314
+  "-Dmaven.home=${M2_HOME}" \
315
+  "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
316
+  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

+ 188
- 0
mvnw.cmd Прегледај датотеку

@@ -0,0 +1,188 @@
1
+@REM ----------------------------------------------------------------------------
2
+@REM Licensed to the Apache Software Foundation (ASF) under one
3
+@REM or more contributor license agreements.  See the NOTICE file
4
+@REM distributed with this work for additional information
5
+@REM regarding copyright ownership.  The ASF licenses this file
6
+@REM to you under the Apache License, Version 2.0 (the
7
+@REM "License"); you may not use this file except in compliance
8
+@REM with the License.  You may obtain a copy of the License at
9
+@REM
10
+@REM    https://www.apache.org/licenses/LICENSE-2.0
11
+@REM
12
+@REM Unless required by applicable law or agreed to in writing,
13
+@REM software distributed under the License is distributed on an
14
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+@REM KIND, either express or implied.  See the License for the
16
+@REM specific language governing permissions and limitations
17
+@REM under the License.
18
+@REM ----------------------------------------------------------------------------
19
+
20
+@REM ----------------------------------------------------------------------------
21
+@REM Maven Start Up Batch script
22
+@REM
23
+@REM Required ENV vars:
24
+@REM JAVA_HOME - location of a JDK home dir
25
+@REM
26
+@REM Optional ENV vars
27
+@REM M2_HOME - location of maven2's installed home dir
28
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
29
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
30
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
31
+@REM     e.g. to debug Maven itself, use
32
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
33
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
34
+@REM ----------------------------------------------------------------------------
35
+
36
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
37
+@echo off
38
+@REM set title of command window
39
+title %0
40
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
41
+@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
42
+
43
+@REM set %HOME% to equivalent of $HOME
44
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
45
+
46
+@REM Execute a user defined script before this one
47
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
48
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
49
+if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
50
+if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
51
+:skipRcPre
52
+
53
+@setlocal
54
+
55
+set ERROR_CODE=0
56
+
57
+@REM To isolate internal variables from possible post scripts, we use another setlocal
58
+@setlocal
59
+
60
+@REM ==== START VALIDATION ====
61
+if not "%JAVA_HOME%" == "" goto OkJHome
62
+
63
+echo.
64
+echo Error: JAVA_HOME not found in your environment. >&2
65
+echo Please set the JAVA_HOME variable in your environment to match the >&2
66
+echo location of your Java installation. >&2
67
+echo.
68
+goto error
69
+
70
+:OkJHome
71
+if exist "%JAVA_HOME%\bin\java.exe" goto init
72
+
73
+echo.
74
+echo Error: JAVA_HOME is set to an invalid directory. >&2
75
+echo JAVA_HOME = "%JAVA_HOME%" >&2
76
+echo Please set the JAVA_HOME variable in your environment to match the >&2
77
+echo location of your Java installation. >&2
78
+echo.
79
+goto error
80
+
81
+@REM ==== END VALIDATION ====
82
+
83
+:init
84
+
85
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
86
+@REM Fallback to current working directory if not found.
87
+
88
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
89
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
90
+
91
+set EXEC_DIR=%CD%
92
+set WDIR=%EXEC_DIR%
93
+:findBaseDir
94
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
95
+cd ..
96
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
97
+set WDIR=%CD%
98
+goto findBaseDir
99
+
100
+:baseDirFound
101
+set MAVEN_PROJECTBASEDIR=%WDIR%
102
+cd "%EXEC_DIR%"
103
+goto endDetectBaseDir
104
+
105
+:baseDirNotFound
106
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
107
+cd "%EXEC_DIR%"
108
+
109
+:endDetectBaseDir
110
+
111
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
112
+
113
+@setlocal EnableExtensions EnableDelayedExpansion
114
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
115
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
116
+
117
+:endReadAdditionalConfig
118
+
119
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
120
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
121
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
122
+
123
+set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
124
+
125
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
126
+    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
127
+)
128
+
129
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
130
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
131
+if exist %WRAPPER_JAR% (
132
+    if "%MVNW_VERBOSE%" == "true" (
133
+        echo Found %WRAPPER_JAR%
134
+    )
135
+) else (
136
+    if not "%MVNW_REPOURL%" == "" (
137
+        SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
138
+    )
139
+    if "%MVNW_VERBOSE%" == "true" (
140
+        echo Couldn't find %WRAPPER_JAR%, downloading it ...
141
+        echo Downloading from: %DOWNLOAD_URL%
142
+    )
143
+
144
+    powershell -Command "&{"^
145
+		"$webclient = new-object System.Net.WebClient;"^
146
+		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
147
+		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
148
+		"}"^
149
+		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
150
+		"}"
151
+    if "%MVNW_VERBOSE%" == "true" (
152
+        echo Finished downloading %WRAPPER_JAR%
153
+    )
154
+)
155
+@REM End of extension
156
+
157
+@REM Provide a "standardized" way to retrieve the CLI args that will
158
+@REM work with both Windows and non-Windows executions.
159
+set MAVEN_CMD_LINE_ARGS=%*
160
+
161
+%MAVEN_JAVA_EXE% ^
162
+  %JVM_CONFIG_MAVEN_PROPS% ^
163
+  %MAVEN_OPTS% ^
164
+  %MAVEN_DEBUG_OPTS% ^
165
+  -classpath %WRAPPER_JAR% ^
166
+  "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
167
+  %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
168
+if ERRORLEVEL 1 goto error
169
+goto end
170
+
171
+:error
172
+set ERROR_CODE=1
173
+
174
+:end
175
+@endlocal & set ERROR_CODE=%ERROR_CODE%
176
+
177
+if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
178
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
179
+if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
180
+if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
181
+:skipRcPost
182
+
183
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
184
+if "%MAVEN_BATCH_PAUSE%"=="on" pause
185
+
186
+if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
187
+
188
+cmd /C exit /B %ERROR_CODE%

+ 97
- 0
pom.xml Прегледај датотеку

@@ -0,0 +1,97 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4
+	<modelVersion>4.0.0</modelVersion>
5
+	<parent>
6
+		<groupId>org.springframework.boot</groupId>
7
+		<artifactId>spring-boot-starter-parent</artifactId>
8
+		<version>2.6.7</version>
9
+		<relativePath/> <!-- lookup parent from repository -->
10
+	</parent>
11
+	<groupId>com.njyunzhi</groupId>
12
+	<artifactId>nanyang</artifactId>
13
+	<version>0.0.8-location</version>
14
+	<name>location</name>
15
+	<description>定位服务</description>
16
+	<properties>
17
+		<java.version>1.8</java.version>
18
+		<log4j.version>2.17.0</log4j.version>
19
+	</properties>
20
+	<dependencies>
21
+		<dependency>
22
+			<groupId>org.springframework.boot</groupId>
23
+			<artifactId>spring-boot-starter</artifactId>
24
+		</dependency>
25
+<!--		<dependency>-->
26
+<!--			<groupId>org.springframework.boot</groupId>-->
27
+<!--			<artifactId>spring-boot-starter-web</artifactId>-->
28
+<!--		</dependency>-->
29
+
30
+		<dependency>
31
+			<groupId>org.springframework.boot</groupId>
32
+			<artifactId>spring-boot-starter-test</artifactId>
33
+			<scope>test</scope>
34
+		</dependency>
35
+
36
+		<!--mysql start-->
37
+		<dependency>
38
+			<groupId>mysql</groupId>
39
+			<artifactId>mysql-connector-java</artifactId>
40
+			<scope>runtime</scope>
41
+		</dependency>
42
+		<!--mysql end-->
43
+
44
+		<!--mybatis-plus start-->
45
+		<dependency>
46
+			<groupId>com.baomidou</groupId>
47
+			<artifactId>mybatis-plus-boot-starter</artifactId>
48
+			<version>3.1.1</version>
49
+		</dependency>
50
+		<!--mybatis-plus end-->
51
+
52
+		<!--lombok start-->
53
+		<dependency>
54
+			<groupId>org.projectlombok</groupId>
55
+			<artifactId>lombok</artifactId>
56
+			<optional>true</optional>
57
+		</dependency>
58
+		<!--lombok end-->
59
+
60
+		<!--fastjson start-->
61
+		<dependency>
62
+			<groupId>com.alibaba</groupId>
63
+			<artifactId>fastjson</artifactId>
64
+			<version>1.2.56</version>
65
+		</dependency>
66
+		<!--fastjson end-->
67
+
68
+		<dependency>
69
+			<groupId>cn.hutool</groupId>
70
+			<artifactId>hutool-http</artifactId>
71
+			<version>5.8.9</version>
72
+		</dependency>
73
+	</dependencies>
74
+
75
+	<build>
76
+		<plugins>
77
+			<plugin>
78
+				<groupId>org.springframework.boot</groupId>
79
+				<artifactId>spring-boot-maven-plugin</artifactId>
80
+				<configuration>
81
+					<includeSystemScope>true</includeSystemScope>
82
+				</configuration>
83
+			</plugin>
84
+		</plugins>
85
+		<resources>
86
+			<resource>
87
+				<directory>src/main/resources</directory>
88
+				<filtering>true</filtering>
89
+				<includes>
90
+					<include>**/*.xml</include>
91
+					<include>application.yml</include>
92
+				</includes>
93
+			</resource>
94
+		</resources>
95
+	</build>
96
+
97
+</project>

+ 17
- 0
src/main/java/com/njyunzhi/nanyang/Application.java Прегледај датотеку

@@ -0,0 +1,17 @@
1
+package com.njyunzhi.nanyang;
2
+
3
+import org.springframework.boot.SpringApplication;
4
+import org.springframework.boot.autoconfigure.SpringBootApplication;
5
+import org.springframework.scheduling.annotation.EnableAsync;
6
+import org.springframework.scheduling.annotation.EnableScheduling;
7
+
8
+@EnableAsync
9
+@SpringBootApplication
10
+@EnableScheduling
11
+public class Application {
12
+
13
+	public static void main(String[] args) {
14
+		SpringApplication.run(Application.class, args);
15
+	}
16
+
17
+}

+ 59
- 0
src/main/java/com/njyunzhi/nanyang/common/AmapUtil.java Прегледај датотеку

@@ -0,0 +1,59 @@
1
+package com.njyunzhi.nanyang.common;
2
+
3
+import cn.hutool.http.HttpUtil;
4
+import com.alibaba.fastjson.JSON;
5
+import com.alibaba.fastjson.JSONObject;
6
+import com.njyunzhi.nanyang.common.gps.Gps;
7
+import com.njyunzhi.nanyang.common.gps.GpsUtil;
8
+import com.njyunzhi.nanyang.config.AmapConfig;
9
+import lombok.extern.slf4j.Slf4j;
10
+import org.springframework.beans.factory.annotation.Autowired;
11
+import org.springframework.stereotype.Component;
12
+
13
+@Slf4j
14
+@Component
15
+public class AmapUtil {
16
+
17
+    @Autowired
18
+    AmapConfig config;
19
+
20
+    public JSONObject regeo(String location) {
21
+        if (null == location || "".equals(location.trim()) || location.length() < 5) {
22
+            return null;
23
+        }
24
+
25
+        String[] parts = location.split(",");
26
+        double lng = Double.parseDouble(parts[0]);
27
+        double lat = Double.parseDouble(parts[1]);
28
+
29
+//        Gps gps = GpsUtil.gps84_To_Gcj02(lat, lng);
30
+//        String loc = String.format("%f,%f", gps.getWgLon(), gps.getWgLon());
31
+        String loc = location;
32
+
33
+        for(String key : config.getKeys()) {
34
+            try {
35
+                JSONObject res = getRego1(key, loc);
36
+                return res;
37
+            } catch (Exception e) {
38
+                //
39
+            }
40
+        }
41
+
42
+        return null;
43
+    }
44
+
45
+    public JSONObject getRego1(String key, String loc) throws Exception {
46
+        String url = String.format("http://restapi.amap.com/v3/geocode/regeo?key=%s&location=%s&radius=1000&extensions=base&batch=false&roadlevel=0", key, loc);
47
+        String resp = HttpUtil.get(url);
48
+        log.info("接口【{}】 返回【{}】", url, resp);
49
+
50
+        JSONObject result = JSON.parseObject(resp);
51
+
52
+        if (!"1".equals(result.getString("status"))) {
53
+            throw new Exception(result.getString("info"));
54
+        }
55
+
56
+        JSONObject regeocode = result.getJSONObject("regeocode");
57
+        return regeocode;
58
+    }
59
+}

+ 38
- 0
src/main/java/com/njyunzhi/nanyang/common/gps/Gps.java Прегледај датотеку

@@ -0,0 +1,38 @@
1
+package com.njyunzhi.nanyang.common.gps;
2
+
3
+public class Gps {
4
+
5
+    private double wgLat; // 纬度
6
+    private double wgLon; // 经度
7
+
8
+    public Gps(){
9
+
10
+    }
11
+
12
+    public Gps(double wgLat, double wgLon) {
13
+        setWgLat(wgLat);
14
+        setWgLon(wgLon);
15
+    }
16
+
17
+    public double getWgLat() {
18
+        return wgLat;
19
+    }
20
+
21
+    public void setWgLat(double wgLat) {
22
+        this.wgLat = wgLat;
23
+    }
24
+
25
+    public double getWgLon() {
26
+        return wgLon;
27
+    }
28
+
29
+    public void setWgLon(double wgLon) {
30
+        this.wgLon = wgLon;
31
+    }
32
+
33
+    @Override
34
+    public String toString() {
35
+        return wgLat + "," + wgLon;
36
+    }
37
+
38
+}

+ 140
- 0
src/main/java/com/njyunzhi/nanyang/common/gps/GpsUtil.java Прегледај датотеку

@@ -0,0 +1,140 @@
1
+package com.njyunzhi.nanyang.common.gps;
2
+
3
+public class GpsUtil {
4
+    private static double pi = 3.1415926535897932384626;
5
+    private static double a = 6378245.0;
6
+    private static double ee = 0.00669342162296594323;
7
+
8
+    /**
9
+     * 84 to 火星坐标系 (GCJ-02)
10
+     *
11
+     * World Geodetic System ==> Mars Geodetic System
12
+     *
13
+     * @param lat
14
+     * @param lon
15
+     * @return
16
+     */
17
+    public static Gps gps84_To_Gcj02(double lat, double lon) {
18
+        if (outOfChina(lat, lon)) {
19
+            return null;
20
+        }
21
+        double dLat = transformLat(lon - 105.0, lat - 35.0);
22
+        double dLon = transformLon(lon - 105.0, lat - 35.0);
23
+        double radLat = lat / 180.0 * pi;
24
+        double magic = Math.sin(radLat);
25
+        magic = 1 - ee * magic * magic;
26
+        double sqrtMagic = Math.sqrt(magic);
27
+        dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
28
+        dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
29
+        double mgLat = lat + dLat;
30
+        double mgLon = lon + dLon;
31
+
32
+        return new Gps(mgLat, mgLon);
33
+    }
34
+
35
+    /**
36
+     * 火星坐标系 (GCJ-02) to 84
37
+     *
38
+     * @param lon
39
+     * @param lat
40
+     * @return
41
+     */
42
+    public static Gps gcj02_To_Gps84(double lat, double lon) {
43
+        Gps gps = transform(lat, lon);
44
+        double lontitude = lon * 2 - gps.getWgLon();
45
+        double latitude = lat * 2 - gps.getWgLat();
46
+
47
+        return new Gps(latitude, lontitude);
48
+
49
+    }
50
+
51
+    /**
52
+     * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
53
+     *
54
+     * 将 GCJ-02 坐标转换成 BD-09 坐标
55
+     *
56
+     * @param gg_lat
57
+     * @param gg_lon
58
+     */
59
+    public static Gps gcj02_To_Bd09(double gg_lat, double gg_lon) {
60
+        double x = gg_lon, y = gg_lat;
61
+
62
+        double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * pi);
63
+
64
+        double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * pi);
65
+
66
+        double bd_lon = z * Math.cos(theta) + 0.0065;
67
+
68
+        double bd_lat = z * Math.sin(theta) + 0.006;
69
+
70
+        return new Gps(bd_lat, bd_lon);
71
+    }
72
+
73
+    /**
74
+     * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法
75
+     *
76
+     * 将 BD-09 坐标转换成GCJ-02 坐标
77
+     *
78
+     * @param bd_lat
79
+     * @param bd_lon
80
+     * @return
81
+     */
82
+    public static Gps bd09_To_Gcj02(double bd_lat, double bd_lon) {
83
+        double x = bd_lon - 0.0065, y = bd_lat - 0.006;
84
+
85
+        double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * pi);
86
+
87
+        double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * pi);
88
+
89
+        double gg_lon = z * Math.cos(theta);
90
+
91
+        double gg_lat = z * Math.sin(theta);
92
+
93
+        return new Gps(gg_lat, gg_lon);
94
+    }
95
+
96
+    private static boolean outOfChina(double lat, double lon) {
97
+        if (lon < 72.004 || lon > 137.8347)
98
+            return true;
99
+        if (lat < 0.8293 || lat > 55.8271)
100
+            return true;
101
+        return false;
102
+    }
103
+
104
+    private static Gps transform(double lat, double lon) {
105
+        if (outOfChina(lat, lon)) {
106
+            return new Gps(lat, lon);
107
+        }
108
+        double dLat = transformLat(lon - 105.0, lat - 35.0);
109
+        double dLon = transformLon(lon - 105.0, lat - 35.0);
110
+        double radLat = lat / 180.0 * pi;
111
+        double magic = Math.sin(radLat);
112
+        magic = 1 - ee * magic * magic;
113
+        double sqrtMagic = Math.sqrt(magic);
114
+        dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
115
+        dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
116
+        double mgLat = lat + dLat;
117
+        double mgLon = lon + dLon;
118
+
119
+        return new Gps(mgLat, mgLon);
120
+    }
121
+
122
+    private static double transformLat(double x, double y) {
123
+        double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y
124
+                + 0.2 * Math.sqrt(Math.abs(x));
125
+        ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
126
+        ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
127
+        ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
128
+        return ret;
129
+    }
130
+
131
+    private static double transformLon(double x, double y) {
132
+        double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1
133
+                * Math.sqrt(Math.abs(x));
134
+        ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
135
+        ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
136
+        ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0
137
+                * pi)) * 2.0 / 3.0;
138
+        return ret;
139
+    }
140
+}

+ 14
- 0
src/main/java/com/njyunzhi/nanyang/config/AmapConfig.java Прегледај датотеку

@@ -0,0 +1,14 @@
1
+package com.njyunzhi.nanyang.config;
2
+
3
+import lombok.Data;
4
+import org.springframework.boot.context.properties.ConfigurationProperties;
5
+import org.springframework.stereotype.Component;
6
+
7
+import java.util.List;
8
+
9
+@Data
10
+@Component
11
+@ConfigurationProperties(prefix = "yz.amap")
12
+public class AmapConfig {
13
+    List<String> keys;
14
+}

+ 60
- 0
src/main/java/com/njyunzhi/nanyang/entity/TaLocation.java Прегледај датотеку

@@ -0,0 +1,60 @@
1
+package com.njyunzhi.nanyang.entity;
2
+
3
+//import io.swagger.annotations.ApiModel;
4
+//import io.swagger.annotations.ApiModelProperty;
5
+import com.baomidou.mybatisplus.annotation.IdType;
6
+import com.baomidou.mybatisplus.annotation.TableName;
7
+import com.baomidou.mybatisplus.annotation.TableId;
8
+import java.io.Serializable;
9
+import java.util.Date;
10
+import lombok.Data;
11
+import lombok.EqualsAndHashCode;
12
+import lombok.experimental.Accessors;
13
+
14
+ /**
15
+ * 地理位置;
16
+ * @author : http://www.chiner.pro
17
+ * @date : 2023-4-15
18
+ */
19
+@Data
20
+@EqualsAndHashCode(callSuper = false)
21
+@Accessors(chain = true)
22
+// @ApiModel(value = "地理位置",description = "")
23
+@TableName("ta_location")
24
+public class TaLocation implements Serializable,Cloneable{
25
+    /** 序号 */
26
+    // @ApiModelProperty(name = "序号",notes = "")
27
+    @TableId(value = "serial_no", type = IdType.INPUT)
28
+    private Integer serialNo ;
29
+    /** 经纬度;lng,lat gcj02 */
30
+    // @ApiModelProperty(name = "经纬度",notes = "lng,lat gcj02")
31
+    private String location ;
32
+    /** 地址 */
33
+    // @ApiModelProperty(name = "地址",notes = "")
34
+    private String address ;
35
+    /** 国家 */
36
+    // @ApiModelProperty(name = "国家",notes = "")
37
+    private String country ;
38
+    /** 省份 */
39
+    // @ApiModelProperty(name = "省份",notes = "")
40
+    private String province ;
41
+    /** 城市编码 */
42
+    // @ApiModelProperty(name = "城市编码",notes = "")
43
+    private String cityCode ;
44
+    /** 城市名称 */
45
+    // @ApiModelProperty(name = "城市名称",notes = "")
46
+    private String city ;
47
+    /** 区县 */
48
+    // @ApiModelProperty(name = "区县",notes = "")
49
+    private String district ;
50
+    /** 地区编码 */
51
+    // @ApiModelProperty(name = "地区编码",notes = "")
52
+    private String adcode ;
53
+    /** 城镇/街道/社区 */
54
+    // @ApiModelProperty(name = "城镇/街道/社区",notes = "")
55
+    private String town ;
56
+    /** 城镇编码 */
57
+    // @ApiModelProperty(name = "城镇编码",notes = "")
58
+    private String townCode ;
59
+
60
+}

+ 19
- 0
src/main/java/com/njyunzhi/nanyang/mapper/TaLocationMapper.java Прегледај датотеку

@@ -0,0 +1,19 @@
1
+package com.njyunzhi.nanyang.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import org.apache.ibatis.annotations.Mapper;
5
+import org.apache.ibatis.annotations.Param;
6
+import com.njyunzhi.nanyang.entity.TaLocation;
7
+
8
+import java.util.List;
9
+
10
+/**
11
+ * 地理位置;(ta_location)表数据库访问层
12
+ * @author : http://njyunzhi.com
13
+ * @date : 2023-4-15
14
+ */
15
+@Mapper
16
+public interface TaLocationMapper  extends BaseMapper<TaLocation>{
17
+
18
+     List<String> getUngeo();
19
+ }

+ 26
- 0
src/main/java/com/njyunzhi/nanyang/service/IBaseService.java Прегледај датотеку

@@ -0,0 +1,26 @@
1
+package com.njyunzhi.nanyang.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+
5
+import java.io.Serializable;
6
+
7
+public interface IBaseService<T> extends IService<T> {
8
+    /**
9
+     * 逻辑删除
10
+     * @param id
11
+     * @return
12
+     */
13
+    boolean removeLogicById(Serializable id);
14
+
15
+    boolean removeBy(String column, Object value, boolean notDelete);
16
+
17
+    boolean canAccessData(Serializable id, String userId);
18
+
19
+    boolean remvoeWithDataScope(Serializable id, String userId);
20
+
21
+    int countBy(String column, Object value, boolean notDelete);
22
+
23
+    T getByButNot(String column, Object value, String col, Object val, boolean notDelete);
24
+
25
+    T getExistBy(String column, Object value, boolean normal, boolean notDelete);
26
+}

+ 14
- 0
src/main/java/com/njyunzhi/nanyang/service/TaLocationService.java Прегледај датотеку

@@ -0,0 +1,14 @@
1
+package com.njyunzhi.nanyang.service;
2
+
3
+import com.baomidou.mybatisplus.extension.service.IService;
4
+import com.njyunzhi.nanyang.entity.TaLocation;
5
+
6
+ /**
7
+ * 地理位置;(ta_location)表服务接口
8
+ * @author : http://njyunzhi.com
9
+ * @date : 2023-4-15
10
+ */
11
+public interface TaLocationService extends IBaseService<TaLocation> {
12
+
13
+     void syncLocation();
14
+ }

+ 108
- 0
src/main/java/com/njyunzhi/nanyang/service/impl/BaseServiceImpl.java Прегледај датотеку

@@ -0,0 +1,108 @@
1
+package com.njyunzhi.nanyang.service.impl;
2
+
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
5
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6
+import com.baomidou.mybatisplus.core.metadata.TableInfo;
7
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
8
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
9
+import com.njyunzhi.nanyang.service.IBaseService;
10
+
11
+import java.io.Serializable;
12
+
13
+public class BaseServiceImpl<M extends BaseMapper<T>, T> extends ServiceImpl<M, T> implements IBaseService<T> {
14
+    @Override
15
+    public boolean removeLogicById(Serializable id) {
16
+
17
+        TableInfo tableInfo = SqlHelper.table(currentModelClass());
18
+        UpdateWrapper<T> updateWrapper = new UpdateWrapper<>();
19
+        updateWrapper.set("status", -1)
20
+                .eq(tableInfo.getKeyColumn(), id);
21
+
22
+        return update(updateWrapper);
23
+    }
24
+
25
+    @Override
26
+    public boolean removeBy(String column, Object value, boolean notDelete) {
27
+        if (notDelete) {
28
+            UpdateWrapper<T> updateWrapper = new UpdateWrapper<>();
29
+            updateWrapper.set("status", -1);
30
+            updateWrapper.eq(column, value);
31
+            return update(updateWrapper);
32
+        } else {
33
+            QueryWrapper<T> queryWrapper = new QueryWrapper<>();
34
+            queryWrapper.eq(column, value);
35
+            return remove(queryWrapper);
36
+        }
37
+    }
38
+
39
+    @Override
40
+    public boolean canAccessData(Serializable id, String userId) {
41
+        return true;
42
+//        if (Constants.ADMIN_ID.equals(userId)) return true;
43
+//
44
+//        TableInfo tableInfo = SqlHelper.table(currentModelClass());
45
+//
46
+//        String t = tableInfo.getTableName();
47
+////        String k = tableInfo.getKeyColumn();
48
+//        String kAlias = t + ".org_id";
49
+//
50
+//        String joinSQL = "INNER JOIN sys_user_data_scope s ON ( "+ kAlias +" = s.org_id OR "+t+".create_user = s.user_id )";
51
+//        String whereSQL = "WHERE " + kAlias + " = '"+ id +"' AND s.user_id = '" + userId + "'";
52
+//
53
+//        String sql = joinSQL + " " + whereSQL;
54
+//
55
+//        QueryWrapper<T> wrapper = new QueryWrapper<>();
56
+//        wrapper.last(sql);
57
+//        return count(wrapper) > 0;
58
+    }
59
+
60
+    @Override
61
+    public boolean remvoeWithDataScope(Serializable id, String userId) {
62
+        TableInfo tableInfo = SqlHelper.table(currentModelClass());
63
+
64
+        String t = tableInfo.getTableName();
65
+        String k = tableInfo.getKeyColumn();
66
+        String kAlias = t + "." + k;
67
+
68
+        String joinSQL = "INNER JOIN sys_user_data_scope s ON ( "+ kAlias +" = s.org_id OR "+t+".create_user = s.user_id )";
69
+        String setSQL = "SET status = -1";
70
+        String whereSQL = "WHERE " + kAlias + " = '"+ id +"' AND s.user_id = '" + userId + "'";
71
+
72
+        String sql = joinSQL + " " + setSQL + " " + whereSQL;
73
+
74
+        UpdateWrapper<T> wrapper = new UpdateWrapper<>();
75
+        wrapper.last(sql);
76
+        return update(wrapper);
77
+    }
78
+
79
+    @Override
80
+    public int countBy(String column, Object value, boolean notDelete) {
81
+        QueryWrapper<T> queryWrapper = new QueryWrapper<>();
82
+        queryWrapper.eq(column, value);
83
+        queryWrapper.gt(notDelete, "status", -1);
84
+
85
+        return count(queryWrapper);
86
+    }
87
+
88
+    @Override
89
+    public T getByButNot(String column, Object value, String col, Object val, boolean notDelete) {
90
+        QueryWrapper<T> queryWrapper = new QueryWrapper<>();
91
+        queryWrapper.eq(column, value);
92
+        queryWrapper.ne(col, val);
93
+        queryWrapper.gt(notDelete, "status", -1);
94
+        queryWrapper.last("limit 1");
95
+
96
+        return getOne(queryWrapper);
97
+    }
98
+
99
+    @Override
100
+    public T getExistBy(String column, Object value, boolean normal, boolean notDelete) {
101
+        QueryWrapper<T> queryWrapper = new QueryWrapper<>();
102
+        queryWrapper.eq(column, value);
103
+        queryWrapper.eq(normal, "status", 1);
104
+        queryWrapper.gt(notDelete, "status", -1);
105
+        queryWrapper.last("limit 1");
106
+        return getOne(queryWrapper);
107
+    }
108
+}

+ 75
- 0
src/main/java/com/njyunzhi/nanyang/service/impl/TaLocationServiceImpl.java Прегледај датотеку

@@ -0,0 +1,75 @@
1
+package com.njyunzhi.nanyang.service.impl;
2
+
3
+import com.alibaba.fastjson.JSONObject;
4
+import com.njyunzhi.nanyang.common.AmapUtil;
5
+import lombok.extern.slf4j.Slf4j;
6
+import org.springframework.beans.factory.annotation.Autowired;
7
+import org.springframework.scheduling.annotation.Async;
8
+import org.springframework.stereotype.Service;
9
+import com.njyunzhi.nanyang.entity.TaLocation;
10
+import com.njyunzhi.nanyang.mapper.TaLocationMapper;
11
+import com.njyunzhi.nanyang.service.TaLocationService;
12
+
13
+import java.util.List;
14
+
15
+/**
16
+ * 地理位置;(ta_location)表服务实现类
17
+ *
18
+ * @author : http://www.chiner.pro
19
+ * @date : 2023-4-15
20
+ */
21
+@Slf4j
22
+@Service
23
+public class TaLocationServiceImpl extends BaseServiceImpl<TaLocationMapper, TaLocation> implements TaLocationService {
24
+
25
+    @Autowired
26
+    AmapUtil amapUtil;
27
+
28
+    @Async
29
+    @Override
30
+    public void syncLocation() {
31
+        List<String> locList = baseMapper.getUngeo();
32
+        long length = null == locList ? 0 : locList.size();
33
+        log.info("获取到待定位信息 {} 条", length);
34
+
35
+        if (length == 0) return;
36
+
37
+        for (String loc : locList) {
38
+            JSONObject res = amapUtil.regeo(loc);
39
+            if (null == res) continue;
40
+
41
+            JSONObject res2 = res.getJSONObject("addressComponent");
42
+
43
+            TaLocation taLocation = new TaLocation();
44
+            taLocation.setLocation(loc);
45
+            taLocation.setAddress(res.getString("formatted_address"));
46
+            taLocation.setCountry(res2.getString("country"));
47
+            taLocation.setProvince(res2.getString("province"));
48
+            taLocation.setCityCode(res2.getString("citycode"));
49
+            taLocation.setDistrict(res2.getString("district"));
50
+            taLocation.setAdcode(res2.getString("adcode"));
51
+            taLocation.setTown(res2.getString("township"));
52
+            taLocation.setTownCode(res2.getString("towncode"));
53
+
54
+            try {
55
+                String city = res2.getString("city");
56
+                if (null == city || "".equals(city)) {
57
+                    taLocation.setCity(taLocation.getProvince());
58
+                } else {
59
+                    taLocation.setCity(city);
60
+                }
61
+            } catch (Exception e) {
62
+                //
63
+                taLocation.setCity(taLocation.getProvince());
64
+            }
65
+
66
+            baseMapper.insert(taLocation);
67
+
68
+            try {
69
+                Thread.sleep(500);
70
+            } catch (InterruptedException e) {
71
+                e.printStackTrace();
72
+            }
73
+        }
74
+    }
75
+}

+ 36
- 0
src/main/java/com/njyunzhi/nanyang/task/SyncLocation.java Прегледај датотеку

@@ -0,0 +1,36 @@
1
+package com.njyunzhi.nanyang.task;
2
+
3
+import com.njyunzhi.nanyang.service.TaLocationService;
4
+import lombok.extern.slf4j.Slf4j;
5
+import org.springframework.beans.factory.annotation.Autowired;
6
+import org.springframework.scheduling.annotation.Scheduled;
7
+import org.springframework.stereotype.Component;
8
+
9
+import javax.annotation.PostConstruct;
10
+
11
+@Slf4j
12
+@Component
13
+public class SyncLocation {
14
+
15
+    @Autowired
16
+    TaLocationService taLocationService;
17
+
18
+    /**
19
+     * 每 5 分钟 同步一次定位信息
20
+     */
21
+    @Scheduled(cron = "0 */5 * * * ?")
22
+    public void run() {
23
+        try {
24
+            log.info("=================开始同步位置信息==");
25
+            taLocationService.syncLocation();
26
+        } catch (Exception e) {
27
+            e.printStackTrace();
28
+        }
29
+    }
30
+
31
+    @PostConstruct
32
+    public void start() {
33
+        // 系统启动立即执行一次
34
+        run();
35
+    }
36
+}

+ 24
- 0
src/main/resources/application.yml Прегледај датотеку

@@ -0,0 +1,24 @@
1
+server:
2
+  port: 7082
3
+
4
+spring:
5
+  datasource:
6
+    url: jdbc:mysql://rm-uf6z3z6jq11x653d77o.mysql.rds.aliyuncs.com:3306/machinery?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
7
+    username: machinery
8
+    password: machinery@ABCD1234
9
+
10
+###
11
+yz:
12
+  ## 高德地图
13
+  amap:
14
+    keys:
15
+      - a30b66a26ea1890fd656cf11cb2647fb
16
+      - b048e0cabb886a1f557fdcd93a8d0c30
17
+      - 292ebde2c70a2c79a32633e2a924d973
18
+
19
+###
20
+mybatis-plus:
21
+  configuration:
22
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
23
+    call-setters-on-nulls: true
24
+  mapper-locations: classpath:mapper/**/*.xml

+ 15
- 0
src/main/resources/mapper/TaLocationMapper.xml Прегледај датотеку

@@ -0,0 +1,15 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
+
4
+<mapper namespace="com.njyunzhi.nanyang.mapper.TaLocationMapper">
5
+
6
+    <select id="getUngeo" resultType="java.lang.String">
7
+        SELECT
8
+            t.location
9
+        FROM
10
+            ta_device_job t
11
+        WHERE
12
+            t.location IS NOT NULL
13
+          AND t.location NOT IN ( SELECT s.location FROM ta_location s )
14
+    </select>
15
+</mapper>