项目起手式

This commit is contained in:
shikong 2024-04-15 01:52:44 +08:00
commit d13dd95cea
34 changed files with 1766 additions and 0 deletions

38
.gitignore vendored Normal file
View File

@ -0,0 +1,38 @@
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store

8
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

18
.idea/dataSources.xml Normal file
View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="wv-official-v2@10.10.10.200" uuid="58f076d2-e65a-4e98-aa6a-e22b3a935db0">
<driver-ref>mysql.8</driver-ref>
<synchronize>true</synchronize>
<imported>true</imported>
<jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://10.10.10.200:3306/wv-official-v2?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai</jdbc-url>
<jdbc-additional-properties>
<property name="com.intellij.clouds.kubernetes.db.host.port" />
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
<property name="com.intellij.clouds.kubernetes.db.container.port" />
</jdbc-additional-properties>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

13
.idea/encodings.xml Normal file
View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/wx-officia-dependencies/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/wx-official-api/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/wx-official-common/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/wx-official-orm/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/wx-official-service/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/wx-official-starter/src/main/java" charset="UTF-8" />
</component>
</project>

19
.idea/misc.xml Normal file
View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
<option name="ignoredFiles">
<set>
<option value="$PROJECT_DIR$/wx-officia-dependencies/pom.xml" />
</set>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="temurin-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

6
.idea/sqldialects.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="PROJECT" dialect="MySQL" />
</component>
</project>

124
.idea/uiDesigner.xml Normal file
View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

240
pom.xml Normal file
View File

@ -0,0 +1,240 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.skcks.wx.official</groupId>
<artifactId>wx-official</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>wx-official-orm</module>
<module>wx-official-starter</module>
<module>wx-official-api</module>
<module>wx-official-service</module>
<module>wx-official-common</module>
</modules>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>17</java.version>
<springboot.version>3.2.4</springboot.version>
<!--Java Bean-->
<org.mapstruct.version>1.5.3.Final</org.mapstruct.version>
<lombok.version>1.18.24</lombok.version>
<!--SpringDoc-->
<springdoc.version>2.2.0</springdoc.version>
<!--工具-->
<hutool.version>5.8.11</hutool.version>
<!--Docker-->
<docker.maven.plugin.version>1.4.13</docker.maven.plugin.version>
</properties>
<profiles>
<profile>
<id>jar</id>
<properties>
<skip.docker>true</skip.docker>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>docker</id>
<properties>
<skip.docker>false</skip.docker>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${springboot.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
<version>${springboot.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-starter-common -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-common</artifactId>
<version>${springdoc.version}</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>${springdoc.version}</version>
</dependency>
<!--MapStruct-->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
<scope>compile</scope>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<!--hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</path>
<path>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>${springboot.version}</version>
</path>
<!-- other annotation processors -->
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${maven-resources-plugin.version}</version>
<configuration>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>${docker.maven.plugin.version}</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>${skip.docker}</skip>
<repository>skcks.cn/wx-official-accounts-v2</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>true</filtering>
</testResource>
</testResources>
</build>
</project>

58
wx-official-api/pom.xml Normal file
View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.skcks.wx.official</groupId>
<artifactId>wx-official</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
<artifactId>wx-official-api</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>cn.skcks.wx.official</groupId>
<artifactId>wx-official-service</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.skcks.wx.official</groupId>
<artifactId>wx-official-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>${springdoc.version}</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-common</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,53 @@
package cn.skcks.wx.official.api.config;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import lombok.Data;
import org.springdoc.core.customizers.OpenApiCustomizer;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Configuration;
import static org.springdoc.core.utils.Constants.ALL_PATTERN;
@Configuration
@Data
public class SwaggerConfig {
public static final Info INFO;
private static final License LICENSE;
static {
INFO = new Info()
.title("微信公众号平台 API")
.description("微信公众号平台")
.version("0.1.0");
LICENSE = new License()
.name("Apache 2.0")
.url("http://www.apache.org/licenses/LICENSE-2.0.html");
INFO.license(LICENSE);
}
public static GroupedOpenApi api(String group, String path) {
return GroupedOpenApi.builder()
.group(group)
.pathsToMatch(path + ALL_PATTERN)
.addOpenApiCustomizer(openApi -> openApi.info(SwaggerConfig.INFO))
.addOpenApiCustomizer(authOpenApiDocs())
.build();
}
private static OpenApiCustomizer authOpenApiDocs(){
return openApi -> {
// swagger 全局添加 token 认证选项
openApi.addSecurityItem(new SecurityRequirement().addList("token"));
openApi.getComponents()
.addSecuritySchemes("token",
new SecurityScheme()
.type(SecurityScheme.Type.APIKEY)
.in(SecurityScheme.In.HEADER)
.name("token"));
};
}
}

View File

@ -0,0 +1,22 @@
package cn.skcks.wx.official.api.config;
import cn.skcks.wx.official.api.interceptor.RequestInterceptor;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Slf4j
@Configuration
@RequiredArgsConstructor
public class WebConfig implements WebMvcConfigurer {
private final RequestInterceptor requestInterceptor;
@Override
public void addInterceptors(@NotNull InterceptorRegistry registry) {
registry.addInterceptor(requestInterceptor)
.excludePathPatterns("/swagger-ui/**","/v3/api-docs/**")
.addPathPatterns("/**");
}
}

View File

@ -0,0 +1,20 @@
package cn.skcks.wx.official.api.interceptor;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
@Slf4j
@Component
@SuppressWarnings({"unused"})
@RequiredArgsConstructor
public class RequestInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.info("{} 访问 {}",request.getRemoteHost(), request.getRequestURI());
return true;
}
}

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.skcks.wx.official</groupId>
<artifactId>wx-official</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
<artifactId>wx-official-common</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,64 @@
package cn.skcks.wx.official.common.annotation.web;
import org.springframework.core.annotation.AliasFor;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.lang.annotation.*;
/**
* @author Shikong
*/
@Inherited
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public @interface JsonMapping {
/**
* Alias for {@link RequestMapping#method}.
*/
@AliasFor(annotation = RequestMapping.class)
RequestMethod[] method() default {};
/**
* Alias for {@link RequestMapping#name}.
*/
@AliasFor(annotation = RequestMapping.class)
String name() default "";
/**
* Alias for {@link RequestMapping#value}.
*/
@AliasFor(annotation = RequestMapping.class)
String[] value() default {};
/**
* Alias for {@link RequestMapping#path}.
*/
@AliasFor(annotation = RequestMapping.class)
String[] path() default {};
/**
* Alias for {@link RequestMapping#params}.
*/
@AliasFor(annotation = RequestMapping.class)
String[] params() default {};
/**
* Alias for {@link RequestMapping#headers}.
*/
@AliasFor(annotation = RequestMapping.class)
String[] headers() default {};
/**
* Alias for {@link RequestMapping#consumes}.
* @since 4.3.5
*/
@AliasFor(annotation = RequestMapping.class)
String[] consumes() default {};
}

View File

@ -0,0 +1,54 @@
package cn.skcks.wx.official.common.annotation.web.methods;
import cn.skcks.wx.official.common.annotation.web.JsonMapping;
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMethod;
import java.lang.annotation.*;
/**
* @author Shikong
*/
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@JsonMapping(method = RequestMethod.DELETE)
public @interface DeleteJson {
/**
* Alias for {@link JsonMapping#name}.
*/
@AliasFor(annotation = JsonMapping.class)
String name() default "";
/**
* Alias for {@link JsonMapping#value}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] value() default {};
/**
* Alias for {@link JsonMapping#path}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] path() default {};
/**
* Alias for {@link JsonMapping#params}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] params() default {};
/**
* Alias for {@link JsonMapping#headers}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] headers() default {};
/**
* Alias for {@link JsonMapping#consumes}.
* @since 4.3.5
*/
@AliasFor(annotation = JsonMapping.class)
String[] consumes() default {};
}

View File

@ -0,0 +1,54 @@
package cn.skcks.wx.official.common.annotation.web.methods;
import cn.skcks.wx.official.common.annotation.web.JsonMapping;
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMethod;
import java.lang.annotation.*;
/**
* @author Shikong
*/
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@JsonMapping(method = RequestMethod.GET)
public @interface GetJson {
/**
* Alias for {@link JsonMapping#name}.
*/
@AliasFor(annotation = JsonMapping.class)
String name() default "";
/**
* Alias for {@link JsonMapping#value}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] value() default {};
/**
* Alias for {@link JsonMapping#path}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] path() default {};
/**
* Alias for {@link JsonMapping#params}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] params() default {};
/**
* Alias for {@link JsonMapping#headers}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] headers() default {};
/**
* Alias for {@link JsonMapping#consumes}.
* @since 4.3.5
*/
@AliasFor(annotation = JsonMapping.class)
String[] consumes() default {};
}

View File

@ -0,0 +1,55 @@
package cn.skcks.wx.official.common.annotation.web.methods;
import cn.skcks.wx.official.common.annotation.web.JsonMapping;
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMethod;
import java.lang.annotation.*;
/**
* @author Shikong
*/
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@JsonMapping(method = RequestMethod.HEAD)
public @interface HeadJson {
/**
* Alias for {@link JsonMapping#name}.
*/
@AliasFor(annotation = JsonMapping.class)
String name() default "";
/**
* Alias for {@link JsonMapping#value}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] value() default {};
/**
* Alias for {@link JsonMapping#path}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] path() default {};
/**
* Alias for {@link JsonMapping#params}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] params() default {};
/**
* Alias for {@link JsonMapping#headers}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] headers() default {};
/**
* Alias for {@link JsonMapping#consumes}.
* @since 4.3.5
*/
@AliasFor(annotation = JsonMapping.class)
String[] consumes() default {};
}

View File

@ -0,0 +1,55 @@
package cn.skcks.wx.official.common.annotation.web.methods;
import cn.skcks.wx.official.common.annotation.web.JsonMapping;
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMethod;
import java.lang.annotation.*;
/**
* @author Shikong
*/
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@JsonMapping(method = RequestMethod.OPTIONS)
public @interface OptionsJson {
/**
* Alias for {@link JsonMapping#name}.
*/
@AliasFor(annotation = JsonMapping.class)
String name() default "";
/**
* Alias for {@link JsonMapping#value}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] value() default {};
/**
* Alias for {@link JsonMapping#path}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] path() default {};
/**
* Alias for {@link JsonMapping#params}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] params() default {};
/**
* Alias for {@link JsonMapping#headers}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] headers() default {};
/**
* Alias for {@link JsonMapping#consumes}.
* @since 4.3.5
*/
@AliasFor(annotation = JsonMapping.class)
String[] consumes() default {};
}

View File

@ -0,0 +1,54 @@
package cn.skcks.wx.official.common.annotation.web.methods;
import cn.skcks.wx.official.common.annotation.web.JsonMapping;
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMethod;
import java.lang.annotation.*;
/**
* @author Shikong
*/
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@JsonMapping(method = RequestMethod.PATCH)
public @interface PatchJson {
/**
* Alias for {@link JsonMapping#name}.
*/
@AliasFor(annotation = JsonMapping.class)
String name() default "";
/**
* Alias for {@link JsonMapping#value}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] value() default {};
/**
* Alias for {@link JsonMapping#path}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] path() default {};
/**
* Alias for {@link JsonMapping#params}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] params() default {};
/**
* Alias for {@link JsonMapping#headers}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] headers() default {};
/**
* Alias for {@link JsonMapping#consumes}.
* @since 4.3.5
*/
@AliasFor(annotation = JsonMapping.class)
String[] consumes() default {};
}

View File

@ -0,0 +1,54 @@
package cn.skcks.wx.official.common.annotation.web.methods;
import cn.skcks.wx.official.common.annotation.web.JsonMapping;
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMethod;
import java.lang.annotation.*;
/**
* @author Shikong
*/
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@JsonMapping(method = RequestMethod.POST)
public @interface PostJson {
/**
* Alias for {@link JsonMapping#name}.
*/
@AliasFor(annotation = JsonMapping.class)
String name() default "";
/**
* Alias for {@link JsonMapping#value}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] value() default {};
/**
* Alias for {@link JsonMapping#path}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] path() default {};
/**
* Alias for {@link JsonMapping#params}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] params() default {};
/**
* Alias for {@link JsonMapping#headers}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] headers() default {};
/**
* Alias for {@link JsonMapping#consumes}.
* @since 4.3.5
*/
@AliasFor(annotation = JsonMapping.class)
String[] consumes() default {};
}

View File

@ -0,0 +1,54 @@
package cn.skcks.wx.official.common.annotation.web.methods;
import cn.skcks.wx.official.common.annotation.web.JsonMapping;
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMethod;
import java.lang.annotation.*;
/**
* @author Shikong
*/
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@JsonMapping(method = RequestMethod.PUT)
public @interface PutJson {
/**
* Alias for {@link JsonMapping#name}.
*/
@AliasFor(annotation = JsonMapping.class)
String name() default "";
/**
* Alias for {@link JsonMapping#value}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] value() default {};
/**
* Alias for {@link JsonMapping#path}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] path() default {};
/**
* Alias for {@link JsonMapping#params}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] params() default {};
/**
* Alias for {@link JsonMapping#headers}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] headers() default {};
/**
* Alias for {@link JsonMapping#consumes}.
* @since 4.3.5
*/
@AliasFor(annotation = JsonMapping.class)
String[] consumes() default {};
}

View File

@ -0,0 +1,54 @@
package cn.skcks.wx.official.common.annotation.web.methods;
import cn.skcks.wx.official.common.annotation.web.JsonMapping;
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMethod;
import java.lang.annotation.*;
/**
* @author Shikong
*/
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@JsonMapping(method = RequestMethod.TRACE)
public @interface TraceJson {
/**
* Alias for {@link JsonMapping#name}.
*/
@AliasFor(annotation = JsonMapping.class)
String name() default "";
/**
* Alias for {@link JsonMapping#value}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] value() default {};
/**
* Alias for {@link JsonMapping#path}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] path() default {};
/**
* Alias for {@link JsonMapping#params}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] params() default {};
/**
* Alias for {@link JsonMapping#headers}.
*/
@AliasFor(annotation = JsonMapping.class)
String[] headers() default {};
/**
* Alias for {@link JsonMapping#consumes}.
* @since 4.3.5
*/
@AliasFor(annotation = JsonMapping.class)
String[] consumes() default {};
}

158
wx-official-orm/pom.xml Normal file
View File

@ -0,0 +1,158 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.skcks.wx.official</groupId>
<artifactId>wx-official</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
<artifactId>wx-official-orm</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mybatis-flex.version>1.8.7</mybatis-flex.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-dependencies</artifactId>
<version>${mybatis-flex.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
</dependency>
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-spring-boot3-starter</artifactId>
</dependency>
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-processor</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-codegen</artifactId>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/**</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>true</filtering>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
<path>
<groupId>com.mybatis-flex</groupId>
<artifactId>mybatis-flex-processor</artifactId>
<version>${mybatis-flex.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,57 @@
package cn.skcks.wx.official.orm.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.math.BigInteger;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
/**
* 设备通道信息 实体类
*
* @author shikong
* @since 2024-04-15
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(value = "wx_official_account", dataSource = "mysql")
public class WxOfficialAccount implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@Id(keyType = KeyType.Auto)
private BigInteger id;
/**
* 微信公众号appid
*/
private String appId;
/**
* 公众号账号
*/
private String account;
/**
* 第三方用户唯一凭证密钥
*/
private String secret;
/**
* 授权类型
*/
private String grantType;
}

View File

@ -0,0 +1,14 @@
package cn.skcks.wx.official.orm.mapper;
import com.mybatisflex.core.BaseMapper;
import cn.skcks.wx.official.orm.entity.WxOfficialAccount;
/**
* 设备通道信息 映射层
*
* @author shikong
* @since 2024-04-15
*/
public interface WxOfficialAccountMapper extends BaseMapper<WxOfficialAccount> {
}

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd
http://www.liquibase.org/xml/ns/pro http://www.liquibase.org/xml/ns/pro/liquibase-pro-latest.xsd">
<preConditions>
</preConditions>
<changeSet id="1" author="shikong">
<!-- <validCheckSum>9:0bed949bc88f6621ba81ce2643e1be0e</validCheckSum> -->
<createTable tableName="wx_official_account" remarks="设备通道信息">
<column name="id" type="bigint unsigned" autoIncrement="true" remarks="主键id">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="app_id" type="varchar(255)" remarks="微信公众号appid">
<constraints nullable="false" unique="true"/>
</column>
<column name="account" type="varchar(255)" remarks="公众号账号">
<constraints nullable="false" />
</column>
<column name="secret" type="varchar(255)" remarks="第三方用户唯一凭证密钥">
<constraints nullable="false" />
</column>
<column name="grant_type" type="varchar(255)" remarks="授权类型"/>
</createTable>
<modifySql dbms="mysql">
<append value="ENGINE=INNODB DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci"/>
</modifySql>
</changeSet>
</databaseChangeLog>

View File

@ -0,0 +1,68 @@
package cn.skcks.wx.official.orm;
import com.mybatisflex.codegen.Generator;
import com.mybatisflex.codegen.config.GlobalConfig;
import com.mybatisflex.core.FlexGlobalConfig;
import com.mybatisflex.core.datasource.FlexDataSource;
import lombok.SneakyThrows;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.sql.DataSource;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Map;
@SpringBootApplication
public class OrmGenerator {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(OrmGenerator.class);
springApplication.setAdditionalProfiles("generator");
springApplication.setWebApplicationType(WebApplicationType.NONE);
springApplication.run(args);
generate();
}
@SneakyThrows
private static String getGitUserName() {
InputStream inputStream = Runtime.getRuntime().exec("git config user.name").getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
return reader.readLine();
}
private static void generate() {
FlexDataSource flexDataSource = FlexGlobalConfig.getDefaultConfig().getDataSource();
Map<String, DataSource> dataSourceMap = flexDataSource.getDataSourceMap();
generateByDataSource(dataSourceMap);
}
private static void generateByDataSource(Map<String, DataSource> dataSourceMap) {
DataSource mysql = dataSourceMap.get("mysql");
//创建配置内容
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setBasePackage("cn.skcks.wx.official.orm");
globalConfig.setSourceDir("./wx-official-orm/src/main/java");
globalConfig.setAuthor(getGitUserName());
globalConfig.setEntityDataSource("mysql");
globalConfig.setEntityGenerateEnable(true);
globalConfig.setEntityWithLombok(true);
globalConfig.setEntityGenerateEnable(true);
//设置生成 mapper
globalConfig.setMapperGenerateEnable(true);
//设置项目的JDK版本项目的JDK为14及以上时建议设置该项小于14则可以不设置
globalConfig.setEntityJdkVersion(17);
// 是否覆盖已存在的文件
globalConfig.setEntityOverwriteEnable(true);
// 不生成的表
globalConfig.setUnGenerateTable("DATABASECHANGELOG", "DATABASECHANGELOGLOCK");
Generator generator = new Generator(mysql, globalConfig);
generator.generate();
}
}

View File

@ -0,0 +1,15 @@
package cn.skcks.wx.official.schema;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SchemaGenerator {
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(SchemaGenerator.class);
springApplication.setAdditionalProfiles("schema");
springApplication.setWebApplicationType(WebApplicationType.NONE);
springApplication.run(args);
}
}

View File

@ -0,0 +1,17 @@
spring:
config:
activate:
on-profile: generator
liquibase:
enabled: false
mybatis-flex:
datasource:
mysql:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 12341234
url: jdbc:mysql://10.10.10.200:3306/wv-official-v2?createDatabaseIfNotExist=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai

View File

@ -0,0 +1,16 @@
spring:
config:
activate:
on-profile: schema
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 12341234
url: jdbc:mysql://10.10.10.200:3306/wv-official-v2?createDatabaseIfNotExist=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
liquibase:
enabled: true
change-log: classpath:/db/changelog.xml
driver-class-name: com.mysql.cj.jdbc.Driver

View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.skcks.wx.official</groupId>
<artifactId>wx-official</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
<artifactId>wx-official-service</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>cn.skcks.wx.official</groupId>
<artifactId>wx-official-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>${springdoc.version}</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-common</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
</dependencies>
</project>

146
wx-official-starter/pom.xml Normal file
View File

@ -0,0 +1,146 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.skcks.wx.official</groupId>
<artifactId>wx-official</artifactId>
<version>0.1.0-SNAPSHOT</version>
</parent>
<artifactId>wx-official-starter</artifactId>
<properties>
<maven.build.timestamp.format>MMddHHmm</maven.build.timestamp.format>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>cn.skcks.wx.official</groupId>
<artifactId>wx-official-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>cn.skcks.wx.official</groupId>
<artifactId>wx-official-service</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>false</skip>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<configuration>
<tag>${project.version}</tag>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>true</filtering>
</testResource>
</testResources>
</build>
</project>

View File

@ -0,0 +1,10 @@
package cn.skcks.wx.official;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class WxOfficialStarter {
public static void main(String[] args) {
SpringApplication.run(WxOfficialStarter.class, args);
}
}

View File

@ -0,0 +1,11 @@
package official;
import cn.skcks.wx.official.WxOfficialStarter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class WxOfficialStarterTest {
public static void main(String[] args) {
SpringApplication.run(WxOfficialStarter.class, args);
}
}