Xy преди 6 месеца
родител
ревизия
2016c8b9df
променени са 44 файла, в които са добавени 1908 реда и са изтрити 0 реда
  1. 1 0
      pom.xml
  2. 16 0
      tz-gateway/src/main/resources/application.yaml
  3. 35 0
      tz-module-pipeline/pom.xml
  4. 38 0
      tz-module-pipeline/tz-module-pipeline-api/pom.xml
  5. 14 0
      tz-module-pipeline/tz-module-pipeline-api/src/main/java/cn/start/tz/module/pipeline/enums/ErrorCodeConstants.java
  6. 38 0
      tz-module-pipeline/tz-module-pipeline-api/src/test/java/cn/tz/cloud/AppTest.java
  7. BIN
      tz-module-pipeline/tz-module-pipeline-api/target/classes/cn/start/tz/module/pipeline/enums/ErrorCodeConstants.class
  8. 150 0
      tz-module-pipeline/tz-module-pipeline-biz/pom.xml
  9. 17 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/PipelineServerApplication.java
  10. 25 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/controller/admin/pipelineTestController.java
  11. 95 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/controller/admin/testgroup/TestGroupController.java
  12. 25 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/controller/admin/testgroup/vo/TestGroupPageReqVO.java
  13. 34 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/controller/admin/testgroup/vo/TestGroupRespVO.java
  14. 22 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/controller/admin/testgroup/vo/TestGroupSaveReqVO.java
  15. 25 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/controller/app/AppPipelineTestController.java
  16. 41 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/dal/dataobject/testgroup/TestGroupDO.java
  17. 29 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/dal/mysql/testgroup/TestGroupMapper.java
  18. 40 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/framework/security/config/SecurityConfiguration.java
  19. 56 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/service/testgroup/TestGroupService.java
  20. 75 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/service/testgroup/TestGroupServiceImpl.java
  21. 179 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/resources/application-hsd.yaml
  22. 179 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/resources/application-hst.yaml
  23. 120 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/resources/application.yaml
  24. 76 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/resources/logback-spring.xml
  25. 12 0
      tz-module-pipeline/tz-module-pipeline-biz/src/main/resources/mapper/testgroup/TestGroupMapper.xml
  26. 179 0
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/application-hsd.yaml
  27. 179 0
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/application-hst.yaml
  28. 120 0
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/application.yaml
  29. BIN
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/PipelineServerApplication.class
  30. BIN
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/controller/admin/pipelineTestController.class
  31. BIN
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/controller/admin/testgroup/TestGroupController.class
  32. BIN
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/controller/admin/testgroup/vo/TestGroupPageReqVO.class
  33. BIN
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/controller/admin/testgroup/vo/TestGroupRespVO.class
  34. BIN
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/controller/admin/testgroup/vo/TestGroupSaveReqVO.class
  35. BIN
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/controller/app/AppPipelineTestController.class
  36. BIN
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/dal/dataobject/testgroup/TestGroupDO$TestGroupDOBuilder.class
  37. BIN
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/dal/dataobject/testgroup/TestGroupDO.class
  38. BIN
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/dal/mysql/testgroup/TestGroupMapper.class
  39. BIN
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/framework/security/config/SecurityConfiguration$1.class
  40. BIN
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/framework/security/config/SecurityConfiguration.class
  41. BIN
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/service/testgroup/TestGroupService.class
  42. BIN
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/service/testgroup/TestGroupServiceImpl.class
  43. 76 0
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/logback-spring.xml
  44. 12 0
      tz-module-pipeline/tz-module-pipeline-biz/target/classes/mapper/testgroup/TestGroupMapper.xml

+ 1 - 0
pom.xml

@@ -20,6 +20,7 @@
         <module>tz-module-laboratory</module>
         <module>tz-module-pressure</module>
         <module>tz-module-grape-city</module>
+        <module>tz-module-pipeline</module>
         <!-- 友情提示:基于 Spring AI 实现 LLM 大模型的接入,需要使用 JDK17 版本,详细可见 https://doc.iocoder.cn/ai/build/ -->
 <!--        <module>tz-module-ai</module>-->
     </modules>

+ 16 - 0
tz-gateway/src/main/resources/application.yaml

@@ -116,6 +116,19 @@ spring:
             - Path=/app-api/pressure/**
           filters:
             - RewritePath=/app-api/pressure/v3/api-docs, /v3/api-docs
+        ## pipeline-server 服务
+        - id: pipeline-admin-api # 路由的编号
+          uri: grayLb://pipeline-server
+          predicates: # 断言,作为路由的匹配条件,对应 RouteDefinition 数组
+            - Path=/admin-api/pipeline/**
+          filters:
+            - RewritePath=/admin-api/pipeline/v3/api-docs, /v3/api-docs # 配置,保证转发到 /v3/api-docs
+        - id: pipeline-app-api # 路由的编号
+          uri: grayLb://pipeline-server
+          predicates: # 断言,作为路由的匹配条件,对应 RouteDefinition 数组
+            - Path=/app-api/pipeline/**
+          filters:
+            - RewritePath=/app-api/pipeline/v3/api-docs, /v3/api-docs
 
       x-forwarded:
         prefix-enabled: false # 避免 Swagger 重复带上额外的 /admin-api/system 前缀
@@ -168,6 +181,9 @@ knife4j:
       - name: member-server
         service-name: member-server
         url: /admin-api/member/v3/api-docs
+      - name: pipeline-server
+        service-name: pipeline-server
+        url: /admin-api/pipeline/v3/api-docs
 --- #################### 芋道相关配置 ####################
 
 tz:

+ 35 - 0
tz-module-pipeline/pom.xml

@@ -0,0 +1,35 @@
+<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.tz.cloud</groupId>
+        <artifactId>tz</artifactId>
+        <version>${revision}</version> <!-- 1. 修改 version 为 ${revision} -->
+    </parent>
+
+    <artifactId>tz-module-pipeline</artifactId>
+    <packaging>pom</packaging> <!-- 2. 新增 packaging 为 pom -->
+
+    <name>${project.artifactId}</name> <!-- 3. 新增 name 为 ${project.artifactId} -->
+    <description> <!-- 4. 新增 description 为该模块的描述 -->
+        管道 模块
+    </description>
+    <url>http://maven.apache.org</url>
+    <modules>
+        <module>tz-module-pipeline-api</module>
+        <module>tz-module-pipeline-biz</module>
+    </modules>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>

+ 38 - 0
tz-module-pipeline/tz-module-pipeline-api/pom.xml

@@ -0,0 +1,38 @@
+<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.tz.cloud</groupId>
+        <artifactId>tz-module-pipeline</artifactId>
+        <version>${revision}</version> <!-- 1. 修改 version 为 ${revision} -->
+    </parent>
+
+    <artifactId>tz-module-pipeline-api</artifactId>
+    <packaging>jar</packaging> <!-- 2. 新增 packaging 为 jar -->
+
+    <name>${project.artifactId}</name> <!-- 3. 新增 name 为 ${project.artifactId} -->
+    <description> <!-- 4. 新增 description 为该模块的描述 -->
+        管道 模块 API,暴露给其它模块调用
+    </description>
+    <url>http://maven.apache.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- 5. 新增 tz-common 依赖 -->
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-common</artifactId>
+        </dependency>
+
+    </dependencies>
+</project>

+ 14 - 0
tz-module-pipeline/tz-module-pipeline-api/src/main/java/cn/start/tz/module/pipeline/enums/ErrorCodeConstants.java

@@ -0,0 +1,14 @@
+package cn.start.tz.module.pipeline.enums;
+
+import cn.start.tz.framework.common.exception.ErrorCode;
+
+/**
+ * System 错误码枚举类
+ *
+ * system 系统,使用 1-002-000-000 段
+ */
+public interface ErrorCodeConstants {
+
+    ErrorCode TEST_GROUP_NOT_EXISTS = new ErrorCode(1000, "Pipeline测试不存在");
+
+}

+ 38 - 0
tz-module-pipeline/tz-module-pipeline-api/src/test/java/cn/tz/cloud/AppTest.java

@@ -0,0 +1,38 @@
+package cn.tz.cloud;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( AppTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp()
+    {
+        assertTrue( true );
+    }
+}

BIN
tz-module-pipeline/tz-module-pipeline-api/target/classes/cn/start/tz/module/pipeline/enums/ErrorCodeConstants.class


+ 150 - 0
tz-module-pipeline/tz-module-pipeline-biz/pom.xml

@@ -0,0 +1,150 @@
+<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.tz.cloud</groupId>
+        <artifactId>tz-module-pipeline</artifactId>
+        <version>${revision}</version> <!-- 1. 修改 version 为 ${revision} -->
+    </parent>
+
+    <artifactId>tz-module-pipeline-biz</artifactId>
+    <packaging>jar</packaging> <!-- 2. 新增 packaging 为 jar -->
+
+    <name>${project.artifactId}</name> <!-- 3. 新增 name 为 ${project.artifactId} -->
+    <description> <!-- 4. 新增 description 为该模块的描述 -->
+        管道 模块
+    </description>
+    <url>http://maven.apache.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- 5. 新增依赖,这里引入的都是比较常用的业务组件、技术组件 -->
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-module-system-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-module-infra-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-module-pipeline-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <!-- 业务组件 -->
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-spring-boot-starter-biz-data-permission</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-spring-boot-starter-biz-tenant</artifactId>
+        </dependency>
+
+        <!-- Web 相关 -->
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-spring-boot-starter-security</artifactId>
+        </dependency>
+
+        <!-- DB 相关 -->
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-spring-boot-starter-mybatis</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-spring-boot-starter-redis</artifactId>
+        </dependency>
+
+        <!-- RPC 远程调用相关 -->
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-spring-boot-starter-rpc</artifactId>
+        </dependency>
+
+        <!-- Registry 注册中心相关 -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+
+        <!-- Config 配置中心相关 -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+
+        <!-- Job 定时任务相关 -->
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-spring-boot-starter-job</artifactId>
+        </dependency>
+
+        <!-- 消息队列相关 -->
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-spring-boot-starter-mq</artifactId>
+        </dependency>
+
+        <!-- Test 测试相关 -->
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-spring-boot-starter-test</artifactId>
+        </dependency>
+
+        <!-- 工具类相关 -->
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-spring-boot-starter-excel</artifactId>
+        </dependency>
+
+        <!-- 监控相关 -->
+        <dependency>
+            <groupId>cn.tz.cloud</groupId>
+            <artifactId>tz-spring-boot-starter-monitor</artifactId>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <!-- 设置构建的 jar 包名 -->
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+            <!-- 打包 -->
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal> <!-- 将引入的 jar 打入其中 -->
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 17 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/PipelineServerApplication.java

@@ -0,0 +1,17 @@
+package cn.start.tz.module;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * 项目的启动类
+ *
+ */
+@SpringBootApplication
+public class PipelineServerApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(PipelineServerApplication.class, args);
+    }
+
+}

+ 25 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/controller/admin/pipelineTestController.java

@@ -0,0 +1,25 @@
+package cn.start.tz.module.pipeline.controller.admin;
+
+import cn.start.tz.framework.common.pojo.CommonResult;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import static cn.start.tz.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - PipelineTest")
+@RestController
+@RequestMapping("/pipeline/test")
+@Validated
+public class pipelineTestController {
+
+    @GetMapping("/get")
+    @Operation(summary = "获取 test 信息")
+    public CommonResult<String> get() {
+        return success("true");
+    }
+
+}

+ 95 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/controller/admin/testgroup/TestGroupController.java

@@ -0,0 +1,95 @@
+package cn.start.tz.module.pipeline.controller.admin.testgroup;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.start.tz.framework.common.pojo.PageParam;
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.common.pojo.CommonResult;
+import cn.start.tz.framework.common.util.object.BeanUtils;
+import static cn.start.tz.framework.common.pojo.CommonResult.success;
+
+import cn.start.tz.framework.excel.core.util.ExcelUtils;
+
+import cn.start.tz.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.start.tz.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.start.tz.module.pipeline.controller.admin.testgroup.vo.*;
+import cn.start.tz.module.pipeline.dal.dataobject.testgroup.TestGroupDO;
+import cn.start.tz.module.pipeline.service.testgroup.TestGroupService;
+
+@Tag(name = "管理后台 - Pipeline测试")
+@RestController
+@RequestMapping("/pipeline/test-group")
+@Validated
+public class TestGroupController {
+
+    @Resource
+    private TestGroupService testGroupService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建Pipeline测试")
+    @PreAuthorize("@ss.hasPermission('pipeline:test-group:create')")
+    public CommonResult<Long> createTestGroup(@Valid @RequestBody TestGroupSaveReqVO createReqVO) {
+        return success(testGroupService.createTestGroup(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新Pipeline测试")
+    @PreAuthorize("@ss.hasPermission('pipeline:test-group:update')")
+    public CommonResult<Boolean> updateTestGroup(@Valid @RequestBody TestGroupSaveReqVO updateReqVO) {
+        testGroupService.updateTestGroup(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除Pipeline测试")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('pipeline:test-group:delete')")
+    public CommonResult<Boolean> deleteTestGroup(@RequestParam("id") Long id) {
+        testGroupService.deleteTestGroup(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得Pipeline测试")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('pipeline:test-group:query')")
+    public CommonResult<TestGroupRespVO> getTestGroup(@RequestParam("id") Long id) {
+        TestGroupDO testGroup = testGroupService.getTestGroup(id);
+        return success(BeanUtils.toBean(testGroup, TestGroupRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得Pipeline测试分页")
+    @PreAuthorize("@ss.hasPermission('pipeline:test-group:query')")
+    public CommonResult<PageResult<TestGroupRespVO>> getTestGroupPage(@Valid TestGroupPageReqVO pageReqVO) {
+        PageResult<TestGroupDO> pageResult = testGroupService.getTestGroupPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, TestGroupRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出Pipeline测试 Excel")
+    @PreAuthorize("@ss.hasPermission('pipeline:test-group:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportTestGroupExcel(@Valid TestGroupPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<TestGroupDO> list = testGroupService.getTestGroupPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "Pipeline测试.xls", "数据", TestGroupRespVO.class,
+                        BeanUtils.toBean(list, TestGroupRespVO.class));
+    }
+
+}

+ 25 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/controller/admin/testgroup/vo/TestGroupPageReqVO.java

@@ -0,0 +1,25 @@
+package cn.start.tz.module.pipeline.controller.admin.testgroup.vo;
+
+import lombok.*;
+
+import java.time.LocalTime;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.start.tz.framework.common.pojo.PageParam;
+
+@Schema(description = "管理后台 - Pipeline测试分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class TestGroupPageReqVO extends PageParam {
+
+    @Schema(description = "名字", example = "芋艿")
+    private String name;
+
+    @Schema(description = "状态", example = "1")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    private LocalTime[] createTime;
+
+}

+ 34 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/controller/admin/testgroup/vo/TestGroupRespVO.java

@@ -0,0 +1,34 @@
+package cn.start.tz.module.pipeline.controller.admin.testgroup.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalTime;
+import java.util.*;
+import com.alibaba.excel.annotation.*;
+import cn.start.tz.framework.excel.core.annotations.DictFormat;
+import cn.start.tz.framework.excel.core.convert.DictConvert;
+
+@Schema(description = "管理后台 - Pipeline测试 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class TestGroupRespVO {
+
+    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "27947")
+    @ExcelProperty("编号")
+    private Long id;
+
+    @Schema(description = "名字", example = "芋艿")
+    @ExcelProperty("名字")
+    private String name;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty(value = "状态", converter = DictConvert.class)
+    @DictFormat("common_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalTime createTime;
+
+}

+ 22 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/controller/admin/testgroup/vo/TestGroupSaveReqVO.java

@@ -0,0 +1,22 @@
+package cn.start.tz.module.pipeline.controller.admin.testgroup.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - Pipeline测试新增/修改 Request VO")
+@Data
+public class TestGroupSaveReqVO {
+
+    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "27947")
+    private Long id;
+
+    @Schema(description = "名字", example = "芋艿")
+    private String name;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "状态不能为空")
+    private Integer status;
+
+}

+ 25 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/controller/app/AppPipelineTestController.java

@@ -0,0 +1,25 @@
+package cn.start.tz.module.pipeline.controller.app;
+
+import cn.start.tz.framework.common.pojo.CommonResult;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import static cn.start.tz.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "用户 App - PipelineTest")
+@RestController
+@RequestMapping("/pipeline/test")
+@Validated
+public class AppPipelineTestController {
+
+    @GetMapping("/get")
+    @Operation(summary = "获取 test 信息")
+    public CommonResult<String> get() {
+        return success("true");
+    }
+
+}

+ 41 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/dal/dataobject/testgroup/TestGroupDO.java

@@ -0,0 +1,41 @@
+package cn.start.tz.module.pipeline.dal.dataobject.testgroup;
+
+import lombok.*;
+
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.*;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.start.tz.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * Pipeline测试 DO
+ *
+ * @author 特种管理员
+ */
+@TableName("pipeline_test_group")
+@KeySequence("pipeline_test_group_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TestGroupDO extends BaseDO {
+
+    /**
+     * 编号
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_UUID)
+    private Long id;
+    /**
+     * 名字
+     */
+    private String name;
+    /**
+     * 状态
+     *
+     * 枚举 {@link TODO common_status 对应的类}
+     */
+    private Integer status;
+}

+ 29 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/dal/mysql/testgroup/TestGroupMapper.java

@@ -0,0 +1,29 @@
+package cn.start.tz.module.pipeline.dal.mysql.testgroup;
+
+import java.util.*;
+
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.start.tz.framework.mybatis.core.mapper.BaseMapperX;
+import cn.start.tz.module.pipeline.dal.dataobject.testgroup.TestGroupDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.start.tz.module.pipeline.controller.admin.testgroup.vo.*;
+
+/**
+ * Pipeline测试 Mapper
+ *
+ * @author 特种管理员
+ */
+@Mapper
+public interface TestGroupMapper extends BaseMapperX<TestGroupDO> {
+
+    default PageResult<TestGroupDO> selectPage(TestGroupPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<TestGroupDO>()
+                .likeIfPresent(TestGroupDO::getName, reqVO.getName())
+                .eqIfPresent(TestGroupDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(TestGroupDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(TestGroupDO::getId));
+
+    }
+
+}

+ 40 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/framework/security/config/SecurityConfiguration.java

@@ -0,0 +1,40 @@
+package cn.start.tz.module.pipeline.framework.security.config;
+
+import cn.start.tz.framework.security.config.AuthorizeRequestsCustomizer;
+import cn.start.tz.module.system.enums.ApiConstants;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer;
+
+/**
+ * Pipeline 模块的 Security 配置
+ */
+@Configuration(proxyBeanMethods = false)
+public class SecurityConfiguration {
+
+    @Bean
+    public AuthorizeRequestsCustomizer authorizeRequestsCustomizer() {
+        return new AuthorizeRequestsCustomizer() {
+
+            @Override
+            public void customize(AuthorizeHttpRequestsConfigurer<HttpSecurity>.AuthorizationManagerRequestMatcherRegistry registry) {
+                // Swagger 接口文档
+                registry.requestMatchers("/v3/api-docs/**").permitAll()
+                        .requestMatchers("/webjars/**").permitAll()
+                        .requestMatchers("/swagger-ui").permitAll()
+                        .requestMatchers("/swagger-ui/**").permitAll();
+                // Druid 监控
+                registry.requestMatchers("/druid/**").permitAll();
+                // Spring Boot Actuator 的安全配置
+                registry.requestMatchers("/actuator").permitAll()
+                        .requestMatchers("/actuator/**").permitAll();
+                // RPC 服务的安全配置
+                registry.requestMatchers(ApiConstants.PREFIX + "/**").permitAll();
+            }
+
+        };
+    }
+
+}

+ 56 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/service/testgroup/TestGroupService.java

@@ -0,0 +1,56 @@
+package cn.start.tz.module.pipeline.service.testgroup;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.start.tz.module.pipeline.controller.admin.testgroup.vo.*;
+import cn.start.tz.module.pipeline.dal.dataobject.testgroup.TestGroupDO;
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.common.pojo.PageParam;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * Pipeline测试 Service 接口
+ *
+ * @author 特种管理员
+ */
+public interface TestGroupService extends IService<TestGroupDO>  {
+
+    /**
+     * 创建Pipeline测试
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createTestGroup(@Valid TestGroupSaveReqVO createReqVO);
+
+    /**
+     * 更新Pipeline测试
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateTestGroup(@Valid TestGroupSaveReqVO updateReqVO);
+
+    /**
+     * 删除Pipeline测试
+     *
+     * @param id 编号
+     */
+    void deleteTestGroup(Long id);
+
+    /**
+     * 获得Pipeline测试
+     *
+     * @param id 编号
+     * @return Pipeline测试
+     */
+    TestGroupDO getTestGroup(Long id);
+
+    /**
+     * 获得Pipeline测试分页
+     *
+     * @param pageReqVO 分页查询
+     * @return Pipeline测试分页
+     */
+    PageResult<TestGroupDO> getTestGroupPage(TestGroupPageReqVO pageReqVO);
+
+}

+ 75 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/java/cn/start/tz/module/pipeline/service/testgroup/TestGroupServiceImpl.java

@@ -0,0 +1,75 @@
+package cn.start.tz.module.pipeline.service.testgroup;
+
+import org.springframework.stereotype.Service;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.*;
+import cn.start.tz.module.pipeline.controller.admin.testgroup.vo.*;
+import cn.start.tz.module.pipeline.dal.dataobject.testgroup.TestGroupDO;
+import cn.start.tz.framework.common.pojo.PageResult;
+import cn.start.tz.framework.common.pojo.PageParam;
+import cn.start.tz.framework.common.util.object.BeanUtils;
+
+import cn.start.tz.module.pipeline.dal.mysql.testgroup.TestGroupMapper;
+
+import static cn.start.tz.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.start.tz.module.pipeline.enums.ErrorCodeConstants.*;
+
+/**
+ * Pipeline测试 Service 实现类
+ *
+ * @author 特种管理员
+ */
+@Service
+@Validated
+public class TestGroupServiceImpl extends ServiceImpl<TestGroupMapper, TestGroupDO> implements TestGroupService {
+
+    @Resource
+    private TestGroupMapper testGroupMapper;
+
+    @Override
+    public Long createTestGroup(TestGroupSaveReqVO createReqVO) {
+        // 插入
+        TestGroupDO testGroup = BeanUtils.toBean(createReqVO, TestGroupDO.class);
+        testGroupMapper.insert(testGroup);
+        // 返回
+        return testGroup.getId();
+    }
+
+    @Override
+    public void updateTestGroup(TestGroupSaveReqVO updateReqVO) {
+        // 校验存在
+        validateTestGroupExists(updateReqVO.getId());
+        // 更新
+        TestGroupDO updateObj = BeanUtils.toBean(updateReqVO, TestGroupDO.class);
+        testGroupMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteTestGroup(Long id) {
+        // 校验存在
+        validateTestGroupExists(id);
+        // 删除
+        testGroupMapper.deleteById(id);
+    }
+
+    private void validateTestGroupExists(Long id) {
+        if (testGroupMapper.selectById(id) == null) {
+            throw exception(TEST_GROUP_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public TestGroupDO getTestGroup(Long id) {
+        return testGroupMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<TestGroupDO> getTestGroupPage(TestGroupPageReqVO pageReqVO) {
+        return testGroupMapper.selectPage(pageReqVO);
+    }
+
+}

+ 179 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/resources/application-hsd.yaml

@@ -0,0 +1,179 @@
+--- #################### 注册中心 + 配置中心相关配置 ####################
+
+spring:
+  cloud:
+    nacos:
+      #      server-addr: 127.0.0.1:8848 # Nacos 服务器地址
+      server-addr: 192.168.0.53:8848 # Nacos 服务器地址
+      username: # Nacos 账号
+      password: # Nacos 密码
+      discovery: # 【配置中心】配置项
+        namespace: dev # 命名空间。这里使用 dev 开发环境
+        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
+        metadata:
+          version: 1.0.0 # 服务实例的版本号,可用于灰度发布
+      config: # 【注册中心】配置项
+        namespace: dev # 命名空间。这里使用 dev 开发环境
+        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
+--- #################### 数据库相关配置 ####################
+spring:
+  # 数据源配置项
+  autoconfigure:
+    exclude:
+      - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
+  datasource:
+    druid: # Druid 【监控】相关的全局配置
+      web-stat-filter:
+        enabled: true
+      stat-view-servlet:
+        enabled: true
+        allow: # 设置白名单,不填则允许所有访问
+        url-pattern: /druid/*
+        login-username: # 控制台管理用户名和密码
+        login-password:
+      filter:
+        stat:
+          enabled: true
+          log-slow-sql: true # 慢 SQL 记录
+          slow-sql-millis: 100
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
+    dynamic: # 多数据源配置
+      druid: # Druid 【连接池】相关的全局配置
+        initial-size: 5 # 初始连接数
+        min-idle: 10 # 最小连接池数量
+        max-active: 20 # 最大连接池数量
+        max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒
+        time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
+        min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
+        max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒
+        validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+      primary: master
+      datasource:
+        master:
+          url: jdbc:dm://192.168.0.66:5236?schema=TZ_CLOUD_DEV
+          username: SYSDBA
+          password: Bowin123
+        slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
+          url: jdbc:dm://192.168.0.66:5236?schema=TZ_CLOUD_DEV
+          username: SYSDBA
+          password: Bowin123
+
+
+  # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
+  data:
+    redis:
+      host: 192.168.0.79 # 地址
+      port: 6379 # 端口
+      database: 5 # 数据库索引
+      password: H3bowin # 密码,建议生产环境开启
+
+  # rocketmq 配置项,对应 RocketMQProperties 配置类
+  rocketmq:
+    name-server: data.hofo.co:9876 # RocketMQ Namesrv
+
+--- #################### 定时任务相关配置 ####################
+xxl:
+  job:
+    admin:
+      #addresses: http://127.0.0.1:9090/xxl-job-admin # 调度中心部署跟地址
+      addresses: https://aimkt.hofo.co/xxl-job-admin # 调度中心部署跟地址
+--- #################### 服务保障相关配置 ####################
+
+# Lock4j 配置项
+lock4j:
+  acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒
+  expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒
+
+--- #################### 监控相关配置 ####################
+
+# Actuator 监控端点的配置项
+management:
+  endpoints:
+    web:
+      base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator
+      exposure:
+        include: "*" # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
+
+# Spring Boot Admin 配置项
+spring:
+  boot:
+    admin:
+      # Spring Boot Admin Client 客户端的相关配置
+      client:
+        instance:
+          service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME]
+      # Spring Boot Admin Server 服务端的相关配置
+      context-path: /admin # 配置 Spring
+
+# 日志文件配置
+logging:
+  level:
+    # 配置自己写的 MyBatis Mapper 打印日志
+    cn.start.tz.module.system.dal.mysql: debug
+    cn.start.tz.module.system.dal.mysql.logger.ApiErrorLogMapper: INFO # 配置 ApiErrorLogMapper 的日志级别为 info,避免和 GlobalExceptionHandler 重复打印
+    cn.start.tz.module.system.dal.mysql.file.FileConfigMapper: INFO # 配置 FileConfigMapper 的日志级别为 info
+    org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 芋艿:先禁用,Spring Boot 3.X 存在部分错误的 WARN 提示
+  file:
+    name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
+
+--- #################### 微信公众号、小程序相关配置 ####################
+wx:
+  mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
+    #    app-id: wx041349c6f39b268b
+    #    secret: 5abee519483bc9f8cb37ce280e814bd0
+    app-id: wx5b23ba7a5589ecbb # 测试号
+    secret: 2a7b3b20c537e52e74afd395eb85f61f
+    # 存储配置,解决 AccessToken 的跨节点的共享
+    config-storage:
+      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
+      key-prefix: wx # Redis Key 的前缀
+      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
+  miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
+    #    appid: wx62056c0d5e8db250
+    #    secret: 333ae72f41552af1e998fe1f54e1584a
+    appid: wxf88e2dba767bb5d6 # wenhualian的接口测试号
+    secret: c2fffd16cb6c0f9c6b649a9828168fb5
+    config-storage:
+      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
+      key-prefix: wa # Redis Key 的前缀
+      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
+--- #################### 芋道相关配置 ####################
+
+# 芋道配置项,设置当前项目所有自定义的配置
+tz:
+  demo: false # 开启演示模式
+  captcha:
+    enable: false
+
+justauth:
+  enabled: true
+  type:
+    DINGTALK: # 钉钉
+      client-id: dingvrnreaje3yqvzhxg
+      client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI
+      ignore-check-redirect-uri: true
+    WECHAT_ENTERPRISE: # 企业微信
+      client-id: wwd411c69a39ad2e54
+      client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw
+      agent-id: 1000004
+      ignore-check-redirect-uri: true
+    # noinspection SpringBootApplicationYaml
+    WECHAT_MINI_APP: # 微信小程序
+      client-id: ${wx.miniapp.appid}
+      client-secret: ${wx.miniapp.secret}
+      ignore-check-redirect-uri: true
+      ignore-check-state: true # 微信小程序,不会使用到 state,所以不进行校验
+    WECHAT_MP: # 微信公众号
+      client-id: ${wx.mp.app-id}
+      client-secret: ${wx.mp.secret}
+      ignore-check-redirect-uri: true
+  cache:
+    type: REDIS
+    prefix: "social_auth_state:" # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
+    timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟

+ 179 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/resources/application-hst.yaml

@@ -0,0 +1,179 @@
+--- #################### 注册中心 + 配置中心相关配置 ####################
+
+spring:
+  cloud:
+    nacos:
+      #      server-addr: 127.0.0.1:8848 # Nacos 服务器地址
+      server-addr: 192.168.0.53:8848 # Nacos 服务器地址
+      username: # Nacos 账号
+      password: # Nacos 密码
+      discovery: # 【配置中心】配置项
+        namespace: test # 命名空间。这里使用 dev 开发环境
+        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
+        metadata:
+          version: 1.0.0 # 服务实例的版本号,可用于灰度发布
+      config: # 【注册中心】配置项
+        namespace: test # 命名空间。这里使用 dev 开发环境
+        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
+--- #################### 数据库相关配置 ####################
+spring:
+  # 数据源配置项
+  autoconfigure:
+    exclude:
+      - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
+  datasource:
+    druid: # Druid 【监控】相关的全局配置
+      web-stat-filter:
+        enabled: true
+      stat-view-servlet:
+        enabled: true
+        allow: # 设置白名单,不填则允许所有访问
+        url-pattern: /druid/*
+        login-username: # 控制台管理用户名和密码
+        login-password:
+      filter:
+        stat:
+          enabled: true
+          log-slow-sql: true # 慢 SQL 记录
+          slow-sql-millis: 100
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
+    dynamic: # 多数据源配置
+      druid: # Druid 【连接池】相关的全局配置
+        initial-size: 5 # 初始连接数
+        min-idle: 10 # 最小连接池数量
+        max-active: 20 # 最大连接池数量
+        max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒
+        time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
+        min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
+        max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒
+        validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+      primary: master
+      datasource:
+        master:
+          url: jdbc:dm://192.168.0.66:5236?schema=TZ_CLOUD_DEV
+          username: SYSDBA
+          password: Bowin123
+        slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
+          url: jdbc:dm://192.168.0.66:5236?schema=TZ_CLOUD_DEV
+          username: SYSDBA
+          password: Bowin123
+
+
+  # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
+  data:
+    redis:
+      host: 192.168.0.79 # 地址
+      port: 6379 # 端口
+      database: 5 # 数据库索引
+      password: H3bowin # 密码,建议生产环境开启
+
+  # rocketmq 配置项,对应 RocketMQProperties 配置类
+  rocketmq:
+    name-server: data.hofo.co:9876 # RocketMQ Namesrv
+
+--- #################### 定时任务相关配置 ####################
+xxl:
+  job:
+    admin:
+      #addresses: http://127.0.0.1:9090/xxl-job-admin # 调度中心部署跟地址
+      addresses: https://aimkt.hofo.co/xxl-job-admin # 调度中心部署跟地址
+--- #################### 服务保障相关配置 ####################
+
+# Lock4j 配置项
+lock4j:
+  acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒
+  expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒
+
+--- #################### 监控相关配置 ####################
+
+# Actuator 监控端点的配置项
+management:
+  endpoints:
+    web:
+      base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator
+      exposure:
+        include: "*" # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
+
+# Spring Boot Admin 配置项
+spring:
+  boot:
+    admin:
+      # Spring Boot Admin Client 客户端的相关配置
+      client:
+        instance:
+          service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME]
+      # Spring Boot Admin Server 服务端的相关配置
+      context-path: /admin # 配置 Spring
+
+# 日志文件配置
+logging:
+  level:
+    # 配置自己写的 MyBatis Mapper 打印日志
+    cn.start.tz.module.system.dal.mysql: debug
+    cn.start.tz.module.system.dal.mysql.logger.ApiErrorLogMapper: INFO # 配置 ApiErrorLogMapper 的日志级别为 info,避免和 GlobalExceptionHandler 重复打印
+    cn.start.tz.module.system.dal.mysql.file.FileConfigMapper: INFO # 配置 FileConfigMapper 的日志级别为 info
+    org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 芋艿:先禁用,Spring Boot 3.X 存在部分错误的 WARN 提示
+  file:
+    name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
+
+--- #################### 微信公众号、小程序相关配置 ####################
+wx:
+  mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
+    #    app-id: wx041349c6f39b268b
+    #    secret: 5abee519483bc9f8cb37ce280e814bd0
+    app-id: wx5b23ba7a5589ecbb # 测试号
+    secret: 2a7b3b20c537e52e74afd395eb85f61f
+    # 存储配置,解决 AccessToken 的跨节点的共享
+    config-storage:
+      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
+      key-prefix: wx # Redis Key 的前缀
+      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
+  miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
+    #    appid: wx62056c0d5e8db250
+    #    secret: 333ae72f41552af1e998fe1f54e1584a
+    appid: wxf88e2dba767bb5d6 # wenhualian的接口测试号
+    secret: c2fffd16cb6c0f9c6b649a9828168fb5
+    config-storage:
+      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
+      key-prefix: wa # Redis Key 的前缀
+      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
+--- #################### 芋道相关配置 ####################
+
+# 芋道配置项,设置当前项目所有自定义的配置
+tz:
+  demo: false # 开启演示模式
+  captcha:
+    enable: false
+
+justauth:
+  enabled: true
+  type:
+    DINGTALK: # 钉钉
+      client-id: dingvrnreaje3yqvzhxg
+      client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI
+      ignore-check-redirect-uri: true
+    WECHAT_ENTERPRISE: # 企业微信
+      client-id: wwd411c69a39ad2e54
+      client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw
+      agent-id: 1000004
+      ignore-check-redirect-uri: true
+    # noinspection SpringBootApplicationYaml
+    WECHAT_MINI_APP: # 微信小程序
+      client-id: ${wx.miniapp.appid}
+      client-secret: ${wx.miniapp.secret}
+      ignore-check-redirect-uri: true
+      ignore-check-state: true # 微信小程序,不会使用到 state,所以不进行校验
+    WECHAT_MP: # 微信公众号
+      client-id: ${wx.mp.app-id}
+      client-secret: ${wx.mp.secret}
+      ignore-check-redirect-uri: true
+  cache:
+    type: REDIS
+    prefix: "social_auth_state:" # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
+    timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟

+ 120 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/resources/application.yaml

@@ -0,0 +1,120 @@
+spring:
+  application:
+    name: pipeline-server
+
+  profiles:
+    active: local
+
+  main:
+    allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。
+    allow-bean-definition-overriding: true # 允许 Bean 覆盖,例如说 Feign 等会存在重复定义的服务
+
+  config:
+    import:
+      - optional:classpath:application-${spring.profiles.active}.yaml # 加载【本地】配置
+      - optional:nacos:${spring.application.name}-${spring.profiles.active}.yaml # 加载【Nacos】的配置
+
+  # Servlet 配置
+  servlet:
+    # 文件上传相关配置项
+    multipart:
+      max-file-size: 16MB # 单个文件大小
+      max-request-size: 32MB # 设置总上传的文件大小
+
+  # Jackson 配置项
+  jackson:
+    serialization:
+      write-dates-as-timestamps: true # 设置 LocalDateTime 的格式,使用时间戳
+      write-date-timestamps-as-nanoseconds: false # 设置不使用 nanoseconds 的格式。例如说 1611460870.401,而是直接 1611460870401
+      write-durations-as-timestamps: true # 设置 Duration 的格式,使用时间戳
+      fail-on-empty-beans: false # 允许序列化无属性的 Bean
+
+  # Cache 配置项
+  cache:
+    type: REDIS
+    redis:
+      time-to-live: 1h # 设置过期时间为 1 小时
+
+server:
+  port: 48098
+
+logging:
+  file:
+    name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
+
+--- #################### 接口文档配置 ####################
+
+springdoc:
+  api-docs:
+    enabled: true # 1. 是否开启 Swagger 接文档的元数据
+    path: /v3/api-docs
+  swagger-ui:
+    enabled: true # 2.1 是否开启 Swagger 文档的官方 UI 界面
+    path: /swagger-ui.html
+  default-flat-param-object: true # 参见 https://doc.xiaominfo.com/docs/faq/v4/knife4j-parameterobject-flat-param 文档
+
+knife4j:
+  enable: true # 2.2 是否开启 Swagger 文档的 Knife4j UI 界面
+  setting:
+    language: zh_cn
+
+# MyBatis Plus 的配置项
+mybatis-plus:
+  configuration:
+    map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #显示SQL日志
+  global-config:
+    db-config:
+      id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。
+      #      id-type: AUTO # 自增 ID,适合 MySQL 等直接自增的数据库
+      #      id-type: INPUT # 用户输入 ID,适合 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库
+      #      id-type: ASSIGN_ID # 分配 ID,默认使用雪花算法。注意,Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解
+      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
+      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
+    banner: false # 关闭控制台的 Banner 打印
+  type-aliases-package: ${yudao.info.base-package}.module.*.dal.dataobject
+  encryptor:
+    password: XDV71a+xqStEA3WH # 加解密的秘钥,可使用 https://www.imaegoo.com/2020/aes-key-generator/ 网站生成
+
+mybatis-plus-join:
+  banner: false # 关闭控制台的 Banner 打印
+
+# VO 转换(数据翻译)相关
+easy-trans:
+  is-enable-global: false # 【默认禁用,对性能确认压力大】启用全局翻译(拦截所有 SpringMVC ResponseBody 进行自动翻译 )。如果对于性能要求很高可关闭此配置,或通过 @IgnoreTrans 忽略某个接口
+
+--- #################### RPC 远程调用相关配置 ####################
+
+--- #################### MQ 消息队列相关配置 ####################
+
+--- #################### 定时任务相关配置 ####################
+
+xxl:
+  job:
+    executor:
+      appname: ${spring.application.name} # 执行器 AppName
+      logpath: ${user.home}/logs/xxl-job/${spring.application.name} # 执行器运行日志文件存储磁盘路径
+    accessToken: default_token # 执行器通讯TOKEN
+
+--- #################### 芋道相关配置 ####################
+
+tz:
+  info:
+    version: 1.0.0
+    base-package: cn.start.tz.module.pipeline
+  web:
+    admin-ui:
+      url: http://dashboard.yudao.iocoder.cn # Admin 管理后台 UI 的地址
+  xss:
+    enable: false
+    exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系
+      - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求
+      - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求
+  swagger:
+    title: 管理后台
+    description: 提供管理员管理的所有功能
+    version: ${yudao.info.version}
+  tenant: # 多租户相关配置项
+    enable: false
+
+debug: false

+ 76 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/resources/logback-spring.xml

@@ -0,0 +1,76 @@
+<configuration>
+    <!-- 引用 Spring Boot 的 logback 基础配置 -->
+    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <!-- 变量 yudao.info.base-package,基础业务包 -->
+    <springProperty scope="context" name="yudao.info.base-package" source="yudao.info.base-package"/>
+    <!-- 格式化输出:%d 表示日期,%X{tid} SkWalking 链路追踪编号,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度,%msg:日志消息,%n是换行符 -->
+    <property name="PATTERN_DEFAULT" value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} | %highlight(${LOG_LEVEL_PATTERN:-%5p} ${PID:- }) | %boldYellow(%thread [%tid]) %boldGreen(%-40.40logger{39}) | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
+
+    <!-- 控制台 Appender -->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">     
+        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
+                <pattern>${PATTERN_DEFAULT}</pattern>
+            </layout>
+        </encoder>
+    </appender>
+
+    <!-- 文件 Appender -->
+    <!-- 参考 Spring Boot 的 file-appender.xml 编写 -->
+    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
+                <pattern>${PATTERN_DEFAULT}</pattern>
+            </layout>
+        </encoder>
+        <!-- 日志文件名 -->
+        <file>${LOG_FILE}</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <!-- 滚动后的日志文件名 -->
+            <fileNamePattern>${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}</fileNamePattern>
+            <!-- 启动服务时,是否清理历史日志,一般不建议清理 -->
+            <cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart>
+            <!-- 日志文件,到达多少容量,进行滚动 -->
+            <maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize>
+            <!-- 日志文件的总大小,0 表示不限制 -->
+            <totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap>
+            <!-- 日志文件的保留天数 -->
+            <maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-30}</maxHistory>
+        </rollingPolicy>
+    </appender>
+    <!-- 异步写入日志,提升性能 -->
+    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
+        <!-- 不丢失日志。默认的,如果队列的 80% 已满,则会丢弃 TRACT、DEBUG、INFO 级别的日志 -->
+        <discardingThreshold>0</discardingThreshold>
+        <!-- 更改默认的队列的深度,该值会影响性能。默认值为 256 -->
+        <queueSize>256</queueSize>
+        <appender-ref ref="FILE"/>
+    </appender>
+
+    <!-- SkyWalking GRPC 日志收集,实现日志中心。注意:SkyWalking 8.4.0 版本开始支持 -->
+    <appender name="GRPC" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
+        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
+                <pattern>${PATTERN_DEFAULT}</pattern>
+            </layout>
+        </encoder>
+    </appender>
+
+    <!-- 本地环境 -->
+    <springProfile name="local">
+        <root level="INFO">
+            <appender-ref ref="STDOUT"/>
+            <appender-ref ref="GRPC"/> <!-- 本地环境下,如果不想接入 SkyWalking 日志服务,可以注释掉本行 -->
+            <appender-ref ref="ASYNC"/>  <!-- 本地环境下,如果不想打印日志,可以注释掉本行 -->
+        </root>
+    </springProfile>
+    <!-- 其它环境 -->
+    <springProfile name="dev,test,stage,prod,default">
+        <root level="INFO">
+            <appender-ref ref="STDOUT"/>
+            <appender-ref ref="ASYNC"/>
+            <appender-ref ref="GRPC"/>
+        </root>
+    </springProfile>
+
+</configuration>

+ 12 - 0
tz-module-pipeline/tz-module-pipeline-biz/src/main/resources/mapper/testgroup/TestGroupMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.start.tz.module.pipeline.dal.mysql.testgroup.TestGroupMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 179 - 0
tz-module-pipeline/tz-module-pipeline-biz/target/classes/application-hsd.yaml

@@ -0,0 +1,179 @@
+--- #################### 注册中心 + 配置中心相关配置 ####################
+
+spring:
+  cloud:
+    nacos:
+      #      server-addr: 127.0.0.1:8848 # Nacos 服务器地址
+      server-addr: 192.168.0.53:8848 # Nacos 服务器地址
+      username: # Nacos 账号
+      password: # Nacos 密码
+      discovery: # 【配置中心】配置项
+        namespace: dev # 命名空间。这里使用 dev 开发环境
+        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
+        metadata:
+          version: 1.0.0 # 服务实例的版本号,可用于灰度发布
+      config: # 【注册中心】配置项
+        namespace: dev # 命名空间。这里使用 dev 开发环境
+        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
+--- #################### 数据库相关配置 ####################
+spring:
+  # 数据源配置项
+  autoconfigure:
+    exclude:
+      - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
+  datasource:
+    druid: # Druid 【监控】相关的全局配置
+      web-stat-filter:
+        enabled: true
+      stat-view-servlet:
+        enabled: true
+        allow: # 设置白名单,不填则允许所有访问
+        url-pattern: /druid/*
+        login-username: # 控制台管理用户名和密码
+        login-password:
+      filter:
+        stat:
+          enabled: true
+          log-slow-sql: true # 慢 SQL 记录
+          slow-sql-millis: 100
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
+    dynamic: # 多数据源配置
+      druid: # Druid 【连接池】相关的全局配置
+        initial-size: 5 # 初始连接数
+        min-idle: 10 # 最小连接池数量
+        max-active: 20 # 最大连接池数量
+        max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒
+        time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
+        min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
+        max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒
+        validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+      primary: master
+      datasource:
+        master:
+          url: jdbc:dm://192.168.0.66:5236?schema=TZ_CLOUD_DEV
+          username: SYSDBA
+          password: Bowin123
+        slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
+          url: jdbc:dm://192.168.0.66:5236?schema=TZ_CLOUD_DEV
+          username: SYSDBA
+          password: Bowin123
+
+
+  # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
+  data:
+    redis:
+      host: 192.168.0.79 # 地址
+      port: 6379 # 端口
+      database: 5 # 数据库索引
+      password: H3bowin # 密码,建议生产环境开启
+
+  # rocketmq 配置项,对应 RocketMQProperties 配置类
+  rocketmq:
+    name-server: data.hofo.co:9876 # RocketMQ Namesrv
+
+--- #################### 定时任务相关配置 ####################
+xxl:
+  job:
+    admin:
+      #addresses: http://127.0.0.1:9090/xxl-job-admin # 调度中心部署跟地址
+      addresses: https://aimkt.hofo.co/xxl-job-admin # 调度中心部署跟地址
+--- #################### 服务保障相关配置 ####################
+
+# Lock4j 配置项
+lock4j:
+  acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒
+  expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒
+
+--- #################### 监控相关配置 ####################
+
+# Actuator 监控端点的配置项
+management:
+  endpoints:
+    web:
+      base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator
+      exposure:
+        include: "*" # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
+
+# Spring Boot Admin 配置项
+spring:
+  boot:
+    admin:
+      # Spring Boot Admin Client 客户端的相关配置
+      client:
+        instance:
+          service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME]
+      # Spring Boot Admin Server 服务端的相关配置
+      context-path: /admin # 配置 Spring
+
+# 日志文件配置
+logging:
+  level:
+    # 配置自己写的 MyBatis Mapper 打印日志
+    cn.start.tz.module.system.dal.mysql: debug
+    cn.start.tz.module.system.dal.mysql.logger.ApiErrorLogMapper: INFO # 配置 ApiErrorLogMapper 的日志级别为 info,避免和 GlobalExceptionHandler 重复打印
+    cn.start.tz.module.system.dal.mysql.file.FileConfigMapper: INFO # 配置 FileConfigMapper 的日志级别为 info
+    org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 芋艿:先禁用,Spring Boot 3.X 存在部分错误的 WARN 提示
+  file:
+    name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
+
+--- #################### 微信公众号、小程序相关配置 ####################
+wx:
+  mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
+    #    app-id: wx041349c6f39b268b
+    #    secret: 5abee519483bc9f8cb37ce280e814bd0
+    app-id: wx5b23ba7a5589ecbb # 测试号
+    secret: 2a7b3b20c537e52e74afd395eb85f61f
+    # 存储配置,解决 AccessToken 的跨节点的共享
+    config-storage:
+      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
+      key-prefix: wx # Redis Key 的前缀
+      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
+  miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
+    #    appid: wx62056c0d5e8db250
+    #    secret: 333ae72f41552af1e998fe1f54e1584a
+    appid: wxf88e2dba767bb5d6 # wenhualian的接口测试号
+    secret: c2fffd16cb6c0f9c6b649a9828168fb5
+    config-storage:
+      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
+      key-prefix: wa # Redis Key 的前缀
+      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
+--- #################### 芋道相关配置 ####################
+
+# 芋道配置项,设置当前项目所有自定义的配置
+tz:
+  demo: false # 开启演示模式
+  captcha:
+    enable: false
+
+justauth:
+  enabled: true
+  type:
+    DINGTALK: # 钉钉
+      client-id: dingvrnreaje3yqvzhxg
+      client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI
+      ignore-check-redirect-uri: true
+    WECHAT_ENTERPRISE: # 企业微信
+      client-id: wwd411c69a39ad2e54
+      client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw
+      agent-id: 1000004
+      ignore-check-redirect-uri: true
+    # noinspection SpringBootApplicationYaml
+    WECHAT_MINI_APP: # 微信小程序
+      client-id: ${wx.miniapp.appid}
+      client-secret: ${wx.miniapp.secret}
+      ignore-check-redirect-uri: true
+      ignore-check-state: true # 微信小程序,不会使用到 state,所以不进行校验
+    WECHAT_MP: # 微信公众号
+      client-id: ${wx.mp.app-id}
+      client-secret: ${wx.mp.secret}
+      ignore-check-redirect-uri: true
+  cache:
+    type: REDIS
+    prefix: "social_auth_state:" # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
+    timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟

+ 179 - 0
tz-module-pipeline/tz-module-pipeline-biz/target/classes/application-hst.yaml

@@ -0,0 +1,179 @@
+--- #################### 注册中心 + 配置中心相关配置 ####################
+
+spring:
+  cloud:
+    nacos:
+      #      server-addr: 127.0.0.1:8848 # Nacos 服务器地址
+      server-addr: 192.168.0.53:8848 # Nacos 服务器地址
+      username: # Nacos 账号
+      password: # Nacos 密码
+      discovery: # 【配置中心】配置项
+        namespace: test # 命名空间。这里使用 dev 开发环境
+        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
+        metadata:
+          version: 1.0.0 # 服务实例的版本号,可用于灰度发布
+      config: # 【注册中心】配置项
+        namespace: test # 命名空间。这里使用 dev 开发环境
+        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
+--- #################### 数据库相关配置 ####################
+spring:
+  # 数据源配置项
+  autoconfigure:
+    exclude:
+      - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
+  datasource:
+    druid: # Druid 【监控】相关的全局配置
+      web-stat-filter:
+        enabled: true
+      stat-view-servlet:
+        enabled: true
+        allow: # 设置白名单,不填则允许所有访问
+        url-pattern: /druid/*
+        login-username: # 控制台管理用户名和密码
+        login-password:
+      filter:
+        stat:
+          enabled: true
+          log-slow-sql: true # 慢 SQL 记录
+          slow-sql-millis: 100
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
+    dynamic: # 多数据源配置
+      druid: # Druid 【连接池】相关的全局配置
+        initial-size: 5 # 初始连接数
+        min-idle: 10 # 最小连接池数量
+        max-active: 20 # 最大连接池数量
+        max-wait: 600000 # 配置获取连接等待超时的时间,单位:毫秒
+        time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒
+        min-evictable-idle-time-millis: 300000 # 配置一个连接在池中最小生存的时间,单位:毫秒
+        max-evictable-idle-time-millis: 900000 # 配置一个连接在池中最大生存的时间,单位:毫秒
+        validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效
+        test-while-idle: true
+        test-on-borrow: false
+        test-on-return: false
+      primary: master
+      datasource:
+        master:
+          url: jdbc:dm://192.168.0.66:5236?schema=TZ_CLOUD_DEV
+          username: SYSDBA
+          password: Bowin123
+        slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
+          url: jdbc:dm://192.168.0.66:5236?schema=TZ_CLOUD_DEV
+          username: SYSDBA
+          password: Bowin123
+
+
+  # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
+  data:
+    redis:
+      host: 192.168.0.79 # 地址
+      port: 6379 # 端口
+      database: 5 # 数据库索引
+      password: H3bowin # 密码,建议生产环境开启
+
+  # rocketmq 配置项,对应 RocketMQProperties 配置类
+  rocketmq:
+    name-server: data.hofo.co:9876 # RocketMQ Namesrv
+
+--- #################### 定时任务相关配置 ####################
+xxl:
+  job:
+    admin:
+      #addresses: http://127.0.0.1:9090/xxl-job-admin # 调度中心部署跟地址
+      addresses: https://aimkt.hofo.co/xxl-job-admin # 调度中心部署跟地址
+--- #################### 服务保障相关配置 ####################
+
+# Lock4j 配置项
+lock4j:
+  acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒
+  expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒
+
+--- #################### 监控相关配置 ####################
+
+# Actuator 监控端点的配置项
+management:
+  endpoints:
+    web:
+      base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator
+      exposure:
+        include: "*" # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
+
+# Spring Boot Admin 配置项
+spring:
+  boot:
+    admin:
+      # Spring Boot Admin Client 客户端的相关配置
+      client:
+        instance:
+          service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME]
+      # Spring Boot Admin Server 服务端的相关配置
+      context-path: /admin # 配置 Spring
+
+# 日志文件配置
+logging:
+  level:
+    # 配置自己写的 MyBatis Mapper 打印日志
+    cn.start.tz.module.system.dal.mysql: debug
+    cn.start.tz.module.system.dal.mysql.logger.ApiErrorLogMapper: INFO # 配置 ApiErrorLogMapper 的日志级别为 info,避免和 GlobalExceptionHandler 重复打印
+    cn.start.tz.module.system.dal.mysql.file.FileConfigMapper: INFO # 配置 FileConfigMapper 的日志级别为 info
+    org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 芋艿:先禁用,Spring Boot 3.X 存在部分错误的 WARN 提示
+  file:
+    name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
+
+--- #################### 微信公众号、小程序相关配置 ####################
+wx:
+  mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
+    #    app-id: wx041349c6f39b268b
+    #    secret: 5abee519483bc9f8cb37ce280e814bd0
+    app-id: wx5b23ba7a5589ecbb # 测试号
+    secret: 2a7b3b20c537e52e74afd395eb85f61f
+    # 存储配置,解决 AccessToken 的跨节点的共享
+    config-storage:
+      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
+      key-prefix: wx # Redis Key 的前缀
+      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
+  miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
+    #    appid: wx62056c0d5e8db250
+    #    secret: 333ae72f41552af1e998fe1f54e1584a
+    appid: wxf88e2dba767bb5d6 # wenhualian的接口测试号
+    secret: c2fffd16cb6c0f9c6b649a9828168fb5
+    config-storage:
+      type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
+      key-prefix: wa # Redis Key 的前缀
+      http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
+--- #################### 芋道相关配置 ####################
+
+# 芋道配置项,设置当前项目所有自定义的配置
+tz:
+  demo: false # 开启演示模式
+  captcha:
+    enable: false
+
+justauth:
+  enabled: true
+  type:
+    DINGTALK: # 钉钉
+      client-id: dingvrnreaje3yqvzhxg
+      client-secret: i8E6iZyDvZj51JIb0tYsYfVQYOks9Cq1lgryEjFRqC79P3iJcrxEwT6Qk2QvLrLI
+      ignore-check-redirect-uri: true
+    WECHAT_ENTERPRISE: # 企业微信
+      client-id: wwd411c69a39ad2e54
+      client-secret: 1wTb7hYxnpT2TUbIeHGXGo7T0odav1ic10mLdyyATOw
+      agent-id: 1000004
+      ignore-check-redirect-uri: true
+    # noinspection SpringBootApplicationYaml
+    WECHAT_MINI_APP: # 微信小程序
+      client-id: ${wx.miniapp.appid}
+      client-secret: ${wx.miniapp.secret}
+      ignore-check-redirect-uri: true
+      ignore-check-state: true # 微信小程序,不会使用到 state,所以不进行校验
+    WECHAT_MP: # 微信公众号
+      client-id: ${wx.mp.app-id}
+      client-secret: ${wx.mp.secret}
+      ignore-check-redirect-uri: true
+  cache:
+    type: REDIS
+    prefix: "social_auth_state:" # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
+    timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟

+ 120 - 0
tz-module-pipeline/tz-module-pipeline-biz/target/classes/application.yaml

@@ -0,0 +1,120 @@
+spring:
+  application:
+    name: pipeline-server
+
+  profiles:
+    active: local
+
+  main:
+    allow-circular-references: true # 允许循环依赖,因为项目是三层架构,无法避免这个情况。
+    allow-bean-definition-overriding: true # 允许 Bean 覆盖,例如说 Feign 等会存在重复定义的服务
+
+  config:
+    import:
+      - optional:classpath:application-${spring.profiles.active}.yaml # 加载【本地】配置
+      - optional:nacos:${spring.application.name}-${spring.profiles.active}.yaml # 加载【Nacos】的配置
+
+  # Servlet 配置
+  servlet:
+    # 文件上传相关配置项
+    multipart:
+      max-file-size: 16MB # 单个文件大小
+      max-request-size: 32MB # 设置总上传的文件大小
+
+  # Jackson 配置项
+  jackson:
+    serialization:
+      write-dates-as-timestamps: true # 设置 LocalDateTime 的格式,使用时间戳
+      write-date-timestamps-as-nanoseconds: false # 设置不使用 nanoseconds 的格式。例如说 1611460870.401,而是直接 1611460870401
+      write-durations-as-timestamps: true # 设置 Duration 的格式,使用时间戳
+      fail-on-empty-beans: false # 允许序列化无属性的 Bean
+
+  # Cache 配置项
+  cache:
+    type: REDIS
+    redis:
+      time-to-live: 1h # 设置过期时间为 1 小时
+
+server:
+  port: 48098
+
+logging:
+  file:
+    name: ${user.home}/logs/${spring.application.name}.log # 日志文件名,全路径
+
+--- #################### 接口文档配置 ####################
+
+springdoc:
+  api-docs:
+    enabled: true # 1. 是否开启 Swagger 接文档的元数据
+    path: /v3/api-docs
+  swagger-ui:
+    enabled: true # 2.1 是否开启 Swagger 文档的官方 UI 界面
+    path: /swagger-ui.html
+  default-flat-param-object: true # 参见 https://doc.xiaominfo.com/docs/faq/v4/knife4j-parameterobject-flat-param 文档
+
+knife4j:
+  enable: true # 2.2 是否开启 Swagger 文档的 Knife4j UI 界面
+  setting:
+    language: zh_cn
+
+# MyBatis Plus 的配置项
+mybatis-plus:
+  configuration:
+    map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #显示SQL日志
+  global-config:
+    db-config:
+      id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。
+      #      id-type: AUTO # 自增 ID,适合 MySQL 等直接自增的数据库
+      #      id-type: INPUT # 用户输入 ID,适合 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库
+      #      id-type: ASSIGN_ID # 分配 ID,默认使用雪花算法。注意,Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解
+      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
+      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
+    banner: false # 关闭控制台的 Banner 打印
+  type-aliases-package: ${yudao.info.base-package}.module.*.dal.dataobject
+  encryptor:
+    password: XDV71a+xqStEA3WH # 加解密的秘钥,可使用 https://www.imaegoo.com/2020/aes-key-generator/ 网站生成
+
+mybatis-plus-join:
+  banner: false # 关闭控制台的 Banner 打印
+
+# VO 转换(数据翻译)相关
+easy-trans:
+  is-enable-global: false # 【默认禁用,对性能确认压力大】启用全局翻译(拦截所有 SpringMVC ResponseBody 进行自动翻译 )。如果对于性能要求很高可关闭此配置,或通过 @IgnoreTrans 忽略某个接口
+
+--- #################### RPC 远程调用相关配置 ####################
+
+--- #################### MQ 消息队列相关配置 ####################
+
+--- #################### 定时任务相关配置 ####################
+
+xxl:
+  job:
+    executor:
+      appname: ${spring.application.name} # 执行器 AppName
+      logpath: ${user.home}/logs/xxl-job/${spring.application.name} # 执行器运行日志文件存储磁盘路径
+    accessToken: default_token # 执行器通讯TOKEN
+
+--- #################### 芋道相关配置 ####################
+
+tz:
+  info:
+    version: 1.0.0
+    base-package: cn.start.tz.module.pipeline
+  web:
+    admin-ui:
+      url: http://dashboard.yudao.iocoder.cn # Admin 管理后台 UI 的地址
+  xss:
+    enable: false
+    exclude-urls: # 如下两个 url,仅仅是为了演示,去掉配置也没关系
+      - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求
+      - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求
+  swagger:
+    title: 管理后台
+    description: 提供管理员管理的所有功能
+    version: ${yudao.info.version}
+  tenant: # 多租户相关配置项
+    enable: false
+
+debug: false

BIN
tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/PipelineServerApplication.class


BIN
tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/controller/admin/pipelineTestController.class


BIN
tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/controller/admin/testgroup/TestGroupController.class


BIN
tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/controller/admin/testgroup/vo/TestGroupPageReqVO.class


BIN
tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/controller/admin/testgroup/vo/TestGroupRespVO.class


BIN
tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/controller/admin/testgroup/vo/TestGroupSaveReqVO.class


BIN
tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/controller/app/AppPipelineTestController.class


BIN
tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/dal/dataobject/testgroup/TestGroupDO$TestGroupDOBuilder.class


BIN
tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/dal/dataobject/testgroup/TestGroupDO.class


BIN
tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/dal/mysql/testgroup/TestGroupMapper.class


BIN
tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/framework/security/config/SecurityConfiguration$1.class


BIN
tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/framework/security/config/SecurityConfiguration.class


BIN
tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/service/testgroup/TestGroupService.class


BIN
tz-module-pipeline/tz-module-pipeline-biz/target/classes/cn/start/tz/module/pipeline/service/testgroup/TestGroupServiceImpl.class


+ 76 - 0
tz-module-pipeline/tz-module-pipeline-biz/target/classes/logback-spring.xml

@@ -0,0 +1,76 @@
+<configuration>
+    <!-- 引用 Spring Boot 的 logback 基础配置 -->
+    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+    <!-- 变量 yudao.info.base-package,基础业务包 -->
+    <springProperty scope="context" name="yudao.info.base-package" source="yudao.info.base-package"/>
+    <!-- 格式化输出:%d 表示日期,%X{tid} SkWalking 链路追踪编号,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度,%msg:日志消息,%n是换行符 -->
+    <property name="PATTERN_DEFAULT" value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} | %highlight(${LOG_LEVEL_PATTERN:-%5p} ${PID:- }) | %boldYellow(%thread [%tid]) %boldGreen(%-40.40logger{39}) | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
+
+    <!-- 控制台 Appender -->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">     
+        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
+                <pattern>${PATTERN_DEFAULT}</pattern>
+            </layout>
+        </encoder>
+    </appender>
+
+    <!-- 文件 Appender -->
+    <!-- 参考 Spring Boot 的 file-appender.xml 编写 -->
+    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
+                <pattern>${PATTERN_DEFAULT}</pattern>
+            </layout>
+        </encoder>
+        <!-- 日志文件名 -->
+        <file>${LOG_FILE}</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <!-- 滚动后的日志文件名 -->
+            <fileNamePattern>${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}</fileNamePattern>
+            <!-- 启动服务时,是否清理历史日志,一般不建议清理 -->
+            <cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart>
+            <!-- 日志文件,到达多少容量,进行滚动 -->
+            <maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize>
+            <!-- 日志文件的总大小,0 表示不限制 -->
+            <totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap>
+            <!-- 日志文件的保留天数 -->
+            <maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-30}</maxHistory>
+        </rollingPolicy>
+    </appender>
+    <!-- 异步写入日志,提升性能 -->
+    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
+        <!-- 不丢失日志。默认的,如果队列的 80% 已满,则会丢弃 TRACT、DEBUG、INFO 级别的日志 -->
+        <discardingThreshold>0</discardingThreshold>
+        <!-- 更改默认的队列的深度,该值会影响性能。默认值为 256 -->
+        <queueSize>256</queueSize>
+        <appender-ref ref="FILE"/>
+    </appender>
+
+    <!-- SkyWalking GRPC 日志收集,实现日志中心。注意:SkyWalking 8.4.0 版本开始支持 -->
+    <appender name="GRPC" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
+        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
+                <pattern>${PATTERN_DEFAULT}</pattern>
+            </layout>
+        </encoder>
+    </appender>
+
+    <!-- 本地环境 -->
+    <springProfile name="local">
+        <root level="INFO">
+            <appender-ref ref="STDOUT"/>
+            <appender-ref ref="GRPC"/> <!-- 本地环境下,如果不想接入 SkyWalking 日志服务,可以注释掉本行 -->
+            <appender-ref ref="ASYNC"/>  <!-- 本地环境下,如果不想打印日志,可以注释掉本行 -->
+        </root>
+    </springProfile>
+    <!-- 其它环境 -->
+    <springProfile name="dev,test,stage,prod,default">
+        <root level="INFO">
+            <appender-ref ref="STDOUT"/>
+            <appender-ref ref="ASYNC"/>
+            <appender-ref ref="GRPC"/>
+        </root>
+    </springProfile>
+
+</configuration>

+ 12 - 0
tz-module-pipeline/tz-module-pipeline-biz/target/classes/mapper/testgroup/TestGroupMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.start.tz.module.pipeline.dal.mysql.testgroup.TestGroupMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>