李志伟 3 anni fa
parent
commit
d6c7236eb7
35 ha cambiato i file con 1891 aggiunte e 0 eliminazioni
  1. 34
    0
      .gitignore
  2. 117
    0
      .mvn/wrapper/MavenWrapperDownloader.java
  3. BIN
      .mvn/wrapper/maven-wrapper.jar
  4. 2
    0
      .mvn/wrapper/maven-wrapper.properties
  5. 310
    0
      mvnw
  6. 182
    0
      mvnw.cmd
  7. 105
    0
      pom.xml
  8. 137
    0
      src/main/java/com/njyunzhi/yunshake/Controller/TaScoreController.java
  9. 123
    0
      src/main/java/com/njyunzhi/yunshake/Controller/WxMaController.java
  10. 17
    0
      src/main/java/com/njyunzhi/yunshake/YunshakeApplication.java
  11. 59
    0
      src/main/java/com/njyunzhi/yunshake/common/BaseController.java
  12. 13
    0
      src/main/java/com/njyunzhi/yunshake/common/Constants.java
  13. 68
    0
      src/main/java/com/njyunzhi/yunshake/common/ResponseBean.java
  14. 120
    0
      src/main/java/com/njyunzhi/yunshake/common/StringUtils.java
  15. 35
    0
      src/main/java/com/njyunzhi/yunshake/common/WxUtils.java
  16. 29
    0
      src/main/java/com/njyunzhi/yunshake/config/BaseConfig.java
  17. 34
    0
      src/main/java/com/njyunzhi/yunshake/config/InterceptorConfig.java
  18. 14
    0
      src/main/java/com/njyunzhi/yunshake/config/MybatisPlusConfig.java
  19. 24
    0
      src/main/java/com/njyunzhi/yunshake/config/SwagggerConfig.java
  20. 24
    0
      src/main/java/com/njyunzhi/yunshake/config/WeixinConfig.java
  21. 65
    0
      src/main/java/com/njyunzhi/yunshake/entity/TaPerson.java
  22. 44
    0
      src/main/java/com/njyunzhi/yunshake/entity/TaScore.java
  23. 19
    0
      src/main/java/com/njyunzhi/yunshake/exception/GlobalExceptionHandler.java
  24. 69
    0
      src/main/java/com/njyunzhi/yunshake/interceptor/PermissionInterceptor.java
  25. 20
    0
      src/main/java/com/njyunzhi/yunshake/mapper/TaPersonMapper.java
  26. 23
    0
      src/main/java/com/njyunzhi/yunshake/mapper/TaScoreMapper.java
  27. 17
    0
      src/main/java/com/njyunzhi/yunshake/service/ITaPersonService.java
  28. 20
    0
      src/main/java/com/njyunzhi/yunshake/service/ITaScoreService.java
  29. 24
    0
      src/main/java/com/njyunzhi/yunshake/service/impl/TaPersonServiceImpl.java
  30. 27
    0
      src/main/java/com/njyunzhi/yunshake/service/impl/TaScoreServiceImpl.java
  31. 19
    0
      src/main/java/com/njyunzhi/yunshake/vo/TopScore.java
  32. 25
    0
      src/main/java/com/njyunzhi/yunshake/vo/WxMaAuthParam.java
  33. 39
    0
      src/main/resources/application.yml
  34. 14
    0
      src/main/resources/mapper/TaPersonMapper.xml
  35. 19
    0
      src/main/resources/mapper/TaScoreMapper.xml

+ 34
- 0
.gitignore Vedi File

@@ -0,0 +1,34 @@
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
+#不交给git来管理
21
+*.ipr
22
+
23
+### NetBeans ###
24
+/nbproject/private/
25
+/nbbuild/
26
+/dist/
27
+/nbdist/
28
+/.nb-gradle/
29
+build/
30
+!**/src/main/**/build/
31
+!**/src/test/**/build/
32
+
33
+### VS Code ###
34
+.vscode/

+ 117
- 0
.mvn/wrapper/MavenWrapperDownloader.java Vedi File

@@ -0,0 +1,117 @@
1
+/*
2
+ * Copyright 2007-present the original author or authors.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ *      https://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+import java.net.*;
17
+import java.io.*;
18
+import java.nio.channels.*;
19
+import java.util.Properties;
20
+
21
+public class MavenWrapperDownloader {
22
+
23
+    private static final String WRAPPER_VERSION = "0.5.6";
24
+    /**
25
+     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
26
+     */
27
+    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
28
+        + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
29
+
30
+    /**
31
+     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
32
+     * use instead of the default one.
33
+     */
34
+    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
35
+            ".mvn/wrapper/maven-wrapper.properties";
36
+
37
+    /**
38
+     * Path where the maven-wrapper.jar will be saved to.
39
+     */
40
+    private static final String MAVEN_WRAPPER_JAR_PATH =
41
+            ".mvn/wrapper/maven-wrapper.jar";
42
+
43
+    /**
44
+     * Name of the property which should be used to override the default download url for the wrapper.
45
+     */
46
+    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
47
+
48
+    public static void main(String args[]) {
49
+        System.out.println("- Downloader started");
50
+        File baseDirectory = new File(args[0]);
51
+        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
52
+
53
+        // If the maven-wrapper.properties exists, read it and check if it contains a custom
54
+        // wrapperUrl parameter.
55
+        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
56
+        String url = DEFAULT_DOWNLOAD_URL;
57
+        if(mavenWrapperPropertyFile.exists()) {
58
+            FileInputStream mavenWrapperPropertyFileInputStream = null;
59
+            try {
60
+                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
61
+                Properties mavenWrapperProperties = new Properties();
62
+                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
63
+                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
64
+            } catch (IOException e) {
65
+                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
66
+            } finally {
67
+                try {
68
+                    if(mavenWrapperPropertyFileInputStream != null) {
69
+                        mavenWrapperPropertyFileInputStream.close();
70
+                    }
71
+                } catch (IOException e) {
72
+                    // Ignore ...
73
+                }
74
+            }
75
+        }
76
+        System.out.println("- Downloading from: " + url);
77
+
78
+        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
79
+        if(!outputFile.getParentFile().exists()) {
80
+            if(!outputFile.getParentFile().mkdirs()) {
81
+                System.out.println(
82
+                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
83
+            }
84
+        }
85
+        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
86
+        try {
87
+            downloadFileFromURL(url, outputFile);
88
+            System.out.println("Done");
89
+            System.exit(0);
90
+        } catch (Throwable e) {
91
+            System.out.println("- Error downloading");
92
+            e.printStackTrace();
93
+            System.exit(1);
94
+        }
95
+    }
96
+
97
+    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
98
+        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
99
+            String username = System.getenv("MVNW_USERNAME");
100
+            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
101
+            Authenticator.setDefault(new Authenticator() {
102
+                @Override
103
+                protected PasswordAuthentication getPasswordAuthentication() {
104
+                    return new PasswordAuthentication(username, password);
105
+                }
106
+            });
107
+        }
108
+        URL website = new URL(urlString);
109
+        ReadableByteChannel rbc;
110
+        rbc = Channels.newChannel(website.openStream());
111
+        FileOutputStream fos = new FileOutputStream(destination);
112
+        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
113
+        fos.close();
114
+        rbc.close();
115
+    }
116
+
117
+}

BIN
.mvn/wrapper/maven-wrapper.jar Vedi File


+ 2
- 0
.mvn/wrapper/maven-wrapper.properties Vedi File

@@ -0,0 +1,2 @@
1
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.3/apache-maven-3.8.3-bin.zip
2
+wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

+ 310
- 0
mvnw Vedi File

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

+ 182
- 0
mvnw.cmd Vedi File

@@ -0,0 +1,182 @@
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 "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
50
+if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
51
+:skipRcPre
52
+
53
+@setlocal
54
+
55
+set ERROR_CODE=0
56
+
57
+@REM To isolate internal variables from possible post scripts, we use another setlocal
58
+@setlocal
59
+
60
+@REM ==== START VALIDATION ====
61
+if not "%JAVA_HOME%" == "" goto OkJHome
62
+
63
+echo.
64
+echo Error: JAVA_HOME not found in your environment. >&2
65
+echo Please set the JAVA_HOME variable in your environment to match the >&2
66
+echo location of your Java installation. >&2
67
+echo.
68
+goto error
69
+
70
+:OkJHome
71
+if exist "%JAVA_HOME%\bin\java.exe" goto init
72
+
73
+echo.
74
+echo Error: JAVA_HOME is set to an invalid directory. >&2
75
+echo JAVA_HOME = "%JAVA_HOME%" >&2
76
+echo Please set the JAVA_HOME variable in your environment to match the >&2
77
+echo location of your Java installation. >&2
78
+echo.
79
+goto error
80
+
81
+@REM ==== END VALIDATION ====
82
+
83
+:init
84
+
85
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
86
+@REM Fallback to current working directory if not found.
87
+
88
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
89
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
90
+
91
+set EXEC_DIR=%CD%
92
+set WDIR=%EXEC_DIR%
93
+:findBaseDir
94
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
95
+cd ..
96
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
97
+set WDIR=%CD%
98
+goto findBaseDir
99
+
100
+:baseDirFound
101
+set MAVEN_PROJECTBASEDIR=%WDIR%
102
+cd "%EXEC_DIR%"
103
+goto endDetectBaseDir
104
+
105
+:baseDirNotFound
106
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
107
+cd "%EXEC_DIR%"
108
+
109
+:endDetectBaseDir
110
+
111
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
112
+
113
+@setlocal EnableExtensions EnableDelayedExpansion
114
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
115
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
116
+
117
+:endReadAdditionalConfig
118
+
119
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
120
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
121
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
122
+
123
+set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
124
+
125
+FOR /F "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%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.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% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
162
+if ERRORLEVEL 1 goto error
163
+goto end
164
+
165
+:error
166
+set ERROR_CODE=1
167
+
168
+:end
169
+@endlocal & set ERROR_CODE=%ERROR_CODE%
170
+
171
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
172
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
173
+if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
174
+if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
175
+:skipRcPost
176
+
177
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
178
+if "%MAVEN_BATCH_PAUSE%" == "on" pause
179
+
180
+if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
181
+
182
+exit /B %ERROR_CODE%

+ 105
- 0
pom.xml Vedi File

@@ -0,0 +1,105 @@
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.3.2.RELEASE</version>
9
+		<relativePath/> <!-- lookup parent from repository -->
10
+	</parent>
11
+	<groupId>com.njyunzhi</groupId>
12
+	<artifactId>yunshake</artifactId>
13
+	<version>0.0.1-SNAPSHOT</version>
14
+	<name>yunshake</name>
15
+	<description>yunshake</description>
16
+	<properties>
17
+		<java.version>1.8</java.version>
18
+	</properties>
19
+	<dependencies>
20
+		<dependency>
21
+			<groupId>org.springframework.boot</groupId>
22
+			<artifactId>spring-boot-starter-web</artifactId>
23
+		</dependency>
24
+
25
+		<dependency>
26
+			<groupId>mysql</groupId>
27
+			<artifactId>mysql-connector-java</artifactId>
28
+			<scope>runtime</scope>
29
+		</dependency>
30
+		<dependency>
31
+			<groupId>org.projectlombok</groupId>
32
+			<artifactId>lombok</artifactId>
33
+			<optional>true</optional>
34
+		</dependency>
35
+		<dependency>
36
+			<groupId>org.springframework.boot</groupId>
37
+			<artifactId>spring-boot-starter-test</artifactId>
38
+			<scope>test</scope>
39
+		</dependency>
40
+
41
+		<!--mybatis-plus start-->
42
+		<dependency>
43
+			<groupId>com.baomidou</groupId>
44
+			<artifactId>mybatis-plus-boot-starter</artifactId>
45
+			<version>3.1.1</version>
46
+		</dependency>
47
+		<!--mybatis-plus end-->
48
+
49
+		<!--weixin-miniapp start-->
50
+		<dependency>
51
+			<groupId>com.github.binarywang</groupId>
52
+			<artifactId>weixin-java-miniapp</artifactId>
53
+			<version>3.8.0</version>
54
+		</dependency>
55
+		<!--weixin-miniapp start-->
56
+
57
+		<!--lombok start-->
58
+		<dependency>
59
+			<groupId>org.projectlombok</groupId>
60
+			<artifactId>lombok</artifactId>
61
+			<optional>true</optional>
62
+		</dependency>
63
+		<!--lombok end-->
64
+
65
+		<!--swagger start-->
66
+		<dependency>
67
+			<groupId>io.springfox</groupId>
68
+			<artifactId>springfox-boot-starter</artifactId>
69
+			<version>3.0.0</version>
70
+		</dependency>
71
+		<!--swagger end-->
72
+
73
+		<!-- hutool start-->
74
+		<dependency>
75
+			<groupId>cn.hutool</groupId>
76
+			<artifactId>hutool-jwt</artifactId>
77
+			<version>5.7.16</version>
78
+		</dependency>
79
+		<dependency>
80
+			<groupId>cn.hutool</groupId>
81
+			<artifactId>hutool-json</artifactId>
82
+			<version>5.7.16</version>
83
+		</dependency>
84
+		<!-- hutool end-->
85
+
86
+	</dependencies>
87
+
88
+	<build>
89
+		<plugins>
90
+			<plugin>
91
+				<groupId>org.springframework.boot</groupId>
92
+				<artifactId>spring-boot-maven-plugin</artifactId>
93
+				<configuration>
94
+					<excludes>
95
+						<exclude>
96
+							<groupId>org.projectlombok</groupId>
97
+							<artifactId>lombok</artifactId>
98
+						</exclude>
99
+					</excludes>
100
+				</configuration>
101
+			</plugin>
102
+		</plugins>
103
+	</build>
104
+
105
+</project>

+ 137
- 0
src/main/java/com/njyunzhi/yunshake/Controller/TaScoreController.java Vedi File

@@ -0,0 +1,137 @@
1
+package com.njyunzhi.yunshake.Controller;
2
+
3
+import com.njyunzhi.yunshake.common.BaseController;
4
+import com.njyunzhi.yunshake.common.ResponseBean;
5
+import com.njyunzhi.yunshake.entity.TaScore;
6
+import com.njyunzhi.yunshake.service.ITaScoreService;
7
+import com.njyunzhi.yunshake.vo.TopScore;
8
+import io.swagger.annotations.Api;
9
+import io.swagger.annotations.ApiOperation;
10
+import io.swagger.annotations.ApiParam;
11
+import org.slf4j.Logger;
12
+import org.slf4j.LoggerFactory;
13
+import org.springframework.beans.factory.annotation.Autowired;
14
+import org.springframework.web.bind.annotation.RequestBody;
15
+import org.springframework.web.bind.annotation.RequestMapping;
16
+import org.springframework.web.bind.annotation.RequestMethod;
17
+import org.springframework.web.bind.annotation.RestController;
18
+
19
+import javax.servlet.http.HttpServletRequest;
20
+import java.time.LocalDateTime;
21
+import java.util.List;
22
+
23
+/**
24
+ * <p>
25
+ * 分数表 前端控制器
26
+ * </p>
27
+ *
28
+ * @author lizhiwei
29
+ * @since 2021-11-29
30
+ */
31
+
32
+@Api(tags = "分数表")
33
+@RestController
34
+@RequestMapping("/")
35
+public class TaScoreController extends BaseController {
36
+
37
+    private final Logger logger = LoggerFactory.getLogger(TaScoreController.class);
38
+
39
+    @Autowired
40
+    public ITaScoreService iTaScoreService;
41
+
42
+
43
+//    /**
44
+//     * 分页查询列表
45
+//     * @param pageNum
46
+//     * @param pageSize
47
+//     * @return
48
+//     */
49
+//    @RequestMapping(value="/taScore",method= RequestMethod.GET)
50
+//    @ApiOperation(value="列表", notes = "列表", httpMethod = "GET", response = ResponseBean.class)
51
+//    public ResponseBean taScoreList(@ApiParam("页码") @RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
52
+//									 @ApiParam("单页数据量") @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize) throws Exception{
53
+//
54
+//		    IPage<TaScore> pg = new Page<>(pageNum, pageSize);
55
+//            QueryWrapper<TaScore> queryWrapper = new QueryWrapper<>();
56
+//            queryWrapper.orderByDesc("create_date");
57
+//
58
+//            IPage<TaScore> result = iTaScoreService.page(pg, queryWrapper);
59
+//            return ResponseBean.success(result);
60
+//    }
61
+
62
+    /**
63
+     * 高分榜
64
+     *
65
+     * @return
66
+     */
67
+    @RequestMapping(value = "/score/top", method = RequestMethod.GET)
68
+    @ApiOperation(value = "高分榜", notes = "高分榜", httpMethod = "GET", response = ResponseBean.class)
69
+    public ResponseBean getScoreTopList() throws Exception {
70
+        List<TopScore> result = iTaScoreService.getScoreTopList(10);
71
+        return ResponseBean.success(result);
72
+    }
73
+
74
+
75
+    /**
76
+     * 保存对象
77
+     *
78
+     * @param taScore 实体对象
79
+     * @return
80
+     */
81
+    @RequestMapping(value = "/ma/score", method = RequestMethod.POST)
82
+    @ApiOperation(value = "摇一摇保存", notes = "摇一摇保存", httpMethod = "POST", response = ResponseBean.class)
83
+    public ResponseBean taScoreAdd(@ApiParam("保存内容") @RequestBody TaScore taScore,
84
+                                   HttpServletRequest request) throws Exception {
85
+
86
+        taScore.setCreateDate(LocalDateTime.now());
87
+        taScore.setPersonId(getCurrentPerson(request).getPersonId());
88
+
89
+        if (iTaScoreService.save(taScore)) {
90
+            return ResponseBean.success(taScore);
91
+        } else {
92
+            return ResponseBean.error("保存失败, 请重试", ResponseBean.ERROR_UNAVAILABLE);
93
+        }
94
+    }
95
+//
96
+//    /**
97
+//     * 根据id删除对象
98
+//     * @param id  实体ID
99
+//     */
100
+//    @RequestMapping(value="/taScore/{id}", method= RequestMethod.DELETE)
101
+//    @ApiOperation(value="删除", notes = "删除", httpMethod = "DELETE", response = ResponseBean.class)
102
+//    public ResponseBean taScoreDelete(@ApiParam("对象ID") @PathVariable Integer id) throws Exception{
103
+//        if(iTaScoreService.removeById(id)){
104
+//            return ResponseBean.success("success");
105
+//        }else {
106
+//            return ResponseBean.error("删除失败, 请重试", ResponseBean.ERROR_UNAVAILABLE);
107
+//        }
108
+//    }
109
+//
110
+//    /**
111
+//     * 修改对象
112
+//     * @param id  实体ID
113
+//     * @param taScore 实体对象
114
+//     * @return
115
+//     */
116
+//    @RequestMapping(value="/taScore/{id}",method= RequestMethod.PUT)
117
+//    @ApiOperation(value="更新", notes = "更新", httpMethod = "PUT", response = ResponseBean.class)
118
+//    public ResponseBean taScoreUpdate(@ApiParam("对象ID") @PathVariable Integer id,
119
+//                                        @ApiParam("更新内容") @RequestBody TaScore taScore) throws Exception{
120
+//
121
+//        if (iTaScoreService.updateById(taScore)){
122
+//            return ResponseBean.success(iTaScoreService.getById(id));
123
+//        }else {
124
+//            return ResponseBean.error("修改失败, 请重试", ResponseBean.ERROR_UNAVAILABLE);
125
+//        }
126
+//    }
127
+//
128
+//    /**
129
+//     * 根据id查询对象
130
+//     * @param id  实体ID
131
+//     */
132
+//    @RequestMapping(value="/taScore/{id}",method= RequestMethod.GET)
133
+//    @ApiOperation(value="详情", notes = "详情", httpMethod = "GET", response = ResponseBean.class)
134
+//    public ResponseBean taScoreGet(@ApiParam("对象ID") @PathVariable Integer id) throws Exception{
135
+//        return ResponseBean.success(iTaScoreService.getById(id));
136
+//    }
137
+}

+ 123
- 0
src/main/java/com/njyunzhi/yunshake/Controller/WxMaController.java Vedi File

@@ -0,0 +1,123 @@
1
+package com.njyunzhi.yunshake.Controller;
2
+
3
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
4
+import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
5
+import com.njyunzhi.yunshake.common.BaseController;
6
+import com.njyunzhi.yunshake.common.ResponseBean;
7
+import com.njyunzhi.yunshake.common.StringUtils;
8
+import com.njyunzhi.yunshake.common.WxUtils;
9
+import com.njyunzhi.yunshake.entity.TaPerson;
10
+import com.njyunzhi.yunshake.service.ITaPersonService;
11
+import com.njyunzhi.yunshake.vo.WxMaAuthParam;
12
+import io.swagger.annotations.Api;
13
+import io.swagger.annotations.ApiOperation;
14
+import io.swagger.annotations.ApiParam;
15
+import org.springframework.beans.factory.annotation.Autowired;
16
+import org.springframework.web.bind.annotation.*;
17
+
18
+import javax.servlet.http.HttpServletRequest;
19
+import java.util.HashMap;
20
+import java.util.Map;
21
+
22
+@Api(tags = "微信小程序")
23
+@RestController
24
+@RequestMapping("/ma")
25
+public class WxMaController extends BaseController {
26
+
27
+    @Autowired
28
+    WxUtils wxUtils;
29
+
30
+    @Autowired
31
+    ITaPersonService iTaPersonService;
32
+
33
+    @PostMapping("/login")
34
+    @ApiOperation(value="登录", notes = "登录", httpMethod = "POST", response = ResponseBean.class)
35
+    public ResponseBean login(@ApiParam("登录参数") @RequestParam String code) throws Exception {
36
+        WxMaJscode2SessionResult info = wxUtils.getService().getUserService().getSessionInfo(code);
37
+
38
+        String openid = info.getOpenid();
39
+        String sessionKey=info.getSessionKey();
40
+
41
+        TaPerson taPerson = iTaPersonService.getByOpenid(openid);
42
+        if (null == taPerson) {
43
+            taPerson = new TaPerson();
44
+            taPerson.setOpenid(openid);
45
+            iTaPersonService.save(taPerson);
46
+        }
47
+
48
+        Map<String, Object> result = new HashMap<>();
49
+        result.put("skey",sessionKey);
50
+        result.put("person", taPerson);
51
+        result.put("token", createToken(taPerson.getPersonId()));
52
+
53
+        return ResponseBean.success(result);
54
+    }
55
+
56
+    @PutMapping("/auth-user")
57
+    @ApiOperation(value="授权头像", notes = "授权头像", httpMethod = "PUT", response = TaPerson.class)
58
+    public ResponseBean updateUserInfo(@ApiParam("授权头像的参数") @RequestBody WxMaAuthParam params,
59
+                                       HttpServletRequest request) throws Exception {
60
+        checkAuthParams(params);
61
+
62
+        // 解密用户信息
63
+        WxMaUserInfo userInfo = wxUtils.getService().getUserService().getUserInfo(params.getSessionKey(), params.getEncryptedData(), params.getIv());
64
+
65
+        TaPerson taPerson = getCurrentPerson(request);
66
+        if (null == taPerson) {
67
+            throw new Exception("校验当前人员失败, 请重试");
68
+        }
69
+
70
+        taPerson.setAvatar(userInfo.getAvatarUrl());
71
+        taPerson.setNickName(userInfo.getNickName());
72
+        taPerson.setSex(Integer.parseInt(userInfo.getGender()));
73
+
74
+        iTaPersonService.updateById(taPerson);
75
+
76
+        return ResponseBean.success(taPerson);
77
+    }
78
+    //
79
+//    @ApiOperation(value="授权手机", notes = "授权手机", httpMethod = "PUT", response = TaPerson.class)
80
+//    @PutMapping("/auth-phone")
81
+//    public ResponseBean updateUserPhone(@ApiParam("授权手机的参数") @RequestBody WxMaAuthParam params) throws Exception {
82
+////        checkAuthParams(params);
83
+//
84
+//        // 解密
85
+//        WxMaPhoneNumberInfo phoneNoInfo = wxUtils.getService().getUserService().getPhoneNoInfo(params.getSessionKey(), params.getEncryptedData(), params.getIv());
86
+//
87
+//        TaPerson taPerson = getCurrentPerson();
88
+//        if (null == taPerson) {
89
+//            throw new Exception("校验当前人员失败, 请重试");
90
+//        }
91
+//
92
+//        taPerson.setPhone(phoneNoInfo.getPhoneNumber());
93
+//        iTaPersonService.updateById(taPerson);
94
+//
95
+//        // 查询学生
96
+//        TaStudent taStudent = iTaStudentService.getByPhone(taPerson.getPhone());
97
+//        if (null != taStudent) {
98
+//            taStudent.setPersonId(taPerson.getPersonId());
99
+//            iTaStudentService.updateById(taStudent);
100
+//        }
101
+//
102
+//        return ResponseBean.success(taPerson);
103
+//    }
104
+//
105
+    private void checkAuthParams(WxMaAuthParam params) throws Exception {
106
+        String signature = params.getSignature();
107
+        String rawData = params.getRawData();
108
+        String encryptedData = params.getEncryptedData();
109
+        String iv = params.getIv();
110
+        String sessionKey = params.getSessionKey();
111
+
112
+        if (StringUtils.isEmpty(signature) || StringUtils.isEmpty(rawData) || StringUtils.isEmpty(encryptedData) || StringUtils.isEmpty(iv) || StringUtils.isEmpty(sessionKey)) {
113
+            throw new Exception("缺失授权参数");
114
+        }
115
+
116
+        boolean isValid = wxUtils.getService().getUserService().checkUserInfo(sessionKey, rawData, signature);
117
+        if (!isValid) {
118
+            throw new Exception("校验授权参数失败, 请重试");
119
+        }
120
+
121
+        return;
122
+    }
123
+}

+ 17
- 0
src/main/java/com/njyunzhi/yunshake/YunshakeApplication.java Vedi File

@@ -0,0 +1,17 @@
1
+package com.njyunzhi.yunshake;
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.transaction.annotation.EnableTransactionManagement;
7
+
8
+@EnableAsync
9
+@EnableTransactionManagement
10
+@SpringBootApplication
11
+public class YunshakeApplication {
12
+
13
+	public static void main(String[] args) {
14
+		SpringApplication.run(YunshakeApplication.class, args);
15
+	}
16
+
17
+}

+ 59
- 0
src/main/java/com/njyunzhi/yunshake/common/BaseController.java Vedi File

@@ -0,0 +1,59 @@
1
+package com.njyunzhi.yunshake.common;
2
+
3
+import cn.hutool.jwt.JWT;
4
+import cn.hutool.jwt.JWTUtil;
5
+import com.njyunzhi.yunshake.entity.TaPerson;
6
+import com.njyunzhi.yunshake.service.ITaPersonService;
7
+import org.springframework.beans.factory.annotation.Autowired;
8
+import org.springframework.stereotype.Component;
9
+
10
+import javax.servlet.http.HttpServletRequest;
11
+import java.time.LocalDateTime;
12
+import java.time.ZoneId;
13
+import java.util.Date;
14
+
15
+@Component
16
+public class BaseController {
17
+
18
+    @Autowired
19
+    ITaPersonService iTaPersonService;
20
+
21
+    /**
22
+     * 生成 TOKEN
23
+     * @param personId
24
+     * @return
25
+     */
26
+    protected String createToken(String personId) {
27
+        LocalDateTime now = LocalDateTime.now();
28
+        Date iat = Date.from(now.atZone(ZoneId.systemDefault()).toInstant());
29
+        Date exp = Date.from(now.plusSeconds(Constants.JWT_EXPIRE_TIME).atZone(ZoneId.systemDefault()).toInstant());
30
+        return JWT.create()
31
+                .setPayload("personId", personId)
32
+                .setKey(Constants.JWT_SECRET)
33
+                .setIssuedAt(iat)
34
+                .setExpiresAt(exp)
35
+                .sign();
36
+    }
37
+
38
+    /**
39
+     * 获取当前小程序端人员
40
+     * @return
41
+     */
42
+    public TaPerson getCurrentPerson(HttpServletRequest request) throws Exception {
43
+        String jws = request.getHeader(Constants.JWT_AUTH_HEADER);
44
+
45
+        Object obj = JWTUtil.parseToken(jws).getPayload("personId");
46
+        if (null == obj) {
47
+            throw new Exception("请退出重新登录");
48
+        }
49
+
50
+        String personId = obj.toString();
51
+        TaPerson taPerson = iTaPersonService.getById(personId);
52
+        if (null == taPerson || Constants.STATUS_DELETED == taPerson.getStatus()) {
53
+            throw new Exception("当前人员信息异常, 请退出重新登录");
54
+        }
55
+
56
+        return taPerson;
57
+    }
58
+
59
+}

+ 13
- 0
src/main/java/com/njyunzhi/yunshake/common/Constants.java Vedi File

@@ -0,0 +1,13 @@
1
+package com.njyunzhi.yunshake.common;
2
+
3
+public class Constants {
4
+    // 基本状态
5
+    public final static int STATUS_DELETED = -1;
6
+    public final static int STATUS_READY = 0;
7
+    public final static int STATUS_NORMAL = 1;
8
+
9
+    // 过期时间 30 分钟
10
+    public static final long JWT_EXPIRE_TIME = 30 * 60;
11
+    public static final byte[] JWT_SECRET = "By lizhiwei @ 2021-11-29 17:49:36".getBytes();
12
+    public static final String JWT_AUTH_HEADER = "X-Authorization-JWT";
13
+}

+ 68
- 0
src/main/java/com/njyunzhi/yunshake/common/ResponseBean.java Vedi File

@@ -0,0 +1,68 @@
1
+package com.njyunzhi.yunshake.common;
2
+
3
+
4
+import java.io.Serializable;
5
+
6
+/**
7
+ * 接口统一状态返回BEAN.
8
+ */
9
+public class ResponseBean<T> implements Serializable {
10
+
11
+    private static final long serialVersionUID = 3593827217136880822L;
12
+
13
+    public static final int CODE_SUCCESS = 1000;
14
+    public static final int ERROR_AUTH_FAIL = 1001;
15
+    public static final int ERROR_AUTH_EXPIRED = 1002;
16
+    public static final int ERROR_MISSING_PARAMS = 1003;
17
+    public static final int ERROR_ILLEGAL_PARAMS = 1004;
18
+    public static final int ERROR_UNAVAILABLE = 1005;
19
+
20
+    private int code;
21
+    private String message;
22
+    private T data;
23
+
24
+    public ResponseBean() {
25
+        code = ResponseBean.CODE_SUCCESS;
26
+    }
27
+
28
+    public static <T> ResponseBean success(T data, String ...msgs) {
29
+        ResponseBean responseBean = new ResponseBean();
30
+        responseBean.code = ResponseBean.CODE_SUCCESS;
31
+        responseBean.data = data;
32
+
33
+        if (null != msgs && msgs.length > 0) {
34
+            responseBean.message = msgs[0];
35
+        }
36
+
37
+        return responseBean;
38
+    }
39
+
40
+    public static <T> ResponseBean error(String msg, int code, T ...datas) {
41
+        ResponseBean responseBean = new ResponseBean();
42
+        responseBean.code = code;
43
+        responseBean.message = msg;
44
+
45
+        if (null != datas && datas.length > 0) {
46
+            responseBean.data = datas[0];
47
+        }
48
+
49
+        return responseBean;
50
+    }
51
+
52
+    public int getCode() {
53
+        return code;
54
+    }
55
+
56
+    public String getMessage() {
57
+        return message;
58
+    }
59
+
60
+    public T getData() {
61
+        return data;
62
+    }
63
+
64
+    @Override
65
+    public String toString() {
66
+        return  "{ code: "+code+", message: "+message+", data: <T> }";
67
+    }
68
+}

+ 120
- 0
src/main/java/com/njyunzhi/yunshake/common/StringUtils.java Vedi File

@@ -0,0 +1,120 @@
1
+package com.njyunzhi.yunshake.common;
2
+
3
+import java.io.UnsupportedEncodingException;
4
+import java.net.URLEncoder;
5
+import java.util.Random;
6
+import java.util.regex.Matcher;
7
+import java.util.regex.Pattern;
8
+
9
+public class StringUtils {
10
+    private static Pattern humpPattern = Pattern.compile("[A-Z]");
11
+
12
+    public static boolean isEmpty(String str) {
13
+        return null == str || "".equals(str.trim()) || "null".equals(str) || "undefined".equals(str);
14
+    }
15
+
16
+    public static String trim(String src, String...st) {
17
+        if (null == src) return src;
18
+        if (null == st || st.length == 0) return src.trim();
19
+
20
+        String start = st[0];
21
+        if (!src.startsWith(start)) {
22
+            return src;
23
+        }
24
+
25
+        return src.substring(start.length());
26
+    }
27
+
28
+    public static String trimEnd(String src, String str) {
29
+        if (null == src || null == str) {
30
+            return src;
31
+        }
32
+
33
+        if (src.endsWith(str)) {
34
+            return src.substring(0, src.length() - str.length());
35
+        }
36
+
37
+        return src;
38
+    }
39
+
40
+    public static String ifNull(String src, String defaultVal) {
41
+        return isEmpty(src) ? defaultVal : src;
42
+    }
43
+
44
+    public static String random(int length) {
45
+        String str="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
46
+        Random random = new Random();
47
+        StringBuffer sb = new StringBuffer();
48
+        for(int i=0;i<length;i++){
49
+            int number=random.nextInt(62);
50
+            sb.append(str.charAt(number));
51
+        }
52
+        return sb.toString();
53
+    }
54
+
55
+    public static String urlEncode(String str) {
56
+        try {
57
+            return URLEncoder.encode(str, "UTF-8");
58
+        } catch (UnsupportedEncodingException e) {
59
+            e.printStackTrace();
60
+            return str;
61
+        }
62
+    }
63
+
64
+    public static String humpToLine(String str) {
65
+        if (null == str || "".equals(str)) return "";
66
+
67
+        Matcher matcher = humpPattern.matcher(str);
68
+        StringBuffer sb = new StringBuffer();
69
+        while (matcher.find()) {
70
+            matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
71
+        }
72
+        matcher.appendTail(sb);
73
+        return sb.toString();
74
+    }
75
+
76
+    public static String strToUnicode(String str) {
77
+        char[] chars = str.toCharArray();
78
+        String returnStr = "";
79
+        for (int i = 0; i < chars.length; i++) {
80
+            returnStr += "\\u" + Integer.toString(chars[i], 16);
81
+        }
82
+        return returnStr;
83
+    }
84
+
85
+    public static String repeat(String src, int len) {
86
+        if (null == src) {
87
+            return null;
88
+        }
89
+
90
+        if (len <= 0) {
91
+            return src;
92
+        }
93
+
94
+        String res = "";
95
+        for (int i = 0; i < len; i ++) {
96
+            res += src;
97
+        }
98
+
99
+        return res;
100
+    }
101
+
102
+    public static String lpad(String src, String padStr, int len) {
103
+        if (null == src) {
104
+            return null;
105
+        }
106
+
107
+        if (len <= 0 || src.length() >= len) {
108
+            return src;
109
+        }
110
+
111
+        if (null == padStr) {
112
+            padStr = "";
113
+        }
114
+
115
+        int padLen = len - src.length();
116
+        String prefix = repeat(padStr, padLen);
117
+        prefix = prefix.substring(0, padLen);
118
+        return prefix + src;
119
+    }
120
+}

+ 35
- 0
src/main/java/com/njyunzhi/yunshake/common/WxUtils.java Vedi File

@@ -0,0 +1,35 @@
1
+package com.njyunzhi.yunshake.common;
2
+
3
+import cn.binarywang.wx.miniapp.api.WxMaService;
4
+import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
5
+import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
6
+import com.njyunzhi.yunshake.config.WeixinConfig;
7
+import org.springframework.beans.factory.annotation.Autowired;
8
+import org.springframework.stereotype.Component;
9
+
10
+@Component
11
+public class WxUtils {
12
+
13
+    private static WxMaService service;
14
+
15
+    @Autowired
16
+    public WxUtils(WeixinConfig config) {
17
+        setService(config);
18
+    }
19
+
20
+    private void setService(WeixinConfig config) {
21
+        WxMaDefaultConfigImpl conf = new WxMaDefaultConfigImpl();
22
+        conf.setAppid(config.getMiniapp().getAppid());
23
+        conf.setSecret(config.getMiniapp().getSecret());
24
+        conf.setToken(config.getMiniapp().getToken());
25
+        conf.setAesKey(config.getMiniapp().getAesKey());
26
+        conf.setMsgDataFormat(config.getMiniapp().getMsgDataFormat());
27
+
28
+        service = new WxMaServiceImpl();
29
+        service.setWxMaConfig(conf);
30
+    }
31
+
32
+    public WxMaService getService() {
33
+        return service;
34
+    }
35
+}

+ 29
- 0
src/main/java/com/njyunzhi/yunshake/config/BaseConfig.java Vedi File

@@ -0,0 +1,29 @@
1
+package com.njyunzhi.yunshake.config;
2
+
3
+import com.njyunzhi.yunshake.interceptor.PermissionInterceptor;
4
+import lombok.Data;
5
+import org.springframework.beans.factory.annotation.Autowired;
6
+import org.springframework.context.annotation.Configuration;
7
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
8
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
9
+
10
+@Data
11
+@Configuration
12
+public class BaseConfig implements WebMvcConfigurer {
13
+
14
+    @Autowired
15
+    private PermissionInterceptor permissionInterceptor;
16
+
17
+    @Autowired
18
+    private InterceptorConfig interceptorConfig;
19
+
20
+    @Override
21
+    public void addInterceptors(InterceptorRegistry registry) {
22
+        // 自定义拦截器,添加拦截路径和排除拦截路径
23
+        if (interceptorConfig.getPermission().isEnable()) {
24
+            registry.addInterceptor(permissionInterceptor)
25
+                    .addPathPatterns(interceptorConfig.getPermission().getIncludePaths())
26
+                    .excludePathPatterns(interceptorConfig.getPermission().getExcludePaths());
27
+        }
28
+    }
29
+}

+ 34
- 0
src/main/java/com/njyunzhi/yunshake/config/InterceptorConfig.java Vedi File

@@ -0,0 +1,34 @@
1
+package com.njyunzhi.yunshake.config;
2
+
3
+import lombok.Data;
4
+import org.springframework.boot.context.properties.ConfigurationProperties;
5
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
6
+import org.springframework.stereotype.Component;
7
+
8
+@Data
9
+@Component
10
+@ConfigurationProperties(prefix = "interceptor")
11
+public class InterceptorConfig {
12
+
13
+    @NestedConfigurationProperty
14
+    private Config permission = new Config();
15
+
16
+    @Data
17
+    public static class Config {
18
+
19
+        /**
20
+         * 是否启用
21
+         */
22
+        private boolean enable;
23
+
24
+        /**
25
+         * 包含的路径
26
+         */
27
+        private String[] includePaths = new String[]{};
28
+
29
+        /**
30
+         * 排除路径
31
+         */
32
+        private String[] excludePaths = new String[]{};
33
+    }
34
+}

+ 14
- 0
src/main/java/com/njyunzhi/yunshake/config/MybatisPlusConfig.java Vedi File

@@ -0,0 +1,14 @@
1
+package com.njyunzhi.yunshake.config;
2
+
3
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
4
+import org.springframework.context.annotation.Bean;
5
+import org.springframework.context.annotation.Configuration;
6
+
7
+@Configuration
8
+public class MybatisPlusConfig {
9
+
10
+    @Bean
11
+    public PaginationInterceptor paginationInterceptor() {
12
+        return new PaginationInterceptor();
13
+    }
14
+}

+ 24
- 0
src/main/java/com/njyunzhi/yunshake/config/SwagggerConfig.java Vedi File

@@ -0,0 +1,24 @@
1
+package com.njyunzhi.yunshake.config;
2
+
3
+import io.swagger.annotations.Api;
4
+import org.springframework.context.annotation.Bean;
5
+import org.springframework.context.annotation.Configuration;
6
+import springfox.documentation.builders.PathSelectors;
7
+import springfox.documentation.builders.RequestHandlerSelectors;
8
+import springfox.documentation.spi.DocumentationType;
9
+import springfox.documentation.spring.web.plugins.Docket;
10
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
11
+
12
+@Configuration
13
+@EnableSwagger2
14
+public class SwagggerConfig {
15
+    @Bean
16
+    public Docket docket() {
17
+        return new Docket(DocumentationType.SWAGGER_2)
18
+                .select()
19
+                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
20
+                .paths(PathSelectors.any())
21
+                .build();
22
+
23
+    }
24
+}

+ 24
- 0
src/main/java/com/njyunzhi/yunshake/config/WeixinConfig.java Vedi File

@@ -0,0 +1,24 @@
1
+package com.njyunzhi.yunshake.config;
2
+
3
+import lombok.Data;
4
+import org.springframework.boot.context.properties.ConfigurationProperties;
5
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
6
+import org.springframework.stereotype.Component;
7
+
8
+@Data
9
+@Component()
10
+@ConfigurationProperties(prefix = "weixin")
11
+public class WeixinConfig {
12
+
13
+    @NestedConfigurationProperty
14
+    private Miniapp miniapp = new Miniapp();
15
+
16
+    @Data
17
+    public static class Miniapp {
18
+        private String appid;
19
+        private String secret;
20
+        private String token;
21
+        private String aesKey;
22
+        private String msgDataFormat;
23
+    }
24
+}

+ 65
- 0
src/main/java/com/njyunzhi/yunshake/entity/TaPerson.java Vedi File

@@ -0,0 +1,65 @@
1
+package com.njyunzhi.yunshake.entity;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableId;
5
+import io.swagger.annotations.ApiModel;
6
+import io.swagger.annotations.ApiModelProperty;
7
+import lombok.Data;
8
+import lombok.EqualsAndHashCode;
9
+import lombok.experimental.Accessors;
10
+
11
+import java.io.Serializable;
12
+import java.time.LocalDateTime;
13
+
14
+/**
15
+ * <p>
16
+ * 小程序人员表
17
+ * </p>
18
+ *
19
+ * @author lizhiwei
20
+ * @since 2021-11-29
21
+ */
22
+@Data
23
+@EqualsAndHashCode(callSuper = false)
24
+@Accessors(chain = true)
25
+@ApiModel(value="TaPerson对象", description="小程序人员表")
26
+public class TaPerson implements Serializable {
27
+
28
+    private static final long serialVersionUID = 1L;
29
+
30
+    @ApiModelProperty(value = "人员ID")
31
+    @TableId(value = "person_id", type = IdType.UUID)
32
+    private String personId;
33
+
34
+    @ApiModelProperty(value = "openid")
35
+    private String openid;
36
+
37
+    @ApiModelProperty(value = "unionid")
38
+    private String unionid;
39
+
40
+    @ApiModelProperty(value = "性别")
41
+    private Integer sex;
42
+
43
+    @ApiModelProperty(value = "昵称")
44
+    private String nickName;
45
+
46
+    @ApiModelProperty(value = "头像")
47
+    private String avatar;
48
+
49
+    @ApiModelProperty(value = "手机")
50
+    private String phone;
51
+
52
+    @ApiModelProperty(value = "状态")
53
+    private Integer status;
54
+
55
+    @ApiModelProperty(value = "创建时间")
56
+    private LocalDateTime createDate;
57
+
58
+    @ApiModelProperty(value = "来源类型")
59
+    private String fromType;
60
+
61
+    @ApiModelProperty(value = "推广ID")
62
+    private String recommender;
63
+
64
+
65
+}

+ 44
- 0
src/main/java/com/njyunzhi/yunshake/entity/TaScore.java Vedi File

@@ -0,0 +1,44 @@
1
+package com.njyunzhi.yunshake.entity;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableId;
5
+import io.swagger.annotations.ApiModel;
6
+import io.swagger.annotations.ApiModelProperty;
7
+import lombok.Data;
8
+import lombok.EqualsAndHashCode;
9
+import lombok.experimental.Accessors;
10
+
11
+import java.io.Serializable;
12
+import java.time.LocalDateTime;
13
+
14
+/**
15
+ * <p>
16
+ * 分数表
17
+ * </p>
18
+ *
19
+ * @author lizhiwei
20
+ * @since 2021-11-29
21
+ */
22
+@Data
23
+@EqualsAndHashCode(callSuper = false)
24
+@Accessors(chain = true)
25
+@ApiModel(value="TaScore对象", description="分数表")
26
+public class TaScore implements Serializable {
27
+
28
+    private static final long serialVersionUID = 1L;
29
+
30
+    @ApiModelProperty(value = "分数ID")
31
+    @TableId(value = "score_id", type = IdType.AUTO)
32
+    private Integer scoreId;
33
+
34
+    @ApiModelProperty(value = "人员ID")
35
+    private String personId;
36
+
37
+    @ApiModelProperty(value = "创建时间")
38
+    private LocalDateTime createDate;
39
+
40
+    @ApiModelProperty(value = "摇一摇分数")
41
+    private Integer score;
42
+
43
+
44
+}

+ 19
- 0
src/main/java/com/njyunzhi/yunshake/exception/GlobalExceptionHandler.java Vedi File

@@ -0,0 +1,19 @@
1
+package com.njyunzhi.yunshake.exception;
2
+
3
+import com.njyunzhi.yunshake.common.ResponseBean;
4
+import lombok.extern.slf4j.Slf4j;
5
+import org.springframework.web.bind.annotation.ExceptionHandler;
6
+import org.springframework.web.bind.annotation.ResponseBody;
7
+import org.springframework.web.bind.annotation.RestControllerAdvice;
8
+
9
+@Slf4j
10
+@RestControllerAdvice
11
+public class GlobalExceptionHandler {
12
+
13
+    @ResponseBody
14
+    @ExceptionHandler(Exception.class)
15
+    public ResponseBean handleException(Exception e){
16
+        log.error(e.getMessage(),e);
17
+        return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_UNAVAILABLE);
18
+    }
19
+}

+ 69
- 0
src/main/java/com/njyunzhi/yunshake/interceptor/PermissionInterceptor.java Vedi File

@@ -0,0 +1,69 @@
1
+package com.njyunzhi.yunshake.interceptor;
2
+
3
+import cn.hutool.json.JSONUtil;
4
+import cn.hutool.jwt.JWTUtil;
5
+import com.njyunzhi.yunshake.common.Constants;
6
+import com.njyunzhi.yunshake.common.ResponseBean;
7
+import com.njyunzhi.yunshake.common.StringUtils;
8
+import lombok.extern.slf4j.Slf4j;
9
+import org.springframework.stereotype.Component;
10
+import org.springframework.web.servlet.HandlerInterceptor;
11
+
12
+import javax.servlet.http.HttpServletRequest;
13
+import javax.servlet.http.HttpServletResponse;
14
+import java.io.IOException;
15
+import java.nio.charset.StandardCharsets;
16
+
17
+@Slf4j
18
+@Component
19
+public class PermissionInterceptor implements HandlerInterceptor {
20
+
21
+
22
+    private String getToken(HttpServletRequest request) {
23
+        return request.getHeader(Constants.JWT_AUTH_HEADER);
24
+    }
25
+
26
+    @Override
27
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {
28
+        log.info("Request URI: {}", request.getRequestURI());
29
+
30
+        // JWT
31
+        String jws = getToken(request);
32
+        if (StringUtils.isEmpty(jws)) {
33
+            responseTokenError(response, "鉴权失败, 请先进行登录操作");
34
+            return false;
35
+        }
36
+
37
+        try {
38
+            JWTUtil.verify(jws, Constants.JWT_SECRET);
39
+        } catch (Exception e) {
40
+            log.error("鉴权失败: {}", e.getMessage());
41
+            responseTokenError(response, "鉴权失败, 请重新登录");
42
+            return false;
43
+        }
44
+
45
+        return true;
46
+    }
47
+
48
+//    @Override
49
+//    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mv) throws Exception {
50
+//        LocalDateTime now = LocalDateTime.now();
51
+//        Date iat = Date.from(now.atZone(ZoneId.systemDefault()).toInstant());
52
+//        Date exp = Date.from(now.plusSeconds(Constants.JWT_EXPIRE_TIME).atZone(ZoneId.systemDefault()).toInstant());
53
+//
54
+//        // 刷新 TOKEN
55
+//        String jws = getToken(request);
56
+//        JWT jwt = JWT.of(jws);
57
+//        jwt.setIssuedAt(iat).setExpiresAt(exp);
58
+//
59
+//        response.addHeader(Constants.AUTH_HEADER, jwt.sign());
60
+//    }
61
+
62
+    private void responseTokenError(HttpServletResponse response, String error) throws IOException {
63
+        response.addHeader("Content-type", "application/json");
64
+        response.getOutputStream().write(
65
+                JSONUtil.toJsonStr(
66
+                        ResponseBean.error(error, ResponseBean.ERROR_AUTH_FAIL)
67
+                ).getBytes(StandardCharsets.UTF_8));
68
+    }
69
+}

+ 20
- 0
src/main/java/com/njyunzhi/yunshake/mapper/TaPersonMapper.java Vedi File

@@ -0,0 +1,20 @@
1
+package com.njyunzhi.yunshake.mapper;
2
+
3
+import com.njyunzhi.yunshake.entity.TaPerson;
4
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5
+import org.apache.ibatis.annotations.Mapper;
6
+import org.apache.ibatis.annotations.Param;
7
+
8
+/**
9
+ * <p>
10
+ * 小程序人员表 Mapper 接口
11
+ * </p>
12
+ *
13
+ * @author lizhiwei
14
+ * @since 2021-11-29
15
+ */
16
+@Mapper
17
+public interface TaPersonMapper extends BaseMapper<TaPerson> {
18
+
19
+    TaPerson getByOpenid(@Param("openid") String openid);
20
+}

+ 23
- 0
src/main/java/com/njyunzhi/yunshake/mapper/TaScoreMapper.java Vedi File

@@ -0,0 +1,23 @@
1
+package com.njyunzhi.yunshake.mapper;
2
+
3
+import com.njyunzhi.yunshake.entity.TaScore;
4
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5
+import com.njyunzhi.yunshake.vo.TopScore;
6
+import org.apache.ibatis.annotations.Mapper;
7
+import org.apache.ibatis.annotations.Param;
8
+
9
+import java.util.List;
10
+
11
+/**
12
+ * <p>
13
+ * 分数表 Mapper 接口
14
+ * </p>
15
+ *
16
+ * @author lizhiwei
17
+ * @since 2021-11-29
18
+ */
19
+@Mapper
20
+public interface TaScoreMapper extends BaseMapper<TaScore> {
21
+
22
+    List<TopScore> getScoreTopList(@Param("top") int top);
23
+}

+ 17
- 0
src/main/java/com/njyunzhi/yunshake/service/ITaPersonService.java Vedi File

@@ -0,0 +1,17 @@
1
+package com.njyunzhi.yunshake.service;
2
+
3
+import com.njyunzhi.yunshake.entity.TaPerson;
4
+import com.baomidou.mybatisplus.extension.service.IService;
5
+
6
+/**
7
+ * <p>
8
+ * 小程序人员表 服务类
9
+ * </p>
10
+ *
11
+ * @author lizhiwei
12
+ * @since 2021-11-29
13
+ */
14
+public interface ITaPersonService extends IService<TaPerson> {
15
+
16
+    TaPerson getByOpenid(String openid);
17
+}

+ 20
- 0
src/main/java/com/njyunzhi/yunshake/service/ITaScoreService.java Vedi File

@@ -0,0 +1,20 @@
1
+package com.njyunzhi.yunshake.service;
2
+
3
+import com.njyunzhi.yunshake.entity.TaScore;
4
+import com.baomidou.mybatisplus.extension.service.IService;
5
+import com.njyunzhi.yunshake.vo.TopScore;
6
+
7
+import java.util.List;
8
+
9
+/**
10
+ * <p>
11
+ * 分数表 服务类
12
+ * </p>
13
+ *
14
+ * @author lizhiwei
15
+ * @since 2021-11-29
16
+ */
17
+public interface ITaScoreService extends IService<TaScore> {
18
+
19
+    List<TopScore> getScoreTopList(int top);
20
+}

+ 24
- 0
src/main/java/com/njyunzhi/yunshake/service/impl/TaPersonServiceImpl.java Vedi File

@@ -0,0 +1,24 @@
1
+package com.njyunzhi.yunshake.service.impl;
2
+
3
+import com.njyunzhi.yunshake.entity.TaPerson;
4
+import com.njyunzhi.yunshake.mapper.TaPersonMapper;
5
+import com.njyunzhi.yunshake.service.ITaPersonService;
6
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7
+import org.springframework.stereotype.Service;
8
+
9
+/**
10
+ * <p>
11
+ * 小程序人员表 服务实现类
12
+ * </p>
13
+ *
14
+ * @author lizhiwei
15
+ * @since 2021-11-29
16
+ */
17
+@Service
18
+public class TaPersonServiceImpl extends ServiceImpl<TaPersonMapper, TaPerson> implements ITaPersonService {
19
+
20
+    @Override
21
+    public TaPerson getByOpenid(String openid) {
22
+        return baseMapper.getByOpenid(openid);
23
+    }
24
+}

+ 27
- 0
src/main/java/com/njyunzhi/yunshake/service/impl/TaScoreServiceImpl.java Vedi File

@@ -0,0 +1,27 @@
1
+package com.njyunzhi.yunshake.service.impl;
2
+
3
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4
+import com.njyunzhi.yunshake.entity.TaScore;
5
+import com.njyunzhi.yunshake.mapper.TaScoreMapper;
6
+import com.njyunzhi.yunshake.service.ITaScoreService;
7
+import com.njyunzhi.yunshake.vo.TopScore;
8
+import org.springframework.stereotype.Service;
9
+
10
+import java.util.List;
11
+
12
+/**
13
+ * <p>
14
+ * 分数表 服务实现类
15
+ * </p>
16
+ *
17
+ * @author lizhiwei
18
+ * @since 2021-11-29
19
+ */
20
+@Service
21
+public class TaScoreServiceImpl extends ServiceImpl<TaScoreMapper, TaScore> implements ITaScoreService {
22
+
23
+    @Override
24
+    public List<TopScore> getScoreTopList(int top) {
25
+        return baseMapper.getScoreTopList(top);
26
+    }
27
+}

+ 19
- 0
src/main/java/com/njyunzhi/yunshake/vo/TopScore.java Vedi File

@@ -0,0 +1,19 @@
1
+package com.njyunzhi.yunshake.vo;
2
+
3
+import io.swagger.annotations.ApiModel;
4
+import io.swagger.annotations.ApiModelProperty;
5
+import lombok.Data;
6
+
7
+@ApiModel(value = "高分榜", description = "高分榜")
8
+@Data
9
+public class TopScore {
10
+
11
+    @ApiModelProperty(value = "昵称")
12
+    private String nickName;
13
+
14
+    @ApiModelProperty(value = "头像")
15
+    private String avatar;
16
+
17
+    @ApiModelProperty(value = "摇一摇分数")
18
+    private Integer score;
19
+}

+ 25
- 0
src/main/java/com/njyunzhi/yunshake/vo/WxMaAuthParam.java Vedi File

@@ -0,0 +1,25 @@
1
+package com.njyunzhi.yunshake.vo;
2
+
3
+import io.swagger.annotations.ApiModel;
4
+import io.swagger.annotations.ApiModelProperty;
5
+import lombok.Data;
6
+
7
+@ApiModel(value = "微信小程序授权", description = "微信小程序授权参数")
8
+@Data
9
+public class WxMaAuthParam {
10
+
11
+    @ApiModelProperty("signature")
12
+    String signature;
13
+
14
+    @ApiModelProperty("rawData")
15
+    String rawData;
16
+
17
+    @ApiModelProperty("encryptedData")
18
+    String encryptedData;
19
+
20
+    @ApiModelProperty("iv")
21
+    String iv;
22
+
23
+    @ApiModelProperty("sessionKey")
24
+    String sessionKey;
25
+}

+ 39
- 0
src/main/resources/application.yml Vedi File

@@ -0,0 +1,39 @@
1
+###
2
+server:
3
+  port: 8080
4
+  servlet:
5
+    context-path: /api
6
+
7
+spring:
8
+  datasource:
9
+    url: jdbc:mysql://110.40.183.156:3306/yun-shake?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
10
+    username: yun-shake
11
+    password: QgZ4#t5R4Fx!2Dab
12
+
13
+###  请求前验证所有请求   exclude-paths:下面的不拦截
14
+interceptor:
15
+  permission:
16
+    enable: true
17
+    include-paths: /**
18
+    exclude-paths:
19
+      - /ma/login
20
+      - /logout
21
+      - /swagger-ui/**
22
+      - /swagger-resources/**
23
+      - /v2/**
24
+
25
+###
26
+mybatis-plus:
27
+  configuration:
28
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
29
+    call-setters-on-nulls: true
30
+  mapper-locations: classpath:mapper/**/*.xml
31
+
32
+###
33
+weixin:
34
+  miniapp:
35
+    appid: wxe44244d1a5ea3364
36
+    secret: b7dbbb7b51d40aa716115e76721ed3ff
37
+    token:
38
+    aesKey:
39
+    msgDataFormat: JSON

+ 14
- 0
src/main/resources/mapper/TaPersonMapper.xml Vedi File

@@ -0,0 +1,14 @@
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
+<mapper namespace="com.njyunzhi.yunshake.mapper.TaPersonMapper">
4
+
5
+    <select id="getByOpenid" resultType="com.njyunzhi.yunshake.entity.TaPerson">
6
+        SELECT
7
+            *
8
+        FROM
9
+            ta_person t
10
+        WHERE
11
+            t.openid = #{openid}
12
+            AND t.`status` > -1
13
+    </select>
14
+</mapper>

+ 19
- 0
src/main/resources/mapper/TaScoreMapper.xml Vedi File

@@ -0,0 +1,19 @@
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
+<mapper namespace="com.njyunzhi.yunshake.mapper.TaScoreMapper">
4
+
5
+    <select id="getScoreTopList" resultType="com.njyunzhi.yunshake.vo.TopScore">
6
+        select
7
+            avatar,nick_name,score
8
+        from
9
+            (
10
+            select
11
+                person_id,MAX(score) score
12
+            from
13
+                ta_score GROUP BY person_id) tas,ta_person
14
+        where
15
+            tas.person_id=ta_person.person_id
16
+            order by tas.score
17
+            desc limit #{top}
18
+    </select>
19
+</mapper>