Archon commited on
Commit
8bdca81
·
1 Parent(s): 775efd6
.editorconfig ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = space
5
+ indent_size = 4
6
+ end_of_line = lf
7
+ charset = utf-8
8
+ trim_trailing_whitespace = true
9
+ insert_final_newline = true
10
+
11
+ [gradlew.bat]
12
+ end_of_line = crlf
13
+
14
+ [*.yml]
15
+ indent_size = 2
.gitignore CHANGED
@@ -1,23 +1,37 @@
1
- # Compiled class file
2
- *.class
 
 
 
 
3
 
4
- # Log file
5
- *.log
 
 
 
 
 
 
 
 
 
6
 
7
- # BlueJ files
8
- *.ctxt
 
 
 
 
 
 
9
 
10
- # Mobile Tools for Java (J2ME)
11
- .mtj.tmp/
 
 
 
 
12
 
13
- # Package Files #
14
- *.jar
15
- *.war
16
- *.nar
17
- *.ear
18
- *.zip
19
- *.tar.gz
20
- *.rar
21
-
22
- # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
23
- hs_err_pid*
 
1
+ HELP.md
2
+ .gradle
3
+ build/
4
+ !gradle/wrapper/gradle-wrapper.jar
5
+ !**/src/main/**/build/
6
+ !**/src/test/**/build/
7
 
8
+ ### STS ###
9
+ .apt_generated
10
+ .classpath
11
+ .factorypath
12
+ .project
13
+ .settings
14
+ .springBeans
15
+ .sts4-cache
16
+ bin/
17
+ !**/src/main/**/bin/
18
+ !**/src/test/**/bin/
19
 
20
+ ### IntelliJ IDEA ###
21
+ .idea
22
+ *.iws
23
+ *.iml
24
+ *.ipr
25
+ out/
26
+ !**/src/main/**/out/
27
+ !**/src/test/**/out/
28
 
29
+ ### NetBeans ###
30
+ /nbproject/private/
31
+ /nbbuild/
32
+ /dist/
33
+ /nbdist/
34
+ /.nb-gradle/
35
 
36
+ ### VS Code ###
37
+ .vscode/
 
 
 
 
 
 
 
 
 
build.gradle.kts ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2
+
3
+ plugins {
4
+ alias(gradlePlugins.plugins.kotlin.jvm)
5
+ }
6
+
7
+ java {
8
+ sourceCompatibility = JavaVersion.VERSION_17
9
+ targetCompatibility = JavaVersion.VERSION_17
10
+ }
11
+
12
+ allprojects {
13
+ group = "cn.archongum.app"
14
+ version = "0.0.1"
15
+ repositories {
16
+ mavenLocal()
17
+ maven(url = "https://maven.datastory.com.cn/nexus/content/groups/public/")
18
+ maven(url = "https://maven.aliyun.com/nexus/content/groups/public")
19
+ maven(url = "https://maven.aliyun.com/repository/gradle-plugin")
20
+ maven(url = "https://maven.aliyun.com/repository/central")
21
+ maven(url = "https://maven.aliyun.com/repository/jcenter")
22
+ maven(url = "https://maven.aliyun.com/repository/google")
23
+ maven(url = "https://packages.confluent.io/maven/")
24
+ }
25
+ tasks.withType<KotlinCompile> {
26
+ kotlinOptions {
27
+ freeCompilerArgs = listOf("-Xjsr305=strict")
28
+ jvmTarget = "17"
29
+ }
30
+ }
31
+ }
gradle.properties ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Specifies the JVM arguments used for the daemon process.
2
+ # The setting is particularly useful for tweaking memory settings.
3
+ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
4
+
5
+ # daemon for single project
6
+ org.gradle.daemon=false
7
+
8
+ # Turn on parallel compilation, caching and on-demand configurationv
9
+ org.gradle.configureondemand=true
10
+ org.gradle.caching=true
11
+ org.gradle.parallel=true
gradle/wrapper/gradle-wrapper.jar ADDED
Binary file (60.8 kB). View file
 
gradle/wrapper/gradle-wrapper.properties ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ distributionBase=GRADLE_USER_HOME
2
+ distributionPath=wrapper/dists
3
+ distributionUrl=https\://mirrors.huaweicloud.com/gradle/gradle-8.2-bin.zip
4
+ zipStoreBase=GRADLE_USER_HOME
5
+ zipStorePath=wrapper/dists
gradlew ADDED
@@ -0,0 +1,240 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/sh
2
+
3
+ #
4
+ # Copyright © 2015-2021 the original authors.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # https://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ ##############################################################################
20
+ #
21
+ # Gradle start up script for POSIX generated by Gradle.
22
+ #
23
+ # Important for running:
24
+ #
25
+ # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
26
+ # noncompliant, but you have some other compliant shell such as ksh or
27
+ # bash, then to run this script, type that shell name before the whole
28
+ # command line, like:
29
+ #
30
+ # ksh Gradle
31
+ #
32
+ # Busybox and similar reduced shells will NOT work, because this script
33
+ # requires all of these POSIX shell features:
34
+ # * functions;
35
+ # * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
36
+ # «${var#prefix}», «${var%suffix}», and «$( cmd )»;
37
+ # * compound commands having a testable exit status, especially «case»;
38
+ # * various built-in commands including «command», «set», and «ulimit».
39
+ #
40
+ # Important for patching:
41
+ #
42
+ # (2) This script targets any POSIX shell, so it avoids extensions provided
43
+ # by Bash, Ksh, etc; in particular arrays are avoided.
44
+ #
45
+ # The "traditional" practice of packing multiple parameters into a
46
+ # space-separated string is a well documented source of bugs and security
47
+ # problems, so this is (mostly) avoided, by progressively accumulating
48
+ # options in "$@", and eventually passing that to Java.
49
+ #
50
+ # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
51
+ # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
52
+ # see the in-line comments for details.
53
+ #
54
+ # There are tweaks for specific operating systems such as AIX, CygWin,
55
+ # Darwin, MinGW, and NonStop.
56
+ #
57
+ # (3) This script is generated from the Groovy template
58
+ # https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
59
+ # within the Gradle project.
60
+ #
61
+ # You can find Gradle at https://github.com/gradle/gradle/.
62
+ #
63
+ ##############################################################################
64
+
65
+ # Attempt to set APP_HOME
66
+
67
+ # Resolve links: $0 may be a link
68
+ app_path=$0
69
+
70
+ # Need this for daisy-chained symlinks.
71
+ while
72
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
73
+ [ -h "$app_path" ]
74
+ do
75
+ ls=$( ls -ld "$app_path" )
76
+ link=${ls#*' -> '}
77
+ case $link in #(
78
+ /*) app_path=$link ;; #(
79
+ *) app_path=$APP_HOME$link ;;
80
+ esac
81
+ done
82
+
83
+ APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
84
+
85
+ APP_NAME="Gradle"
86
+ APP_BASE_NAME=${0##*/}
87
+
88
+ # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
89
+ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
90
+
91
+ # Use the maximum available, or set MAX_FD != -1 to use that value.
92
+ MAX_FD=maximum
93
+
94
+ warn () {
95
+ echo "$*"
96
+ } >&2
97
+
98
+ die () {
99
+ echo
100
+ echo "$*"
101
+ echo
102
+ exit 1
103
+ } >&2
104
+
105
+ # OS specific support (must be 'true' or 'false').
106
+ cygwin=false
107
+ msys=false
108
+ darwin=false
109
+ nonstop=false
110
+ case "$( uname )" in #(
111
+ CYGWIN* ) cygwin=true ;; #(
112
+ Darwin* ) darwin=true ;; #(
113
+ MSYS* | MINGW* ) msys=true ;; #(
114
+ NONSTOP* ) nonstop=true ;;
115
+ esac
116
+
117
+ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
118
+
119
+
120
+ # Determine the Java command to use to start the JVM.
121
+ if [ -n "$JAVA_HOME" ] ; then
122
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
123
+ # IBM's JDK on AIX uses strange locations for the executables
124
+ JAVACMD=$JAVA_HOME/jre/sh/java
125
+ else
126
+ JAVACMD=$JAVA_HOME/bin/java
127
+ fi
128
+ if [ ! -x "$JAVACMD" ] ; then
129
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
130
+
131
+ Please set the JAVA_HOME variable in your environment to match the
132
+ location of your Java installation."
133
+ fi
134
+ else
135
+ JAVACMD=java
136
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
137
+
138
+ Please set the JAVA_HOME variable in your environment to match the
139
+ location of your Java installation."
140
+ fi
141
+
142
+ # Increase the maximum file descriptors if we can.
143
+ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
144
+ case $MAX_FD in #(
145
+ max*)
146
+ MAX_FD=$( ulimit -H -n ) ||
147
+ warn "Could not query maximum file descriptor limit"
148
+ esac
149
+ case $MAX_FD in #(
150
+ '' | soft) :;; #(
151
+ *)
152
+ ulimit -n "$MAX_FD" ||
153
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
154
+ esac
155
+ fi
156
+
157
+ # Collect all arguments for the java command, stacking in reverse order:
158
+ # * args from the command line
159
+ # * the main class name
160
+ # * -classpath
161
+ # * -D...appname settings
162
+ # * --module-path (only if needed)
163
+ # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
164
+
165
+ # For Cygwin or MSYS, switch paths to Windows format before running java
166
+ if "$cygwin" || "$msys" ; then
167
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
168
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
169
+
170
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
171
+
172
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
173
+ for arg do
174
+ if
175
+ case $arg in #(
176
+ -*) false ;; # don't mess with options #(
177
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
178
+ [ -e "$t" ] ;; #(
179
+ *) false ;;
180
+ esac
181
+ then
182
+ arg=$( cygpath --path --ignore --mixed "$arg" )
183
+ fi
184
+ # Roll the args list around exactly as many times as the number of
185
+ # args, so each arg winds up back in the position where it started, but
186
+ # possibly modified.
187
+ #
188
+ # NB: a `for` loop captures its iteration list before it begins, so
189
+ # changing the positional parameters here affects neither the number of
190
+ # iterations, nor the values presented in `arg`.
191
+ shift # remove old arg
192
+ set -- "$@" "$arg" # push replacement arg
193
+ done
194
+ fi
195
+
196
+ # Collect all arguments for the java command;
197
+ # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
198
+ # shell script including quotes and variable substitutions, so put them in
199
+ # double quotes to make sure that they get re-expanded; and
200
+ # * put everything else in single quotes, so that it's not re-expanded.
201
+
202
+ set -- \
203
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
204
+ -classpath "$CLASSPATH" \
205
+ org.gradle.wrapper.GradleWrapperMain \
206
+ "$@"
207
+
208
+ # Stop when "xargs" is not available.
209
+ if ! command -v xargs >/dev/null 2>&1
210
+ then
211
+ die "xargs is not available"
212
+ fi
213
+
214
+ # Use "xargs" to parse quoted args.
215
+ #
216
+ # With -n1 it outputs one arg per line, with the quotes and backslashes removed.
217
+ #
218
+ # In Bash we could simply go:
219
+ #
220
+ # readarray ARGS < <( xargs -n1 <<<"$var" ) &&
221
+ # set -- "${ARGS[@]}" "$@"
222
+ #
223
+ # but POSIX shell has neither arrays nor command substitution, so instead we
224
+ # post-process each arg (as a line of input to sed) to backslash-escape any
225
+ # character that might be a shell metacharacter, then use eval to reverse
226
+ # that process (while maintaining the separation between arguments), and wrap
227
+ # the whole thing up as a single "set" statement.
228
+ #
229
+ # This will of course break if any of these variables contains a newline or
230
+ # an unmatched quote.
231
+ #
232
+
233
+ eval "set -- $(
234
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
235
+ xargs -n1 |
236
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
237
+ tr '\n' ' '
238
+ )" '"$@"'
239
+
240
+ exec "$JAVACMD" "$@"
gradlew.bat ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @rem
2
+ @rem Copyright 2015 the original author or authors.
3
+ @rem
4
+ @rem Licensed under the Apache License, Version 2.0 (the "License");
5
+ @rem you may not use this file except in compliance with the License.
6
+ @rem You may obtain a copy of the License at
7
+ @rem
8
+ @rem https://www.apache.org/licenses/LICENSE-2.0
9
+ @rem
10
+ @rem Unless required by applicable law or agreed to in writing, software
11
+ @rem distributed under the License is distributed on an "AS IS" BASIS,
12
+ @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ @rem See the License for the specific language governing permissions and
14
+ @rem limitations under the License.
15
+ @rem
16
+
17
+ @if "%DEBUG%"=="" @echo off
18
+ @rem ##########################################################################
19
+ @rem
20
+ @rem Gradle startup script for Windows
21
+ @rem
22
+ @rem ##########################################################################
23
+
24
+ @rem Set local scope for the variables with windows NT shell
25
+ if "%OS%"=="Windows_NT" setlocal
26
+
27
+ set DIRNAME=%~dp0
28
+ if "%DIRNAME%"=="" set DIRNAME=.
29
+ set APP_BASE_NAME=%~n0
30
+ set APP_HOME=%DIRNAME%
31
+
32
+ @rem Resolve any "." and ".." in APP_HOME to make it shorter.
33
+ for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34
+
35
+ @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
36
+ set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
37
+
38
+ @rem Find java.exe
39
+ if defined JAVA_HOME goto findJavaFromJavaHome
40
+
41
+ set JAVA_EXE=java.exe
42
+ %JAVA_EXE% -version >NUL 2>&1
43
+ if %ERRORLEVEL% equ 0 goto execute
44
+
45
+ echo.
46
+ echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47
+ echo.
48
+ echo Please set the JAVA_HOME variable in your environment to match the
49
+ echo location of your Java installation.
50
+
51
+ goto fail
52
+
53
+ :findJavaFromJavaHome
54
+ set JAVA_HOME=%JAVA_HOME:"=%
55
+ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
56
+
57
+ if exist "%JAVA_EXE%" goto execute
58
+
59
+ echo.
60
+ echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61
+ echo.
62
+ echo Please set the JAVA_HOME variable in your environment to match the
63
+ echo location of your Java installation.
64
+
65
+ goto fail
66
+
67
+ :execute
68
+ @rem Setup the command line
69
+
70
+ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
71
+
72
+
73
+ @rem Execute Gradle
74
+ "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
75
+
76
+ :end
77
+ @rem End local scope for the variables with windows NT shell
78
+ if %ERRORLEVEL% equ 0 goto mainEnd
79
+
80
+ :fail
81
+ rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
82
+ rem the _cmd.exe /c_ return code!
83
+ set EXIT_CODE=%ERRORLEVEL%
84
+ if %EXIT_CODE% equ 0 set EXIT_CODE=1
85
+ if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
86
+ exit /b %EXIT_CODE%
87
+
88
+ :mainEnd
89
+ if "%OS%"=="Windows_NT" endlocal
90
+
91
+ :omega
settings.gradle.kts ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ rootProject.name = "app-java"
2
+ include("uc")
3
+
4
+ dependencyResolutionManagement {
5
+ versionCatalogs {
6
+ val kotlin = "1.8.22"
7
+ // Spring Boot
8
+ val springboot = "3.1.2"
9
+ val springbootDependencymanagement = "1.1.2"
10
+ // OpenAPI
11
+ val openapi = "2.1.0"
12
+ val openapiGenerator = "6.6.0"
13
+ create("platforms") {
14
+ // Spring Boot
15
+ library("spring-boot-dependencies", "org.springframework.boot:spring-boot-dependencies:$springboot")
16
+ }
17
+ create("gradlePlugins") {
18
+ plugin("kotlin-jvm", "org.jetbrains.kotlin.jvm").version(kotlin)
19
+ // Spring Boot
20
+ plugin("kotlin-plugin-spring", "org.jetbrains.kotlin.plugin.spring").version(kotlin)
21
+ plugin("springboot-parent", "org.springframework.boot").version(springboot)
22
+ plugin("springboot-dependencymanagement", "io.spring.dependency-management").version(springbootDependencymanagement)
23
+ // OpenAPI
24
+ plugin("openapi-generator", "org.openapi.generator").version(openapiGenerator)
25
+ }
26
+ create("libs") {
27
+ // Spring Boot
28
+ library("spring-boot-starter-web", "org.springframework.boot", "spring-boot-starter-web").withoutVersion()
29
+ library("spring-boot-starter-test", "org.springframework.boot", "spring-boot-starter-test").withoutVersion()
30
+ // OpenAPI
31
+ library("openapi-webmvc-ui", "org.springdoc:springdoc-openapi-starter-webmvc-ui:$openapi")
32
+ bundle(
33
+ "openapi",
34
+ listOf(
35
+ "openapi-webmvc-ui",
36
+ )
37
+ )
38
+ }
39
+ }
40
+ }
uc/build.gradle.kts ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ plugins {
2
+ alias(gradlePlugins.plugins.kotlin.jvm)
3
+ // Spring Boot
4
+ alias(gradlePlugins.plugins.springboot.parent)
5
+ alias(gradlePlugins.plugins.springboot.dependencymanagement)
6
+ // OpenAPI
7
+ alias(gradlePlugins.plugins.openapi.generator)
8
+ }
9
+
10
+ dependencies {
11
+ // Spring Boot
12
+ implementation(libs.spring.boot.starter.web)
13
+ // OpenAPI
14
+ implementation(libs.bundles.openapi)
15
+ // Tests
16
+ testImplementation(libs.spring.boot.starter.test)
17
+ }
18
+
19
+ openApiGenerate {
20
+ generatorName.set("kotlin-spring")
21
+ inputSpec.set("$projectDir/src/main/resources/specs/uc.yml")
22
+ outputDir.set("$buildDir/generated")
23
+ apiPackage.set("cn.archongum.app.uc.api")
24
+ modelPackage.set("cn.archongum.app.uc.model")
25
+ configOptions.set(
26
+ mapOf(
27
+ "delegatePattern" to "true",
28
+ "useSpringBoot3" to "true",
29
+ )
30
+ )
31
+ }
32
+
33
+ sourceSets {
34
+ main {
35
+ kotlin {
36
+ // OpenAPI
37
+ srcDirs("$buildDir/generated/src/main/kotlin")
38
+ }
39
+ }
40
+ }
41
+
42
+ tasks.compileKotlin {
43
+ // OpenAPI
44
+ dependsOn(tasks.openApiGenerate)
45
+ }
46
+
47
+ val thisMainClass = "cn.archongum.app.uc.UcAppKt"
48
+
49
+ tasks.bootJar {
50
+ mainClass.set(thisMainClass)
51
+ archiveFileName.set("${projectDir.name}.jar")
52
+ // Clean jar to prevent more than one jar
53
+ doFirst {
54
+ File(listOf(buildDir, "libs").joinToString(File.separator)).listFiles()?.forEach { it.deleteRecursively() }
55
+ }
56
+ }
uc/src/main/kotlin/cn/archongum/app/uc/UcApp.kt ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package cn.archongum.app.uc
2
+
3
+ import org.springframework.boot.autoconfigure.SpringBootApplication
4
+ import org.springframework.boot.runApplication
5
+
6
+ @SpringBootApplication
7
+ open class UcApp
8
+
9
+ fun main(args: Array<String>) {
10
+ runApplication<UcApp>(*args)
11
+ }
uc/src/main/kotlin/cn/archongum/app/uc/service/UcService.kt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ package cn.archongum.app.uc.service
2
+
3
+ import cn.archongum.app.uc.api.PetsApiDelegate
4
+ import cn.archongum.app.uc.model.Pet
5
+ import org.springframework.http.HttpStatus
6
+ import org.springframework.http.ResponseEntity
7
+ import org.springframework.stereotype.Service
8
+
9
+ @Service
10
+ open class UcService : PetsApiDelegate {
11
+
12
+ companion object {
13
+ var pets: MutableMap<Long, Pet> = HashMap(4)
14
+
15
+ init {
16
+ for (i in 0L..3L) {
17
+ pets[i] = Pet(id = i, name = "pet:$i")
18
+ }
19
+ }
20
+ }
21
+
22
+ override fun findPetById(id: Long): ResponseEntity<Pet> {
23
+ val pet: Pet? = pets[id]
24
+ return ResponseEntity<Pet>(pet, HttpStatus.OK)
25
+ }
26
+
27
+ }
uc/src/main/resources/application.yml ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ spring:
2
+ application:
3
+ name: "user-center"
uc/src/main/resources/specs/uc.yml ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ openapi: "3.0.3"
2
+ info:
3
+ version: 1.0.0
4
+ title: Swagger Petstore
5
+ description: A sample API that uses a petstore as an example to demonstrate features in the OpenAPI 3.0 specification
6
+ termsOfService: http://swagger.io/terms/
7
+ contact:
8
+ name: Swagger API Team
9
+ email: apiteam@swagger.io
10
+ url: http://swagger.io
11
+ license:
12
+ name: Apache 2.0
13
+ url: https://www.apache.org/licenses/LICENSE-2.0.html
14
+ servers:
15
+ - url: http://localhost:8080/api
16
+ paths:
17
+ /pets/{id}:
18
+ get:
19
+ description: Returns a user based on a single ID, if the user does not have access to the pet
20
+ operationId: find pet by id
21
+ parameters:
22
+ - name: id
23
+ in: path
24
+ description: ID of pet to fetch
25
+ required: true
26
+ schema:
27
+ type: integer
28
+ format: int64
29
+ responses:
30
+ '200':
31
+ description: pet response
32
+ content:
33
+ application/json:
34
+ schema:
35
+ $ref: '#/components/schemas/Pet'
36
+ default:
37
+ description: unexpected error
38
+ content:
39
+ application/json:
40
+ schema:
41
+ $ref: '#/components/schemas/Error'
42
+ delete:
43
+ description: deletes a single pet based on the ID supplied
44
+ operationId: deletePet
45
+ parameters:
46
+ - name: id
47
+ in: path
48
+ description: ID of pet to delete
49
+ required: true
50
+ schema:
51
+ type: integer
52
+ format: int64
53
+ responses:
54
+ '204':
55
+ description: pet deleted
56
+ default:
57
+ description: unexpected error
58
+ content:
59
+ application/json:
60
+ schema:
61
+ $ref: '#/components/schemas/Error'
62
+ components:
63
+ schemas:
64
+ Persion:
65
+ type: object
66
+ properties:
67
+ pet:
68
+ $ref: '#/components/schemas/Pet'
69
+ first_name:
70
+ type: string
71
+
72
+ Pet:
73
+ allOf:
74
+ - $ref: '#/components/schemas/NewPet'
75
+ - type: object
76
+ required:
77
+ - id
78
+ properties:
79
+ id:
80
+ type: integer
81
+ format: int64
82
+
83
+ NewPet:
84
+ type: object
85
+ required:
86
+ - name
87
+ properties:
88
+ name:
89
+ type: string
90
+ tag:
91
+ type: string
92
+
93
+ Error:
94
+ type: object
95
+ required:
96
+ - code
97
+ - message
98
+ properties:
99
+ code:
100
+ type: integer
101
+ format: int32
102
+ message:
103
+ type: string