diff --git a/README.en.md b/README.en.md
new file mode 100644
index 00000000..d9473921
--- /dev/null
+++ b/README.en.md
@@ -0,0 +1,7 @@
+# Koala
+
+English | [Chinese](README.md)
+
+## Introduction
+
+Use Spring Boot Like A Koala
\ No newline at end of file
diff --git a/README.md b/README.md
index 1231c5a6..2e0e4c83 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,18 @@
-# Koala 考拉
+# Koala 考拉 :koala:
-[English Documentation](https://github.com/koala-projects/koala/tree/main/docs/en)
+中文 | [English](README.en.md)
## 介绍
-考拉(Koala)是一款免费开源的管理系统脚手架, 基于`Spring Boot`和`Vue`生态开发
+考拉(Koala)是一款免费开源的管理系统脚手架, 基于`Spring Boot`生态开发
-项目提供了多种**自动装配组件**, 只需要引入依赖即可快速进行业务代码编写, 并会持续完善集成更多的配套设施
+它提供了多种**原型**和**自动装配组件**, 可快速从零开始生成整套代码或集成高级功能
-相较于其它同类产品, 考拉的不同之处在于:
+它会持续增加和完善更多的配套设施
+
+## 特性
+
+相较于其它产品, 考拉的不同之处在于:
- 考拉致力于成为程序员的得力**助手**, 而非**替代品**
- 考拉致力于成为便捷/易用/适合二次开发的**脚手架**
@@ -20,84 +24,20 @@
- [考拉示例项目](https://koala.dxl.pink/): 每天定时重置数据
-## 技术栈
-
-### 后端
+## 快速开始
-- Java: 17
-- Spring Boot: 2.6.10
-- MyBatis: 3.5.7
-- Swagger: v3
+开始之前, 您需要有以下技术储备
-### 前端
+- Java 17: 熟悉 Java 基本语法
+- Spring Boot 2.6.10: 熟悉 Spring Boot 基本使用
+- IDE: 至少掌握一种集成开发环境
-- TypeScript: ^4.6.3
-- Vue: ^3.2.33
-- vben-admin: 2.8.0
+请参照: [快速开始文档](docs/guide/getting-started.md)
-## 快速开始
+## 关联项目
-### 增加仓库
-
-```xml
-
-
-
- koala
- koala
-
- https://raw.github.com/koala-projects/maven-repositories/snapshot/
-
-
-
-
-```
-
-### 引入依赖管理
-
-```xml
-
-
-
-
- cn.koala
- koala-dependencies
- 2022.0.0-SNAPSHOT
- pom
- import
-
-
-
-```
-
-### 引入组件
-
-1. 查看[组件列表](#组件), 选择您需要使用的组件, 仔细阅读使用文档
-1. 引入组件依赖, 例如系统管理组件:
-
-```xml
-
-
-
- cn.koala
- koala-system-spring-boot-starter
-
-
-```
-
-## 组件
-
-| 组件名称 | 组件说明 |
-| ------------------------------------------------------------ | ------------------------------------------------------------ |
-| [Web基础组件](https://github.com/koala-projects/koala/tree/main/koala-components/koala-web-spring-boot-starter) | 对部分通用Web功能进行集成和拓展, 例如 OpenApi接口文档 / 通用返回值 / 异常拦截 等 |
-| [授权服务组件](https://github.com/koala-projects/koala/tree/main/koala-components/koala-oauth2-authorization-server-spring-boot-starter) | 基于Spring Authorization Server实现OAuth2授权服务, 拓展了密码模式 |
-| [资源服务组件](https://github.com/koala-projects/koala/tree/main/koala-components/koala-oauth2-resource-server-spring-boot-starter) | 配合授权服务组件使用 |
-| [系统管理组件](https://github.com/koala-projects/koala/tree/main/koala-components/koala-system-spring-boot-starter) | 实现了部分通用中后台管理功能, 例如 字典管理 / 部门管理 / 用户管理 等 |
-| [数据模型组件](https://github.com/koala-projects/koala/tree/main/koala-components/koala-data-model-spring-boot-starter) | 实现了简易数据模型功能, 例如 元数据管理 / 数据管理 等 |
-| [设置组件](https://github.com/koala-projects/koala/tree/main/koala-components/koala-setting-spring-boot-starter) | 实现了简易设置功能, 适用于系统配置热更新等场景 |
-| [办公组件](https://github.com/koala-projects/koala/tree/main/koala-components/koala-office-spring-boot-starter) | 提供了部分办公相关辅助工具, 例如 Excel导出 / PDF读取 等 |
-| [MQTT组件](https://github.com/koala-projects/koala/tree/main/koala-components/koala-integration-mqtt-spring-boot-starter) | 通过简易配置即可快速接入MQTT消息队列 |
-| [钉钉组件](https://github.com/koala-projects/koala/tree/main/koala-components/koala-dingtalk-spring-boot-starter) | 整合了新旧两版钉钉SDK |
+- [koala-admin](https://github.com/koala-projects/koala-admin): 适配考拉的前端项目
+- [eucalyptus](https://github.com/koala-projects/eucalyptus): 代码生成工具
## 联系方式
diff --git a/docs/en/README.md b/docs/en/README.md
deleted file mode 100644
index c371a660..00000000
--- a/docs/en/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Koala
-
-Use Spring Boot Like A Koala
\ No newline at end of file
diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md
new file mode 100644
index 00000000..b97151c6
--- /dev/null
+++ b/docs/guide/getting-started.md
@@ -0,0 +1,114 @@
+# 快速开始
+
+根据实际需求, 可分为如下两种使用方式:
+
+- [原型构建](#原型构建): 利用原型快速生成一整套项目代码, 适合从零开始搭建的业务系统
+- [组件集成](#组件集成): 使用考拉提供的多种组件, 快速增加项目功能, 适合正在编码中或已上线的业务系统
+
+## 原型构建
+
+1. 选择合适的原型, 列表如下:
+
+| 原型代码 | 原型说明 |
+| ------------------------------------------------------------ | ------------------------------------------------------------ |
+| [koala-web-archetype](../../koala-archetypes/koala-web-archetype) | Web项目通用原型, 标准多模块文件结构, 内置 代码检查 / 授权服务 / 系统管理 等功能 |
+
+2. 在Maven配置中增加第三方原型库, 修改`settings.xml`:
+
+```xml
+
+
+ koala
+
+
+ koala-gitee
+ Koala Maven Repository Gitee
+ https://gitee.com/koala-projects/maven-repositories/raw/snapshot/
+
+ true
+ warn
+
+
+
+
+
+```
+
+3. 使用Maven命令生成项目:
+
+```
+mvn archetype:generate ^
+ -DarchetypeGroupId=cn.koala ^
+ -DarchetypeArtifactId=koala-web-archetype ^
+ -DarchetypeVersion=2022.0.1-SNAPSHOT -X ^
+ -DgroupId=cn.houtaroy ^
+ -DartifactId=test ^
+ -Dversion=2022.0.0-SNAPSHOT ^
+ -Dpackage=ch.houtaroy.test
+```
+
+| 参数名称 | 参数描述 | 参数示例 |
+| --------------------- | -------------- | ---------------------- |
+| -DarchetypeGroupId | 原型groupId | cn.koala |
+| -DarchetypeArtifactId | 原型artifactId | koala-web-archetype |
+| -DgroupId | 项目groupId | cn.houtaroy |
+| -DartifactId | 项目artifactId | test |
+| -Dversion | 项目版本 | 2022.0.0-SNAPSHOT |
+| -Dpackage | 项目包名 | cn.houtaroy.test |
+| ... | 原型额外参数 | 额外参数请参照原型文档 |
+
+4. 使用开发工具打开项目, 进行业务系统编码
+
+## 组件集成
+
+1. 选择需要的组件, 列表如下:
+
+| 组件代码 | 组件说明 |
+| ------------------------------------------------------------ | ------------------------------------------------------------ |
+| [koala-web](../../koala-components/koala-web-spring-boot-starter) | 对部分通用Web功能进行集成和拓展, 例如 OpenApi接口文档 / 通用返回值 / 异常拦截 等 |
+| [koala-oauth2-authorization-server](../../koala-components/koala-oauth2-authorization-server-spring-boot-starter) | 基于Spring Authorization Server实现OAuth2授权服务, 拓展了密码模式 |
+| [koala-oauth2-resource-server](../../koala-components/koala-oauth2-resource-server-spring-boot-starter) | 配合授权服务组件使用 |
+| [koala-system](../../koala-components/koala-system-spring-boot-starter) | 实现了部分通用中后台管理功能, 例如 字典管理 / 部门管理 / 用户管理 等 |
+| [koala-data-model](../../koala-components/koala-data-model-spring-boot-starter) | 实现了简易数据模型功能, 例如 元数据管理 / 数据管理 等 |
+| [koala-setting](../../koala-components/koala-setting-spring-boot-starter) | 实现了简易设置功能, 适用于系统配置热更新等场景 |
+| [koala-office](../../koala-components/koala-office-spring-boot-starter) | 提供了部分办公相关辅助工具, 例如 Excel导出 / PDF读取 等 |
+| [koala-integration-mqtt](../../koala-components/koala-integration-mqtt-spring-boot-starter) | 通过简易配置即可快速接入MQTT消息队列 |
+| [koala-dingtalk](../../koala-components/koala-dingtalk-spring-boot-starter) | 整合了新旧两版钉钉SDK |
+
+**强烈建议您在使用组件前仔细阅读文档**
+
+2. 增加考拉提供的Maven仓库和依赖清单, 修改`pom.xml`:
+
+```xml
+
+
+ koala
+ koala
+
+ https://gitee.com/koala-projects/maven-repositories/raw/snapshot/
+
+
+
+
+
+
+ cn.koala
+ koala-dependencies
+ 2022.0.1-SNAPSHOT
+ pom
+ import
+
+
+
+```
+
+3. 引入组件依赖, 以系统管理为例, 修改`pom.xml`:
+
+```xml
+
+
+ cn.koala
+ koala-system-spring-boot-starter
+
+
+```
diff --git a/koala-applications/koala-system-application/pom.xml b/koala-applications/koala-system-application/pom.xml
index cc44ab4e..d07f22d2 100644
--- a/koala-applications/koala-system-application/pom.xml
+++ b/koala-applications/koala-system-application/pom.xml
@@ -21,10 +21,6 @@
com.alibaba
druid-spring-boot-starter
-
- com.github.pagehelper
- pagehelper-spring-boot-starter
-
cn.koala
@@ -35,6 +31,7 @@
mysql
mysql-connector-java
+
org.springframework.boot
spring-boot-starter-test
@@ -52,15 +49,6 @@
org.springframework.boot
spring-boot-maven-plugin
- 2.6.10
-
-
-
- repackage
- build-info
-
-
-
diff --git a/koala-applications/koala-system-application/src/test/java/cn/koala/system/PermissionApiTest.java b/koala-applications/koala-system-application/src/test/java/cn/koala/system/PermissionApiTest.java
index 060cc900..e9cd8b28 100644
--- a/koala-applications/koala-system-application/src/test/java/cn/koala/system/PermissionApiTest.java
+++ b/koala-applications/koala-system-application/src/test/java/cn/koala/system/PermissionApiTest.java
@@ -44,7 +44,7 @@ public void add() throws Exception {
public void list() throws Exception {
mockMvc.perform(get("/api/permissions"))
.andExpect(status().isOk())
- .andExpect(jsonPath("$.data.content", hasSize(12)));
+ .andExpect(jsonPath("$.data.content", hasSize(14)));
}
@Test
diff --git a/koala-archetypes/koala-web-archetype/README.md b/koala-archetypes/koala-web-archetype/README.md
new file mode 100644
index 00000000..38f24e11
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/README.md
@@ -0,0 +1,47 @@
+# Web原型
+
+## 原型结构
+
+```
+business
+ |--business-application
+ |--src.main
+ |--java
+ |--apis
+ |--entities
+ |--repositories
+ |--services
+ |--Application.java
+ |--resources
+ |--database
+ |--data.sql
+ |--schema.sql
+ |--mappers
+ |--application.yml
+ |--pom.xml
+ |--business-parent
+ |--checkstyle
+ |--checkstyle-suppressions.xml
+ |--.editorconfig
+ |--lombok.config
+ |--pom.xml
+```
+
+| 目录名称 | 目录描述 |
+| --------------------------- | ---------------------------- |
+| apis | 接口类包, 下级为接口类文件 |
+| entities | 实体类包, 下级为实体类文件 |
+| repositories | 存储库包, 下级为存储库类文件 |
+| services | 服务包, 下级为服务类文件 |
+| Application.java | 应用启动类 |
+| data.sql | 数据库数据初始化脚本 |
+| schema.sql | 数据库结构初始化脚本 |
+| mappers | MyBatis XML文件目录 |
+| application.yml | 应用配置文件 |
+| checkstyle-suppressions.xml | 代码检查忽略规则配置文件 |
+| .editorconfig | 编辑器配置文件 |
+| lombok.config | Lombok配置文件 |
+
+## 代码生成
+
+[桉树](https://eucalyptus.dxl.pink/)提供了本原型适配的模板, 选择`Koala业务模板`即可生成从接口至XML的全部代码
\ No newline at end of file
diff --git a/koala-archetypes/koala-web-archetype/pom.xml b/koala-archetypes/koala-web-archetype/pom.xml
new file mode 100644
index 00000000..90b713ed
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/pom.xml
@@ -0,0 +1,26 @@
+
+
+ 4.0.0
+ koala-web-archetype
+ 考拉网页应用原型
+ maven-archetype
+
+
+ cn.koala
+ koala-parent
+ ${revision}
+ ../../koala-parent
+
+
+
+
+
+ org.apache.maven.archetype
+ archetype-packaging
+ ${maven-archetype-plugin.version}
+
+
+
+
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml b/koala-archetypes/koala-web-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
new file mode 100644
index 00000000..09a56053
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -0,0 +1,51 @@
+
+
+
+
+ checkstyle
+
+ **/*.xml
+
+
+
+
+
+ .editorconfig
+ .gitignore
+ lombok.config
+ README.md
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.java
+
+
+
+ src/main/resources
+
+ **/*.xml
+ **/*.yml
+
+
+
+ src/main/resources
+
+ **/*.sql
+
+
+
+
+
+
+
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/.editorconfig b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/.editorconfig
new file mode 100644
index 00000000..12caa86b
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/.editorconfig
@@ -0,0 +1,10 @@
+[*]
+charset=utf-8
+end_of_line=crlf
+insert_final_newline=false
+indent_style=space
+indent_size=2
+[*.{js,jsx,ts,tsx,vue}]
+trim_trailing_whitespace = true
+insert_final_newline = true
+
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/pom.xml b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/pom.xml
new file mode 100644
index 00000000..fc4126ef
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/pom.xml
@@ -0,0 +1,33 @@
+
+
+ 4.0.0
+ ${artifactId}
+ ${version}
+
+ ${groupId}
+ ${rootArtifactId}-parent
+ ${version}
+ ../${rootArtifactId}-parent
+
+
+
+ mysql
+ mysql-connector-java
+
+
+
+ com.alibaba
+ druid-spring-boot-starter
+
+
+ com.github.pagehelper
+ pagehelper-spring-boot-starter
+
+
+
+ cn.koala
+ koala-system-spring-boot-starter
+
+
+
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/Application.java b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/Application.java
new file mode 100644
index 00000000..eec19f35
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/Application.java
@@ -0,0 +1,21 @@
+package ${package};
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * @author Houtaroy
+ */
+@SpringBootApplication
+@MapperScan("${package}.repositories")
+public class Application {
+ /**
+ * main方法
+ *
+ * @param args 参数
+ */
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+}
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/apis/ExampleApi.java b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/apis/ExampleApi.java
new file mode 100644
index 00000000..8eab1f7b
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/apis/ExampleApi.java
@@ -0,0 +1,128 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.apis;
+
+import ${package}.entities.ExampleEntity;
+import cn.koala.swagger.PageableAsQueryParam;
+import cn.koala.web.DataResponse;
+import cn.koala.web.Response;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.security.SecurityRequirement;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * 示例表接口
+ *
+ * @author Eucalyptus Generator
+ */
+@RequestMapping("/examples")
+@RestController
+@SecurityRequirement(name = "spring-security")
+@Tag(name = "示例表管理")
+public interface ExampleApi {
+
+ /**
+ * 根据条件分页查询示例表
+ *
+ * @param parameters 查询条件
+ * @param pageable 分页条件
+ * @return 示例表列表
+ */
+ @PreAuthorize("hasAuthority('examples:read')")
+ @Operation(summary = "根据条件分页查询示例表")
+ @ApiResponse(responseCode = "200", description = "成功",
+ content = {@Content(mediaType = "application/json", schema = @Schema(implementation = ExamplePageResult.class))}
+ )
+ @PageableAsQueryParam
+ @GetMapping
+ DataResponse> page(@Parameter(hidden = true) @RequestParam Map parameters,
+ @Parameter(hidden = true) Pageable pageable);
+
+ /**
+ * 查询示例表
+ *
+ * @param id 示例主键
+ * @return 示例表
+ */
+ @PreAuthorize("hasAuthority('examples:read')")
+ @Operation(summary = "根据id查询示例表")
+ @ApiResponse(responseCode = "200", description = "成功",
+ content = {@Content(mediaType = "application/json", schema = @Schema(implementation = ExampleResult.class))}
+ )
+ @Parameter(in = ParameterIn.PATH, name = "id", description = "示例表id", schema = @Schema(type = "string"))
+ @GetMapping("{id}")
+ DataResponse load(@PathVariable("id") String id);
+
+ /**
+ * 创建示例表
+ *
+ * @param entity 示例表数据实体
+ * @return 已创建的示例表
+ */
+ @PreAuthorize("hasAuthority('examples:write')")
+ @Operation(summary = "创建示例表")
+ @ApiResponse(responseCode = "200", description = "成功",
+ content = {@Content(mediaType = "application/json", schema = @Schema(implementation = ExampleResult.class))}
+ )
+ @PostMapping
+ DataResponse create(@RequestBody ExampleEntity entity);
+
+ /**
+ * 更新示例表
+ *
+ * @param id 示例主键
+ * @param entity 示例表数据实体
+ * @return 操作结果
+ */
+ @PreAuthorize("hasAuthority('examples:write')")
+ @Operation(summary = "更新示例表")
+ @ApiResponse(responseCode = "200", description = "成功",
+ content = {@Content(mediaType = "application/json", schema = @Schema(implementation = Response.class))}
+ )
+ @Parameter(in = ParameterIn.PATH, name = "id", description = "示例表id", schema = @Schema(type = "string"))
+ @PutMapping("{id}")
+ Response update(@PathVariable("id") String id, ExampleEntity entity);
+
+ /**
+ * 删除示例表
+ *
+ * @param id 示例主键
+ * @return 操作结果
+ */
+ @PreAuthorize("hasAuthority('examples:write')")
+ @Operation(summary = "更新示例表")
+ @ApiResponse(responseCode = "200", description = "成功",
+ content = {@Content(mediaType = "application/json", schema = @Schema(implementation = Response.class))}
+ )
+ @Parameter(in = ParameterIn.PATH, name = "id", description = "示例表id", schema = @Schema(type = "string"))
+ @DeleteMapping("{id}")
+ Response delete(@PathVariable("id") String id);
+
+ class ExamplePageResult extends DataResponse> {
+
+ }
+
+ class ExampleResult extends DataResponse {
+
+ }
+}
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/apis/ExampleApiImpl.java b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/apis/ExampleApiImpl.java
new file mode 100644
index 00000000..ab8283f8
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/apis/ExampleApiImpl.java
@@ -0,0 +1,56 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.apis;
+
+import ${package}.entities.ExampleEntity;
+import ${package}.services.ExampleService;
+import cn.koala.web.DataResponse;
+import cn.koala.web.Response;
+import lombok.RequiredArgsConstructor;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Map;
+
+/**
+ * 示例表接口实现
+ *
+ * @author Eucalyptus Generator
+ */
+@RestController
+@RequiredArgsConstructor
+public class ExampleApiImpl implements ExampleApi {
+
+ private final ExampleService service;
+
+ @Override
+ public DataResponse> page(Map parameters, Pageable pageable) {
+ return DataResponse.ok(service.list(parameters, pageable));
+ }
+
+ @Override
+ public DataResponse load(String id) {
+ return DataResponse.ok(service.load(id).orElse(null));
+ }
+
+ @Override
+ public DataResponse create(ExampleEntity entity) {
+ service.add(entity);
+ return DataResponse.ok(entity);
+ }
+
+ @Override
+ public Response update(String id, ExampleEntity entity) {
+ entity.setId(id);
+ service.update(entity);
+ return Response.SUCCESS;
+ }
+
+ @Override
+ public Response delete(String id) {
+ service.delete(ExampleEntity.builder().id(id).build());
+ return Response.SUCCESS;
+ }
+}
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/entities/ExampleEntity.java b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/entities/ExampleEntity.java
new file mode 100644
index 00000000..065abfe8
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/entities/ExampleEntity.java
@@ -0,0 +1,30 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.entities;
+
+import cn.koala.persistence.Idable;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 示例表数据实体
+ *
+ * @author Eucalyptus Generator
+ */
+@Data
+@NoArgsConstructor
+@SuperBuilder(toBuilder = true)
+@Schema(description = "示例表数据实体")
+public class ExampleEntity implements Idable {
+ @Schema(description = "示例主键")
+ private String id;
+ @Schema(description = "示例代码")
+ private String code;
+ @Schema(description = "示例名称")
+ private String name;
+ @Schema(description = "示例描述")
+ private String description;
+}
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/repositories/ExampleRepository.java b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/repositories/ExampleRepository.java
new file mode 100644
index 00000000..469f78e8
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/repositories/ExampleRepository.java
@@ -0,0 +1,15 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.repositories;
+
+import ${package}.entities.ExampleEntity;
+import cn.koala.mybatis.PageRepository;
+
+/**
+ * 示例表存储库
+ *
+ * @author Eucalyptus Generator
+ */
+public interface ExampleRepository extends PageRepository {
+}
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/services/ExampleService.java b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/services/ExampleService.java
new file mode 100644
index 00000000..cf274c78
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/java/services/ExampleService.java
@@ -0,0 +1,26 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+package ${package}.services;
+
+import ${package}.entities.ExampleEntity;
+import ${package}.repositories.ExampleRepository;
+import cn.koala.mybatis.AbstractCrudService;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Component;
+
+/**
+ * 示例表服务
+ *
+ * @author Eucalyptus Generator
+ */
+@Component
+@Data
+@EqualsAndHashCode(callSuper = true)
+@RequiredArgsConstructor
+public class ExampleService extends AbstractCrudService {
+ protected final ExampleRepository repository;
+
+}
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/resources/application.yml b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/resources/application.yml
new file mode 100644
index 00000000..7e0ad4ad
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/resources/application.yml
@@ -0,0 +1,60 @@
+server:
+ port: 9999
+ servlet:
+ context-path: /
+spring:
+ main:
+ allow-bean-definition-overriding: true
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/${rootArtifactId}?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
+ username: ${rootArtifactId}
+ password: ${rootArtifactId}
+ druid: #druid连接池配置
+ initial-size: 5
+ min-idle: 5
+ max-wait: 60000
+ max-active: 20
+ time-between-eviction-runs-millis: 60000
+ min-evictable-idle-time-millis: 300000
+ validation-query: SELECT 1
+ test-while-idle: true
+ test-on-borrow: true
+ test-on-return: false
+ pool-prepared-statements: true
+ max-pool-prepared-statement-per-connection-size: 20
+ stat-view-servlet:
+ enabled: true
+ allow: 127.0.0.1
+ login-username: koala
+ login-password: koala
+ reset-enable: true
+ web-stat-filter:
+ enabled: true
+ exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
+ aop-patterns: cn.koala*
+ jackson:
+ serialization:
+ write-dates-as-timestamps: true
+ indent_output: true
+ fail_on_empty_beans: false
+ default-property-inclusion: non_empty
+ deserialization:
+ fail_on_unknown_properties: false
+ data:
+ web:
+ pageable:
+ default-page-size: 50
+ max-page-size: 2000
+
+mybatis:
+ mapper-locations: classpath*:mappers/*Mapper.xml
+ type-handlers-package: cn.koala.mybatis
+ configuration:
+ map-underscore-to-camel-case: true
+
+logging:
+ level:
+ cn.koala: debug
+ file:
+ name: logs/${rootArtifactId}-application.log
\ No newline at end of file
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/resources/database/data.sql b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/resources/database/data.sql
new file mode 100644
index 00000000..d28b1b21
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/resources/database/data.sql
@@ -0,0 +1,54 @@
+insert into t_department
+values ('1', '1', '考拉公司', '公司午餐暂不提供桉树叶', null);
+insert into t_department
+values ('101', '101', '技术部', '技术部', '1');
+
+insert into t_permission
+values ('0', 'personal', '个人服务', '个人服务', 1),
+ ('101', 'dictionary:write', '字典读取', '字典读取', 1),
+ ('102', 'dictionary:read', '字典写入', '字典写入', 1),
+ ('201', 'department:read', '部门读取', '部门读取', 1),
+ ('202', 'department:write', '部门写入', '部门写入', 1),
+ ('301', 'role:read', '角色读取', '角色读取', 1),
+ ('302', 'role:write', '角色写入', '角色写入', 1),
+ ('401', 'permission:read', '权限读取', '权限读取', 1),
+ ('402', 'permission:write', '权限写入', '权限写入', 1),
+ ('501', 'user:read', '用户读取', '用户读取', 1),
+ ('502', 'user:write', '用户写入', '用户写入', 1),
+ ('9001', 'example:write', '示例读取', '示例读取', 0),
+ ('9002', 'example:write', '示例写入', '示例写入', 0);
+
+insert into t_role
+values ('1', 'admin', '系统管理员', null, 1);
+
+insert into t_user
+values ('1', 'admin', '{bcrypt}$2a$10$hG82.yWypJvj0jjJWrwACu166QkM.uLkpk/Yr8vxtKdAyqyd5wUJi', '系统管理员', null, 1);
+
+insert into t_user_department
+values ('1', '1'),
+ ('1', '101');
+
+insert into t_user_role
+values ('1', '1');
+
+insert into t_role_permission
+values ('1', '0'),
+ ('1', '101'),
+ ('1', '102'),
+ ('1', '201'),
+ ('1', '202'),
+ ('1', '301'),
+ ('1', '302'),
+ ('1', '401'),
+ ('1', '402'),
+ ('1', '501'),
+ ('1', '502'),
+ ('1', '9001'),
+ ('1', '9002');
+
+insert into oauth2_registered_client
+values ('vue', 'vue', null, '{bcrypt}$2a$10$t0TBFeS0FuIiHxlwb0bfzuEEjmo7EQXjJykRi8UN/MHMTEW3hsPpW', null, 'vue',
+ 'client_secret_post,client_secret_basic', 'refresh_token,client_credentials,password,authorization_code',
+ 'http://localhost:9999/login/oauth2/code/client', 'all,read,write',
+ '{"@class":"java.util.Collections$UnmodifiableMap","settings.client.require-proof-key":false,"settings.client.require-authorization-consent":false}',
+ '{"@class":"java.util.Collections$UnmodifiableMap","settings.token.reuse-refresh-tokens":true,"settings.token.id-token-signature-algorithm":["org.springframework.security.oauth2.jose.jws.SignatureAlgorithm","RS256"],"settings.token.access-token-time-to-live":["java.time.Duration",86400.000000000],"settings.token.refresh-token-time-to-live":["java.time.Duration",3600.000000000]}')
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/resources/database/schema.sql b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/resources/database/schema.sql
new file mode 100644
index 00000000..5aa632cf
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/resources/database/schema.sql
@@ -0,0 +1,153 @@
+DROP TABLE IF EXISTS t_dictionary;
+CREATE TABLE t_dictionary
+(
+ id VARCHAR(36) NOT NULL COMMENT '主键',
+ code VARCHAR(50) NOT NULL COMMENT '字典代码',
+ name VARCHAR(20) NOT NULL COMMENT '字典名称',
+ description VARCHAR(500) COMMENT '字典描述',
+ PRIMARY KEY (id)
+) COMMENT = '字典';
+
+DROP TABLE IF EXISTS t_dictionary_item;
+CREATE TABLE t_dictionary_item
+(
+ id VARCHAR(36) NOT NULL COMMENT '主键',
+ name VARCHAR(20) COMMENT '字典项名称',
+ content VARCHAR(50) COMMENT '字典项内容',
+ dictionary_id VARCHAR(36) COMMENT '字典id',
+ PRIMARY KEY (id)
+) COMMENT = '字典项';
+
+DROP TABLE IF EXISTS t_department;
+CREATE TABLE t_department
+(
+ id VARCHAR(36) NOT NULL COMMENT '部门ID',
+ code VARCHAR(50) COMMENT '部门代码',
+ name VARCHAR(20) COMMENT '部门名称',
+ description VARCHAR(500) COMMENT '部门描述',
+ parent_id VARCHAR(36) COMMENT '上级部门ID',
+ PRIMARY KEY (id)
+) COMMENT = '部门';
+
+DROP TABLE IF EXISTS t_permission;
+CREATE TABLE t_permission
+(
+ id VARCHAR(36) NOT NULL COMMENT '主键',
+ code VARCHAR(50) NOT NULL COMMENT '权限代码',
+ name VARCHAR(20) NOT NULL COMMENT '权限名称',
+ description VARCHAR(500) COMMENT '权限描述',
+ is_system INT NOT NULL DEFAULT 0 COMMENT '是否系统',
+ PRIMARY KEY (id)
+) COMMENT = '权限';
+
+DROP TABLE IF EXISTS t_role;
+CREATE TABLE t_role
+(
+ id VARCHAR(36) NOT NULL COMMENT '角色主键',
+ code VARCHAR(50) NOT NULL COMMENT '角色代码',
+ name VARCHAR(20) NOT NULL COMMENT '角色名称',
+ description VARCHAR(500) COMMENT '角色描述',
+ is_system INT NOT NULL DEFAULT 0 COMMENT '是否系统',
+ PRIMARY KEY (id)
+) COMMENT = '角色';
+
+DROP TABLE IF EXISTS t_user;
+CREATE TABLE t_user
+(
+ id VARCHAR(36) NOT NULL COMMENT '用户ID',
+ username VARCHAR(50) NOT NULL COMMENT '用户登录名',
+ password VARCHAR(500) NOT NULL COMMENT '用户密码',
+ nickname VARCHAR(20) NOT NULL COMMENT '用户昵称',
+ avatar VARCHAR(500) COMMENT '用户头像',
+ is_system INT NOT NULL DEFAULT 0 COMMENT '是否系统',
+ PRIMARY KEY (id)
+) COMMENT = '用户';
+
+
+DROP TABLE IF EXISTS t_user_role;
+CREATE TABLE t_user_role
+(
+ user_id VARCHAR(36) NOT NULL COMMENT '用户id',
+ role_id VARCHAR(36) NOT NULL COMMENT '角色id'
+) COMMENT = '用户角色关系';
+
+DROP TABLE IF EXISTS t_user_department;
+CREATE TABLE t_user_department
+(
+ user_id VARCHAR(36) NOT NULL COMMENT '用户ID',
+ department_id VARCHAR(36) NOT NULL COMMENT '部门ID'
+) COMMENT = '用户部门关系';
+
+DROP TABLE IF EXISTS t_role_permission;
+CREATE TABLE t_role_permission
+(
+ role_id VARCHAR(36) NOT NULL COMMENT '角色id',
+ permission_id VARCHAR(36) NOT NULL COMMENT '权限id'
+) COMMENT = '角色权限关系';
+
+DROP TABLE IF EXISTS oauth2_registered_client;
+CREATE TABLE oauth2_registered_client
+(
+ id varchar(100) NOT NULL,
+ client_id varchar(100) NOT NULL,
+ client_id_issued_at timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
+ client_secret varchar(200) DEFAULT NULL,
+ client_secret_expires_at datetime DEFAULT NULL,
+ client_name varchar(200) NOT NULL,
+ client_authentication_methods varchar(1000) NOT NULL,
+ authorization_grant_types varchar(1000) NOT NULL,
+ redirect_uris varchar(1000) DEFAULT NULL,
+ scopes varchar(1000) NOT NULL,
+ client_settings varchar(2000) NOT NULL,
+ token_settings varchar(2000) NOT NULL,
+ PRIMARY KEY (id)
+);
+
+DROP TABLE IF EXISTS oauth2_authorization;
+CREATE TABLE oauth2_authorization
+(
+ id varchar(100) NOT NULL,
+ registered_client_id varchar(100) NOT NULL,
+ principal_name varchar(200) NOT NULL,
+ authorization_grant_type varchar(100) NOT NULL,
+ attributes blob DEFAULT NULL,
+ state varchar(500) DEFAULT NULL,
+ authorization_code_value blob DEFAULT NULL,
+ authorization_code_issued_at datetime DEFAULT NULL,
+ authorization_code_expires_at datetime DEFAULT NULL,
+ authorization_code_metadata blob DEFAULT NULL,
+ access_token_value blob DEFAULT NULL,
+ access_token_issued_at datetime DEFAULT NULL,
+ access_token_expires_at datetime DEFAULT NULL,
+ access_token_metadata blob DEFAULT NULL,
+ access_token_type varchar(100) DEFAULT NULL,
+ access_token_scopes varchar(1000) DEFAULT NULL,
+ oidc_id_token_value blob DEFAULT NULL,
+ oidc_id_token_issued_at datetime DEFAULT NULL,
+ oidc_id_token_expires_at datetime DEFAULT NULL,
+ oidc_id_token_metadata blob DEFAULT NULL,
+ refresh_token_value blob DEFAULT NULL,
+ refresh_token_issued_at datetime DEFAULT NULL,
+ refresh_token_expires_at datetime DEFAULT NULL,
+ refresh_token_metadata blob DEFAULT NULL,
+ PRIMARY KEY (id)
+);
+
+DROP TABLE IF EXISTS oauth2_authorization_consent;
+CREATE TABLE oauth2_authorization_consent
+(
+ registered_client_id varchar(100) NOT NULL,
+ principal_name varchar(200) NOT NULL,
+ authorities varchar(1000) NOT NULL,
+ PRIMARY KEY (registered_client_id, principal_name)
+);
+
+DROP TABLE IF EXISTS t_example;
+CREATE TABLE t_example
+(
+ id VARCHAR(36) NOT NULL COMMENT '示例主键',
+ code VARCHAR(50) NOT NULL COMMENT '示例代码',
+ name VARCHAR(20) NOT NULL COMMENT '示例名称',
+ description VARCHAR(2000) COMMENT '示例描述',
+ PRIMARY KEY (id)
+) COMMENT = '示例表';
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/resources/mappers/ExampleMapper.xml b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/resources/mappers/ExampleMapper.xml
new file mode 100644
index 00000000..9d2d690e
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-application/src/main/resources/mappers/ExampleMapper.xml
@@ -0,0 +1,55 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+
+
+
+
+
+ select t.id, t.code, t.name, t.description
+ from t_example t
+
+
+
+
+
+
+
+ insert into t_example
+ values (${symbol_pound}{id}, ${symbol_pound}{code}, ${symbol_pound}{name}, ${symbol_pound}{description})
+
+
+
+ update t_example
+ set code = ${symbol_pound}{code},
+ name = ${symbol_pound}{name},
+ description = ${symbol_pound}{description}
+ where id = ${symbol_pound}{id}
+
+
+
+ delete
+ from t_example
+ where id = ${symbol_pound}{id}
+
+
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-parent/pom.xml b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-parent/pom.xml
new file mode 100644
index 00000000..983027db
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/__rootArtifactId__-parent/pom.xml
@@ -0,0 +1,149 @@
+
+
+ 4.0.0
+ ${groupId}
+ ${artifactId}
+ ${version}
+ pom
+
+
+ cn.koala
+ koala-parent
+ 2022.0.1-SNAPSHOT
+
+
+
+
+ ${version}
+
+
+
+
+ koala
+ koala
+
+ https://gitee.com/koala-projects/maven-repositories/raw/snapshot/
+
+
+
+
+
+ koala
+ koala
+
+ https://gitee.com/koala-projects/maven-repositories/raw/snapshot/
+
+
+
+
+
+
+ ${groupId}
+ ${rootArtifactId}-application
+ ${version}
+
+
+
+
+
+ ${project.artifactId}-${project.version}
+
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+ ${maven-flatten-plugin.version}
+ true
+
+
+
+ flatten
+ process-resources
+
+ flatten
+
+
+ true
+ bom
+ true
+
+ expand
+ remove
+ remove
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ ${maven-checkstyle-plugin.version}
+
+ rulesets/alibaba_checks.xml
+ true
+ true
+ true
+ ../checkstyle/checkstyle-suppressions.xml
+ checkstyle.suppressions.file
+
+
+
+ checkstyle-validation
+ validate
+
+ check
+
+
+
+
+
+ cn.koala
+ koala-checkstyle
+ ${revision}
+
+
+
+
+ org.apache.maven.plugins
+ maven-pmd-plugin
+ ${maven-pmd-plugin.version}
+
+ ${project.build.sourceEncoding}
+ ${java.version}
+ true
+
+ rulesets/java/ali-comment.xml
+ rulesets/java/ali-concurrent.xml
+ rulesets/java/ali-constant.xml
+ rulesets/java/ali-exception.xml
+ rulesets/java/ali-flowcontrol.xml
+ rulesets/java/ali-naming.xml
+ rulesets/java/ali-oop.xml
+ rulesets/java/ali-orm.xml
+ rulesets/java/ali-other.xml
+ rulesets/java/ali-set.xml
+
+
+
+
+ validate
+
+ check
+
+
+ ${basedir}/exclude-pmd.properties
+
+
+
+
+
+ cn.koala
+ koala-checkstyle
+ ${revision}
+
+
+
+
+
+
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/checkstyle/checkstyle-suppressions.xml b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/checkstyle/checkstyle-suppressions.xml
new file mode 100644
index 00000000..7774a546
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/checkstyle/checkstyle-suppressions.xml
@@ -0,0 +1,15 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/lombok.config b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/lombok.config
new file mode 100644
index 00000000..b180469f
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/lombok.config
@@ -0,0 +1,6 @@
+lombok.log.fieldName=LOGGER
+lombok.log.fieldIsStatic=true
+lombok.toString.doNotUseGetters=true
+lombok.equalsAndHashCode.doNotUseGetters=true
+lombok.addLombokGeneratedAnnotation = true
+config.stopBubbling=true
diff --git a/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/pom.xml b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/pom.xml
new file mode 100644
index 00000000..efea2cae
--- /dev/null
+++ b/koala-archetypes/koala-web-archetype/src/main/resources/archetype-resources/pom.xml
@@ -0,0 +1,8 @@
+
+
+ 4.0.0
+ ${groupId}
+ ${artifactId}
+ ${version}
+ pom
+
diff --git a/koala-archetypes/pom.xml b/koala-archetypes/pom.xml
new file mode 100644
index 00000000..831d99d6
--- /dev/null
+++ b/koala-archetypes/pom.xml
@@ -0,0 +1,20 @@
+
+
+ 4.0.0
+ koala-archetypes
+ pom
+ ${revision}
+ 考拉原型
+
+ cn.koala
+ koala
+ ${revision}
+ ../pom.xml
+
+
+
+ koala-web-archetype
+
+
\ No newline at end of file
diff --git a/koala-components/koala-data-model-spring-boot-starter/README.md b/koala-components/koala-data-model-spring-boot-starter/README.md
index 9be9c05d..bbdf2e02 100644
--- a/koala-components/koala-data-model-spring-boot-starter/README.md
+++ b/koala-components/koala-data-model-spring-boot-starter/README.md
@@ -1,6 +1,6 @@
# 数据模型组件
-简易的数据模型功能, 自动装配了基于MyBatis的实现, 提供REST接口
+实现了简易数据模型功能
## 概念
@@ -9,25 +9,12 @@
- 数据元(Data Element): 单个数据项
- 数据(Data): 数据内容
-## 引入依赖
-
-```xml
-
-
-
- cn.koala
- koala-data-model-spring-boot-starter
- 2022.0.0-SNAPSHOT
-
-
-```
-
## 初始化数据库
当前仅支持MySQL数据库, 推荐版本为8.0.X
-使用脚本`koala-data-model-core/schema-mysql.sql`初始化数据库
+1. 执行[数据库结构脚本](../../koala-domains/koala-data-model/koala-data-model-core/src/main/resources/schema-mysql.sql)
## 接口文档
-组件集成了`springdoc-openapi-ui`, 通过请求`swagger-ui/index.html`访问接口文档
\ No newline at end of file
+组件集成了`springdoc-openapi-ui`, 通过访问`swagger-ui/index.html`阅读接口文档
\ No newline at end of file
diff --git a/koala-components/koala-dingtalk-spring-boot-starter/README.md b/koala-components/koala-dingtalk-spring-boot-starter/README.md
index c52dfe8b..3174361a 100644
--- a/koala-components/koala-dingtalk-spring-boot-starter/README.md
+++ b/koala-components/koala-dingtalk-spring-boot-starter/README.md
@@ -1,19 +1,6 @@
-# koala-dingtalk-spring-boot-starter
+# 钉钉组件
-基于Druid拓展启动类, 提供查询语句解析和SQL检查功能
-
-## 引入依赖
-
-```xml
-
-
-
- cn.koala
- koala-dingtalk-spring-boot-starter
- 2022.0.0-SNAPSHOT
-
-
-```
+整合了新旧两版钉钉SDK
## 书写配置
@@ -24,7 +11,7 @@ ding-talk:
app-secret: secret
```
-## 使用旧版SDK
+## 旧版SDK
自动装配了`DingtalkService`的实现`InMemoryDingtalkService`
@@ -55,7 +42,7 @@ public class MyService {
旧版SDK自动处理了用户token
-## 使用新版SDK
+## 新版SDK
新版SDK调用时与旧版有所不同, 故提供`client`方法用于获取新版请求客户端, 之后请自行请求:
diff --git a/koala-components/koala-druid-spring-boot-starter/README.md b/koala-components/koala-druid-spring-boot-starter/README.md
index a86afd09..2539bee7 100644
--- a/koala-components/koala-druid-spring-boot-starter/README.md
+++ b/koala-components/koala-druid-spring-boot-starter/README.md
@@ -10,7 +10,7 @@
cn.koala
koala-druid-spring-boot-starter
- 2022.0.0-SNAPSHOT
+ 2022.0.1-SNAPSHOT
```
diff --git a/koala-components/koala-integration-mqtt-spring-boot-starter/README.md b/koala-components/koala-integration-mqtt-spring-boot-starter/README.md
index 959ef677..519c63e3 100644
--- a/koala-components/koala-integration-mqtt-spring-boot-starter/README.md
+++ b/koala-components/koala-integration-mqtt-spring-boot-starter/README.md
@@ -1,19 +1,6 @@
-# koala-integration-mqtt-spring-boot-starter
+# MQTT组件
-结合Spring Integration实现的MQTT启动类
-
-## 引入依赖
-
-```xml
-
-
-
- cn.koala
- koala-integration-mqtt-spring-boot-starter
- 2022.0.0-SNAPSHOT
-
-
-```
+通过简易配置即可快速接入MQTT消息队列
## 书写配置
diff --git a/koala-components/koala-oauth2-authorization-server-spring-boot-starter/README.md b/koala-components/koala-oauth2-authorization-server-spring-boot-starter/README.md
index d7d277c1..d3186dd4 100644
--- a/koala-components/koala-oauth2-authorization-server-spring-boot-starter/README.md
+++ b/koala-components/koala-oauth2-authorization-server-spring-boot-starter/README.md
@@ -1,19 +1,6 @@
-# 考拉授权服务
+# 授权服务组件
-基于Spring Security 5, 提供OAuth2密码模式授权
-
-## 引入依赖
-
-```xml
-
-
-
- cn.koala
- koala-oauth2-authorization-server-spring-boot-starter
- 2022.0.0-SNAPSHOT
-
-
-```
+基于Spring Authorization Server实现OAuth2授权服务, 拓展了密码模式
## 配置
diff --git a/koala-components/koala-office-spring-boot-starter/README.md b/koala-components/koala-office-spring-boot-starter/README.md
index e25af4ec..d8189e44 100644
--- a/koala-components/koala-office-spring-boot-starter/README.md
+++ b/koala-components/koala-office-spring-boot-starter/README.md
@@ -1,26 +1,14 @@
# 办公组件
-提供办公文档部分操作
-
-## 引入依赖
-
-```xml
-
-
- cn.koala
- koala-office-spring-boot-starter
- 2022.0.0-SNAPSHOT
-
-
-```
+提供了部分办公相关辅助工具
## Excel
-组件内置了[EasyExcel](https://github.com/alibaba/easyexcel)
+组件内置了[EasyExcel](https://github.com/alibaba/easyexcel)和`ExcelHelper`
### 下载
-组件提供了`ExcelHelper`, 用于将文件直接推送至前端下载:
+直接推送至前端下载:
```java
public class DownloadTest {
@@ -39,8 +27,7 @@ public class DownloadTest {
## 文档转换
-当前文档转换使用[JODConverte](https://github.com/sbraconnier/jodconverter)实现,
-需要在服务器安装[LibreOffice](https://zh-cn.libreoffice.org/)或[Apache OpenOffice](https://www.openoffice.org/zh-cn/)
+使用[JODConverte](https://github.com/sbraconnier/jodconverter)实现, 需在运行服务器安装[LibreOffice](https://zh-cn.libreoffice.org/)或[Apache OpenOffice](https://www.openoffice.org/zh-cn/)
### 配置
@@ -60,7 +47,6 @@ jodconverter:
### 转换
```java
-
@Component
@RequiredArgsConstructor
public class Service {
diff --git a/koala-components/koala-sensitive-word-spring-boot-starter/README.md b/koala-components/koala-sensitive-word-spring-boot-starter/README.md
index f16c674c..915ebd17 100644
--- a/koala-components/koala-sensitive-word-spring-boot-starter/README.md
+++ b/koala-components/koala-sensitive-word-spring-boot-starter/README.md
@@ -16,7 +16,7 @@
cn.koala
koala-sensitive-word-spring-boot-starter
- 2022.0.0-SNAPSHOT
+ 2022.0.1-SNAPSHOT
```
diff --git a/koala-components/koala-setting-spring-boot-starter/README.md b/koala-components/koala-setting-spring-boot-starter/README.md
index 64ed6578..6a0ae13a 100644
--- a/koala-components/koala-setting-spring-boot-starter/README.md
+++ b/koala-components/koala-setting-spring-boot-starter/README.md
@@ -1,30 +1,16 @@
# 设置组件
-简易的设置功能, 基于[数据模型组件](https://github.com/Houtaroy/koala/tree/main/koala-components/koala-data-model-spring-boot-starter)
-
-提供例如系统配置热更新等能力
-
-## 引入依赖
-
-```xml
-
-
- cn.koala
- koala-setting-spring-boot-starter
- 2022.0.0-SNAPSHOT
-
-
-```
+基于[数据模型组件](../koala-data-model-spring-boot-starter), 实现了简易设置功能, 适用于系统配置热更新等场景
## 初始化数据库
当前仅支持MySQL数据库, 推荐版本为8.0.X
-使用脚本`koala-data-model-core/schema-mysql.sql`初始化数据库
+1. 执行[数据库结构脚本](../../koala-domains/koala-data-model/koala-data-model-core/src/main/resources/schema-mysql.sql)
## 接口文档
-组件集成了`springdoc-openapi-ui`, 通过请求`swagger-ui/index.html`访问接口文档
+组件集成了`springdoc-openapi-ui`, 通过访问`swagger-ui/index.html`阅读接口文档
## 快速获取设置内容
diff --git a/koala-components/koala-system-spring-boot-starter/README.md b/koala-components/koala-system-spring-boot-starter/README.md
index 0ba9c0b9..503ebae3 100644
--- a/koala-components/koala-system-spring-boot-starter/README.md
+++ b/koala-components/koala-system-spring-boot-starter/README.md
@@ -1,30 +1,26 @@
# 系统管理组件
-实现了部分通用中后台管理功能, 包含: 字典管理 / 部门管理 / 角色管理 / 用户管理 / 个人服务
-
-## 引入依赖
-
-```xml
-
-
-
- cn.koala
- koala-system-spring-boot-starter
- 2022.0.0-SNAPSHOT
-
-
-```
+实现了部分通用中后台管理功能
## 初始化数据库
当前仅支持MySQL数据库, 推荐版本为8.0.X
-使用脚本[schema-mysql.sql](https://github.com/koala-projects/koala/blob/main/koala-domains/koala-system/src/main/resources/schema-mysql.sql)
-初始化数据库结构
+1. 执行[数据库结构脚本](../../koala-domains/koala-system/src/main/resources/schema-mysql.sql)
+2. 执行[数据库数据脚本](../../koala-domains/koala-system/src/main/resources/data-mysql.sql)
+
+## 配置
+
+```yaml
+koala:
+ system:
+ default-password: "koala-projects"
+```
-使用脚本[data-mysql.sql](https://github.com/koala-projects/koala/blob/main/koala-domains/koala-system/src/main/resources/data-mysql.sql)
-增加演示数据
+| 配置代码 | 配置名称 | 配置类型 | 配置默认值 |
+| ------------------------------- | -------------- | -------- | ---------------- |
+| `koala.system.default-password` | 新用户默认密码 | 字符串 | "koala-projects" |
## 接口文档
-组件集成了`springdoc-openapi-ui`, 通过请求`swagger-ui/index.html`访问接口文档
\ No newline at end of file
+组件集成了`springdoc-openapi-ui`, 通过访问`swagger-ui/index.html`阅读接口文档
\ No newline at end of file
diff --git a/koala-components/koala-system-spring-boot-starter/pom.xml b/koala-components/koala-system-spring-boot-starter/pom.xml
index c0f95304..68b2cea8 100644
--- a/koala-components/koala-system-spring-boot-starter/pom.xml
+++ b/koala-components/koala-system-spring-boot-starter/pom.xml
@@ -16,6 +16,10 @@
org.mybatis.spring.boot
mybatis-spring-boot-starter
+
+ com.github.pagehelper
+ pagehelper-spring-boot-starter
+
cn.koala
diff --git a/koala-components/koala-web-spring-boot-starter/README.md b/koala-components/koala-web-spring-boot-starter/README.md
new file mode 100644
index 00000000..4a27c866
--- /dev/null
+++ b/koala-components/koala-web-spring-boot-starter/README.md
@@ -0,0 +1,46 @@
+# Web组件
+
+对部分通用Web功能进行集成和拓展
+
+## 通用返回值
+
+```java
+public class TestApi {
+
+ public Response res() {
+ return Response.SUCCESS;
+ }
+
+ public DataResponse data() {
+ return DataResponse.ok("data");
+ }
+}
+```
+
+## 统一异常拦截
+
+所有异常会被捕获, 并返回以下结构错误信息:
+
+```json
+{
+ "code": 500,
+ "message": "xxx"
+}
+```
+
+## JSON 拓展
+
+增加 LocalDateTime 和时间戳的相互转换
+
+```java
+public class TestEntity {
+ private LocalDateTime date;
+}
+```
+
+```json
+{
+ "date": 1668005229000
+}
+```
+
diff --git a/koala-infrastructures/koala-dependencies/pom.xml b/koala-infrastructures/koala-dependencies/pom.xml
index fc136ce5..85040d3f 100644
--- a/koala-infrastructures/koala-dependencies/pom.xml
+++ b/koala-infrastructures/koala-dependencies/pom.xml
@@ -16,7 +16,7 @@
2.0.0
- 10.0
+ 10.4
2.11.0
3.6.1
1.3.35
@@ -46,9 +46,10 @@
0.4.17
3.0.3.1
- 3.1.2
+ 3.2.0
3.16.0
2.22.2
+ 3.2.1
@@ -245,11 +246,6 @@
koala-integration-mqtt-spring-boot-starter
${revision}
-
- cn.koala
- koala-jdbc-spring-boot-starter
- ${revision}
-
cn.koala
koala-oauth2-authorization-server-spring-boot-starter
@@ -275,11 +271,6 @@
koala-setting-spring-boot-starter
${revision}
-
- cn.koala
- koala-system-management-spring-boot-starter
- ${revision}
-
cn.koala
koala-web-spring-boot-starter
@@ -311,11 +302,6 @@
koala-druid
${revision}
-
- cn.koala
- koala-eucalyptus
- ${revision}
-
cn.koala
koala-mqtt
@@ -341,26 +327,11 @@
koala-system
${revision}
-
- cn.koala
- koala-system-management
- ${revision}
-
cn.koala
koala-system-spring-boot-starter
${revision}
-
- cn.koala
- koala-system-management-mybatis-core
- ${revision}
-
-
- cn.koala
- koala-system-management-mybatis-mapper-mysql
- ${revision}
-
cn.koala
koala-template
@@ -377,16 +348,6 @@
koala-database-api
${revision}
-
- cn.koala
- koala-eucalyptus-api
- ${revision}
-
-
- cn.koala
- koala-jdbc-api
- ${revision}
-
cn.koala
koala-setting-api
@@ -397,11 +358,6 @@
koala-system-api
${revision}
-
- cn.koala
- koala-system-management-api
- ${revision}
-
cn.koala
@@ -459,13 +415,129 @@
+ ${project.artifactId}-${project.version}
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot.version}
+
+
+
+ repackage
+ build-info
+
+
+
+
maven-surefire-plugin
${maven-surefire-plugin.version}
+
+ org.apache.maven.plugins
+ maven-archetype-plugin
+ ${maven-archetype-plugin.version}
+
+
+
+ org.codehaus.mojo
+ flatten-maven-plugin
+ ${maven-flatten-plugin.version}
+ true
+
+
+
+ flatten
+ process-resources
+
+ flatten
+
+
+ true
+ bom
+ true
+
+ expand
+ remove
+ remove
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-checkstyle-plugin
+ ${maven-checkstyle-plugin.version}
+
+ rulesets/alibaba_checks.xml
+ true
+ true
+ true
+ ./checkstyle/checkstyle-suppressions.xml
+ checkstyle.suppressions.file
+
+
+
+ checkstyle-validation
+ validate
+
+ check
+
+
+
+
+
+ cn.koala
+ koala-checkstyle
+ ${revision}
+
+
+
+
+ org.apache.maven.plugins
+ maven-pmd-plugin
+ ${maven-pmd-plugin.version}
+
+ ${project.build.sourceEncoding}
+ ${java.version}
+ true
+
+ rulesets/java/ali-comment.xml
+ rulesets/java/ali-concurrent.xml
+ rulesets/java/ali-constant.xml
+ rulesets/java/ali-exception.xml
+ rulesets/java/ali-flowcontrol.xml
+ rulesets/java/ali-naming.xml
+ rulesets/java/ali-oop.xml
+ rulesets/java/ali-orm.xml
+ rulesets/java/ali-other.xml
+ rulesets/java/ali-set.xml
+
+
+
+
+ validate
+
+ check
+
+
+ ${basedir}/exclude-pmd.properties
+
+
+
+
+
+ cn.koala
+ koala-checkstyle
+ ${revision}
+
+
+
+
\ No newline at end of file
diff --git a/koala-infrastructures/koala-mybatis/exclude-pmd.properties b/koala-infrastructures/koala-mybatis/exclude-pmd.properties
deleted file mode 100644
index 2823336f..00000000
--- a/koala-infrastructures/koala-mybatis/exclude-pmd.properties
+++ /dev/null
@@ -1 +0,0 @@
-cn.koala.mybatis.PageEnhancedHelper=AbstractClassShouldStartWithAbstractNamingRule
\ No newline at end of file
diff --git a/koala-infrastructures/koala-utils/README.md b/koala-infrastructures/koala-utils/README.md
index 113d4fb1..cbd7f180 100644
--- a/koala-infrastructures/koala-utils/README.md
+++ b/koala-infrastructures/koala-utils/README.md
@@ -9,7 +9,7 @@
cn.koala
koala-utils
- 2022.0.0-SNAPSHOT
+ 2022.0.1-SNAPSHOT
```
diff --git a/koala-parent/pom.xml b/koala-parent/pom.xml
index 4ba28d5f..bf0af3d1 100644
--- a/koala-parent/pom.xml
+++ b/koala-parent/pom.xml
@@ -6,117 +6,11 @@
koala-parent
pom
Koala Parent
+
cn.koala
koala-dependencies
${revision}
../koala-infrastructures/koala-dependencies/pom.xml
-
-
- ${project.artifactId}-${project.version}
-
-
- org.codehaus.mojo
- flatten-maven-plugin
- ${maven-flatten-plugin.version}
- true
-
-
-
- flatten
- process-resources
-
- flatten
-
-
- true
- bom
- true
-
- expand
- remove
- remove
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-checkstyle-plugin
- ${maven-checkstyle-plugin.version}
-
- rulesets/alibaba_checks.xml
- UTF-8
- true
- true
- true
- ./checkstyle/checkstyle-suppressions.xml
- checkstyle.suppressions.file
-
-
-
- checkstyle-validation
- validate
-
- check
-
-
-
-
-
- com.puppycrawl.tools
- checkstyle
- ${checkstyle.version}
-
-
- cn.koala
- koala-checkstyle
- ${revision}
-
-
-
-
- org.apache.maven.plugins
- maven-pmd-plugin
- ${maven-pmd-plugin.version}
-
- ${project.build.sourceEncoding}
- ${java.version}
- true
-
- rulesets/java/ali-comment.xml
- rulesets/java/ali-concurrent.xml
- rulesets/java/ali-constant.xml
- rulesets/java/ali-exception.xml
- rulesets/java/ali-flowcontrol.xml
- rulesets/java/ali-naming.xml
- rulesets/java/ali-oop.xml
- rulesets/java/ali-orm.xml
- rulesets/java/ali-other.xml
- rulesets/java/ali-set.xml
-
-
-
-
- validate
-
- check
-
-
- ${basedir}/exclude-pmd.properties
-
-
-
-
-
- cn.koala
- koala-checkstyle
- ${revision}
-
-
-
-
-
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 6bb88bb3..71af1ad8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
Koala
- 2022.0.0-SNAPSHOT
+ 2022.0.1-SNAPSHOT
17
${java.version}
${java.version}
@@ -20,28 +20,6 @@
1.2.7
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
- false
-
-
-
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
- false
-
-
-
-
koala-projects
@@ -58,6 +36,7 @@
koala-applications
+ koala-archetypes
koala-components
koala-domains
koala-facades